@reddb-io/red-skills 2.87.7 → 2.88.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brain.bundle.min.mjs +52 -52
- package/dist/castle-mcp.bundle.min.mjs +354 -354
- package/dist/code-nav.bundle.min.mjs +1 -1
- package/dist/dev.bundle.min.mjs +569 -569
- package/dist/memory.bundle.min.mjs +544 -544
- package/dist/rsp.bundle.min.mjs +118 -118
- package/package.json +1 -1
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -1,137 +1,137 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
3
|
-
var
|
|
4
|
-
`);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(r=>r.endsWith("\r")?r.slice(0,-1):r)}function
|
|
5
|
-
`;break;case"r":r+="\r";break;case"t":r+=" ";break;case"u":{let i=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(i))throw
|
|
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
|
|
7
|
-
`);for(let[i,a]of Object.entries(r))zr(e,n+1),e.push(
|
|
8
|
-
`);return}e.push(
|
|
9
|
-
`),
|
|
10
|
-
`)}function
|
|
3
|
+
var hy=Object.defineProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var r in t)hy(e,r,{get:t[r],enumerable:!0})};function k(e,t){return new Jr(e,t)}function P(e,t){return new It(e,t)}function ar(e){return e instanceof It?e:e instanceof Jr?new It(e.line,e.reason):new It(0,String(e&&e.message?e.message:e))}var Jr,It,qr=h(()=>{Jr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},It=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function os(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 $e(e){return k(e,"invalid quoted string")}function Me(e,t){if(e==="")return"";if(e.startsWith('"'))return qu(e,t);if(e.includes('"'))throw $e(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:yy(e)?Number(e):e}function Qe(e,t){let r=e.trim();if(r.startsWith('"'))return[qu(r,t),!0];if(r.includes('"')||/\s/.test(r))throw k(t,"expected non-empty field name");return[r,!1]}function qu(e,t){if(e[0]!=='"')throw $e(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 $e(t)}if(s==="\\"){let o=e[n];switch(n+=1,o){case'"':r+='"';break;case"\\":r+="\\";break;case"n":r+=`
|
|
5
|
+
`;break;case"r":r+="\r";break;case"t":r+=" ";break;case"u":{let i=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(i))throw $e(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw $e(t);r+=String.fromCharCode(a),n+=4;break}default:throw $e(t)}continue}if(s<" "&&s!==" ")throw $e(t);r+=s}throw $e(t)}function Lt(e,t,r){if(e==="")return[];let n=[],s=0,o=!1,i=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(i){i=!1;continue}c==="\\"&&o?i=!0:c==='"'?o=!o:c===t&&!o&&(n.push(e.slice(s,a).trim()),s=a+1)}if(o||i)throw $e(r);return n.push(e.slice(s).trim()),n}function ae(e,t,r){let n=!1,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"&&n)s=!0;else if(i==='"')n=!n;else if(i===t&&!n)return o}if(n||s)throw $e(r);return-1}function yy(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function by(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function wy(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw k(0,"number is not representable in TOON");return String(e)}function Vr(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 wy(e);if(typeof e=="string")return Ry(e,t);throw k(0,"not a primitive")}function _y(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function Se(e){return _y(e)?e:Vu(e)}function Ry(e,t){return ky(e,t)?Vu(e):e}function ky(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||by(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Vu(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 cr(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var N,ui=h(()=>{qr();N=","});function Sy(e={}){return{indent:Math.max(1,e.indent??hi),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Ey(e,t){let r=[],n=!1;return os(e).forEach((s,o)=>{let i=o+1;if(s.trim()===""){n=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw k(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw k(i,"invalid indentation");r.push({number:i,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function D(e,t){let r=Sy(t),n=Ey(e,r),s=n[0];if(s===void 0)return{};if(s.depth!==0)throw k(s.number,"invalid indentation");let o=n.length===1;if(o&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=wi(s.content,ae(s.content,":",s.number))}catch(l){if(r.strict)throw fi(l,s.number);u=void 0}if(u!==void 0)return Cy(u,n,r)}if(o&&ae(s.content,":",s.number)===-1)return Me(s.content.trim(),s.number);let i={index:0},a=yi(n,i,0,r),c=n[i.index];if(c!==void 0)throw k(c.number,"expected end of document");return a}function yi(e,t,r,n){let s={};for(;t.index<e.length;){let o=e[t.index];if(o.depth<r)break;if(o.depth>r)throw k(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=xy(e,t,r,n);Yu(s,i,a,c,n,o.number)}return s}function xy(e,t,r,n){let s=e[t.index],o=s.content,i=ae(o,":",s.number);if(i===-1)throw k(s.number,"expected `key: value`");let a=o.slice(0,i),c=o.slice(i+1),u=ae(a,"[",s.number),l=ae(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let f;try{f=Py(a)}catch(g){if(n.strict)throw fi(g,s.number);t.index+=1;let y=li(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(c.trim()!=="")throw k(s.number,"expected keyed map rows");let _=vy(f,e,t,r+1,n);return{key:f.key,quoted:f.keyQuoted,value:_}}if(u!==-1){let f;try{f=wi(a,i)}catch(g){if(n.strict)throw fi(g,s.number);t.index+=1;let y=li(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(f.key===""&&!f.keyQuoted)throw k(s.number,"expected non-empty field name");let _=bi(f,c,e,t,r,n);return{key:f.key,quoted:f.keyQuoted,value:_}}let[m,d]=Qe(a,s.number);if(m===""&&!d)throw k(s.number,"expected non-empty field name");t.index+=1;let p=li(e,t,r,c,s.number,n);return{key:m,quoted:d,value:p}}function li(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Me(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?yi(e,t,r+1,o):{}}function vy(e,t,r,n,s){let o={};for(r.index+=1;r.index<t.length;){let i=t[r.index];if(i.depth<n)break;if(i.depth>n)throw k(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw k(i.number,"blank line inside keyed map");let a=ae(i.content,":",i.number);if(a===-1)throw k(i.number,"expected `key: value`");let[c,u]=Qe(i.content.slice(0,a),i.number);if(c===""&&!u)throw k(i.number,"expected non-empty field name");let l=Lt(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw k(i.number,"keyed map row length mismatch");let m={};e.fields.forEach((d,p)=>{Kr(m,d,Me(l[p],i.number),s,i.number)}),Yu(o,c,u,m,s,i.number),r.index+=1}return o}function Cy(e,t,r){let n=t[0],s=ae(n.content,":",n.number);if(s===-1)throw k(n.number,"expected `key: value`");let o=n.content.slice(s+1),i={index:0},a=bi(e,o,t,i,0,r),c=t[i.index];if(c!==void 0)throw k(c.number,"expected end of document");return a}function bi(e,t,r,n,s,o){let i=r[n.index].number,a=t.trim();if(n.index+=1,e.fields!==void 0){if(a!=="")throw k(i,"expected tabular rows");return Ty(e,e.fields,r,n,s+1,o)}if(a!==""){let c=Lt(a,e.delimiter,i).map(u=>Me(u,i));if(c.length!==e.len)throw k(i,"array length mismatch");return c}return Oy(e,r,n,s+1,o)}function Ty(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw mi(r,n.index);if(c.depth<s)break;if(c.depth>s)throw k(c.number,"invalid indentation");if(c.blankBefore&&o.strict)throw k(c.number,"blank line inside array");if(!Ku(c.content,e.delimiter,c.number))break;let u=Lt(c.content,e.delimiter,c.number);if(u.length!==t.length)throw k(c.number,"array row length mismatch");let l={};t.forEach((m,d)=>{Kr(l,m,Me(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw mi(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&Ku(a.content,e.delimiter,a.number))throw k(a.number,"array length mismatch");return i}function Ku(e,t,r){let n=ae(e,":",r);if(n===-1)return!0;let s=ae(e,t,r);return s===-1?!1:s<n}function Oy(e,t,r,n,s){let o=[];for(;o.length<e.len;){let a=t[r.index];if(a===void 0||a.depth<n)throw mi(t,r.index);if(a.depth>n)throw k(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw k(a.number,"blank line inside array");o.push(Ay(t,r,n,s))}let i=t[r.index];if(i!==void 0&&i.depth>=n)throw k(i.number,"array length mismatch");return o}function Ay(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw k(s.number,"expected array item");let o=s.content.slice(1).replace(/^\s+/,"");if(o==="")return t.index+=1,{};if(o.startsWith("[")){let i=ae(o,":",s.number),a;try{a=wi(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return bi(a,c,e,t,r,n)}}if(ae(o,":",s.number)!==-1){let i=[{number:s.number,depth:r+1,content:o,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=r)break;i.push(a),t.index+=1}return yi(i,{index:0},r+1,n)}return t.index+=1,Me(o,s.number)}function mi(e,t){let r=e[t]??e[e.length-1];return k(r===void 0?1:r.number,"array length mismatch")}function wi(e,t){if(t===-1)throw k(0,"array header missing colon");let r=e.slice(0,t),n=ae(r,"[",0);if(n===-1)throw k(0,"invalid array header");let s,o;try{[s,o]=Qe(r.slice(0,n),0)}catch{throw k(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw k(0,"invalid array header");let c=i.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw k(0,"invalid array header");let l=Number.parseInt(u,10),m;switch(c.slice(u.length)){case"":m=",";break;case" ":m=" ";break;case"|":m="|";break;default:throw k(0,"invalid array header")}let d=i.slice(a+1),p;if(d==="")p=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{p=zu(d.slice(1,-1),m)}catch(f){throw k(0,f.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw k(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:m,fields:p}}function Py(e){let t=ae(e,"{",0);if(t===-1||!e.endsWith("}"))throw k(0,"invalid keyed map header");let r,n;try{[r,n]=Qe(e.slice(0,t),0)}catch{throw k(0,"invalid keyed map header")}if(r===""&&!n)throw k(0,"expected non-empty field name");let s;try{s=zu(e.slice(t+1,-1),N)}catch(o){throw k(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:N,fields:s}}function zu(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 k(0,"invalid array header");let l=n;for(;n<e.length;){let d=e[n];if(d==='"'){o();continue}if(d===t||d==="{"||d==="}")break;n+=1}let[m]=Qe(e.slice(l,n),0);if(m==="")throw k(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,m],!0),e[n]!=="}"||r.length===d)throw k(0,"invalid array header");n+=1}else r.push([...a,m]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw k(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw k(0,"invalid array header")}if(u===0)throw k(0,"invalid array header")}function o(){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 k(0,"invalid array header");let i=new Set;for(let a=0;a<r.length;a+=1)for(let c=a+1;c<r.length;c+=1)if(Iy(r[a],r[c])||pi(r[a],r[c])||pi(r[c],r[a]))throw k(0,"duplicate key");for(let a of r){let c=a.join("\0");if(i.has(c))throw k(0,"duplicate key");i.add(c)}return r}function Iy(e,t){return e.length===t.length&&pi(e,t)}function pi(e,t){return t.every((r,n)=>e[n]===r)}function fi(e,t){return k(t,e.reason??String(e.message))}function Yu(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(Ly)){Kr(e,i,n,s,o);return}}Kr(e,[t],n,s,o)}function Kr(e,t,r,n,s){let o=t[0],i=Object.prototype.hasOwnProperty.call(e,o);if(t.length===1){if(i&&n.strict)throw k(s,"duplicate key");cr(e,o,r);return}if(i&&!ur(e[o])){if(n.strict)throw k(s,"path expansion conflict");cr(e,o,{})}else i||cr(e,o,{});Kr(e[o],t.slice(1),r,n,s)}function Ly(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function ur(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)?_i(n,void 0,e,0,!1,r):ur(e)?Xu(n,e,0,r):n.push(Be(e,N)),n.join("")}function zr(e,t){e.push(" ".repeat(t*hi))}function Xu(e,t,r,n){for(let[s,o]of Object.entries(t))zr(e,r),gi(e,s,o,r,n)}function gi(e,t,r,n,s){if(Array.isArray(r)){_i(e,t,r,n,!1,s);return}if(ur(r)){let o=s.keyedMapCollapse?Ny(r,s):void 0;if(o!==void 0){e.push(Se(t),"{",o.fields.map(Ri).join(N),`}:
|
|
7
|
+
`);for(let[i,a]of Object.entries(r))zr(e,n+1),e.push(Se(i),": ",o.paths.map(c=>Be(tl(a,c),N)).join(N),`
|
|
8
|
+
`);return}e.push(Se(t),`:
|
|
9
|
+
`),Xu(e,r,n+1,s);return}e.push(Se(t),": ",Be(r,N),`
|
|
10
|
+
`)}function _i(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(Se(t),`: []
|
|
11
11
|
`):s?e.push(`[0]:
|
|
12
12
|
`):e.push(`[]
|
|
13
|
-
`);return}if(r.every(Vr)){
|
|
14
|
-
`);return}let i=s?void 0:
|
|
15
|
-
`);for(let a of r)zr(e,n+1),e.push(i.paths.map(c=>
|
|
16
|
-
`);return}
|
|
17
|
-
`);for(let a of r)zr(e,n+1),
|
|
18
|
-
`);return}e.push("- "),
|
|
19
|
-
`)}function
|
|
20
|
-
`}function
|
|
21
|
-
`}function
|
|
22
|
-
`,f=()=>
|
|
23
|
-
`;return b+=S,a+=1,c+=1,u+=S.length,b},declareLane(g,y){if(m)throw P(0,"TOONL encoder is closed");let b=
|
|
24
|
-
`},end(){return m?"":(m=!0,p())}}}var
|
|
25
|
-
`)}function
|
|
26
|
-
`).trim()}var
|
|
27
|
-
`,{encoding:"utf8",mode:384}),
|
|
28
|
-
`)}),
|
|
29
|
-
`);if(
|
|
13
|
+
`);return}if(r.every(Vr)){di(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Be(a,N)).join(N)),e.push(`
|
|
14
|
+
`);return}let i=s?void 0:Qu(r,o);if(i!==void 0){di(e,t,r.length,i.fields),e.push(`
|
|
15
|
+
`);for(let a of r)zr(e,n+1),e.push(i.paths.map(c=>Be(tl(a,c),N)).join(N)),e.push(`
|
|
16
|
+
`);return}di(e,t,r.length,void 0),e.push(`
|
|
17
|
+
`);for(let a of r)zr(e,n+1),Dy(e,a,n+1,o)}function Dy(e,t,r,n){if(Array.isArray(t)){e.push("- "),_i(e,void 0,t,r,!0,n);return}if(ur(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
|
|
18
|
+
`);return}e.push("- "),gi(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))zr(e,r+1),gi(e,o,i,r+1,n);return}e.push("- ",Be(t,N),`
|
|
19
|
+
`)}function di(e,t,r,n){t!==void 0&&e.push(Se(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Ri).join(N),"}"),e.push(":")}function Qu(e,t){let r=Zu(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:el(r)}}function Ny(e,t){let r=Object.values(e);if(!(r.length<2))return Qu(r,t)}function Zu(e,t){let r=e[0]?.value;if(!ur(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!ur(s)||Object.keys(s).length!==n.length||n.some(i=>!Object.prototype.hasOwnProperty.call(s,i.key)))return;for(let s of n){let o=e.map(({value:a})=>({value:a[s.key]}));if(o.every(({value:a})=>Vr(a)))continue;if(!t.nestedTabularHeaders)return;let i=Zu(o,t);if(i===void 0)return;s.children=i}return n}}function el(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:el(r.children,n)})}function tl(e,t){let r=e;for(let n of t)r=r[n];return r}function Ri(e){return e.children===void 0?Se(e.key):`${Se(e.key)}{${e.children.map(Ri).join(N)}}`}var hi,Yr=h(()=>{qr();ui();hi=2});var rl=h(()=>{Yr()});function My(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw P(t,"invalid trailer count");return Number.parseInt(r,10)}function pl(e,t){if(!ml.test(e))throw P(t,"invalid tag")}function By(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!ml.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw P(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Fy(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw P(t,"invalid header");let s=r.slice(0,n),o=s.startsWith("~"),i=o?s.slice(1):s;if(!o&&i.startsWith("="))return null;if(!ll.includes(i)&&i!=="")throw P(t,"invalid header delimiter");let a=i===""?N:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw P(t,"invalid tag");if(u=c.slice(1,d),pl(u,t),i!=="")throw P(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw P(t,"invalid header");let l=c.slice(1,-2),m;try{m=Lt(l,a,t).map(d=>Qe(d,t)[0])}catch(d){throw ar(d)}if(m.length===0||m.some(d=>d===""))throw P(t,"invalid header fields");return{delimiter:a,fields:m,fieldText:l,continuation:o,tag:u}}function jy(e,t,r){if(e===null||e.delimiter===void 0)throw P(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw P(r,"continuation header mismatch")}function nl(e,t,r,n){let s;try{s=Lt(e,t,n)}catch(o){throw ar(o)}if(s.length!==r)throw P(n,"row arity mismatch");for(let o of s)try{Me(o,n)}catch(i){throw ar(i)}return s}function Hy(e,t,r){let n={};return e.forEach((s,o)=>{try{cr(n,s,Me(t[o],r))}catch(i){throw ar(i)}}),n}function Gy(e,t,r){if(e.startsWith("- "))throw P(t,"reserved line prefix");let n=My(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw P(t,"trailer without header");if(r.rowCount!==n)throw P(t,"trailer count mismatch");return{kind:"trailer"}}let s=Fy(e,t);if(s!==null)return s.continuation?(jy(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=By(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw P(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:nl(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw P(t,"row before header");return{kind:"row",cells:nl(e,r.delimiter,r.fields.length,t)}}function Wy(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(p,f){let _=o.at(-1);if(_!==void 0&&_.lane===p.lane&&_.delimiter===p.delimiter&&_.fieldText===p.fieldText){_.rows.push(f);return}o.push({lane:p.lane,delimiter:p.delimiter,fields:p.fields,fieldText:p.fieldText,rows:[f]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function m(p,f,_){let g=n.get(p);if(g===void 0){if(n.size>=dl)throw P(_,"too many tagged lanes");g={segments:[],current:null},n.set(p,g),r.push(p)}else g.current!==null&&g.segments.push(g.current);g.current={lane:p,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[]},g.delimiter=f.delimiter,g.fields=f.fields,g.fieldText=f.fieldText}if(os(e).forEach((p,f)=>{let _=f+1;if(p==="")return;let g=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},y=Gy(p,_,g);if(y.kind==="trailer"){l(),i=null;return}if(y.kind!=="continuation"){if(y.kind==="tag-header"){c=!0,m(y.header.tag,y.header,_);return}if(y.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:y.header.delimiter,fields:y.header.fields,fieldText:y.header.fieldText,rows:[]};return}if(y.kind==="tagged-row"){c=!0;let b=n.get(y.tag).current;b.rows.push(y.cells),u(b,y.cells);return}if(i===null)throw P(_,"row before header");i.rows.push(y.cells),u(i,y.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let p of r){if(p===null){d.push(...s);continue}let f=n.get(p);d.push(...f.segments),f.current!==null&&d.push(f.current)}return t.preserveInterleaving===!0?o:d}function Ze(e){return Wy(e).flatMap(t=>t.rows.map(r=>Hy(t.fields,r,0)))}function Uy(e){if(!ll.includes(e))throw P(0,"invalid header delimiter")}function sl(e,t,r=!1){return`[${`${r?"~":""}${e===N?"":e}`}]{${t}}:
|
|
20
|
+
`}function ol(e,t){return`[]<${e}>{${t}}:
|
|
21
|
+
`}function ki(e,t){return t.map(Se).join(e)}function Jy(e){if(!Array.isArray(e)||e.length===0)throw P(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Qe(String(t),0)}catch(n){throw ar(n)}if(r==="")throw P(0,"TOONL header requires fields");return r})}function il(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function al(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw P(0,"TOONL continuation cadence must be positive")}function qy(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function cl(e){if(e===null||typeof e!="object"||Array.isArray(e))throw P(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw P(0,"TOONL output requires object rows");if(t.some(r=>!Vr(e[r])))throw P(0,"TOONL rows must be flat objects");return t}function Vy(e){return JSON.stringify([...e].sort())}function ul(e,t){let r=Vy(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function et({delimiter:e=N,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){Uy(e),al(r),al(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,m=!1,d={continuationEveryRows:r,continuationEveryBytes:n},p=()=>s===null||!t?"":`[=${a}]
|
|
22
|
+
`,f=()=>qy(d,c,u)?(c=0,u=0,sl(e,o,!0)):"",_=g=>{pl(g,0);let y=l.get(g);if(y===void 0){if(l.size>=dl)throw P(0,"too many tagged lanes");y={fields:null,fieldsByShape:new Map},l.set(g,y)}return y};return{push(g){if(m)throw P(0,"TOONL encoder is closed");let y=ul(cl(g),i),b="";(s===null||s.length!==y.length||s.some((O,j)=>O!==y[j]))&&(b+=p(),s=y,o=ki(e,s),a=0,c=0,u=0,b+=sl(e,o));let w=s.map(O=>Be(g[O],e));b+=f();let S=`${w.join(e)}
|
|
23
|
+
`;return b+=S,a+=1,c+=1,u+=S.length,b},declareLane(g,y){if(m)throw P(0,"TOONL encoder is closed");let b=Jy(y),w=ki(N,b),S=_(g);return il(S.fields,b)?"":(S.fields=b,ol(g,w))},pushTagged(g,y){if(m)throw P(0,"TOONL encoder is closed");let b=_(g),w=ul(cl(y),b.fieldsByShape),S=ki(N,w),O=w.map(_e=>Be(y[_e],N)),j="";return il(b.fields,w)||(b.fields=w,j+=ol(g,S)),`${j}${g}:${O.join(N)}
|
|
24
|
+
`},end(){return m?"":(m=!0,p())}}}var ll,dl,ml,uO,lO,fl=h(()=>{qr();Yr();ui();ll=[N,"|"," "],dl=8,ml=/^[A-Za-z0-9_-]+$/,uO=new TextEncoder,lO=new TextDecoder});var L=h(()=>{qr();Yr();Yr();rl();fl()});function zy(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${C(Si(e))}
|
|
25
|
+
`)}function Si(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??zy(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=Yy(e.diagnostics,3)),t}function Ee(e,t,r){let s=([r,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:Xr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&o.includes("rate limit")?{command:e,category:"real-error",error:Xr(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:Xr(s)||"not a git repository",help:"git status",diagnostics:s}:o.includes("repository not found")||o.includes("could not resolve host")?{command:e,category:"real-error",error:Xr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Xr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function is(e,t,r,n){return $({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Xr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Yy(e,t){return e.split(/\r?\n/).slice(0,t).join(`
|
|
26
|
+
`).trim()}var Fe=h(()=>{"use strict";L()});function cs(e){let t={app:e,version:Xy(dr("__RED_BUILD_VERSION__",()=>"2.88.0")??"0.0.0-dev"),gitSha:dr("__RED_BUILD_GIT_SHA__",()=>"324ab63ca6bbced0bad34efc358ef97398485c9d")??"unknown",buildTime:dr("__RED_BUILD_TIME__",()=>"2026-07-29T14:42:42-03:00")??"unknown",bundleAsset:dr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=dr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=dr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function Xy(e){return e.startsWith("v")?e.slice(1):e}function dr(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var xi=h(()=>{});import{isAbsolute as Qy,join as tt,resolve as vi}from"node:path";function tb(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function _l(e){return tt(tb(e),wl)}function Rl(e){return tt(_l(e),"state")}function kl(e){return tt(_l(e),"tmp")}function G(e){return tt(Rl(e),"rsp")}function rb(e){return tt(Rl(e),"red-skills.rdb")}function nb(e){return tt(kl(e),"red-skills.rdb")}function xl(e,t){let r=rb(e);if(t(r))return r;let n=nb(e);if(t(n))throw sb();return r}function sb(){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.")}function vl(e){return tt(kl(e),"waits")}function Cl(e){let t=e.overrideEnvVars??Ci;for(let n of t){let s=e.env[n];if(s)return Qy(s)?s:vi(e.startDir,s)}let r=vi(e.startDir);for(;;){if(e.exists(tt(r,wl)))return r;let n=tt(r,".."),s=vi(n);if(s===r)break;r=s}return e.startDir}var wl,Zy,eb,Ci,Sl,El,pe=h(()=>{wl=".red",Zy="MEMORY_ROOT",eb="RED_BRAIN_ROOT",Ci=[Zy,eb];Sl=".red/state/red-skills.rdb";El=".red/tmp/red-skills.rdb"});function W(e){return C(e,{keyedMapCollapse:!0})}var ob,ib,WO,rt=h(()=>{L();pe();ob=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],ib=[{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"}],WO=[...ob,...ib]});function Dt(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 ab(e,t){if(!t)return!0;let r=Ti(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function te(e,t){return t?e.filter(r=>ab(r,t)):[...e]}function nt(e,t){return Oi(e,t,{includeLegacyHelp:!0})}function Oi(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Ti(e){return Array.isArray(e)?e.map(Ti).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Ti).join(" "):String(e??"")}var Qr=h(()=>{"use strict"});var hs={};M(hs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>us,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>ls,DEFAULT_RSP_OVERHEAD_CEILING:()=>ve,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>ms,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>ps,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>ds,RSP_OVERHEAD_FAMILIES:()=>fb,RSP_OVERHEAD_LEDGER_FILE:()=>Al,RSP_OVERHEAD_SCHEMA_VERSION:()=>Pl,classifyOverheadSample:()=>Ii,noteChildProcessMs:()=>Ll,noteSelfStateBytesRead:()=>tn,overheadCounters:()=>rn,overheadFamilyDisabled:()=>Di,overheadHealth:()=>ft,overheadLedgerPath:()=>Li,overheadMsOf:()=>Il,overheadTelemetryFields:()=>fs,readOverheadLedger:()=>Zr,readSelfStateFile:()=>gs,readSelfStateFileSync:()=>yb,recordOverheadSample:()=>en,resetOverheadCounters:()=>hb,resetOverheadLedger:()=>gb,startChildProcessTimer:()=>re});import{existsSync as cb,mkdirSync as ub,readFileSync as Tl,renameSync as lb,writeFileSync as db}from"node:fs";import{readFile as mb}from"node:fs/promises";import{dirname as pb,join as Ol}from"node:path";function Il(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,Pi(t)):0}function Ii(e,t=ve){let r=Il(e),n=[];return r>t.maxOverheadMs&&n.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&n.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&n.push("overhead-exceeds-savings"),{overhead_ms:r,breached:n.length>0,reasons:n}}function fs(e,t=ve){let r=Ii(e,t);return{wrapper_ms:Pi(e.wrapperMs),overhead_ms:r.overhead_ms,child_ms:Pi(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:r.breached,overhead_breach_reasons:r.reasons.join(",")}}function Li(e){return Ol(G(e),Al)}function Zr(e){try{let t=Tl(Li(e),"utf8"),r=Rb(t);if(kb(r))return r}catch{}return{version:1,families:{}}}function en(e,t,r=ve,n=Date.now()){let s=Zr(e),o=Ii(t,r),i=s.families[t.family]??_b(t.family,n),a=Mi(i,n)?Dl(i):i,c=o.breached?a.consecutive_breaches+1:0,u={...a,family:t.family,invocations:a.invocations+1,breaches:a.breaches+(o.breached?1:0),consecutive_breaches:c,breached:o.breached,reasons:o.reasons,last_overhead_ms:o.overhead_ms,last_self_state_bytes_read:Math.max(0,Math.trunc(t.selfStateBytesRead)),last_bytes_saved:Math.max(0,Math.trunc(t.bytesSaved)),updated_at:new Date(n).toISOString()};return o.breached?c>=r.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(n).toISOString(),u.disabled_until=new Date(n+r.cooldownMs).toISOString(),u.disabled_reason=bb(t.family,c,o,r)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,Nl(e,s),u}function Di(e,t,r=Date.now()){let n=Zr(e).families[t];return!n?.disabled||Mi(n,r)?null:n}function gb(e,t){let r=Zr(e);return t?delete r.families[t]:r.families={},Nl(e,r),r}function ft(e,t=ve,r=Date.now()){let n=Object.values(Zr(e).families).map(a=>Mi(a,r)?Dl(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=n.filter(a=>a.disabled),o=n.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:Pl,verdict:i,summary:wb(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:n}}function tn(e){Number.isFinite(e)&&e>0&&(Ni+=e)}function Ll(e){Number.isFinite(e)&&e>0&&($i+=e)}function rn(){return{selfStateBytesRead:Ni,childMs:$i}}function hb(){Ni=0,$i=0}function re(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,Ll(Number(process.hrtime.bigint()-e)/1e6))}}async function gs(e){let t=await mb(e,"utf8");return tn(Buffer.byteLength(t)),t}function yb(e){let t=Tl(e,"utf8");return tn(Buffer.byteLength(t)),t}function bb(e,t,r,n){let s=r.reasons.map(o=>o==="wall-clock-ceiling"?`added ${r.overhead_ms}ms > ${n.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${n.maxSelfStateBytes}B`:"self-state read exceeded bytes saved").join("; ");return`rsp ${e} exceeded its overhead ceiling on ${t} consecutive invocations (${s}); wrapper self-disabled, commands pass through raw`}function wb(e,t,r){if(e==="green")return"every wrapper family is inside its overhead ceiling";let n=[];return t.length>0&&n.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),r.length>0&&n.push(`breaching: ${r.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),n.join("; ")}function Mi(e,t){if(!e.disabled||!e.disabled_until)return!1;let r=Date.parse(e.disabled_until);return Number.isFinite(r)&&r<=t}function Dl(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function _b(e,t){return{family:e,invocations:0,breaches:0,consecutive_breaches:0,breached:!1,reasons:[],disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,last_overhead_ms:0,last_self_state_bytes_read:0,last_bytes_saved:0,updated_at:new Date(t).toISOString()}}function Nl(e,t){try{let r=Li(e);if(!cb(Ol(e,".red")))return;ub(pb(r),{recursive:!0});let n=`${r}.${process.pid}.tmp`;db(n,`${C(t)}
|
|
27
|
+
`,{encoding:"utf8",mode:384}),lb(n,r)}catch{}}function Rb(e){try{return JSON.parse(e)}catch{return D(e)}}function kb(e){return!Ai(e)||e.version!==1||!Ai(e.families)?!1:Object.values(e.families).every(Sb)}function Sb(e){return Ai(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function Ai(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pi(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var Al,Pl,us,ls,ds,ms,ps,fb,ve,Ni,$i,U=h(()=>{"use strict";pe();L();Al="overhead-budget.toon",Pl="red.rsp.overhead.v1",us=250,ls=1024*1024,ds=64*1024,ms=3,ps=6*60*60*1e3,fb=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],ve={maxOverheadMs:us,maxSelfStateBytes:ls,netLossFloorBytes:ds,consecutiveBreaches:ms,cooldownMs:ps};Ni=0,$i=0});import{createHash as Eb}from"node:crypto";import{constants as Bi}from"node:fs";import{mkdir as xb,open as vb}from"node:fs/promises";import{createConnection as Cb}from"node:net";import{tmpdir as Tb}from"node:os";import{dirname as Ob,join as Fi}from"node:path";async function $l(e,t,r="resident server"){let n=e.timeoutMs??1e3;return await new Promise((s,o)=>{let i=Cb(e.socketPath),a=!1,c="",u=setTimeout(()=>{l(()=>o(new Error(`${r} timed out`))),i.destroy()},n);function l(m){a||(a=!0,clearTimeout(u),m())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
|
|
28
|
+
`)}),i.on("data",m=>{c+=m.toString("utf8");let d=c.indexOf(`
|
|
29
|
+
`);if(d<0)return;let p=c.slice(0,d);l(()=>{try{s(JSON.parse(p))}catch(f){o(f)}}),i.end()}),i.on("error",m=>l(()=>o(m))),i.on("close",()=>{a||l(()=>o(new Error(`${r} closed without response`)))})})}async function Ml(e){await xb(Ob(e),{recursive:!0,mode:448});try{return await vb(e,Bi.O_CREAT|Bi.O_EXCL|Bi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Nt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function ji(e,t=1e3){if(!Nt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let r=Date.now()+t;for(;Date.now()<r;){if(!Nt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}function Bl(e){let t=e.env??process.env,r=Eb("sha256").update(e.key).digest("hex").slice(0,20),n=t.XDG_RUNTIME_DIR;if(n){let o=Fi(n,"red-skills",r);if(Fi(o,e.socketFileName).length<Ab)return o}let s=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid");return Fi(Tb(),`red-skills-${s}`,r)}var Ab,Hi=h(()=>{Ab=108});async function mr(e,t){return await $l(e,t,"resident rsp server")}var Gi=h(()=>{Hi()});var Fl=h(()=>{"use strict";Gi()});import{existsSync as Pb,readdirSync as Ib}from"node:fs";import{homedir as Lb}from"node:os";import{basename as Ui,dirname as Wi,join as fe,resolve as ys}from"node:path";function Db(e){return"command"in e}function bs(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??Pb,s=t.execPath??process.execPath,o=t.execArgv??process.execArgv,i=t.callerEntry===void 0?process.argv[1]:t.callerEntry,a=(u,l)=>({command:s,args:[...o,u],source:l});if(r.RSP_BIN)return{command:r.RSP_BIN,args:[],source:"env-rsp-bin"};if(i&&Mb(i))return a(ys(i),"caller-entry");let c=[];for(let[u,l]of Fb(i,t.rootDir,r,t.listDir??Wb))if(c.push(u),n(u))return a(u,l);return{diagnostic:st,searched:c,...i?{callerEntry:ys(i)}:{}}}function Hl(e={},t={}){let r=bs(e,t);if(Db(r))return r;throw new pr(r)}function Mb(e){let t=Ui(e);return t===$t||Ji.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:Bb(ys(e))}function Bb(e){let t=Wi(e);for(let r=0;r<4;r++){if(Ui(t)==="rsp")return!0;let n=Wi(t);if(n===t)return!1;t=n}return!1}function*Fb(e,t,r,n){if(e){let o=Wi(ys(e));yield[fe(o,$t),"caller-sibling-bundle"];let i=Nb.exec(Ui(e));i&&(yield[fe(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[fe(o,"..","dist",$t),"caller-sibling-bundle"]}for(let o of $b){let i=r[o];i&&(yield[fe(i,"dist",$t),"plugin-root-bundle"],yield[fe(i,"..","..","dist",$t),"plugin-root-bundle"])}t&&(yield[fe(t,"dist",$t),"repo-bundle"],yield[fe(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[fe(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=jb(r);yield[fe(s,$t),"bundle-cache"];for(let o of Hb(s,n))yield[fe(s,o),"bundle-cache"]}function jb(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||fe(e.HOME||Lb(),".cache");return fe(t,"red-skills","bundles")}function Hb(e,t){return t(e).filter(r=>Ji.test(r)).sort((r,n)=>Gb(jl(n),jl(r)))}function jl(e){return Ji.exec(e)?.[1]??""}function Gb(e,t){let r=o=>o.split(".").map(i=>Number.parseInt(i,10)),[n,s]=[r(e),r(t)];for(let o=0;o<Math.max(n.length,s.length);o++){let[i,a]=[n[o],s[o]];if(Number.isNaN(i)||i===void 0)return Number.isNaN(a)||a===void 0?e.localeCompare(t):-1;if(Number.isNaN(a)||a===void 0)return 1;if(i!==a)return i-a}return 0}function Wb(e){try{return Ib(e)}catch{return[]}}var st,pr,$t,Nb,Ji,$b,qi=h(()=>{st="rsp-resident-entry-unresolved";pr=class extends Error{code=st;searched;callerEntry;constructor(t){super(`${st}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
|
|
30
30
|
searched:
|
|
31
31
|
${t.searched.map(r=>` ${r}`).join(`
|
|
32
|
-
`)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},$t="rsp.bundle.min.mjs",
|
|
33
|
-
`,{encoding:"utf8",mode:384}),await
|
|
32
|
+
`)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},$t="rsp.bundle.min.mjs",Nb=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,Ji=/^rsp-(.+)\.bundle\.min\.mjs$/,$b=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{randomUUID as ql}from"node:crypto";import{spawn as Vl}from"node:child_process";import{readFileSync as Ub}from"node:fs";import{mkdir as zi,readFile as Kl,rename as Jb,rm as je,stat as qb,writeFile as Vb}from"node:fs/promises";import{dirname as Mt,join as ot,resolve as Yi}from"node:path";import{fileURLToPath as Kb}from"node:url";function He(e){let t=ow(e)??Yi(e),r=sw(t),n=G(t);return{rootDir:t,socketPath:ot(r,"rsp.sock"),pidPath:ot(r,"rsp.pid"),lockPath:ot(r,"rsp.lock"),wakeLockPath:ot(t,".red","tmp","rsp","wake.lock"),summaryPath:ot(n,"rsp-status-summary.json"),registryPath:ot(n,"rsp-resident.pid.json")}}async function ws(e,t){if(await zi(Mt(e.socketPath),{recursive:!0,mode:448}),await Ul(e.socketPath,t))return;await Wl(e,t);let r=await Zl(e.lockPath);if(r)try{if(await Ul(e.socketPath,t))return;await Wl(e,t),await Xb(e.socketPath);let n=Qb(e,t);await Gl(e.socketPath,n);return}finally{await r.close(),await je(e.lockPath,{force:!0})}await Gl(e.socketPath)}async function Bt(e,t=200){try{return await Yl(e,t)!=null}catch{return!1}}async function Yl(e,t=200){let r=await mr({socketPath:e,timeoutMs:t},{id:ql(),op:"ping"});return r.ok?rd(r.value)?{version:uw(r.value.version)}:{}:null}async function _s(e,t){if(await zi(Mt(e.socketPath),{recursive:!0,mode:448}),await Bt(e.socketPath,50))return!1;let r=await Zl(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=ed(e,t);return Vl(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 Xl(e,t){try{await ws(e,t)}finally{await je(e.wakeLockPath,{force:!0})}}async function sn(e){try{let t=tw(await Kl(e,"utf8"));return lw(t)?t:null}catch{return null}}async function Rs(e,t){let r={version:zl,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 zi(Mt(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await Vb(n,`${C(r)}
|
|
33
|
+
`,{encoding:"utf8",mode:384}),await Jb(n,e)}async function ks(e,t=process.pid){try{let r=await sn(e);if(r&&r.pid!==t)return;await je(e,{force:!0})}catch{}}async function nn(e){let t=await sn(e.registryPath);if(!t)try{return await Kl(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Nt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await Bt(t.socket_path,100);return r&&await nw(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 Ql(e){let t=await nn(e);return t.state==="registered-dead"||t.state==="invalid"?(await je(e.registryPath,{force:!0}),await nn(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await ji(t.entry.pid),await je(e.registryPath,{force:!0}),await je(t.entry.socket_path,{force:!0}),await nn(e)):t}async function Gl(e,t){let r=Date.now()+Yb(),n;for(;Date.now()<r;){if(await Bt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Vi("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Vi("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?Vi("resident rsp server did not start",t):"resident rsp server did not start")}function Yb(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:zb}async function Xb(e){await je(e,{force:!0})}function Qb(e,t){let[r,n]=ed(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Vl(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=>{o=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{i=ew(`${i}${c}`,Zb)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function Vi(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:
|
|
34
34
|
${s}`),n.join(`
|
|
35
|
-
`)}function
|
|
35
|
+
`)}function ew(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function tw(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return D(t)}}async function Wl(e,t){try{let r=await sn(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Nt(r.pid)){await je(e.registryPath,{force:!0});return}if(await Bt(r.socket_path,100))return;if(td(t.clientVersion,r.resident_version)&&(await rw(r.pid,1500),!Nt(r.pid))){await je(e.registryPath,{force:!0});return}await ji(r.pid),await je(e.registryPath,{force:!0})}catch{}}async function rw(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Nt(e))return;await new Promise(n=>setTimeout(n,50))}}async function nw(e){if(!e.startsWith("file://"))return!1;try{return await qb(Kb(e)),!1}catch(t){return t.code==="ENOENT"}}function ed(e,t){let r=Hl(t,{rootDir:e.rootDir});return[r.command,r.args]}function sw(e){return Bl({key:e,socketFileName:"rsp.sock"})}function ow(e){let t=Yi(e);for(let r=0;r<32;r++){try{let s=Ki(ot(t,".git"));if(s!=null)return iw(t,s)??t;if(Ki(ot(t,".git","HEAD"))!=null||Ki(ot(t,".red","config.yaml"))!=null)return t}catch{}let n=Mt(t);if(n===t)return null;t=n}return null}function iw(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=Yi(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?Mt(Mt(Mt(n))):null}function Ki(e){try{return Ub(e,"utf8")}catch{return null}}async function Ul(e,t){let r=await Yl(e).catch(()=>null);return r?td(t.clientVersion,r.version)?(await aw(e,t.clientVersion),await dw(e),!1):!0:!1}async function aw(e,t){try{await mr({socketPath:e,timeoutMs:200},{id:ql(),op:"handover",clientVersion:t})}catch{}}function td(e,t){return!e||!t?!1:cw(e,t)>0}function cw(e,t){let r=Jl(e),n=Jl(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Jl(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 rd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function uw(e){return typeof e=="string"&&e.length>0?e:void 0}function lw(e){return rd(e)&&e.version===zl&&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 dw(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Bt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var zl,zb,Zl,Zb,Ss=h(()=>{L();pe();Hi();Gi();qi();qi();zl=1,zb=5e3;Zl=Ml;Zb=8*1024});var Ft={};M(Ft,{RSP_ENTRY_UNRESOLVED:()=>st,ResidentRspElisionStore:()=>on,RspResidentEntryError:()=>pr,ensureResidentServer:()=>ws,kickResidentServer:()=>_s,pingResident:()=>Bt,readResidentRegistry:()=>sn,removeResidentRegistry:()=>ks,residentRegistryStatus:()=>nn,resolveResidentPaths:()=>He,resolveRspEntry:()=>bs,sweepResidentRegistry:()=>Ql,warmResidentServer:()=>Xl,writeResidentRegistry:()=>Rs});import{randomUUID as mw}from"node:crypto";function nd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var on,Ge=h(()=>{"use strict";Fl();Ss();on=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?nd(r)&&r.status==="expired"?r:!nd(r)||typeof r.original!="string"?null:{...r,original:Buffer.from(r.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async recoveryHandles(t=5){return await this.request({op:"recovery-handles",limit:t})}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 ws(this.paths,this.config);let r=await mr(this.paths,{...t,id:mw()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});function Qi(e,t,r=sd){let n=Math.max(0,Math.floor(e)),s=r in od?r:sd,o=od[s],i=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:i,tokens_saved_high:a,dollars_saved_estimate_usd:Xi(n,o),dollars_saved_low_usd:i==null?null:Xi(i,o),dollars_saved_high_usd:a==null?null:Xi(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:pw}}function Xi(e,t){return fw(Math.max(0,e)/1e6*t)}function an(e){return`$${e.toFixed(6)}`}function fw(e){return Math.round(e*1e6)/1e6}var sd,od,pw,Zi=h(()=>{"use strict";sd="gpt-5",od={"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},pw="estimate derived from byte-based token estimate when token counts are estimated"});var cn={};M(cn,{isResidentEntryUnresolved:()=>cd,reportResidentEntryDiagnostic:()=>ta,residentConfigFor:()=>ad,residentElisionStore:()=>ea});function ad(e,t){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,...t?{clientVersion:t}:{}}}function ea(e,t,r={}){let n=r.paths??He(e);return new on(n,ad(t,cs("rsp").version),{ensureResident:r.ensureResident})}function ta(e){return cd(e)?(id||(id=!0,process.stderr.write(`rsp: ${st} \u2014 elision is off until an rsp entry is installed
|
|
36
36
|
`),process.env.RSP_DEBUG==="1"&&e instanceof Error&&process.stderr.write(`${e.message}
|
|
37
|
-
`)),!0):!1}function
|
|
38
|
-
`)}async function
|
|
37
|
+
`)),!0):!1}function cd(e){return typeof e=="object"&&e!==null&&e.code===st}var id,jt=h(()=>{"use strict";xi();Ge();id=!1});function la(e){return e==="success"?0:e==="failure"?1:2}function da(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function it(e,t,r){return{status:e,exitCode:la(e),summary:t,...r?{details:r}:{}}}function Y(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function gr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var pd,fd,gd,ca,hd,yd,bd,wd,ua,Ht=h(()=>{"use strict";pd="rsp.wait.result",fd="rsp.wait.registry",gd="rsp.wait.list",ca={cmd:18e5,pr:27e5,run:27e5,release:72e5},hd=16*1024,yd=1e4,bd=2e3,wd=6e4,ua={cmd:"local-cmd:event-driven",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});import{readdir as _w,readFile as Rw}from"node:fs/promises";async function hr(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await vs(r),s=[r,...n];if(s.every(c=>!Gt(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(_d(e,"SIGTERM"),xs(n,"SIGTERM"),await Rd(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await vs(r)])];_d(e,"SIGKILL"),xs(o,"SIGKILL");let i=Math.max(1e3,t);await kw(e,i);let a=await Rd(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Gt)}}function _d(e,t){let r=e.pid;if(r)try{process.platform!=="win32"?process.kill(-r,t):e.kill(t)}catch{try{e.kill(t)}catch{}}}function xs(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function kw(e,t){return e.exitCode!==null||e.signalCode!==null?!0:await new Promise(r=>{let n=setTimeout(()=>r(!1),t);e.once("close",()=>{clearTimeout(n),r(!0)})})}async function Rd(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Gt(n)))return!0;await Sw(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Gt(n))}async function vs(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await _w("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await kd(o);if(!i)continue;let a=Number(i[1]);if(!Number.isSafeInteger(a))continue;let c=t.get(a)??[];c.push(o),t.set(a,c)}let r=[],n=[...t.get(e)??[]];for(;n.length>0;){let s=n.shift();r.push(s),n.push(...t.get(s)??[])}return r.reverse()}async function un(e){return(await kd(e))?.[19]}async function yr(e,t){if(!Gt(e))return!1;if(!t)return!0;let r=await un(e);return r===void 0?process.platform!=="linux":r===t}function Gt(e){try{return process.kill(e,0),!0}catch{return!1}}async function kd(e){if(process.platform!=="linux")return null;try{let t=await Rw(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function Sw(e){await new Promise(t=>setTimeout(t,e))}var at=h(()=>{"use strict"});import{constants as Ew}from"node:os";async function Sd(e){let t=e[1],r={timeoutMs:ca.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:yd,terminateGraceMs:bd,probeTimeoutMs:wd,format:"toon",captureBytes:hd},n={kind:t,options:r};if(!t||t==="--help"||t==="-h")return{...n,kind:"help"};if(t!=="ls"&&t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...n,kind:void 0};t!=="ls"&&(r.timeoutMs=ca[t]);let s=e.indexOf("--"),o=s>=0?s:e.length;for(let i=2;i<o;i++){let a=e[i];a==="--timeout"?r.timeoutMs=ln(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=Cw(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=ln(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=ln(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=ln(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=vw(e[++i]??"","capture bytes"):t==="run"&&a==="--branch"?n.branch=e[++i]??"":t==="run"&&a==="--latest"?n.latest=!0:t==="release"&&a==="--tag"?n.tagGlob=e[++i]??"":!a.startsWith("--")&&!n.target&&(n.target=a)}return await xw(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function xw(e){if(!(e.signal in Ew.signals))throw new Error(`invalid signal: ${e.signal}`);if(e.signalPid!==void 0){if(!Number.isSafeInteger(e.signalPid)||e.signalPid<=0)throw new Error(`invalid signal pid: ${e.signalPid}`);if(!Gt(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await un(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function ln(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 dn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return ln(n)}catch{return t}}function vw(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Cw(e){return e.startsWith("SIG")?e:`SIG${e}`}var Ed=h(()=>{"use strict";Ht();at()});import{existsSync as ma,readFileSync as Tw,statSync as Ow}from"node:fs";import{basename as xd,dirname as Cs,isAbsolute as Aw,join as vd,resolve as mn}from"node:path";function Ts(e,t=process.env){let r=mn(e);if(Ci.map(i=>t[i]).find(Boolean))return Cl({startDir:r,env:t,exists:ma});let s=Iw(r),o=Pw(r,s);return o||(s??r)}function Pw(e,t){let r=e;for(;;){if(ma(vd(r,".red")))return r;if(t&&r===t)return null;let n=mn(r,"..");if(n===r)return null;r=n}}function Iw(e){let t=e;for(;;){let r=vd(t,".git");if(ma(r))return Nw(r)?t:Lw(r)??t;let n=mn(t,"..");if(n===t)return null;t=n}}function Lw(e){let t=Dw(e);if(!t)return null;let r=Cs(t),n=Cs(r);return xd(r)!=="worktrees"||xd(n)!==".git"?null:Cs(n)}function Dw(e){let t;try{t=Tw(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return Aw(n)?mn(n):mn(Cs(e),n)}function Nw(e){try{return Ow(e).isDirectory()}catch{return!1}}var pa=h(()=>{pe()});import{join as $w}from"node:path";function Bw(e,t=process.env){return Ts(e,t)}function br(e,t=process.env){return vl(Bw(e,t))}function Cd(e,t=process.env){return $w(br(e,t),Mw)}var Mw,fa=h(()=>{"use strict";pe();pa();Mw="spool"});import{randomUUID as Fw}from"node:crypto";import{existsSync as jw}from"node:fs";import{mkdir as Hw,readdir as Gw,readFile as Ww,rename as Uw,rm as ga,writeFile as Jw}from"node:fs/promises";import{dirname as qw,join as Od}from"node:path";function Ad(e,t,r=process.env){return Od(br(e,r),`${t}${Vw}`)}async function wr(e,t){await ha(e,`${W(t)}
|
|
38
|
+
`)}async function Os(e,t,r){t.status=r,await wr(e,t)}async function As(e,t=process.env){let r=br(e,t);if(!jw(r))return[];let n=await Gw(r).catch(()=>[]),s=[];for(let o of n.filter(i=>Kw.some(a=>i.endsWith(a)))){let i=Od(r,o),a=await zw(i);if(!a){await ga(i,{force:!0});continue}if(!await Yw(a)){await ga(i,{force:!0});continue}s.push(a)}return s}async function zw(e){let t;try{t=await Ww(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Xw(r);return n&&Object.keys(n).length>0?n:null}async function Yw(e){let t=typeof e.pid=="number"?e.pid:0;if(!t||!Number.isSafeInteger(t)||t<=0)return!1;let r=typeof e.pid_start_time=="string"?e.pid_start_time:void 0;return await yr(t,r)}function Xw(e){try{let t=D(e);if(Td(t))return t}catch{}try{let t=JSON.parse(e);if(Td(t))return t}catch{}return null}async function ha(e,t){await Hw(qw(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${Fw()}`;try{await Jw(r,t,"utf8"),await Uw(r,e)}finally{await ga(r,{force:!0})}}function ya(e){return{schema:fd,version:1,...e}}function Td(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Vw,Kw,fn=h(()=>{"use strict";L();rt();Ht();fa();at();Vw=".toon",Kw=[".toon",".json"]});function _r(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function We(e){return _r(e)?e:{}}function Wt(e){return Array.isArray(e)?e.filter(_r):[]}function X(e,t){let r=e[t];return typeof r=="string"?r:""}function Rr(e,t){let r=e[t];return typeof r=="number"?r:0}function ba(e){let t=JSON.parse(e);if(!_r(t))throw new Error("expected JSON object");return t}function Ps(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var Is=h(()=>{"use strict"});import{spawn as Qw}from"node:child_process";import{resolve as Zw}from"node:path";async function Pd(e,t,r){let n=[];if(e.signalPid){let s=await e_(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await t_(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function e_(e){let t=e.signalPid;if(!await yr(t,e.signalPidStartTime))return{hook:"signal-pid",error:"target process is no longer the process the wait was asked to signal",pid:t,signal:e.signal};try{return process.kill(t,e.signal),null}catch(r){return{hook:"signal-pid",error:Id(r),pid:t,signal:e.signal}}}async function t_(e,t,r){let n=We(t.wait),s=We(t.verdict);return await r_(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?Zw(r,e.resultFile):"",RSP_WAIT_STATUS:String(n.status??"indeterminate"),RSP_WAIT_EXIT_CODE:String(s.target_exit_code??2),RSP_WAIT_TARGET:String(n.target??""),RSP_WAIT_RESULT_SCHEMA:"rsp.wait.result@1"})}async function r_(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=m=>{i||(i=!0,o(m))},u=Qw(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,hr(u,n).then(m=>c({error:`timed out after ${r}ms`,...m.cleaned?{}:{survivors:m.survivors}}))},r);u.once("error",m=>{clearTimeout(l),c({error:Id(m)})}),u.once("close",(m,d)=>{clearTimeout(l),!a&&c(m===0?null:{error:`exited with ${d??m??"unknown"}`,status:m??null,signal:d??null})})})}function Id(e){return e instanceof Error?e.message:String(e)}var Ld=h(()=>{"use strict";Is();at()});import{resolve as n_}from"node:path";async function Dd(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=s_(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=gn(t,r,o,{status:"pending"},i);await hn(n.resultFile,a,n.format);let c=await Pd(n,a,s),u=gn(t,r,o,c,i);return await hn(n.resultFile,u,n.format),{result:u,exitCode:Nd(o,c)}}function Nd(e,t){return t.status!=="success"||e.status==="running"?2:la(e.status)}function s_(e,t,r=[]){return t!==!1?e:{status:"indeterminate",exitCode:2,summary:`${e.summary}; could not verify process cleanup`,details:{...e.details??{},cleanup:{verified:!1,survivors:r}}}}function gn(e,t,r,n,s){return{schema:pd,version:1,wait:{id:t.id,target:t.target,kind:e,status:r.status,reason:t.reason,started_at:t.started_at,completed_at:s,poll_tier:t.poll_tier},verdict:{exit_code:Nd(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function hn(e,t,r){e&&await ha(n_(e),kr(t,r))}function kr(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
|
|
39
39
|
`:`${W(e)}
|
|
40
|
-
`}var
|
|
41
|
-
`)){let s=n.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let i=s.indexOf(":");if(i<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,i).trim();if(!c)continue;let u=s.slice(i+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:c}),u&&r.map(m=>m.key).join(".")===t)return
|
|
42
|
-
`,{encoding:"utf8",mode:384}),await m_(r,e)}catch(n){throw await Md(r,{force:!0}),n}}function w_(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Jd(e){try{return JSON.parse(e)}catch{return D(e)}}function __(e){return ya(e)&&e.version===1&&ya(e.entries)&&Object.values(e.entries).every(Fs)}function Fs(e){return ya(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function ya(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var jd,Hd,Gd,Er,ha,yn=h(()=>{"use strict";pe();L();U();jd="gh-etag",Hd="gh-etag-cache.toon",Gd="gh-etag-cache.json",Er=4*1024*1024;ha=new Set});var Qd={};M(Qd,{DEFAULT_RSP_BYTE_BUDGET:()=>Ae,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Oe,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ct,DEFAULT_RSP_IDLE_MS:()=>Gs,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Xd,DEFAULT_RSP_STORE_PATH:()=>Ea,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Hs,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Kd,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>zd,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>js,DEFAULT_RSP_TTL_DAYS:()=>Te,MIN_RSP_IDLE_MS:()=>Yd,resolveRspConfig:()=>Pe});import{existsSync as R_,readFileSync as k_}from"node:fs";import{join as S_,resolve as Vd}from"node:path";function Pe(e,t,r){let n=Nd(Vd(e),S_(".red","config.yaml")),s=n?k_(n,"utf8"):"",o=Ns(s,"rsp.enabled")==="true",i=Ns(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ne(V(s,"rsp.ttlDays"),Te),u=ne(Je(t.RSP_EPHEMERAL_TTL_HOURS)??V(s,"rsp.ephemeralTtlHours"),Oe),l=ne(V(s,"rsp.byteBudget"),Ae),m=ne(V(s,"rsp.telemetryTtlDays"),js),d=ne(V(s,"rsp.telemetryByteBudget")??V(s,"rsp.byteBudget"),Hs),p=ne(Je(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??V(s,"rsp.telemetryDrainIntervalMs"),Kd),f=ne(Je(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??V(s,"rsp.telemetryDrainTimeoutMs"),zd),_=E_(Je(t.RSP_IDLE_MS)??V(s,"rsp.idleMs"),Gs,Yd),g=ne(Je(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??V(s,"rsp.heavyGitByteThreshold"),ct),y=x_(Je(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??V(s,"rsp.measurement.holdoutShare"),Xd),b=ne(Je(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??V(s,"rsp.ghEtagCacheMaxBytes"),Er),w={maxOverheadMs:ne(Je(t.RSP_MAX_OVERHEAD_MS)??V(s,"rsp.overhead.maxOverheadMs"),us),maxSelfStateBytes:ne(Je(t.RSP_MAX_SELF_STATE_BYTES)??V(s,"rsp.overhead.maxSelfStateBytes"),ls),netLossFloorBytes:ne(V(s,"rsp.overhead.netLossFloorBytes"),ds),consecutiveBreaches:ne(Je(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??V(s,"rsp.overhead.consecutiveBreaches"),ms),cooldownMs:ne(V(s,"rsp.overhead.cooldownMs"),ps)},S=Ge(e).rootDir,O=r??t.RSP_STORE_URI??`file://${kl(Vd(S),R_)}`;return{enabled:o,proxyEnabled:a,storeUri:O,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:m,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:f,idleMs:_,heavyGitByteThreshold:g,measurementHoldoutShare:y,ghEtagCacheMaxBytes:b,overhead:w}}function V(e,t){let r=Ns(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function ne(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function E_(e,t,r){let n=ne(e,t);return Math.max(n,r)}function x_(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function Je(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ct,Ea,Te,Oe,Ae,js,Hs,Kd,zd,Gs,Yd,Xd,Ie=h(()=>{"use strict";$d();pe();Es();U();yn();ct=8*1024,Ea=_l,Te=7,Oe=6,Ae=64*1024*1024,js=90,Hs=4*1024*1024,Kd=3e4,zd=2e3,Gs=5*6e4,Yd=5e3,Xd=0});function Zd(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Ft(),cn)),o=s(e,Pe(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var em=h(()=>{"use strict";Ie()});import{spawn as v_}from"node:child_process";async function rm(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:Y("missing command line")};let a=e.store??Zd(n),c=Ld(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,m=!1,d=async y=>{l||(l=!0,i.removeEventListener("abort",_),await As(s,o,y.verdict.status).catch(()=>{}),u(y))},p=v_(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});p.stdout?.on("data",y=>c.stdout.write(Buffer.from(y))),p.stderr?.on("data",y=>c.stderr.write(Buffer.from(y)));let f=async(y,b)=>{if(l||m)return;m=!0,clearTimeout(g);let w=await hr(p,r.terminateGraceMs),S=await tm(null,null,c,a,t);await d({verdict:{status:y,exitCode:2,summary:b,details:S},cleanupProven:w.cleaned,survivors:w.survivors})},_=()=>void f("indeterminate","command interrupted");i.addEventListener("abort",_,{once:!0});let g=setTimeout(()=>{f("timeout",`command timed out after ${nm(r.timeoutMs)}`)},r.timeoutMs);p.once("error",y=>{clearTimeout(g),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:y.message}})}),p.once("close",(y,b)=>{if(clearTimeout(g),l||m)return;let w=y===0;tm(y,b,c,a,t).then(S=>d({verdict:{status:w?"success":"failure",exitCode:w?0:1,summary:w?"command exited successfully":`command exited with ${b??y??"unknown"}`,details:S}}))}),i.aborted&&_()})}async function Ws(e){let{probe:t,timeoutMs:r,baseSleepMs:n,registryPath:s,entry:o,signal:i}=e,a=Date.now()+r,c=0,u;for(;Date.now()<a;){if(i.aborted)return{verdict:C_(u,c,o.last_poll_at)};let l;try{l=await t()}catch(_){l=Y(_ instanceof Error?_.message:String(_))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=xa(l),await wr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await As(s,o,l.status).catch(()=>{}),{verdict:l};let m=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),p=Math.min(m+d,Math.max(0,a-Date.now())),f=e.makeWakeSignal?.();await T_(p,i,f)}return await As(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${nm(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:xa(u)}:{attempts:c}}}}async function tm(e,t,r,n,s){let[o,i]=await Promise.all([r.stdout.finish(n,`${s} # stdout`),r.stderr.finish(n,`${s} # stderr`)]);return{status:e??null,signal:t??null,stdout:o,stderr:i}}function xa(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function C_(e,t,r){return Y("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:xa(e)}:{}})}async function T_(e,t,r){t.aborted||e<=0||r?.aborted||await new Promise(n=>{let s=setTimeout(o,e);function o(){clearTimeout(s),t.removeEventListener("abort",i),r?.removeEventListener("abort",a),n()}let i=()=>o(),a=()=>o();t.addEventListener("abort",i,{once:!0}),r?.addEventListener("abort",a,{once:!0})})}function nm(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var sm=h(()=>{"use strict";Dd();em();jt();at();fn()});var va,Ca,Ta,ce,Q,he,qe,bn,Us=h(()=>{"use strict";va="rsp-telemetry.spool.toonl",Ca="rsp-telemetry.spool.jsonl",Ta="rsp-telemetry.spool.corrections.toonl",ce="rsp_accounting_events_v1",Q="rsp_decisions_v1",he="rsp_telemetry_invocations_v1",qe="rsp_telemetry_degradations_v1",bn="rsp_telemetry_index_v1"});function xr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ye(e){return ht(e)??0}function ht(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var Oa=h(()=>{"use strict"});import{randomUUID as Pa,createHash as O_}from"node:crypto";import{appendFileSync as um,existsSync as A_,mkdirSync as lm}from"node:fs";import{mkdir as dm,readdir as P_,readFile as mm,rename as I_,rm as pm,writeFile as Ia}from"node:fs/promises";import{basename as Aa,dirname as wn,join as vr,resolve as om}from"node:path";function qs(e){if(!e)return null;let t=om(e);for(;;){if(A_(vr(t,".red")))return t;let r=om(vr(t,".."));if(r===t)break;t=r}return null}function ut(e){return vr(G(e),va)}function Vs(e){return vr(G(e),Ca)}function Da(e){return vr(G(e),Ta)}async function lt(e,t){yt(e,t)}function yt(e,t){try{let r=qs(e);if(!r)return;let n=ut(r);lm(wn(n),{recursive:!0}),um(n,B_({spool_id:Pa(),event:D_(t)}),{encoding:"utf8",mode:384})}catch{}}function D_(e){return im(im(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function im(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=L_)return e;let o={...e};return delete o[t],ye(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function N_(e){let t=qs(e);if(!t)return[];let r=ut(t);await dm(wn(r),{recursive:!0}).catch(()=>{});let n=await hm(t),s=[...await ym(t),...await j_(n)];return await Promise.all(n.map(o=>pm(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Na(e,t){let r=qs(e);if(!r)return;let n=ut(r);await dm(wn(n),{recursive:!0}).catch(()=>{}),await F_(r);for(let s of await $_(r))await am(r,s,t);for(let s of await ym(r))await fm(r,s,t,!0);for(let s of await hm(r))await am(r,s,t)}async function $_(e){let t=[ut(e),Vs(e)],r=wn(t[0]);return(await P_(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Aa(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Aa(c)}.`));if(!o)return!1;let i=`${Aa(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&M_(a))}).sort().map(s=>vr(r,s))}function M_(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function am(e,t,r){try{let n=await gm(t);for(let s of bm(n))await fm(e,s,r,!1)}finally{await pm(t,{force:!0})}}async function fm(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&cm(e,{correction_id:Pa(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}cm(e,{correction_id:Pa(),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 gm(e){let t="";for(let r=0;r<5;r++){let n=await mm(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Cr(e){try{let t=JSON.parse(e);return!xr(t)||t.collection!==ce&&t.collection!==Q&&t.collection!==he&&t.collection!==qe?null:t}catch{return null}}function B_(e){return tt().push(W_(e))}function cm(e,t){try{let r=qs(e);if(!r)return;let n=Da(r);lm(wn(n),{recursive:!0});let s=tt();um(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 hm(e){let t=[ut(e),Vs(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await I_(n,s),await Ia(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function F_(e){await Promise.all([Ia(ut(e),"",{flag:"a"}),Ia(Vs(e),"",{flag:"a"})]).catch(()=>{})}async function j_(e){let t=[];for(let r of e)t.push(...bm(await gm(r)));return t}async function ym(e){let t=await mm(Da(e),"utf8").catch(()=>""),r=new Map;for(let n of H_(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:Cr(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function bm(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s){try{let o=JSON.parse(s);if(xr(o)){let i=Cr(JSON.stringify(o));t.push(i?{spool_id:Js(JSON.stringify(o)),event:i}:{spool_id:Js(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Js(s),raw_line:s});continue}try{for(let o of et(`${r}
|
|
40
|
+
`}var $d=h(()=>{"use strict";rt();Ht();fn();Ld()});import{createWriteStream as o_,mkdirSync as i_}from"node:fs";import{readFile as a_,rm as c_}from"node:fs/promises";import{dirname as u_}from"node:path";import{join as Md}from"node:path";function Bd(e,t,r){return{stdout:new Ls(r,Md(e,`${t}.stdout.bin`)),stderr:new Ls(r,Md(e,`${t}.stderr.bin`))}}function l_(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!d_(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function d_(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Ls,Fd=h(()=>{"use strict";Ls=class{constructor(t,r){this.limit=t;this.spoolPath=r}head=[];headBytes=0;total=0;spool=null;spoolReady=Promise.resolve();spoolError=null;closed=!1;write(t){if(this.closed)return;this.total+=t.length;let r=this.limit-this.headBytes;if(r>0){let n=t.subarray(0,r);this.head.push(n),this.headBytes+=n.length}if(this.total>this.limit){let n=r>0?t.subarray(r):t;this.openSpool(),n.length>0&&this.appendSpool(n)}}async finish(t,r){this.closed=!0;let n=Buffer.concat(this.head),s=this.total>this.headBytes,o={bytes:this.total,...l_(n),truncated:s};if(!s)return await this.discardSpool(),o;if(await this.closeSpool(),this.spoolError)return o.recovery_error=this.spoolError,o;try{let i=await a_(this.spoolPath);o.handle=await t.mint(Buffer.concat([n,i]),{command:r,loss:{level:"terse",bytes_elided:this.total-this.headBytes}}),await this.discardSpool()}catch(i){o.recovery_error=i instanceof Error?i.message:String(i),o.spool_path=this.spoolPath}return o}async discard(){this.closed=!0,await this.closeSpool(),await this.discardSpool()}openSpool(){if(this.spool||this.spoolError)return;let t;try{i_(u_(this.spoolPath),{recursive:!0}),t=o_(this.spoolPath,{flags:"w"})}catch(r){this.spoolError=r instanceof Error?r.message:String(r);return}t.on("error",r=>{this.spoolError=r instanceof Error?r.message:String(r)}),this.spool=t}appendSpool(t){let r=this.spool;r&&(this.spoolReady=this.spoolReady.then(()=>new Promise(n=>{r.write(t)?n():r.once("drain",()=>n())})))}async closeSpool(){let t=this.spool;t&&(this.spool=null,await this.spoolReady.catch(()=>{}),await new Promise(r=>t.end(()=>r())))}async discardSpool(){await c_(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as m_,readFileSync as vP}from"node:fs";import{dirname as p_,join as f_}from"node:path";function jd(e,t){let r=e;for(let n=0;n<16;n++){let s=f_(r,t);if(m_(s))return s;let o=p_(r);if(o===r)break;r=o}return null}function g_(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Ds(e,t){let r=[];for(let n of e.split(`
|
|
41
|
+
`)){let s=n.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let i=s.indexOf(":");if(i<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,i).trim();if(!c)continue;let u=s.slice(i+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:c}),u&&r.map(m=>m.key).join(".")===t)return g_(u)}}var Hd=h(()=>{});var Xd={};M(Xd,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>Er,GH_ETAG_CACHE_DIR_NAME:()=>Jd,LEGACY_GH_ETAG_CACHE_FILE:()=>qd,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>Vd,enforceGhEtagCacheCeiling:()=>Ea,ghEtagCacheDir:()=>Ns,ghEtagEntryPath:()=>$s,isCacheEntry:()=>Bs,legacyGhEtagCachePaths:()=>Ra,migrateLegacyGhEtagCache:()=>va,readGhEtagCache:()=>Ms,readGhEtagEntry:()=>ka,resetGhEtagCacheMigrationMemo:()=>k_,sweepGhEtagCache:()=>xa,writeGhEtagEntry:()=>Sa});import{existsSync as h_}from"node:fs";import{mkdir as y_,readdir as b_,rename as w_,rm as Gd,stat as Wd,unlink as Ud,writeFile as __}from"node:fs/promises";import{dirname as R_,join as Sr}from"node:path";function Ns(e){return Sr(G(e),Jd)}function $s(e,t){return Sr(Ns(e),`${v_(t)}.toon`)}function Ra(e){let t=G(e);return[Sr(t,qd),Sr(t,Vd)]}async function ka(e,t){await va(e);try{let r=Yd(await gs($s(e,t)));return Bs(r)?r:void 0}catch{return}}async function Sa(e,t,r={}){return await zd($s(e,t.key),t),await Ea(e,r.maxBytes??Er)}async function Ea(e,t=Er){let r=await E_(e),n=r.reduce((o,i)=>o+i.bytes,0);if(n<=t)return{evictedEntries:0,bytes:n};r.sort((o,i)=>o.mtimeMs-i.mtimeMs||o.path.localeCompare(i.path));let s=0;for(let o of r){if(n<=t)break;try{await Ud(o.path),n-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:n}}async function xa(e,t={}){let r=await va(e,{force:!0}),n=await S_(e);return{...await Ea(e,t.maxBytes??Er),reclaimedTmp:n,migratedEntries:r}}async function Ms(e){for(let t of Ra(e))try{let r=Yd(await gs(t));if(C_(r))return r}catch{}return{version:1,entries:{}}}async function va(e,t={}){if(!t.force&&wa.has(e))return 0;wa.add(e);let r=Ra(e).filter(o=>h_(o));if(r.length===0)return 0;let n=await Ms(e),s=0;for(let[o,i]of Object.entries(n.entries)){if(!Bs(i))continue;let a=$s(e,o);await x_(a)||(await zd(a,{...i,key:o}),s+=1)}for(let o of r)await Gd(o,{force:!0});return s}function k_(){wa.clear()}async function S_(e){let t=0;for(let r of[G(e),Ns(e)])for(let n of await Kd(r))if(n.endsWith(".tmp"))try{await Ud(Sr(r,n)),t+=1}catch{}return t}async function E_(e){let t=Ns(e),r=[];for(let n of await Kd(t)){if(!n.endsWith(".toon"))continue;let s=Sr(t,n);try{let o=await Wd(s);o.isFile()&&r.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return r}async function Kd(e){try{return await b_(e)}catch{return[]}}async function x_(e){try{return await Wd(e),!0}catch{return!1}}async function zd(e,t){await y_(R_(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;try{await __(r,`${C(t)}
|
|
42
|
+
`,{encoding:"utf8",mode:384}),await w_(r,e)}catch(n){throw await Gd(r,{force:!0}),n}}function v_(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Yd(e){try{return JSON.parse(e)}catch{return D(e)}}function C_(e){return _a(e)&&e.version===1&&_a(e.entries)&&Object.values(e.entries).every(Bs)}function Bs(e){return _a(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function _a(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Jd,qd,Vd,Er,wa,yn=h(()=>{"use strict";pe();L();U();Jd="gh-etag",qd="gh-etag-cache.toon",Vd="gh-etag-cache.json",Er=4*1024*1024;wa=new Set});var nm={};M(nm,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ct,DEFAULT_RSP_IDLE_MS:()=>Hs,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>rm,DEFAULT_RSP_STORE_PATH:()=>Ca,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>js,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Zd,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>em,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Fs,DEFAULT_RSP_TTL_DAYS:()=>Ce,MIN_RSP_IDLE_MS:()=>tm,resolveRspConfig:()=>Ae});import{existsSync as T_,readFileSync as O_}from"node:fs";import{join as A_,resolve as Qd}from"node:path";function Ae(e,t,r){let n=jd(Qd(e),A_(".red","config.yaml")),s=n?O_(n,"utf8"):"",o=Ds(s,"rsp.enabled")==="true",i=Ds(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ne(V(s,"rsp.ttlDays"),Ce),u=ne(Ue(t.RSP_EPHEMERAL_TTL_HOURS)??V(s,"rsp.ephemeralTtlHours"),Te),l=ne(V(s,"rsp.byteBudget"),Oe),m=ne(V(s,"rsp.telemetryTtlDays"),Fs),d=ne(V(s,"rsp.telemetryByteBudget")??V(s,"rsp.byteBudget"),js),p=ne(Ue(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??V(s,"rsp.telemetryDrainIntervalMs"),Zd),f=ne(Ue(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??V(s,"rsp.telemetryDrainTimeoutMs"),em),_=P_(Ue(t.RSP_IDLE_MS)??V(s,"rsp.idleMs"),Hs,tm),g=ne(Ue(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??V(s,"rsp.heavyGitByteThreshold"),ct),y=I_(Ue(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??V(s,"rsp.measurement.holdoutShare"),rm),b=ne(Ue(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??V(s,"rsp.ghEtagCacheMaxBytes"),Er),w={maxOverheadMs:ne(Ue(t.RSP_MAX_OVERHEAD_MS)??V(s,"rsp.overhead.maxOverheadMs"),us),maxSelfStateBytes:ne(Ue(t.RSP_MAX_SELF_STATE_BYTES)??V(s,"rsp.overhead.maxSelfStateBytes"),ls),netLossFloorBytes:ne(V(s,"rsp.overhead.netLossFloorBytes"),ds),consecutiveBreaches:ne(Ue(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??V(s,"rsp.overhead.consecutiveBreaches"),ms),cooldownMs:ne(V(s,"rsp.overhead.cooldownMs"),ps)},S=He(e).rootDir,O=r??t.RSP_STORE_URI??`file://${xl(Qd(S),T_)}`;return{enabled:o,proxyEnabled:a,storeUri:O,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:m,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:f,idleMs:_,heavyGitByteThreshold:g,measurementHoldoutShare:y,ghEtagCacheMaxBytes:b,overhead:w}}function V(e,t){let r=Ds(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function ne(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function P_(e,t,r){let n=ne(e,t);return Math.max(n,r)}function I_(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function Ue(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ct,Ca,Ce,Te,Oe,Fs,js,Zd,em,Hs,tm,rm,Pe=h(()=>{"use strict";Hd();pe();Ss();U();yn();ct=8*1024,Ca=Sl,Ce=7,Te=6,Oe=64*1024*1024,Fs=90,js=4*1024*1024,Zd=3e4,em=2e3,Hs=5*6e4,tm=5e3,rm=0});function sm(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(jt(),cn)),o=s(e,Ae(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var om=h(()=>{"use strict";Pe()});import{spawn as L_}from"node:child_process";async function am(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:Y("missing command line")};let a=e.store??sm(n),c=Bd(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,m=!1,d=async y=>{l||(l=!0,i.removeEventListener("abort",_),await Os(s,o,y.verdict.status).catch(()=>{}),u(y))},p=L_(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});p.stdout?.on("data",y=>c.stdout.write(Buffer.from(y))),p.stderr?.on("data",y=>c.stderr.write(Buffer.from(y)));let f=async(y,b)=>{if(l||m)return;m=!0,clearTimeout(g);let w=await hr(p,r.terminateGraceMs),S=await im(null,null,c,a,t);await d({verdict:{status:y,exitCode:2,summary:b,details:S},cleanupProven:w.cleaned,survivors:w.survivors})},_=()=>void f("indeterminate","command interrupted");i.addEventListener("abort",_,{once:!0});let g=setTimeout(()=>{f("timeout",`command timed out after ${cm(r.timeoutMs)}`)},r.timeoutMs);p.once("error",y=>{clearTimeout(g),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:y.message}})}),p.once("close",(y,b)=>{if(clearTimeout(g),l||m)return;let w=y===0;im(y,b,c,a,t).then(S=>d({verdict:{status:w?"success":"failure",exitCode:w?0:1,summary:w?"command exited successfully":`command exited with ${b??y??"unknown"}`,details:S}}))}),i.aborted&&_()})}async function Gs(e){let{probe:t,timeoutMs:r,baseSleepMs:n,registryPath:s,entry:o,signal:i}=e,a=Date.now()+r,c=0,u;for(;Date.now()<a;){if(i.aborted)return{verdict:D_(u,c,o.last_poll_at)};let l;try{l=await t()}catch(_){l=Y(_ instanceof Error?_.message:String(_))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=Ta(l),await wr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Os(s,o,l.status).catch(()=>{}),{verdict:l};let m=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),p=Math.min(m+d,Math.max(0,a-Date.now())),f=e.makeWakeSignal?.();await N_(p,i,f)}return await Os(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${cm(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:Ta(u)}:{attempts:c}}}}async function im(e,t,r,n,s){let[o,i]=await Promise.all([r.stdout.finish(n,`${s} # stdout`),r.stderr.finish(n,`${s} # stderr`)]);return{status:e??null,signal:t??null,stdout:o,stderr:i}}function Ta(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function D_(e,t,r){return Y("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Ta(e)}:{}})}async function N_(e,t,r){t.aborted||e<=0||r?.aborted||await new Promise(n=>{let s=setTimeout(o,e);function o(){clearTimeout(s),t.removeEventListener("abort",i),r?.removeEventListener("abort",a),n()}let i=()=>o(),a=()=>o();t.addEventListener("abort",i,{once:!0}),r?.addEventListener("abort",a,{once:!0})})}function cm(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var um=h(()=>{"use strict";Fd();om();Ht();at();fn()});var Oa,Aa,Pa,ce,Q,ge,Je,bn,Ws=h(()=>{"use strict";Oa="rsp-telemetry.spool.toonl",Aa="rsp-telemetry.spool.jsonl",Pa="rsp-telemetry.spool.corrections.toonl",ce="rsp_accounting_events_v1",Q="rsp_decisions_v1",ge="rsp_telemetry_invocations_v1",Je="rsp_telemetry_degradations_v1",bn="rsp_telemetry_index_v1"});function xr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function he(e){return gt(e)??0}function gt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var Ia=h(()=>{"use strict"});import{randomUUID as Da,createHash as $_}from"node:crypto";import{appendFileSync as fm,existsSync as M_,mkdirSync as gm}from"node:fs";import{mkdir as hm,readdir as B_,readFile as ym,rename as F_,rm as bm,writeFile as Na}from"node:fs/promises";import{basename as La,dirname as wn,join as vr,resolve as lm}from"node:path";function Js(e){if(!e)return null;let t=lm(e);for(;;){if(M_(vr(t,".red")))return t;let r=lm(vr(t,".."));if(r===t)break;t=r}return null}function ut(e){return vr(G(e),Oa)}function qs(e){return vr(G(e),Aa)}function Ma(e){return vr(G(e),Pa)}async function lt(e,t){ht(e,t)}function ht(e,t){try{let r=Js(e);if(!r)return;let n=ut(r);gm(wn(n),{recursive:!0}),fm(n,J_({spool_id:Da(),event:H_(t)}),{encoding:"utf8",mode:384})}catch{}}function H_(e){return dm(dm(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function dm(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=j_)return e;let o={...e};return delete o[t],he(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function G_(e){let t=Js(e);if(!t)return[];let r=ut(t);await hm(wn(r),{recursive:!0}).catch(()=>{});let n=await Rm(t),s=[...await km(t),...await V_(n)];return await Promise.all(n.map(o=>bm(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Ba(e,t){let r=Js(e);if(!r)return;let n=ut(r);await hm(wn(n),{recursive:!0}).catch(()=>{}),await q_(r);for(let s of await W_(r))await mm(r,s,t);for(let s of await km(r))await wm(r,s,t,!0);for(let s of await Rm(r))await mm(r,s,t)}async function W_(e){let t=[ut(e),qs(e)],r=wn(t[0]);return(await B_(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${La(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${La(c)}.`));if(!o)return!1;let i=`${La(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&U_(a))}).sort().map(s=>vr(r,s))}function U_(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function mm(e,t,r){try{let n=await _m(t);for(let s of Sm(n))await wm(e,s,r,!1)}finally{await bm(t,{force:!0})}}async function wm(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&pm(e,{correction_id:Da(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}pm(e,{correction_id:Da(),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 _m(e){let t="";for(let r=0;r<5;r++){let n=await ym(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Cr(e){try{let t=JSON.parse(e);return!xr(t)||t.collection!==ce&&t.collection!==Q&&t.collection!==ge&&t.collection!==Je?null:t}catch{return null}}function J_(e){return et().push(Y_(e))}function pm(e,t){try{let r=Js(e);if(!r)return;let n=Ma(r);gm(wn(n),{recursive:!0});let s=et();fm(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 Rm(e){let t=[ut(e),qs(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await F_(n,s),await Na(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function q_(e){await Promise.all([Na(ut(e),"",{flag:"a"}),Na(qs(e),"",{flag:"a"})]).catch(()=>{})}async function V_(e){let t=[];for(let r of e)t.push(...Sm(await _m(r)));return t}async function km(e){let t=await ym(Ma(e),"utf8").catch(()=>""),r=new Map;for(let n of K_(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:Cr(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function Sm(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s){try{let o=JSON.parse(s);if(xr(o)){let i=Cr(JSON.stringify(o));t.push(i?{spool_id:Us(JSON.stringify(o)),event:i}:{spool_id:Us(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Us(s),raw_line:s});continue}try{for(let o of Ze(`${r}
|
|
43
43
|
${s}
|
|
44
|
-
`))
|
|
44
|
+
`))$a(o)&&X_(o)&&t.push({spool_id:o.spool_id,event:Em(o)})}catch{s.startsWith("{")&&t.push({spool_id:Us(s),raw_line:s})}}}return t}function K_(e){return z_(e).map(Q_).filter(t=>t!==null)}function z_(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);$a(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of Ze(`${r}
|
|
45
45
|
${s}
|
|
46
|
-
`))
|
|
47
|
-
`,"utf8"),t]):null}function
|
|
48
|
-
`,"utf8"),await
|
|
46
|
+
`))$a(o)&&t.push(o)}catch{}}}return t}function Us(e){return`legacy:${$_("sha256").update(e).digest("hex").slice(0,24)}`}function Y_(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 Em(e){let{spool_id:t,...r}=e;return Cr(JSON.stringify(r))}function X_(e){return typeof e.spool_id=="string"&&Em(e)!==null}function Q_(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 $a(e){return xr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var j_,xm=h(()=>{"use strict";pe();L();Ws();Ia();j_=64*1024});function Vs(e){return e.trim().split(/\s+/).filter(Boolean)}function _n(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Rn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function ye(e){let t=Vs(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Ut(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Ut(t)&&t[1]?`gh ${t[1]} json-jq`:Ut(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 Ut(e){return e[0]==="gh"&&e.some(Z_)}function Z_(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Tr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var kn=h(()=>{"use strict"});var K,Ks=h(()=>{"use strict";Pe();K="rsp_elisions_v1"});import{spawnSync as xn}from"node:child_process";import{createHash as Ha}from"node:crypto";import{existsSync as eR}from"node:fs";import{mkdir as tR,readFile as rR,readdir as vm,rename as nR,writeFile as sR}from"node:fs/promises";import{homedir as oR}from"node:os";import{basename as iR,dirname as aR,join as Sn}from"node:path";import{fileURLToPath as cR}from"node:url";import{gunzipSync as uR,gzipSync as lR}from"node:zlib";function vn(e,t){return`el:${Ha("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 yt(e){return`record:${e.slice(3)}`}function qt(e){return`expired:${e.slice(3)}`}function Xs(){return"index:v1"}function dR(e){return`blob:${e}`}function Cm(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function dt(e){let t=Vs(e),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":Qs(t)?"re-executable":"ephemeral"}return"ephemeral"}function Cn(e){return ro(e.storage_class)?e.storage_class:dt(e.command)}function Tm(e){return ro(e.storage_class)?e.storage_class:dt(e.command)}function Ga(e){let t=fR(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=Tm(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 Wa(e,t,r){let n=t.getTime();return[...e].sort((s,o)=>o.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,r)).map(s=>{let o=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:o,age_display:mR(o),storage_class:Tm(s),recover:`rsp show ${s.handle}`}})}function mR(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 Ua(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 Vt(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 Ja(e,t){let r=process.cwd(),n=xn("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=xn("git",["hash-object","-w","--stdin"],{cwd:r,input:e,encoding:"buffer"});if(s.status!==0)return null;let o=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(o)?{kind:"git-blob",command:t,cwd:r,object_ids:[o],working_tree_fingerprint:pR(r),original_bytes:e.length}:null}function pR(e){let t=Fa(e,["rev-parse","HEAD"])||"unborn",r=Fa(e,["write-tree"])||"no-index",n=Fa(e,["status","--porcelain=v1","-z"])||"";return Ha("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function Fa(e,t){let r=xn("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function qa(e,t){let r=Vs(t);if(!Qs(r))return null;let n=Im(process.cwd(),r,e.length);return!n||Jt(n)!==Jt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Jt(e)}}function Qs(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 Jt(e){return Ha("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function Va(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 Ka(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 za(e,t,r){let n=lR(e);return{key:dR(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function Om(e){try{let t=uR(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function Am(e){let t=e.object_ids[0];if(!t)return null;let r=xn("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 Pm(e){if(!Qs(e.argv))return null;let t=Im(e.cwd,e.argv,e.original_bytes);return t?Jt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
|
|
47
|
+
`,"utf8"),t]):null}function Im(e,t,r){let n=t[0];if(!n)return null;let s=xn(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 fR(){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 Tn(e){return/^el:[a-f0-9]{12}$/.test(e)}function Ys(e){return/^blob:[a-f0-9]{64}$/.test(e)}function Lm(e){if(!En(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:En(e.scope)?e.scope:void 0,ranking:En(e.ranking)?e.ranking:void 0}}}function Dm(e){if(!En(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 En(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Nm(e,t,r){let n=[],s=new Set([".git","node_modules",".red",...r]);async function o(i){if(n.length>=t)return;let a=await vm(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=Sn(i,c.name);c.isDirectory()?await o(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 o(e),n}function $m(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=En(n)?n:{},o=String(e.label??e.LABEL??s.title??`memory-${r}`),i=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??o),c=`${o} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(r),rid:r,label:o,node_type:i,score:u.length||1,excerpt:a.slice(0,500)}}function Zs(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function On(e){if(!be(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=hR(e.derivation_recipe),n=yR(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&Ys(s);return e.collection===K&&typeof e.handle=="string"&&Tn(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Xa(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&Ys(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&gR(e.loss)&&(e.storage_class===void 0||ro(e.storage_class))}function Ya(e){return!be(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!be(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&Tn(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||ro(t.storage_class))&&(r===void 0||typeof r=="string"&&Ys(r))})}function eo(e){return be(e)&&typeof e.key=="string"&&Ys(e.key)&&Xa(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 to(e){return be(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function gR(e){return be(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function ro(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function hR(e){return be(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 yR(e){return be(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&Qs(e.argv)&&typeof e.original_bytes=="number"&&Xa(e.content_hash)}function Xa(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Mm(e){try{let n=(await rR(e,"utf8")).trim();if(n==="")return zs();let s;try{s=JSON.parse(n)}catch{s=D(n)}if(bR(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=zs();return await Or(e,s),s}let n=zs();return await Or(e,n),n}let t=zs();return await Or(e,t),t}async function Bm(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Fm(e){return iR(e)==="red-skills.rdb"}async function no(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Sn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Sn(oR(),".cache","red-skills","bundles")),t=Sn(e,"reddb"),r;try{r=await vm(t)}catch{return}r.sort().reverse();for(let n of r){let s=Sn(t,n,process.platform==="win32"?"red.exe":"red");if(eR(s)){process.env.REDDB_BIN=s;return}}}async function Or(e,t){await tR(aR(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await sR(r,`${C(ja(t))}
|
|
48
|
+
`,"utf8"),await nR(r,e)}function ja(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=>ja(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=ja(n));return t}return String(e)}function zs(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function bR(e){return be(e)&&e.version===1&&be(e.records)&&Object.values(e.records).every(On)&&(e.blobs===void 0||be(e.blobs)&&Object.values(e.blobs).every(eo))&&be(e.tombstones)&&Object.values(e.tombstones).every(to)&&Ya(e.index)}function jm(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return cR(e)}var so=h(()=>{"use strict";L();kn();Ks()});async function Hm(e,t){return wR?kR(e,t):_R?ER(e,t):RR(e,t)}async function RR(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((o,i)=>{n.stdin.write(s,a=>a?i(a):o())})},end(){n.stdin.end()}},stdout:n.stdout,kill(){n.kill("SIGTERM")},wait(){return new Promise(s=>{n.on("exit",o=>s(o??0))})}}}function kR(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:SR(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*SR(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 ER(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(o){await s.write(o)},end(){try{s.close()}catch{}}},stdout:xR(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*xR(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var wR,_R,Gm=h(()=>{wR=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",_R=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as vR}from"node:fs";import{join as CR}from"node:path";function Wm(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 o=CR(r,"bin",t);if(vR(o))return o;throw new Error(`reddb: binary "${t}" not found.
|
|
49
49
|
expected at: ${o}
|
|
50
50
|
override: set ${n}=/path/to/${t}
|
|
51
51
|
fix: re-run \`pnpm install\` (the postinstall script downloads it),
|
|
52
|
-
or check the postinstall log for a download error.`)}var
|
|
53
|
-
`)).catch(a=>{this.pending.delete(n),i(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 o=0;o<t.length;o++)if(t[o]===10){let i=t.subarray(s,o);this.#r(
|
|
52
|
+
or check the postinstall log for a download error.`)}var Um=h(()=>{});import{fileURLToPath as TR}from"node:url";import{dirname as OR,resolve as AR,join as AI}from"node:path";function LR(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Jm(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Wm({name:LR(),packageRoot:IR,envVar:"REDDB_BIN"})}var PR,IR,qm=h(()=>{Um();PR=OR(TR(import.meta.url)),IR=AR(PR,"..")});var DR,NR,v,oo,bt=h(()=>{DR=new TextEncoder,NR=new TextDecoder("utf-8"),v=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},oo=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 v("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((o,i)=>{this.pending.set(n,{resolve:o,reject:i}),this.child.stdin.write(DR.encode(s+`
|
|
53
|
+
`)).catch(a=>{this.pending.delete(n),i(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 o=0;o<t.length;o++)if(t[o]===10){let i=t.subarray(s,o);this.#r(NR.decode(i)),s=o+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(o){this.#e(`malformed server response: ${o.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 v(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 v("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function Za(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:/"?$R(e):MR(e)}function $R(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 v("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let n=r.searchParams,s=(n.get("proto")||"").toLowerCase(),o=r.pathname&&r.pathname!=="/"?r.pathname:"";if(r.hostname==="embedded.local")return o?{kind:"embedded",path:o,params:n,originalUri:e}:{kind:"embedded",params:n,originalUri:e};let i=BR(s),a=r.port?Number(r.port):Qa(i),c=r.username?decodeURIComponent(r.username):void 0,u=r.password?decodeURIComponent(r.password):void 0;return{kind:i,host:r.hostname,port:a,path:o||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 MR(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(o){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${o.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):Qa(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 v("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Qa(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 v("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function BR(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 v("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Qa(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 ec=h(()=>{bt()});function jR(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Vm(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Vm(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Vm(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 HR(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 FR,An,tc=h(()=>{bt();FR=new Set(["embedded"]),An=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&FR.has(this._transport))throw new v("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:HR(n.value)}async put(t,r,n,s={}){this._guard("put");let o=jR(n);await this._client.call("cache.put",{namespace:t,key:r,value:o,...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 rc(e,t){return`${nc(e)}.${GR(t)}`}function nc(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new v("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function GR(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function WR(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 Km(e){return`'${String(e).replace(/'/g,"''")}'`}var Ar,sc=h(()=>{bt();Ar=class{constructor(t,r="kv_default"){this.client=t,this.collection=r}put(t,r,n={}){let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Km).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${rc(s,t)} = ${WR(r)}${i}${o}`})}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 ${rc(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 ${rc(n,t)}`}),o=s.affected??s.affected_rows??0;return{affected:o,deleted:o>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 v("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),i=(await this.client.call("query",{sql:`SELECT key, value FROM ${nc(r)} ORDER BY key ASC LIMIT ${n}`})).rows??[];return{items:s.length>0?i.filter(c=>String(c.key).startsWith(s)):i}}async invalidateTags(t,r={}){let n=r.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Km).join(", ")}] FROM ${nc(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new v("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 o=s.toString()?`?${s}`:"",i=`${this.client.baseUrl}/collections/${encodeURIComponent(n)}/kv/${encodeURIComponent(String(t))}/watch${o}`,a=await fetch(i,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new v("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
|
|
54
54
|
|
|
55
55
|
`)){let l=u.split(`
|
|
56
|
-
`).find(m=>m.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function MR(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new v("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=mt(e),a=mt(t),c=s!=null?` GROUP ${mt(s)}`:"",u=o!=null?nc(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function mt(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function nc(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new v("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function BR(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function FR(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new v("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${BR(e.priority)}`),e.key!=null&&(t+=` KEY ${sc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${sc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function jR(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?sc(e):JSON.stringify(e)}function sc(e){return`'${String(e).replace(/'/g,"''")}'`}function rc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Pn,oc=h(()=>{wt();Pn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${mt(t)}`})}push(t,r,n={}){let s=FR(n);return this.client.call("query",{sql:`QUEUE PUSH ${mt(t)} ${jR(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${mt(t)}${nc(r)}`});return rc(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${mt(t)}${nc(r)}`});return rc(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${mt(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${mt(t)}`})}async readWait(t,r,n={}){let s=MR(t,r,n),o=await this.client.call("query",{sql:s});return rc(o)}}});function Um(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function HR(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new v("INVALID_ARGUMENT","limit must be a positive integer");return e}function ao(e){return String(e).split(".").map(Jm).join(".")}function Jm(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function GR(e){return qm(JSON.stringify(e))}function WR(e){return JSON.stringify(e)}function UR(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?GR(e):qm(e)}function qm(e){return`'${String(e).replace(/'/g,"''")}'`}var In,ic=h(()=>{wt();In=class{constructor(t){this.db=t}async insert(t,r){Um(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${ao(t)} DOCUMENT VALUES (${WR(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new v("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 v("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=HR(r.limit),s=r.orderBy??r.order_by??"rid ASC",o=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${ao(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Um(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new v("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new v("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Jm(c)} = ${UR(u)}`).join(", "),a=(await this.db.query(`UPDATE ${ao(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new v("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 ${ao(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function JR(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${_t(r)}.${_t(n)})`}return VR(e)}function qR(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 _t(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 VR(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Vm(e)}function Vm(e){return`'${String(e).replace(/'/g,"''")}'`}var Ln,ac=h(()=>{Ln=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){qR(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Vm).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${_t(s)} ${_t(t)} = ${JR(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${_t(n)} ${_t(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${_t(n)} ${_t(t)}`})}}});function KR(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 Pr(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 zR(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Km(e)}function Km(e){return`'${String(e).replace(/'/g,"''")}'`}var Dn,cc=h(()=>{Dn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){KR(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Km).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Pr(s)}.${Pr(t)} = ${zR(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Pr(n)}.${Pr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Pr(n)}.${Pr(t)}`})}}});async function Ym(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(YR)}async function Xm(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${QR(t)}`)).rows??[]).some(n=>n.name===String(t))}function YR(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function zm(e){return String(e).split(".").map(XR).join(".")}function XR(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function QR(e){return`'${String(e).replace(/'/g,"''")}'`}var Nn,uc=h(()=>{wt();Nn=class e{constructor(t,r,n=null,s=[],o=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=o}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 v("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(zm).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${zm(this.collection)}${r}`,o=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).rows??[];return this.columns==null?o:o.map(i=>{let a={};for(let c of this.columns)a[c]=i[c];return a})}}});async function lo(e,t={}){let r=Ya(e);if(ck(r),r.kind==="embedded"){let n=ak(r,t.auth);if(n.token||n.username)throw new v("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=ik(r),o=t.binary??jm(),i=await $m(o,s),a=new io(i);return await a.call("version",{}),new dc(a,{transport:"embedded"})}}function Zm(e){return tk(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:nk(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&ok(e)?{$uuid:e}:e}function tk(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new v("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 v("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new v("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function rk(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Zm):e.map(Zm)}function nk(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 sk(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 ok(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function co(e){if(Array.isArray(e))return e.map(co);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return sk(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]=co(s);return r}return e}function ik(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function ak(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 ck(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",ZR)}function mc(){return new v(Qm,`${Qm}: nested transactions are not supported on one connection`)}function tp(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function uk(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${ep} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function lk(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new v("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${ep} 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 v("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var ZR,ek,ep,Qm,uo,lc,dc,rp=h(()=>{Mm();Hm();wt();Xa();Qa();tc();oc();ic();ac();cc();uc();Qa();tc();oc();ic();ac();cc();uc();Xa();ZR="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",ek="1.0",ep="1.0.9",Qm="NESTED_TX_NOT_SUPPORTED";uo=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 mc()}},lc=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw mc();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 v("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 v("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 v("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new uo(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){tp(r,n)}throw r}}},dc=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=ek,this.cache=new An(t,this.transport),this.queue=new Pn(t),this.queues=this.queue,this.documents=new In(this);let n=new Ar(t);this.kv=Object.assign((s="kv_default")=>new Ar(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 Ln(t,s),this.vault=(s="red.vault")=>new Dn(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new v("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=rk(r);return n==null?this.client.call("query",{sql:t}).then(co):this.client.call("query",{sql:t,params:n}).then(co)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return uk(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 lk(n,r.length)}tx(){return new lc(this)}async transaction(t){if(this.inTransaction)throw mc();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 uo(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){tp(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Xm(this,t)}list(){return Ym(this)}from(t){return new Nn(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()}}});import{createHash as dk}from"node:crypto";import{existsSync as np}from"node:fs";import{mkdir as mk,readFile as pk,rename as pc,rm as $n,stat as fc}from"node:fs/promises";import{basename as fk,dirname as gk}from"node:path";async function sp(e){await(await Vt.open({...e,allowResidentOpen:!0})).close()}var Vt,op=h(()=>{"use strict";rp();zs();oo();Vt=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=Nm(t.uri),n=await Lm(r),s=new e(n,{uri:t.uri,ttlDays:eo(t.ttlDays,Te),ephemeralTtlHours:eo(t.ephemeralTtlHours,Oe),byteBudget:eo(t.byteBudget,Ae),now:t.now??(()=>new Date)});return Dm(n)?(await so(),await mk(gk(n),{recursive:!0}),s.db=await lo(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Im(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(),o=s.toISOString(),i=vn(n,r),a=bt(i),c=dt(r.command),u=c==="derivable"?Ga(n,r.command):null,l=c==="re-executable"?Wa(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ha(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ut(n),f=m==="ephemeral"?qa(n,p,o):null,_=Ua(n,u,l,f);f&&!this.document.blobs[f.key]&&(this.document.blobs[f.key]=f,this.dirty=!0);let g={collection:K,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};return delete this.document.tombstones[Jt(i)],this.document.records[a]=g,this.upsertIndex({handle:i,key:a,bytes:_,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:f?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!Tn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[bt(t)];if(!On(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return this.expireEntry({handle:n.handle,key:bt(n.handle),bytes:Ja(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Cn(n),blob_key:n.blob_key},n.expires_at),await this.flush(),o}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:K,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Cn(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:qt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Fa(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),ja(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 i of n.records)Date.parse(i.expires_at)<=t?this.expireEntry(i,i.expires_at):s.push(i);let o=qt(s);for(s.sort((i,a)=>i.created_at.localeCompare(a.created_at));o>this.opts.byteBudget&&s.length>0;){let i=s.shift();this.expireEntry(i,r),o=qt(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[Jt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[Jt(t)];return ro(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return xm(t.derivation_recipe);if(t.reexecution_recipe)return vm(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return to(r)?Em(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 Or(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await fc(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")),o={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}},i=Buffer.byteLength(`${JSON.stringify(o)}
|
|
57
|
-
`,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await Or(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(K)}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===K);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${K}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${K}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${K}`),await this.db.query(`CREATE KV IF NOT EXISTS ${K}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=vn(n,r),a=
|
|
58
|
-
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Qs());return Va(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Qs(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),o=[];for(let c of t.records)Date.parse(c.expires_at)<=n?await this.expireRedDbEntry(c,c.expires_at):o.push(c);let i=qt(o);for(o.sort((c,u)=>c.created_at.localeCompare(u.created_at));i>this.opts.byteBudget&&o.length>0;){let c=o.shift();await this.expireRedDbEntry(c,s),i=qt(o)}let a={version:1,records:o};return(r||o.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(o),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await fc(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()}`,o=`${this.path}.${s}.compact`,i=`${this.path}.${s}.old`;await $n(o,{force:!0}),await $n(i,{force:!0});let a=await lo(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${km(u.name)}`);let l=a.kv(u.name);for(let m of u.items)await l.put(m.key,m.value)}}finally{await a.close()}let c=await fc(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await $n(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await pc(this.path,i),await pc(o,this.path),await $n(i,{force:!0})}catch(u){throw!np(this.path)&&np(i)&&await pc(i,this.path),await $n(o,{force:!0}),u}finally{this.db=await lo(`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(o=>o.model!=="kv"))return null;let n=[],s=!1;for(let o of r){let i=String(o.name??"").trim();if(i===K){n.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(i).list({limit:1e4});if(a.items.length>=1e4)return null;n.push({name:i,items:a.items})}return s||n.push(await this.snapshotRedDbElisions(t)),n}async snapshotRedDbElisions(t){let r=[{key:Qs(),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 o=await this.kvGet(s);o!=null&&r.push({key:s,value:o})}return{name:K,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(Jt(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(bt(t));if(!On(n))throw new Error(`rsp resident failed to persist elision record ${t}`);let o=(await this.readRedDbIndex()).records.find(i=>i.handle===t);if(!o||o.bytes!==r)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var ip={};M(ip,{DEFAULT_RSP_BYTE_BUDGET:()=>Ae,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Oe,DEFAULT_RSP_TTL_DAYS:()=>Te,RSP_ELISION_COLLECTION:()=>K,RspElisionStore:()=>Vt,contentHandle:()=>vn,ensureReddbBinaryFromWarmCache:()=>so,provisionElisionStore:()=>sp,storageClassForCommand:()=>dt});var mo=h(()=>{"use strict";zs();oo();oo();op()});async function po(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await up(e,s),i=(await Mn(e,Q)).filter(E=>Lr(E)>=s),a=o.filter(E=>A(E.event_type)!=="show"&&A(E.degradation_reason)===""),c=o.filter(E=>A(E.event_type)==="show"),u=o.filter(E=>A(E.degradation_reason)!==""),l=0,m=0,d=0,p=0,f=!1,_=new Map,g=new Map,y=[],b=0,w=0,S=0;for(let E of a){E.elided===!0&&l++;let I=ye(E.raw_bytes),Qe=ye(E.emitted_bytes),At=Math.max(0,I-Qe),sr=Dr(E,"raw"),R=Dr(E,"emitted"),T=Math.max(0,sr.tokens-R.tokens);f||=(E.estimated===!0||sr.estimated||R.estimated)&&T>0,m+=I,d+=Qe,p+=T;let Pt=Kt(E).slice(0,10);Pt&&_.set(Pt,(_.get(Pt)??0)+T);let It=A(E.command)||"unknown",ke=g.get(It)??{command:It,invocations:0,bytes_saved:0,tokens_saved:0};ke.invocations++,ke.bytes_saved+=At,ke.tokens_saved+=T,g.set(It,ke);let Se=ht(E.wrapper_ms);Se!=null&&y.push(Se),b+=ye(E.store_open_count);let or=ht(E.store_elapsed_ms);or!=null&&(w+=or,S++)}let O=new Map,j=new Map,Re=[],$e=null;for(let E of u){let I=A(E.degradation_reason)||A(E.reason)||"unknown",Qe=A(E.wrapper_family)||be(A(E.command));O.set(I,(O.get(I)??0)+1),j.set(Qe,(j.get(Qe)??0)+1);let At=Kt(E);Re.push({timestamp:At,family:Qe,command:A(E.command)||"unknown",reason:I,exit_code:ht(E.wrapper_exit_code),stderr_head:A(E.stderr_head)||null}),(!$e||At>$e.timestamp)&&($e={timestamp:At,reason:I,command:A(E.command)||"unknown"})}let oe=a.length+u.length,pt=c.filter(E=>E.hit===!0).length,ie=zi(p,f),Ur=hk(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:m,emitted_bytes:d,bytes_saved:Math.max(0,m-d),tokens_saved:p,tokens_saved_estimated:ie.tokens_saved_estimated,token_estimate_range_pct:ie.token_estimate_range_pct,tokens_saved_low:ie.tokens_saved_low,tokens_saved_high:ie.tokens_saved_high,dollars_saved_estimate_usd:ie.dollars_saved_estimate_usd,dollars_saved_low_usd:ie.dollars_saved_low_usd,dollars_saved_high_usd:ie.dollars_saved_high_usd,pricing_model_family:ie.pricing_model_family,pricing_input_usd_per_million_tokens:ie.pricing_input_usd_per_million_tokens,pricing_note:ie.pricing_note,daily_tokens_saved:[..._.entries()].sort(([E],[I])=>E.localeCompare(I)).map(([E,I])=>({date:E,tokens_saved:I})),top_commands:[...g.values()].sort((E,I)=>I.bytes_saved-E.bytes_saved||I.tokens_saved-E.tokens_saved||E.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:oe===0?0:u.length/oe,show_total:c.length,show_hits:pt,show_misses:Math.max(0,c.length-pt),show_hit_rate:c.length===0?0:Z(pt/c.length),by_reason:[...O.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({reason:E,count:I})),by_family:[...j.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({family:E,count:I})),recent_failures:Re.sort((E,I)=>I.timestamp.localeCompare(E.timestamp)).slice(0,20),most_recent:$e},latency:{wrapper_ms_p50:Ir(y,.5),wrapper_ms_p95:Ir(y,.95),store_open_count_sum:b,store_elapsed_ms_sum:Z(w),store_elapsed_ms_avg:S===0?null:Z(w/S)},decisions:Ur}}function hk(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=A(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,ye(a.saved_units))),c!=="contributed"){let m=A(a.reason)||"unknown";o.set(m,(o.get(m)??0)+1)}let u=A(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Z(t/e.length),top_pass_reasons:[...o.entries()].sort((a,c)=>c[1]-a[1]||a[0].localeCompare(c[0])).map(([a,c])=>({reason:a,count:c})),by_command_family:[...i.entries()].sort((a,c)=>{let u=a[1].contributed+a[1].passed+a[1].failed_open;return c[1].contributed+c[1].passed+c[1].failed_open-u||a[0].localeCompare(c[0])}).map(([a,c])=>{let u=c.contributed+c.passed+c.failed_open;return{command_family:a,contributed:c.contributed,passed:c.passed,failed_open:c.failed_open,contribution_rate:u===0?0:Z(c.contributed/u)}})}}async function gc(e,t,r=new Date){let s=(await Mn(e,ce)).filter(o=>Lr(o)<=r.getTime()||Kt(o)==="");return{records:s.length,bytes:s.reduce((o,i)=>o+Buffer.byteLength(JSON.stringify(i),"utf8"),0),oldest:s.reduce((o,i)=>{let a=Kt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:xk(s)}}async function hc(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),o=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),i=Date.parse(o),a=await up(e,i),c=a.filter(R=>A(R.event_type)!=="show"&&A(R.event_type)!=="control_holdout"&&R.control_holdout!==!0&&A(R.degradation_reason)===""),u=a.filter(R=>A(R.event_type)==="control_holdout"||R.control_holdout===!0),l=a.filter(R=>A(R.event_type)==="show"),m=a.filter(R=>A(R.degradation_reason)!==""),d=[...c,...m].map(Lr).filter(R=>Number.isFinite(R)&&R>0),p=d.length===0?null:Math.min(...d),f=p==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-p)/Dk()))),_=[],g=new Map,y=new Map,b=new Map,w=new Map,S=new Map,O=new Map,j=0,Re=!1,$e=0,oe=null,pt=0,ie=0;for(let R of c){let T=Kt(R),Pt=T.slice(0,10),It=T.slice(0,16),ke=be(A(R.command)),Se=Math.max(0,Dr(R,"raw").tokens-Dr(R,"emitted").tokens);j+=Se,Re||=R.estimated===!0&&Se>0;let or=Math.max(0,ye(R.raw_bytes)-ye(R.emitted_bytes)),ai=ht(R.wrapper_ms);if(ai!=null){_.push(ai);let Gu=g.get(ke)??[];Gu.push(ai),g.set(ke,Gu)}Pt&&y.set(Pt,(y.get(Pt)??0)+1),It&&b.set(It,(b.get(It)??0)+1);let ci=Ok(T);ci&&w.set(ci,(w.get(ci)??0)+1);let ui=Ik(T);ui&&S.set(ui,(S.get(ui)??0)+Se);let ss=O.get(ke)??{command_family:ke,invocations:0,tokens_saved:0,bytes_saved:0};ss.invocations++,ss.tokens_saved+=Se,ss.bytes_saved+=or,O.set(ke,ss),R.elided===!0&&$e++,(R.store_open_count!=null||R.store_elapsed_ms!=null)&&(pt++,ye(R.store_open_count)>0&&ie++),Se>0&&(!oe||Se>oe.tokens_saved||Se===oe.tokens_saved&&or>oe.bytes_saved)&&(oe={timestamp:T,command_family:ke,tokens_saved:Se,bytes_saved:or})}let Ur=m.map(R=>({timestamp:Kt(R),command_family:be(A(R.command)),reason:A(R.degradation_reason)||A(R.reason)||"unknown"})).sort((R,T)=>R.timestamp.localeCompare(T.timestamp)),E=new Map;for(let R of Ur)E.set(R.reason,(E.get(R.reason)??0)+1);let I=_k(Ur),Qe=wk(l),At=kk([...O.values()],Qe,I),sr=[...b.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:f,since:o,until:s,label:`window: ${n}d, data: ${f}d`,empty:c.length===0&&m.length===0,invocations:c.length,degradations:m.length},latency:{global:cp(_),by_command_family:[...g.entries()].sort((R,T)=>T[1].length-R[1].length||R[0].localeCompare(T[0])).map(([R,T])=>({command_family:R,count:T.length,...cp(T)}))},throughput:{requests_per_day:[...y.entries()].sort(([R],[T])=>R.localeCompare(T)).map(([R,T])=>({date:R,requests:T})),active_minute_avg:b.size===0?null:Z([...b.values()].reduce((R,T)=>R+T,0)/b.size),peak_minute:sr?{minute:sr[0],requests:sr[1]}:null,hour_weekday_heatmap:Ak(w)},savings:{tokens:zi(j,Re),measured_control_holdout:yk(c,u),weekly_tokens_saved:Lk(S),elision_rate:c.length===0?0:Z($e/c.length),top_commands_by_tokens_saved:[...O.values()].sort((R,T)=>T.tokens_saved-R.tokens_saved||T.bytes_saved-R.bytes_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((R,T)=>T.invocations-R.invocations||T.tokens_saved-R.tokens_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:oe},health:{degradation_timeline:Ur,degradations_by_reason:[...E.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0])).map(([R,T])=>({reason:R,count:T})),cold_boots:pt===0?null:ie,warm_hits:pt===0?null:Math.max(0,pt-ie)},mining:{recovery_usage_by_family:Qe,degradation_clusters:I,threshold_tuning_suggestions:At}}}async function up(e,t){let r=(await Mn(e,ce)).filter(i=>Lr(i)>=t),n=r.some(i=>A(i.event_type)!=="show"||A(i.degradation_reason)!==""),s=(await Mn(e,he)).filter(i=>Lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:A(i.event_type)||"invocation"})),o=(await Mn(e,qe)).filter(i=>Lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:A(i.reason)||"unknown"}));return[...r,...s,...o]}function Dr(e,t){let r=ht(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=ye(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function yk(e,t){let r=Ek(t.map(a=>ht(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(ap).filter(a=>a!=null),s=t.map(ap).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Z(Sk(o));return{enabled:!0,holdout_share:Z(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:bk(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function ap(e){let t=Dr(e,"raw").tokens;if(t<=0)return null;let r=Dr(e,"emitted").tokens;return Math.max(0,t-r)/t}function bk(e,t){if(e.length<=1)return{low:Z(Math.max(0,t)),high:Z(Math.min(1,t))};let r=e.reduce((s,o)=>s+(o-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:Z(Math.max(0,t-n)),high:Z(Math.min(1,t+n))}}function wk(e){let t=new Map;for(let r of e){let n=be(A(r.recovered_command)||A(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:Z(r.show_hits/r.show_total)}))}function _k(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:Rk(r)}))}function Rk(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 kk(e,t,r){let n=[];for(let s of t.filter(o=>o.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(o=>o.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(o=>o.invocations>0&&o.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 Sk(e){return e.reduce((t,r)=>t+r,0)/e.length}function Ek(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function xk(e){let t=Ck();for(let r of e){if(A(r.event_type)==="show"||A(r.degradation_reason)!==""||r.elided!==!0)continue;let n=vk(r.storage_class)??dt(A(r.command));t[n].records+=1;let s=ye(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function vk(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Ck(){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 Mn(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=>Tk(n.value)).filter(n=>xr(n))}function Tk(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Lr(e){let t=Date.parse(Kt(e));return Number.isFinite(t)?t:0}function Kt(e){return A(e.created_at)||A(e.ts)||""}function A(e){return typeof e=="string"?e:""}function Ir(e,t){if(e.length===0)return null;let r=[...e].sort((s,o)=>s-o),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return Z(r[n])}function cp(e){return{wrapper_ms_p50:Ir(e,.5),wrapper_ms_p90:Ir(e,.9),wrapper_ms_p95:Ir(e,.95),wrapper_ms_p99:Ir(e,.99)}}function Z(e){return Math.round(e*100)/100}function Ok(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Pk(t.getUTCDay())}:${t.getUTCHours()}`:null}function Ak(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 Pk(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Ik(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 Lk(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Z((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function Dk(){return 24*60*60*1e3}var lp=h(()=>{"use strict";kn();mo();Yi();Us();Oa()});var Bn={};M(Bn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ce,RSP_DECISIONS_COLLECTION:()=>Q,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>qe,RSP_TELEMETRY_INDEX_COLLECTION:()=>bn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>he,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Ca,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ta,RSP_TELEMETRY_SPOOL_FILE:()=>va,appendTelemetryEvent:()=>lt,appendTelemetryEventSync:()=>yt,drainTelemetrySpool:()=>Na,parseTelemetryEvent:()=>Cr,readAccountingLaneStats:()=>gc,readTelemetryGainsReport:()=>hc,readTelemetryStats:()=>po,takeTelemetrySpool:()=>N_,telemetryLegacySpoolPath:()=>Vs,telemetrySpoolCorrectionsPath:()=>Da,telemetrySpoolPath:()=>ut});var Le=h(()=>{"use strict";Us();_m();lp()});var mp={};M(mp,{readGhConditionalJson:()=>ue,readGhEtagCache:()=>Bs,sweepGhEtagCache:()=>ka});import{spawn as Nk}from"node:child_process";import{createHash as $k,randomUUID as Mk}from"node:crypto";async function ue(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=process.hrtime.bigint(),s=e.overheadCeiling??Ce,o=Bk(e.path,e.params),i=Fk(o),c=Ni(r,"gh-api-json")?void 0:await wa(r,i),u=["api","--include","--method","GET",e.path];for(let[f,_]of dp(e.params))u.push("-f",`${f}=${String(_)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await jk(u,t,e.env,e.signal),m=f=>{let _=rn();en(r,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-n)/1e6,childMs:_.childMs,selfStateBytesRead:_.selfStateBytesRead,bytesSaved:f},s)},d=Hk(l.stdout);if(d.statusCode===304&&!!c)return m(Buffer.byteLength(c.body)),await yc(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:c.body,stderr:l.stderr,etag:c.etag,quotaFree:!0};if(d.statusCode>=200&&d.statusCode<300){let f=d.headers.get("etag");return f&&await _a(r,{key:i,request:o,etag:f,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),m(0),await yc(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:f??void 0,quotaFree:!1}}return m(0),await yc(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function dp(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function Bk(e,t){return JSON.stringify({method:"GET",path:e,params:dp(t)})}function Fk(e){return $k("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function jk(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=d=>{o||(o=!0,n?.removeEventListener("abort",c),s(d))},a=Nk("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}n?.addEventListener("abort",c,{once:!0});let u=re();a.once("close",u),a.once("error",u);let l=[],m=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>m.push(Buffer.from(d))),a.once("error",d=>i({status:1,stdout:"",stderr:d.message})),a.once("close",d=>{i({status:d??1,stdout:Buffer.concat(l).toString("utf8"),stderr:Buffer.concat(m).toString("utf8").trim()})})})}function Hk(e){let t=e.replace(/\r\n/g,`
|
|
56
|
+
`).find(m=>m.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function UR(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new v("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=mt(e),a=mt(t),c=s!=null?` GROUP ${mt(s)}`:"",u=o!=null?ic(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function mt(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function ic(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new v("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function JR(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function qR(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new v("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${JR(e.priority)}`),e.key!=null&&(t+=` KEY ${ac(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ac(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function VR(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ac(e):JSON.stringify(e)}function ac(e){return`'${String(e).replace(/'/g,"''")}'`}function oc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Pn,cc=h(()=>{bt();Pn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${mt(t)}`})}push(t,r,n={}){let s=qR(n);return this.client.call("query",{sql:`QUEUE PUSH ${mt(t)} ${VR(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${mt(t)}${ic(r)}`});return oc(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${mt(t)}${ic(r)}`});return oc(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${mt(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${mt(t)}`})}async readWait(t,r,n={}){let s=UR(t,r,n),o=await this.client.call("query",{sql:s});return oc(o)}}});function zm(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function KR(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new v("INVALID_ARGUMENT","limit must be a positive integer");return e}function io(e){return String(e).split(".").map(Ym).join(".")}function Ym(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function zR(e){return Xm(JSON.stringify(e))}function YR(e){return JSON.stringify(e)}function XR(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?zR(e):Xm(e)}function Xm(e){return`'${String(e).replace(/'/g,"''")}'`}var In,uc=h(()=>{bt();In=class{constructor(t){this.db=t}async insert(t,r){zm(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${io(t)} DOCUMENT VALUES (${YR(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new v("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 v("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=KR(r.limit),s=r.orderBy??r.order_by??"rid ASC",o=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${io(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){zm(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new v("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new v("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Ym(c)} = ${XR(u)}`).join(", "),a=(await this.db.query(`UPDATE ${io(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new v("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 ${io(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function QR(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${wt(r)}.${wt(n)})`}return ek(e)}function ZR(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 wt(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 ek(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Qm(e)}function Qm(e){return`'${String(e).replace(/'/g,"''")}'`}var Ln,lc=h(()=>{Ln=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){ZR(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Qm).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${wt(s)} ${wt(t)} = ${QR(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${wt(n)} ${wt(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${wt(n)} ${wt(t)}`})}}});function tk(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 Pr(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 rk(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Zm(e)}function Zm(e){return`'${String(e).replace(/'/g,"''")}'`}var Dn,dc=h(()=>{Dn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){tk(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Zm).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Pr(s)}.${Pr(t)} = ${rk(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Pr(n)}.${Pr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Pr(n)}.${Pr(t)}`})}}});async function tp(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(nk)}async function rp(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${ok(t)}`)).rows??[]).some(n=>n.name===String(t))}function nk(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function ep(e){return String(e).split(".").map(sk).join(".")}function sk(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function ok(e){return`'${String(e).replace(/'/g,"''")}'`}var Nn,mc=h(()=>{bt();Nn=class e{constructor(t,r,n=null,s=[],o=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=o}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 v("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(ep).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${ep(this.collection)}${r}`,o=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).rows??[];return this.columns==null?o:o.map(i=>{let a={};for(let c of this.columns)a[c]=i[c];return a})}}});async function uo(e,t={}){let r=Za(e);if(gk(r),r.kind==="embedded"){let n=fk(r,t.auth);if(n.token||n.username)throw new v("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=pk(r),o=t.binary??Jm(),i=await Hm(o,s),a=new oo(i);return await a.call("version",{}),new fc(a,{transport:"embedded"})}}function sp(e){return ck(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:lk(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&mk(e)?{$uuid:e}:e}function ck(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new v("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 v("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new v("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function uk(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(sp):e.map(sp)}function lk(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 dk(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 mk(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function ao(e){if(Array.isArray(e))return e.map(ao);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return dk(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]=ao(s);return r}return e}function pk(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function fk(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 gk(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",ik)}function gc(){return new v(np,`${np}: nested transactions are not supported on one connection`)}function ip(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function hk(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${op} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function yk(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new v("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${op} 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 v("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var ik,ak,op,np,co,pc,fc,ap=h(()=>{Gm();qm();bt();ec();tc();sc();cc();uc();lc();dc();mc();tc();sc();cc();uc();lc();dc();mc();ec();ik="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",ak="1.0",op="1.0.9",np="NESTED_TX_NOT_SUPPORTED";co=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 gc()}},pc=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw gc();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 v("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 v("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 v("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new co(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){ip(r,n)}throw r}}},fc=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=ak,this.cache=new An(t,this.transport),this.queue=new Pn(t),this.queues=this.queue,this.documents=new In(this);let n=new Ar(t);this.kv=Object.assign((s="kv_default")=>new Ar(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 Ln(t,s),this.vault=(s="red.vault")=>new Dn(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new v("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=uk(r);return n==null?this.client.call("query",{sql:t}).then(ao):this.client.call("query",{sql:t,params:n}).then(ao)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return hk(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 yk(n,r.length)}tx(){return new pc(this)}async transaction(t){if(this.inTransaction)throw gc();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 co(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){ip(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return rp(this,t)}list(){return tp(this)}from(t){return new Nn(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()}}});import{createHash as bk}from"node:crypto";import{existsSync as cp}from"node:fs";import{mkdir as wk,readFile as _k,rename as hc,rm as $n,stat as yc}from"node:fs/promises";import{basename as Rk,dirname as kk}from"node:path";async function up(e){await(await Kt.open({...e,allowResidentOpen:!0})).close()}var Kt,lp=h(()=>{"use strict";ap();Ks();so();Kt=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=jm(t.uri),n=await Bm(r),s=new e(n,{uri:t.uri,ttlDays:Zs(t.ttlDays,Ce),ephemeralTtlHours:Zs(t.ephemeralTtlHours,Te),byteBudget:Zs(t.byteBudget,Oe),now:t.now??(()=>new Date)});return Fm(n)?(await no(),await wk(kk(n),{recursive:!0}),s.db=await uo(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Mm(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(),o=s.toISOString(),i=vn(n,r),a=yt(i),c=dt(r.command),u=c==="derivable"?Ja(n,r.command):null,l=c==="re-executable"?qa(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ua(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Jt(n),f=m==="ephemeral"?za(n,p,o):null,_=Va(n,u,l,f);f&&!this.document.blobs[f.key]&&(this.document.blobs[f.key]=f,this.dirty=!0);let g={collection:K,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};return delete this.document.tombstones[qt(i)],this.document.records[a]=g,this.upsertIndex({handle:i,key:a,bytes:_,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:f?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!Tn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[yt(t)];if(!On(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return this.expireEntry({handle:n.handle,key:yt(n.handle),bytes:Ka(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Cn(n),blob_key:n.blob_key},n.expires_at),await this.flush(),o}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:K,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Cn(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:Vt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Ga(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),Wa(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 i of n.records)Date.parse(i.expires_at)<=t?this.expireEntry(i,i.expires_at):s.push(i);let o=Vt(s);for(s.sort((i,a)=>i.created_at.localeCompare(a.created_at));o>this.opts.byteBudget&&s.length>0;){let i=s.shift();this.expireEntry(i,r),o=Vt(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[qt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[qt(t)];return to(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return Am(t.derivation_recipe);if(t.reexecution_recipe)return Pm(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return eo(r)?Om(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 Or(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await yc(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")),o={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}},i=Buffer.byteLength(`${JSON.stringify(o)}
|
|
57
|
+
`,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await Or(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(K)}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===K);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${K}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${K}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${K}`),await this.db.query(`CREATE KV IF NOT EXISTS ${K}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=vn(n,r),a=yt(i),c=dt(r.command),u=c==="derivable"?Ja(n,r.command):null,l=c==="re-executable"?qa(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ua(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Jt(n),f=m==="ephemeral"?za(n,p,o):null,_=Va(n,u,l,f);f&&!eo(await this.kvGet(f.key))&&await this.kv().put(f.key,f);let g={collection:K,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};await this.kv().delete(qt(i)),await this.kv().put(a,g);let b=(await this.readRedDbIndex()).records.filter(w=>w.handle!==i);return b.push({handle:i,key:a,bytes:_,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:f?.key}),await this.pruneRedDb({version:1,records:b},!0),await this.assertRedDbMintPersisted(i,_),i}async getRedDb(t){if(!Tn(t))return null;let r=await this.kvGet(qt(t));if(to(r))return r;let n=await this.kvGet(yt(t));if(!On(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return await this.expireRedDbEntry({handle:n.handle,key:yt(n.handle),bytes:Ka(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Cn(n),blob_key:n.blob_key},n.expires_at),o}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:K,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Cn(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Vt(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:Ga(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return Wa(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=Lm(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Dm(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 Nm(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await _k(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=Rk(s),c=bk("sha256").update("resident-memory-v1\0").update(s).update("\0").update(i).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:i,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}},m=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(m.rows[0]?.red_entity_id??m.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),o=n.rows.map(i=>$m(i,s)).filter(i=>i!=null).sort((i,a)=>a.score-i.score).slice(0,Math.max(1,Math.min(100,r)));return{hits:o,context_md:o.map(i=>`- memory_nodes:${i.rid} ${i.label}: ${i.excerpt}`).join(`
|
|
58
|
+
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Xs());return Ya(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Xs(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),o=[];for(let c of t.records)Date.parse(c.expires_at)<=n?await this.expireRedDbEntry(c,c.expires_at):o.push(c);let i=Vt(o);for(o.sort((c,u)=>c.created_at.localeCompare(u.created_at));i>this.opts.byteBudget&&o.length>0;){let c=o.shift();await this.expireRedDbEntry(c,s),i=Vt(o)}let a={version:1,records:o};return(r||o.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(o),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await yc(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()}`,o=`${this.path}.${s}.compact`,i=`${this.path}.${s}.old`;await $n(o,{force:!0}),await $n(i,{force:!0});let a=await uo(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${Cm(u.name)}`);let l=a.kv(u.name);for(let m of u.items)await l.put(m.key,m.value)}}finally{await a.close()}let c=await yc(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await $n(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await hc(this.path,i),await hc(o,this.path),await $n(i,{force:!0})}catch(u){throw!cp(this.path)&&cp(i)&&await hc(i,this.path),await $n(o,{force:!0}),u}finally{this.db=await uo(`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(o=>o.model!=="kv"))return null;let n=[],s=!1;for(let o of r){let i=String(o.name??"").trim();if(i===K){n.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(i).list({limit:1e4});if(a.items.length>=1e4)return null;n.push({name:i,items:a.items})}return s||n.push(await this.snapshotRedDbElisions(t)),n}async snapshotRedDbElisions(t){let r=[{key:Xs(),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 o=await this.kvGet(s);o!=null&&r.push({key:s,value:o})}return{name:K,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(qt(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(yt(t));if(!On(n))throw new Error(`rsp resident failed to persist elision record ${t}`);let o=(await this.readRedDbIndex()).records.find(i=>i.handle===t);if(!o||o.bytes!==r)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var dp={};M(dp,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_TTL_DAYS:()=>Ce,RSP_ELISION_COLLECTION:()=>K,RspElisionStore:()=>Kt,contentHandle:()=>vn,ensureReddbBinaryFromWarmCache:()=>no,provisionElisionStore:()=>up,storageClassForCommand:()=>dt});var lo=h(()=>{"use strict";Ks();so();so();lp()});async function mo(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await fp(e,s),i=(await Mn(e,Q)).filter(E=>Lr(E)>=s),a=o.filter(E=>A(E.event_type)!=="show"&&A(E.degradation_reason)===""),c=o.filter(E=>A(E.event_type)==="show"),u=o.filter(E=>A(E.degradation_reason)!==""),l=0,m=0,d=0,p=0,f=!1,_=new Map,g=new Map,y=[],b=0,w=0,S=0;for(let E of a){E.elided===!0&&l++;let I=he(E.raw_bytes),Xe=he(E.emitted_bytes),Ot=Math.max(0,I-Xe),or=Dr(E,"raw"),R=Dr(E,"emitted"),T=Math.max(0,or.tokens-R.tokens);f||=(E.estimated===!0||or.estimated||R.estimated)&&T>0,m+=I,d+=Xe,p+=T;let At=zt(E).slice(0,10);At&&_.set(At,(_.get(At)??0)+T);let Pt=A(E.command)||"unknown",Re=g.get(Pt)??{command:Pt,invocations:0,bytes_saved:0,tokens_saved:0};Re.invocations++,Re.bytes_saved+=Ot,Re.tokens_saved+=T,g.set(Pt,Re);let ke=gt(E.wrapper_ms);ke!=null&&y.push(ke),b+=he(E.store_open_count);let ir=gt(E.store_elapsed_ms);ir!=null&&(w+=ir,S++)}let O=new Map,j=new Map,_e=[],Ne=null;for(let E of u){let I=A(E.degradation_reason)||A(E.reason)||"unknown",Xe=A(E.wrapper_family)||ye(A(E.command));O.set(I,(O.get(I)??0)+1),j.set(Xe,(j.get(Xe)??0)+1);let Ot=zt(E);_e.push({timestamp:Ot,family:Xe,command:A(E.command)||"unknown",reason:I,exit_code:gt(E.wrapper_exit_code),stderr_head:A(E.stderr_head)||null}),(!Ne||Ot>Ne.timestamp)&&(Ne={timestamp:Ot,reason:I,command:A(E.command)||"unknown"})}let oe=a.length+u.length,pt=c.filter(E=>E.hit===!0).length,ie=Qi(p,f),Ur=Sk(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:m,emitted_bytes:d,bytes_saved:Math.max(0,m-d),tokens_saved:p,tokens_saved_estimated:ie.tokens_saved_estimated,token_estimate_range_pct:ie.token_estimate_range_pct,tokens_saved_low:ie.tokens_saved_low,tokens_saved_high:ie.tokens_saved_high,dollars_saved_estimate_usd:ie.dollars_saved_estimate_usd,dollars_saved_low_usd:ie.dollars_saved_low_usd,dollars_saved_high_usd:ie.dollars_saved_high_usd,pricing_model_family:ie.pricing_model_family,pricing_input_usd_per_million_tokens:ie.pricing_input_usd_per_million_tokens,pricing_note:ie.pricing_note,daily_tokens_saved:[..._.entries()].sort(([E],[I])=>E.localeCompare(I)).map(([E,I])=>({date:E,tokens_saved:I})),top_commands:[...g.values()].sort((E,I)=>I.bytes_saved-E.bytes_saved||I.tokens_saved-E.tokens_saved||E.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:oe===0?0:u.length/oe,show_total:c.length,show_hits:pt,show_misses:Math.max(0,c.length-pt),show_hit_rate:c.length===0?0:Z(pt/c.length),by_reason:[...O.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({reason:E,count:I})),by_family:[...j.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({family:E,count:I})),recent_failures:_e.sort((E,I)=>I.timestamp.localeCompare(E.timestamp)).slice(0,20),most_recent:Ne},latency:{wrapper_ms_p50:Ir(y,.5),wrapper_ms_p95:Ir(y,.95),store_open_count_sum:b,store_elapsed_ms_sum:Z(w),store_elapsed_ms_avg:S===0?null:Z(w/S)},decisions:Ur}}function Sk(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=A(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,he(a.saved_units))),c!=="contributed"){let m=A(a.reason)||"unknown";o.set(m,(o.get(m)??0)+1)}let u=A(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Z(t/e.length),top_pass_reasons:[...o.entries()].sort((a,c)=>c[1]-a[1]||a[0].localeCompare(c[0])).map(([a,c])=>({reason:a,count:c})),by_command_family:[...i.entries()].sort((a,c)=>{let u=a[1].contributed+a[1].passed+a[1].failed_open;return c[1].contributed+c[1].passed+c[1].failed_open-u||a[0].localeCompare(c[0])}).map(([a,c])=>{let u=c.contributed+c.passed+c.failed_open;return{command_family:a,contributed:c.contributed,passed:c.passed,failed_open:c.failed_open,contribution_rate:u===0?0:Z(c.contributed/u)}})}}async function bc(e,t,r=new Date){let s=(await Mn(e,ce)).filter(o=>Lr(o)<=r.getTime()||zt(o)==="");return{records:s.length,bytes:s.reduce((o,i)=>o+Buffer.byteLength(JSON.stringify(i),"utf8"),0),oldest:s.reduce((o,i)=>{let a=zt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:Ik(s)}}async function wc(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),o=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),i=Date.parse(o),a=await fp(e,i),c=a.filter(R=>A(R.event_type)!=="show"&&A(R.event_type)!=="control_holdout"&&R.control_holdout!==!0&&A(R.degradation_reason)===""),u=a.filter(R=>A(R.event_type)==="control_holdout"||R.control_holdout===!0),l=a.filter(R=>A(R.event_type)==="show"),m=a.filter(R=>A(R.degradation_reason)!==""),d=[...c,...m].map(Lr).filter(R=>Number.isFinite(R)&&R>0),p=d.length===0?null:Math.min(...d),f=p==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-p)/Hk()))),_=[],g=new Map,y=new Map,b=new Map,w=new Map,S=new Map,O=new Map,j=0,_e=!1,Ne=0,oe=null,pt=0,ie=0;for(let R of c){let T=zt(R),At=T.slice(0,10),Pt=T.slice(0,16),Re=ye(A(R.command)),ke=Math.max(0,Dr(R,"raw").tokens-Dr(R,"emitted").tokens);j+=ke,_e||=R.estimated===!0&&ke>0;let ir=Math.max(0,he(R.raw_bytes)-he(R.emitted_bytes)),ii=gt(R.wrapper_ms);if(ii!=null){_.push(ii);let Ju=g.get(Re)??[];Ju.push(ii),g.set(Re,Ju)}At&&y.set(At,(y.get(At)??0)+1),Pt&&b.set(Pt,(b.get(Pt)??0)+1);let ai=$k(T);ai&&w.set(ai,(w.get(ai)??0)+1);let ci=Fk(T);ci&&S.set(ci,(S.get(ci)??0)+ke);let ss=O.get(Re)??{command_family:Re,invocations:0,tokens_saved:0,bytes_saved:0};ss.invocations++,ss.tokens_saved+=ke,ss.bytes_saved+=ir,O.set(Re,ss),R.elided===!0&&Ne++,(R.store_open_count!=null||R.store_elapsed_ms!=null)&&(pt++,he(R.store_open_count)>0&&ie++),ke>0&&(!oe||ke>oe.tokens_saved||ke===oe.tokens_saved&&ir>oe.bytes_saved)&&(oe={timestamp:T,command_family:Re,tokens_saved:ke,bytes_saved:ir})}let Ur=m.map(R=>({timestamp:zt(R),command_family:ye(A(R.command)),reason:A(R.degradation_reason)||A(R.reason)||"unknown"})).sort((R,T)=>R.timestamp.localeCompare(T.timestamp)),E=new Map;for(let R of Ur)E.set(R.reason,(E.get(R.reason)??0)+1);let I=Ck(Ur),Xe=vk(l),Ot=Ok([...O.values()],Xe,I),or=[...b.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:f,since:o,until:s,label:`window: ${n}d, data: ${f}d`,empty:c.length===0&&m.length===0,invocations:c.length,degradations:m.length},latency:{global:pp(_),by_command_family:[...g.entries()].sort((R,T)=>T[1].length-R[1].length||R[0].localeCompare(T[0])).map(([R,T])=>({command_family:R,count:T.length,...pp(T)}))},throughput:{requests_per_day:[...y.entries()].sort(([R],[T])=>R.localeCompare(T)).map(([R,T])=>({date:R,requests:T})),active_minute_avg:b.size===0?null:Z([...b.values()].reduce((R,T)=>R+T,0)/b.size),peak_minute:or?{minute:or[0],requests:or[1]}:null,hour_weekday_heatmap:Mk(w)},savings:{tokens:Qi(j,_e),measured_control_holdout:Ek(c,u),weekly_tokens_saved:jk(S),elision_rate:c.length===0?0:Z(Ne/c.length),top_commands_by_tokens_saved:[...O.values()].sort((R,T)=>T.tokens_saved-R.tokens_saved||T.bytes_saved-R.bytes_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((R,T)=>T.invocations-R.invocations||T.tokens_saved-R.tokens_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:oe},health:{degradation_timeline:Ur,degradations_by_reason:[...E.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0])).map(([R,T])=>({reason:R,count:T})),cold_boots:pt===0?null:ie,warm_hits:pt===0?null:Math.max(0,pt-ie)},mining:{recovery_usage_by_family:Xe,degradation_clusters:I,threshold_tuning_suggestions:Ot}}}async function fp(e,t){let r=(await Mn(e,ce)).filter(i=>Lr(i)>=t),n=r.some(i=>A(i.event_type)!=="show"||A(i.degradation_reason)!==""),s=(await Mn(e,ge)).filter(i=>Lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:A(i.event_type)||"invocation"})),o=(await Mn(e,Je)).filter(i=>Lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:A(i.reason)||"unknown"}));return[...r,...s,...o]}function Dr(e,t){let r=gt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=he(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function Ek(e,t){let r=Pk(t.map(a=>gt(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(mp).filter(a=>a!=null),s=t.map(mp).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Z(Ak(o));return{enabled:!0,holdout_share:Z(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:xk(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function mp(e){let t=Dr(e,"raw").tokens;if(t<=0)return null;let r=Dr(e,"emitted").tokens;return Math.max(0,t-r)/t}function xk(e,t){if(e.length<=1)return{low:Z(Math.max(0,t)),high:Z(Math.min(1,t))};let r=e.reduce((s,o)=>s+(o-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:Z(Math.max(0,t-n)),high:Z(Math.min(1,t+n))}}function vk(e){let t=new Map;for(let r of e){let n=ye(A(r.recovered_command)||A(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:Z(r.show_hits/r.show_total)}))}function Ck(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:Tk(r)}))}function Tk(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 Ok(e,t,r){let n=[];for(let s of t.filter(o=>o.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(o=>o.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(o=>o.invocations>0&&o.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 Ak(e){return e.reduce((t,r)=>t+r,0)/e.length}function Pk(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function Ik(e){let t=Dk();for(let r of e){if(A(r.event_type)==="show"||A(r.degradation_reason)!==""||r.elided!==!0)continue;let n=Lk(r.storage_class)??dt(A(r.command));t[n].records+=1;let s=he(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function Lk(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Dk(){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 Mn(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=>Nk(n.value)).filter(n=>xr(n))}function Nk(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Lr(e){let t=Date.parse(zt(e));return Number.isFinite(t)?t:0}function zt(e){return A(e.created_at)||A(e.ts)||""}function A(e){return typeof e=="string"?e:""}function Ir(e,t){if(e.length===0)return null;let r=[...e].sort((s,o)=>s-o),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return Z(r[n])}function pp(e){return{wrapper_ms_p50:Ir(e,.5),wrapper_ms_p90:Ir(e,.9),wrapper_ms_p95:Ir(e,.95),wrapper_ms_p99:Ir(e,.99)}}function Z(e){return Math.round(e*100)/100}function $k(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Bk(t.getUTCDay())}:${t.getUTCHours()}`:null}function Mk(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 Bk(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Fk(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 jk(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Z((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function Hk(){return 24*60*60*1e3}var gp=h(()=>{"use strict";kn();lo();Zi();Ws();Ia()});var Bn={};M(Bn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ce,RSP_DECISIONS_COLLECTION:()=>Q,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Je,RSP_TELEMETRY_INDEX_COLLECTION:()=>bn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ge,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Aa,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Pa,RSP_TELEMETRY_SPOOL_FILE:()=>Oa,appendTelemetryEvent:()=>lt,appendTelemetryEventSync:()=>ht,drainTelemetrySpool:()=>Ba,parseTelemetryEvent:()=>Cr,readAccountingLaneStats:()=>bc,readTelemetryGainsReport:()=>wc,readTelemetryStats:()=>mo,takeTelemetrySpool:()=>G_,telemetryLegacySpoolPath:()=>qs,telemetrySpoolCorrectionsPath:()=>Ma,telemetrySpoolPath:()=>ut});var Ie=h(()=>{"use strict";Ws();xm();gp()});var yp={};M(yp,{readGhConditionalJson:()=>ue,readGhEtagCache:()=>Ms,sweepGhEtagCache:()=>xa});import{spawn as Gk}from"node:child_process";import{createHash as Wk,randomUUID as Uk}from"node:crypto";async function ue(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=process.hrtime.bigint(),s=e.overheadCeiling??ve,o=Jk(e.path,e.params),i=qk(o),c=Di(r,"gh-api-json")?void 0:await ka(r,i),u=["api","--include","--method","GET",e.path];for(let[f,_]of hp(e.params))u.push("-f",`${f}=${String(_)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await Vk(u,t,e.env,e.signal),m=f=>{let _=rn();en(r,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-n)/1e6,childMs:_.childMs,selfStateBytesRead:_.selfStateBytesRead,bytesSaved:f},s)},d=Kk(l.stdout);if(d.statusCode===304&&!!c)return m(Buffer.byteLength(c.body)),await _c(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:c.body,stderr:l.stderr,etag:c.etag,quotaFree:!0};if(d.statusCode>=200&&d.statusCode<300){let f=d.headers.get("etag");return f&&await Sa(r,{key:i,request:o,etag:f,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),m(0),await _c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:f??void 0,quotaFree:!1}}return m(0),await _c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function hp(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function Jk(e,t){return JSON.stringify({method:"GET",path:e,params:hp(t)})}function qk(e){return Wk("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Vk(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=d=>{o||(o=!0,n?.removeEventListener("abort",c),s(d))},a=Gk("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}n?.addEventListener("abort",c,{once:!0});let u=re();a.once("close",u),a.once("error",u);let l=[],m=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>m.push(Buffer.from(d))),a.once("error",d=>i({status:1,stdout:"",stderr:d.message})),a.once("close",d=>{i({status:d??1,stdout:Buffer.concat(l).toString("utf8"),stderr:Buffer.concat(m).toString("utf8").trim()})})})}function Kk(e){let t=e.replace(/\r\n/g,`
|
|
59
59
|
`),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]),o=n.index+n[0].length,i=t.indexOf(`
|
|
60
60
|
|
|
61
61
|
`,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
|
|
62
|
-
`)){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:i>=0?t.slice(i+2):""}}async function
|
|
63
|
-
`),stdout:JSON.stringify({number:Rr(s,"number"),state:X(s,"state").toUpperCase(),mergeable:
|
|
64
|
-
`)}var bc=h(()=>{"use strict"});var _p=h(()=>{"use strict";L()});var Rp=h(()=>{"use strict"});function Xk(e){return Object.keys(e)}function zt(e){return{...e,fields:Xk(e.fields)}}var kp,Sp,Ep,wc,Qk,Zk,eS,go,ho=h(()=>{"use strict";kp="red.castle.lane.v1",Sp="red.castle.state.v1",Ep="red.castle.history.v1",wc="red.castle.attempt.v1",Qk="red.castle.validation.v2",Zk="red.castle.envelope.v1",eS="red.castle.hitl-card.v1",go=[zt({schemaId:kp,docPath:".red/contracts/red.castle.lane.v1.md",typeNames:["CastleLaneRecord","CastleLaneKind"],fields:{at:!0,kind:!0,worker_id:!0,supervisor_id:!0,issue:!0,attempt:!0,payload:!0}}),zt({schemaId:Sp,docPath:".red/contracts/red.castle.state.v1.md",typeNames:["CastleStateSnapshot","CastleStateKind"],fields:{kind:!0,id:!0,version:!0,updated_at:!0,worker_id:!0,supervisor_id:!0,runner:!0,bundle_version:!0,pid:!0,started_at:!0,current:!0,queue:!0,completed:!0,envelope:!0}}),zt({schemaId:Ep,docPath:".red/contracts/red.castle.history.v1.md",typeNames:["CastleHistoryRecord","CastleHistoryEvent"],fields:{ts:!0,epoch:!0,worker:!0,issue:!0,event:!0,duration_s:!0,runner:!0,merge_sha:!0,reason:!0}}),zt({schemaId:wc,docPath:".red/contracts/red.castle.attempt.v1.md",typeNames:["CastleAttemptEntry","CastleAttemptRecord","CastleAttemptEvent","CastleAttemptWriter","CastleAttemptClaim","CastleAttemptRouting","CastleAttemptGateVerdict","CastleAttemptLandingStep","CastleAttemptOutcome","CastleAttemptOutcomeKind","CastleAttemptResources","CastleAttemptArtifact"],fields:{schema:!0,attempt_id:!0,worker_id:!0,issue:!0,try:!0,at:!0,event:!0,writer:!0,claim:!0,routing:!0,branch:!0,commit:!0,pr:!0,gate:!0,landing:!0,outcome:!0,resources:!0,artifact:!0,note:!0,payload:!0}}),zt({schemaId:Qk,docPath:".red/contracts/red.castle.validation.v2.md",typeNames:["CastleValidationRecord","CastleValidationStatus"],fields:{schema:!0,name:!0,status:!0,command:!0,exitCode:!0,durationMs:!0,summary:!0}}),zt({schemaId:Zk,docPath:".red/contracts/red.castle.envelope.v1.md",typeNames:["CastleEnvelope","CastleEnvelopeSection","CastleAttemptStatus"],fields:{status:!0,worker:!0,duration:!0,diff:!0,attempt:!0,mergeSha:!0,sections:!0}}),zt({schemaId:eS,docPath:".red/contracts/red.castle.hitl-card.v1.md",typeNames:["CastleHitlCard","CastleHitlCardPrStatus","CastleHitlCardAction"],fields:{issueNumber:!0,issueTitle:!0,issueUrl:!0,pendingDecision:!0,prStatus:!0,updatedAt:!0}})]});var JL,yo=h(()=>{"use strict";L();ho();JL=new Map(go.map(e=>[e.schemaId,new Set(e.fields)]))});var xp=h(()=>{"use strict";Rp();yo()});var vp=h(()=>{"use strict"});var nD,Cp=h(()=>{"use strict";L();ho();nD=new Set(go.find(e=>e.schemaId===wc).fields)});var nS,sS,oS,oD,Tp=h(()=>{"use strict";nS=["worktree","workspace","node_modules","checkout","build-cache","sandbox"],sS=["log","diagnostic","envelope","transcript","patch","handoff","report"],oS=["branch","pr","commit","tag","issue"],oD=new Map([...nS.map(e=>[e,"workspace"]),...sS.map(e=>[e,"evidence"]),...oS.map(e=>[e,"pointer"])])});var bo=h(()=>{"use strict"});var _c=h(()=>{"use strict";bo()});var wo=h(()=>{"use strict"});import{appendFile as iS,mkdir as aS,readFile as cS}from"node:fs/promises";import{dirname as uS,join as lS}from"node:path";function Rc(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function Op(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},r=t.payload;if(typeof r=="string")try{t.payload=JSON.parse(r)}catch{throw new Error("singleton event payload is not valid JSON")}if(t.payload!==void 0&&(t.payload===null||typeof t.payload!="object"||Array.isArray(t.payload)))throw new Error("singleton event payload must be a record");return{at:Rc(t.at,"at"),singleton:Rc(t.singleton,"singleton"),kind:Rc(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function dS(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function mS(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function pS(e){return lS(e.castleStateRoot,"singleton-events.toonl")}function kc(e,t={}){let r=t.fs??{appendFile:iS,mkdir:aS,readFile:cS},n=t.clock??(()=>new Date().toISOString()),s=pS(e);return{path:s,async append(o){let i=Op({at:o.at??n(),...o});return await r.mkdir(uS(s),{recursive:!0}),await r.appendFile(s,tt().push(dS(i)),"utf8"),i},async read(o={}){mS(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=et(i).map(Op);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var Sc=h(()=>{"use strict";L()});var _o=h(()=>{"use strict";L();wo();Sc()});var Ap=h(()=>{"use strict";bo();_c();_o()});var Pp=h(()=>{"use strict"});var ND,Ip=h(()=>{"use strict";L();ND=24*60*60*1e3});var Lp=h(()=>{"use strict";yo()});var FD,jD,Dp=h(()=>{"use strict";FD=15*6e4,jD=30*6e4});var Np=h(()=>{"use strict"});var gS,hS,WD,UD,$p=h(()=>{"use strict";gS=["supervisor_start","supervisor_exit","fleet_scaled","worker_start","worker_exit","worker_steered","worker_escalated","post_claim","pre_worktree","post_issue","pre_requeue","pre_merge","post_merge"],hS={pre_worktree:["cargo","gradle"]},WD=Object.values(hS).flat(),UD=new Set(gS)});var Mp=h(()=>{"use strict"});var Bp=h(()=>{"use strict";_o()});var Fp=h(()=>{"use strict"});var jp=h(()=>{"use strict"});var Hp=h(()=>{"use strict";L()});var Ec=h(()=>{"use strict"});var Gp=h(()=>{"use strict";L();Ec()});var Wp=h(()=>{"use strict";L()});var xc=h(()=>{"use strict"});var vc=h(()=>{"use strict"});import{resolve as J}from"node:path";function Up(e){let t=J(e),r=J(t,"state"),n=J(r,"castle"),s=J(t,"tmp"),o=J(s,"supervisors"),i=J(s,"workers"),a=J(s,"monitors"),c=J(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:J(n,"history.toonl"),castleAttempts:J(n,"attempts.toonl"),castleValidation:J(n,"validation.toonl"),castleFleets:J(n,"fleets.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>J(o,u),fleet:u=>J(o,u),workersRoot:i,worker:u=>J(i,u),workerSteerFile:u=>J(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>J(a,u),worktreesRoot:c,worktreeLane:u=>J(c,u)}}var Jp=h(()=>{"use strict"});var qp=h(()=>{"use strict";wo()});var Vp=h(()=>{"use strict"});var Kp=h(()=>{"use strict";xc();vc()});import{mkdir as yS,readFile as bS,rename as wS,rm as _S,writeFile as RS}from"node:fs/promises";import{dirname as kS,join as SS}from"node:path";function xS(e){if(!ES.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function vS(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function CS(e){return e.code==="ENOENT"}function TS(e){return e.code==="EEXIST"}function OS(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton lease must be a record");let t=e;if(!Number.isInteger(t.pid)||t.pid<=0)throw new Error("singleton lease pid must be a positive integer");for(let r of["start_time","acquired_at","renewed_at"])if(typeof t[r]!="string"||t[r].length===0)throw new Error(`singleton lease ${r} must be a non-empty string`);return t}function Cc(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Ro(e,t){return xS(t),SS(e.castleStateRoot,"singletons",t,"lease.toon")}function zp(e,t={}){let r=t.fs??{mkdir:yS,readFile:bS,rename:wS,rm:_S,writeFile:RS},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??vS;async function o(a){try{return OS(D(await r.readFile(a,"utf8")))}catch(c){if(CS(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(Ro(e,a))},async acquire(a,c){let u=Ro(e,a);await r.mkdir(kS(u),{recursive:!0});let l=!1;for(;;){let m=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:m,renewed_at:m};try{return await r.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(f){if(!TS(f))throw f}let p=await o(u);if(p){if(Cc(p,c))return{acquired:!0,reaped:l,lease:p};if(await s(p.pid))return{acquired:!1,lease:p};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Ro(e,a),l=await o(u);if(!l||!Cc(l,c))throw new ko(a);let m={...l,renewed_at:n()};return await i(u,m),m},async release(a,c){let u=Ro(e,a),l=await o(u);if(!l)return!1;if(!Cc(l,c))throw new ko(a);return await r.rm(u,{force:!0}),!0}}}var ko,ES,Yp=h(()=>{"use strict";L();ko=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},ES=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Tc=h(()=>{"use strict"});var Xp=h(()=>{"use strict"});var AS,PS,IS,ON,Qp=h(()=>{"use strict";AS={refreshCadenceS:270,tolerance:3},PS=270,IS=2700,ON={...AS,claimGraceS:PS,recentCommitProtectionS:IS}});var Zp=h(()=>{"use strict"});import{execFile as $S}from"node:child_process";import{promisify as MS}from"node:util";var DN,ef=h(()=>{"use strict";Tc();DN=MS($S)});var tf=h(()=>{"use strict";_p();xp();vp();Cp();Tp();bo();Ap();Pp();Ip();Lp();yo();Dp();Np();$p();Mp();_c();Bp();Fp();jp();Hp();_o();Gp();Wp();ho();xc();vc();Jp();qp();Vp();Kp();wo();Ec();Sc();Yp();Tc();Xp();Qp();Zp();ef()});import{EventEmitter as BS}from"node:events";import{spawn as FS}from"node:child_process";function Eo(e,t){let r=Number(t);return!Number.isSafeInteger(r)||r<=0?!1:!!(e.pull_request?.number===r||e.check_run?.pull_requests?.some(n=>n.number===r)||e.check_suite?.pull_requests?.some(n=>n.number===r))}function xo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Hn,Oc,jS,HS,GS,WS,So,Ac=h(()=>{Hn="github-webhook",Oc="github.webhook.delivery";jS="pull_request,pull_request_review,check_run,check_suite,workflow_run",HS=3,GS=1e3,WS=/no extension matched|unknown command|command not found/i,So=class extends BS{constructor(r,n){super();this.opts=r;this.terminate=n}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let r=this.child;this.child=void 0,r&&(this.stopping=this.terminate(r,GS).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Eo(c,n):xo(c,n))&&(a(),s.abort())},i=()=>{a()},a=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}spawnChild(){if(this._dead)return;let r=this.opts.ghBin??"gh",n;try{n=FS(r,["webhook","forward",`--events=${jS}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=n;let s="";n.stdout?.setEncoding("utf8"),n.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
|
|
65
|
-
`))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];n.stderr?.on("data",i=>{o.push(Buffer.from(i))}),n.once("error",()=>{this.child===n&&(this.child=void 0),this.scheduleRestart()}),n.once("close",i=>{if(this.child===n&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");
|
|
66
|
-
`),n(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}function
|
|
62
|
+
`)){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:i>=0?t.slice(i+2):""}}async function _c(e,t,r){await lt(e,{collection:Q,id:Uk(),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})}var po=h(()=>{"use strict";yn();yn();U();Ie()});import{spawn as zk}from"node:child_process";async function Fn(e,t){return await Yk(t,async r=>{let n=await Qk(e,t.cwd,r);return n||await Xk(e,t.cwd,r)})}async function Yk(e,t){if(e.signal.aborted)return{status:1,stdout:"",stderr:"wait cancelled"};let r=new AbortController,n=setTimeout(()=>r.abort(),e.timeoutMs),s=AbortSignal.any([e.signal,r.signal]);try{let o=await t(s);return r.signal.aborted?{status:1,stdout:"",stderr:`GitHub probe exceeded ${e.timeoutMs}ms`}:o}finally{clearTimeout(n)}}async function Xk(e,t,r){return r.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(n=>{let s=!1,o=l=>{s||(s=!0,r.removeEventListener("abort",a),n(l))},i=zk("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&vs(l).then(m=>xs(m,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}r.addEventListener("abort",a,{once:!0});let c=[],u=[];i.stdout.on("data",l=>c.push(Buffer.from(l))),i.stderr.on("data",l=>u.push(Buffer.from(l))),i.once("error",l=>o({status:1,stdout:"",stderr:l.message})),i.once("close",l=>{o({status:l??1,stdout:Buffer.concat(c).toString("utf8"),stderr:Buffer.concat(u).toString("utf8").trim()})})})}async function Qk(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Zk(e[2],t,r);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ue({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=We(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Rr(s,"database_id")||Rr(s,"id"),status:X(s,"status").toUpperCase(),conclusion:X(s,"conclusion").toUpperCase(),workflowName:X(s,"workflow_name")||X(s,"name"),headBranch:X(s,"head_branch"),url:X(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Ps(e,"--branch"),s=Ps(e,"--limit")??"20",o=await ue({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:s},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=Wt(We(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Rr(a,"database_id")||Rr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=Ps(e,"--limit")??"20",s=await ue({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=Wt(JSON.parse(s.stdout)).map(i=>({tagName:X(i,"tag_name"),publishedAt:X(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function Zk(e,t,r){let n=await ue({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:r,command:`gh pr view ${e}`});if(n.status!==0)return n;let s=We(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let o=X(We(s.head),"sha"),[i,a]=o?await Promise.all([ue({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:r,command:`gh pr view ${e} status`}),ue({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:r,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?Wt(We(JSON.parse(i.stdout)).statuses):[],u=a.status===0?Wt(We(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
|
|
63
|
+
`),stdout:JSON.stringify({number:Rr(s,"number"),state:X(s,"state").toUpperCase(),mergeable:eS(s),statusCheckRollup:[...c.map(l=>({conclusion:X(l,"state").toUpperCase()})),...u.map(l=>({status:X(l,"status").toUpperCase(),conclusion:X(l,"conclusion").toUpperCase()}))],url:X(s,"html_url")})}}function eS(e){let t=X(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var bp=h(()=>{"use strict";po();Is();at()});function _p(e,t,r){let n=Date.now();return()=>tS(e,t,r,n)}async function tS(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return Y("missing PR number");let s=await Fn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return Y(s.stderr||"gh pr view failed");let o=ba(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(rS),u=c.filter(m=>m==="failure").length,l=c.filter(m=>m==="pending").length;if(String(o.state)!=="OPEN")return it("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return it("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return it("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return gr(`PR #${e} has ${l} pending checks`);if(i.length===0){let m=Date.now()-n;return a==="UNKNOWN"||a==="BLOCKED"||m<r.emptyChecksGraceMs?gr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:m}):it("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?gr(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):it("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function Rp(e,t){if(!e)return Y("missing run id");let r=await Fn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return Y(r.stderr||"gh run view failed");let n=ba(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?gr(`run ${e} is ${s||"pending"}`):o==="success"?it("success",`run ${e} succeeded`,wp(n)):it("failure",`run ${e} concluded ${o||"unknown"}`,wp(n))}async function kp(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 _r(s)&&s.databaseId!=null?String(s.databaseId):""}async function Sp(e,t,r){let n=await Fn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return Y(n.stderr||"gh release list failed");let o=Wt(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||nS(e,a))&&c>=t});return o?it("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):gr("no matching release is published yet")}function rS(e){let t=_r(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 wp(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 nS(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var Ep=h(()=>{"use strict";Ht();bp();Is()});function jn(){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.","Result: TOON by default; --json selects JSON; --result-file <path> is written atomically before any wake.","Command capture: --capture-bytes <n> (default 16384); elision handles recover larger stdout/stderr.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after the result is durable.',"Hook timeout: --notify-timeout 10s. Process termination: TERM, --terminate-grace 2s, then KILL.","GitHub bounds: --probe-timeout 60s caps one probe, so a hung gh call cannot outlive --timeout.",""].join(`
|
|
64
|
+
`)}var Rc=h(()=>{"use strict"});var xp=h(()=>{"use strict";L()});var vp=h(()=>{"use strict"});function sS(e){return Object.keys(e)}function Yt(e){return{...e,fields:sS(e.fields)}}var Cp,Tp,Op,kc,oS,iS,aS,fo,go=h(()=>{"use strict";Cp="red.castle.lane.v1",Tp="red.castle.state.v1",Op="red.castle.history.v1",kc="red.castle.attempt.v1",oS="red.castle.validation.v2",iS="red.castle.envelope.v1",aS="red.castle.hitl-card.v1",fo=[Yt({schemaId:Cp,docPath:".red/contracts/red.castle.lane.v1.md",typeNames:["CastleLaneRecord","CastleLaneKind"],fields:{at:!0,kind:!0,worker_id:!0,supervisor_id:!0,issue:!0,attempt:!0,payload:!0}}),Yt({schemaId:Tp,docPath:".red/contracts/red.castle.state.v1.md",typeNames:["CastleStateSnapshot","CastleStateKind"],fields:{kind:!0,id:!0,version:!0,updated_at:!0,worker_id:!0,supervisor_id:!0,runner:!0,bundle_version:!0,pid:!0,started_at:!0,current:!0,queue:!0,completed:!0,envelope:!0}}),Yt({schemaId:Op,docPath:".red/contracts/red.castle.history.v1.md",typeNames:["CastleHistoryRecord","CastleHistoryEvent"],fields:{ts:!0,epoch:!0,worker:!0,issue:!0,event:!0,duration_s:!0,runner:!0,merge_sha:!0,reason:!0}}),Yt({schemaId:kc,docPath:".red/contracts/red.castle.attempt.v1.md",typeNames:["CastleAttemptEntry","CastleAttemptRecord","CastleAttemptEvent","CastleAttemptWriter","CastleAttemptClaim","CastleAttemptRouting","CastleAttemptGateVerdict","CastleAttemptLandingStep","CastleAttemptOutcome","CastleAttemptOutcomeKind","CastleAttemptResources","CastleAttemptArtifact"],fields:{schema:!0,attempt_id:!0,worker_id:!0,issue:!0,try:!0,at:!0,event:!0,writer:!0,claim:!0,routing:!0,branch:!0,commit:!0,pr:!0,gate:!0,landing:!0,outcome:!0,resources:!0,artifact:!0,note:!0,payload:!0}}),Yt({schemaId:oS,docPath:".red/contracts/red.castle.validation.v2.md",typeNames:["CastleValidationRecord","CastleValidationStatus"],fields:{schema:!0,name:!0,status:!0,command:!0,exitCode:!0,durationMs:!0,summary:!0}}),Yt({schemaId:iS,docPath:".red/contracts/red.castle.envelope.v1.md",typeNames:["CastleEnvelope","CastleEnvelopeSection","CastleAttemptStatus"],fields:{status:!0,worker:!0,duration:!0,diff:!0,attempt:!0,mergeSha:!0,sections:!0}}),Yt({schemaId:aS,docPath:".red/contracts/red.castle.hitl-card.v1.md",typeNames:["CastleHitlCard","CastleHitlCardPrStatus","CastleHitlCardAction"],fields:{issueNumber:!0,issueTitle:!0,issueUrl:!0,pendingDecision:!0,prStatus:!0,updatedAt:!0}})]});var sD,ho=h(()=>{"use strict";L();go();sD=new Map(fo.map(e=>[e.schemaId,new Set(e.fields)]))});var Ap=h(()=>{"use strict";vp();ho()});var Pp=h(()=>{"use strict"});var hD,Ip=h(()=>{"use strict";L();go();hD=new Set(fo.find(e=>e.schemaId===kc).fields)});var lS,dS,mS,bD,Lp=h(()=>{"use strict";lS=["worktree","workspace","node_modules","checkout","build-cache","sandbox"],dS=["log","diagnostic","envelope","transcript","patch","handoff","report"],mS=["branch","pr","commit","tag","issue"],bD=new Map([...lS.map(e=>[e,"workspace"]),...dS.map(e=>[e,"evidence"]),...mS.map(e=>[e,"pointer"])])});var yo=h(()=>{"use strict"});var Sc=h(()=>{"use strict";yo()});var bo=h(()=>{"use strict"});import{appendFile as pS,mkdir as fS,readFile as gS}from"node:fs/promises";import{dirname as hS,join as yS}from"node:path";function Ec(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function Dp(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},r=t.payload;if(typeof r=="string")try{t.payload=JSON.parse(r)}catch{throw new Error("singleton event payload is not valid JSON")}if(t.payload!==void 0&&(t.payload===null||typeof t.payload!="object"||Array.isArray(t.payload)))throw new Error("singleton event payload must be a record");return{at:Ec(t.at,"at"),singleton:Ec(t.singleton,"singleton"),kind:Ec(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function bS(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function wS(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function _S(e){return yS(e.castleStateRoot,"singleton-events.toonl")}function xc(e,t={}){let r=t.fs??{appendFile:pS,mkdir:fS,readFile:gS},n=t.clock??(()=>new Date().toISOString()),s=_S(e);return{path:s,async append(o){let i=Dp({at:o.at??n(),...o});return await r.mkdir(hS(s),{recursive:!0}),await r.appendFile(s,et().push(bS(i)),"utf8"),i},async read(o={}){wS(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Ze(i).map(Dp);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var vc=h(()=>{"use strict";L()});var wo=h(()=>{"use strict";L();bo();vc()});var Np=h(()=>{"use strict";yo();Sc();wo()});var $p=h(()=>{"use strict"});var KD,Mp=h(()=>{"use strict";L();KD=24*60*60*1e3});var Bp=h(()=>{"use strict";ho()});var QD,ZD,Fp=h(()=>{"use strict";QD=15*6e4,ZD=30*6e4});var jp=h(()=>{"use strict"});var kS,SS,rN,nN,Hp=h(()=>{"use strict";kS=["supervisor_start","supervisor_exit","fleet_scaled","worker_start","worker_exit","worker_steered","worker_escalated","post_claim","pre_worktree","post_issue","pre_requeue","pre_merge","post_merge"],SS={pre_worktree:["cargo","gradle"]},rN=Object.values(SS).flat(),nN=new Set(kS)});var Gp=h(()=>{"use strict"});var Wp=h(()=>{"use strict";wo()});var Up=h(()=>{"use strict"});var Jp=h(()=>{"use strict"});var qp=h(()=>{"use strict";L()});var Cc=h(()=>{"use strict"});var Vp=h(()=>{"use strict";L();Cc()});var Kp=h(()=>{"use strict";L()});var Tc=h(()=>{"use strict"});var Oc=h(()=>{"use strict"});import{resolve as J}from"node:path";function zp(e){let t=J(e),r=J(t,"state"),n=J(r,"castle"),s=J(t,"tmp"),o=J(s,"supervisors"),i=J(s,"workers"),a=J(s,"monitors"),c=J(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:J(n,"history.toonl"),castleAttempts:J(n,"attempts.toonl"),castleValidation:J(n,"validation.toonl"),castleFleets:J(n,"fleets.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>J(o,u),fleet:u=>J(o,u),workersRoot:i,worker:u=>J(i,u),workerSteerFile:u=>J(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>J(a,u),worktreesRoot:c,worktreeLane:u=>J(c,u)}}var Yp=h(()=>{"use strict"});var Xp=h(()=>{"use strict";bo()});var Qp=h(()=>{"use strict"});var Zp=h(()=>{"use strict";Tc();Oc()});import{mkdir as ES,readFile as xS,rename as vS,rm as CS,writeFile as TS}from"node:fs/promises";import{dirname as OS,join as AS}from"node:path";function IS(e){if(!PS.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function LS(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function DS(e){return e.code==="ENOENT"}function NS(e){return e.code==="EEXIST"}function $S(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton lease must be a record");let t=e;if(!Number.isInteger(t.pid)||t.pid<=0)throw new Error("singleton lease pid must be a positive integer");for(let r of["start_time","acquired_at","renewed_at"])if(typeof t[r]!="string"||t[r].length===0)throw new Error(`singleton lease ${r} must be a non-empty string`);return t}function Ac(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function _o(e,t){return IS(t),AS(e.castleStateRoot,"singletons",t,"lease.toon")}function ef(e,t={}){let r=t.fs??{mkdir:ES,readFile:xS,rename:vS,rm:CS,writeFile:TS},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??LS;async function o(a){try{return $S(D(await r.readFile(a,"utf8")))}catch(c){if(DS(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(_o(e,a))},async acquire(a,c){let u=_o(e,a);await r.mkdir(OS(u),{recursive:!0});let l=!1;for(;;){let m=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:m,renewed_at:m};try{return await r.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(f){if(!NS(f))throw f}let p=await o(u);if(p){if(Ac(p,c))return{acquired:!0,reaped:l,lease:p};if(await s(p.pid))return{acquired:!1,lease:p};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=_o(e,a),l=await o(u);if(!l||!Ac(l,c))throw new Ro(a);let m={...l,renewed_at:n()};return await i(u,m),m},async release(a,c){let u=_o(e,a),l=await o(u);if(!l)return!1;if(!Ac(l,c))throw new Ro(a);return await r.rm(u,{force:!0}),!0}}}var Ro,PS,tf=h(()=>{"use strict";L();Ro=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},PS=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Pc=h(()=>{"use strict"});var rf=h(()=>{"use strict"});var MS,BS,FS,GN,nf=h(()=>{"use strict";MS={refreshCadenceS:270,tolerance:3},BS=270,FS=2700,GN={...MS,claimGraceS:BS,recentCommitProtectionS:FS}});var sf=h(()=>{"use strict"});import{execFile as WS}from"node:child_process";import{promisify as US}from"node:util";var VN,of=h(()=>{"use strict";Pc();VN=US(WS)});var af=h(()=>{"use strict";xp();Ap();Pp();Ip();Lp();yo();Np();$p();Mp();Bp();ho();Fp();jp();Hp();Gp();Sc();Wp();Up();Jp();qp();wo();Vp();Kp();go();Tc();Oc();Yp();Xp();Qp();Zp();bo();Cc();vc();tf();Pc();rf();nf();sf();of()});import{EventEmitter as JS}from"node:events";import{spawn as qS}from"node:child_process";function So(e,t){let r=Number(t);return!Number.isSafeInteger(r)||r<=0?!1:!!(e.pull_request?.number===r||e.check_run?.pull_requests?.some(n=>n.number===r)||e.check_suite?.pull_requests?.some(n=>n.number===r))}function Eo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Hn,Ic,VS,KS,zS,YS,ko,Lc=h(()=>{Hn="github-webhook",Ic="github.webhook.delivery";VS="pull_request,pull_request_review,check_run,check_suite,workflow_run",KS=3,zS=1e3,YS=/no extension matched|unknown command|command not found/i,ko=class extends JS{constructor(r,n){super();this.opts=r;this.terminate=n}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let r=this.child;this.child=void 0,r&&(this.stopping=this.terminate(r,zS).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?So(c,n):Eo(c,n))&&(a(),s.abort())},i=()=>{a()},a=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}spawnChild(){if(this._dead)return;let r=this.opts.ghBin??"gh",n;try{n=qS(r,["webhook","forward",`--events=${VS}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=n;let s="";n.stdout?.setEncoding("utf8"),n.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
|
|
65
|
+
`))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];n.stderr?.on("data",i=>{o.push(Buffer.from(i))}),n.once("error",()=>{this.child===n&&(this.child=void 0),this.scheduleRestart()}),n.once("close",i=>{if(this.child===n&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");YS.test(a)||this.restarts===0&&(i===1||i===127)||this.scheduleRestart()})}onLine(r){let n;try{n=JSON.parse(r)}catch{this.emit("malformed-delivery",r);return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",n)}scheduleRestart(){if(this._dead||this.restarts>=KS)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var xo,cf=h(()=>{"use strict";Lc();Lc();at();xo=class extends ko{constructor(t){super(t,hr)}}});import{EventEmitter as XS}from"node:events";import{join as QS}from"node:path";function Nc(e){let t=Ts(e.cwd),r=zp(QS(t,".red"));return new Dc({...e,leases:e.leases??ef(r),lane:e.lane??xc(r),makeForwarder:e.makeForwarder??((n,s)=>new xo({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>yr(n.pid,n.start_time))})}var Dc,uf=h(()=>{"use strict";af();cf();at();pa();Dc=class extends XS{constructor(r){super();this.options=r}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let r=await this.options.leases.read(Hn).catch(()=>{});if(!r||!await this.options.isLeaseHolderLive(r)){this.startFallback();return}let n=await this.options.lane.read().catch(()=>{});if(!n){this.degradeToFallback();return}this.cursor=n.length,this._mode="webhook",this.emit("mode-changed","webhook"),this.timer=setInterval(()=>void this.sync().catch(()=>this.degradeToFallback()),this.options.pollIntervalMs??100),this.timer.unref(),this.options.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0})}async stop(){this.stopped||(this.stopped=!0,this.timer&&clearInterval(this.timer),await this.fallback?.stop(),this.emit("stopped"))}makeWakeSignalFor(r,n){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(r,n)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(r==="pr"?So(a,n):Eo(a,n))&&(i(),s.abort())},i=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}startFallback(){this.fallback||this.stopped||(this.fallback=this.options.makeForwarder(this.options.cwd,this.options.cancelSignal),this.fallback.on("mode-changed",r=>{this.emit("mode-changed",r)}),this.fallback.on("delivery",r=>{this.emit("delivery",r)}),this.fallback.start())}degradeToFallback(){this.timer&&clearInterval(this.timer),this.timer=void 0,this._mode="polling",this.startFallback()}async sync(){if(!(this.syncing||this.stopped)){this.syncing=!0;try{let r=await this.options.lane.read();r.length<this.cursor&&(this.cursor=0);let n=r.slice(this.cursor);this.cursor=r.length;for(let o of n)o.singleton===Hn&&o.kind===Ic&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(Hn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var $c={};M($c,{listWaits:()=>As,renderWaitHelp:()=>jn,runWait:()=>tE});import{randomUUID as lf}from"node:crypto";import{mkdir as ZS,rm as eE}from"node:fs/promises";async function tE(e,t=process.cwd()){let r;try{r=await Sd(e)}catch(n){return await iE(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(jn()),0;if(r.kind==="ls"){let n={schema:gd,version:1,waits:await As(t)};return process.stdout.write(kr(n,r.options.format)),0}return da(r.kind)?await rE({...r,kind:r.kind},t):(process.stdout.write(jn()),2)}async function rE(e,t){let r=e.kind,n=ya({id:lf(),kind:r,target:oE(e),reason:e.options.reason,pid:process.pid,pid_start_time:await un(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:ua[r],status:"running",attempts:0}),s=Ad(t,n.id),o=new AbortController,i,a=l=>{i=l,o.abort()},c=()=>a("SIGINT"),u=()=>a("SIGTERM");process.once("SIGINT",c),process.once("SIGTERM",u);try{await ZS(br(t),{recursive:!0}),await wr(s,n);let l=await nE(e,t,s,n,o.signal);i&&(l={...l,verdict:Y(`wait interrupted by ${i}`,l.verdict.details)});let m=await Dd({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(kr(m.result,e.options.format)),m.exitCode}catch(l){let m=Y(l instanceof Error?l.message:String(l)),d=gn(r,n,m,{status:"success"},new Date().toISOString());return await hn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(kr(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await eE(s,{force:!0}).catch(()=>{})}}async function nE(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await am({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:Cd(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:Y("missing PR number")};n.webhook_mode="polling";let a=Nc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Gs({probe:_p(i,o,{emptyChecksGraceMs:dn("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:dn("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"run":{let i=await sE(e,o,r,n);if(!i.ok)return{verdict:Y(i.reason)};n.webhook_mode="polling";let a=Nc({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Gs({probe:()=>Rp(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:dn("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"release":return await Gs({probe:()=>Sp(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:dn("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function sE(e,t,r,n){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await kp(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await wr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function oE(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??""}`}async function iE(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=da(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=ya({id:lf(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:ua[o],status:"indeterminate",attempts:0}),c=gn(o,a,Y(t instanceof Error?t.message:String(t)),{status:"success"},i);return await hn(s,c,r).catch(()=>{}),process.stdout.write(kr(c,r)),2}var Mc=h(()=>{"use strict";Ed();$d();um();Ht();fa();Ep();at();fn();Rc();uf();fn();Rc()});import{existsSync as dE}from"node:fs";import{join as mE}from"node:path";function pE(){for(let e of(process.env.PATH??"").split(":"))if(e&&dE(mE(e,"rsp")))return!0;return!1}function Gn(){return pE()?["rsp"]:[process.execPath,process.argv[1]]}var Bc=h(()=>{"use strict"});var vo={};M(vo,{parseProxyCommandLine:()=>gf,rewriteProxyCommandLine:()=>ff,runProxy:()=>hE});import{spawn as fE}from"node:child_process";function gE(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function hE(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=gf(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=ff(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await yE(t.telemetryRoot,r,c),await pf(r);throw c}for(let c of s)await bE(t.telemetryRoot,c);let i=await pf(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await lt(t.telemetryRoot,{collection:ge,ts:new Date().toISOString(),command:r,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function ff(e,t="lossless",r=Gn()){let n=EE(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||SE(n,a)==="|")return i.text;let c=wE(i.text,t,r);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function gf(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 yE(e,t,r){await lt(e,{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:ye(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function bE(e,t){await lt(e,{collection:Q,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 pf(e){let t=fE(e,{shell:!0,stdio:"inherit"}),r=re();return t.once("close",r),t.once("error",r),await new Promise(n=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
66
|
+
`),n(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}function wE(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=vE(o);if(!i)return null;let a=kE(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(f=>f.value);if(Ut(u))return{text:e,match:{command:c.map(f=>f.raw).join(" "),commandFamily:ye(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=_E(c);if(!l)return null;let m=i.slice(0,a).map(f=>f.raw),d=t==="lossless"?[]:[`--${t}`],p=[...m,...r.map(gE),...d,...l.wrapperWords].join(" ");return{text:`${n}${p}${s}`,match:{command:c.map(f=>f.raw).join(" "),commandFamily:ye(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function _E(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}:RE(t,r)}function RE(e,t){return e[0]==="cat"&&e.length===2&&Fc(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Fc(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])&&Fc(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Fc(e){return!!e&&!e.startsWith("-")}function kE(e){let t=0;for(;t<e.length&&Tr(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Tr(e[t].value);)t+=1;return t}function SE(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function EE(e){let t=[],r=0,n,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"){s=!0;continue}if(n){i===n&&(n=void 0);continue}if(i==="'"||i==='"'){n=i;continue}let a=xE(e,o);a&&(o>r&&t.push({kind:"segment",text:e.slice(r,o)}),t.push({kind:"operator",text:a}),o+=a.length-1,r=o+1)}return r<e.length&&t.push({kind:"segment",text:e.slice(r)}),t}function xE(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 vE(e){let t=[],r="",n="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:r,value:n}),r="",n="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){r+=u,n+=u,o=!1,i=!0;continue}if(u==="\\"){r+=u,o=!0,i=!0;continue}if(s){r+=u,u===s?s=void 0:n+=u,i=!0;continue}if(u==="'"||u==='"'){r+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;r+=u,n+=u,i=!0}return s||o?null:(a(),t)}var Co=h(()=>{"use strict";U();kn();Bc();Ie()});function bf(e,t={}){let r=CE(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 p of new Set(d.tokens))n.set(p,(n.get(p)??0)+1)}let o=r.map(d=>d.length),i=r.map(d=>d.tokens.length),a=r.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=jc(o),u=jc(i),l=jc(a),m=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!m.some(p=>LE(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:Hc(d.length,c)+Hc(d.tokens.length,u)+Hc(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+PE(d.tokens,n,r.length)+IE(d.signature,s,r.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 CE(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(hf(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(hf(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function hf(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:TE(n),tokens:OE(n),numbers:AE(n),length:n.length}}function TE(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 OE(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function AE(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function PE(e,t,r){let n=[...new Set(e)];if(n.length===0)return 0;let s=n.map(o=>Math.log2(r/Math.max(1,t.get(o)??r))).sort((o,i)=>i-o).slice(0,6);return s.reduce((o,i)=>o+i,0)/Math.max(1,s.length)}function IE(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function jc(e){let t=yf(e),r=yf(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function Hc(e,t){return Math.abs(e-t.median)/t.mad}function yf(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 LE(e,t,r,n){return e<n&&r<t}var wf=h(()=>{"use strict"});var Gc={};M(Gc,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ct,GIT_LOG_MACHINE_FIELDS:()=>Rf,StructuredUsageError:()=>To,cleanStatusPayload:()=>xf,recoveryInstruction:()=>Le,renderGitContract:()=>kf,runGitWrapper:()=>NE});import{spawn as DE}from"node:child_process";async function NE(e,t){let r=Sf(e),n=Ef(r.argv),s=await FE(n,r.argv.slice(1));return kf(e,s,t)}async function kf(e,t,r){let n=Sf(e);if((t.status??0)!==0||t.signal){let m=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let s=Ef(n.argv),o;try{o=jE(s,n.argv,t.stdout,n.query)}catch(m){if(m instanceof Oo)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:m.reason,family:"git status",stderrHead:m.message}};throw m}let i=C(o);if($E(s,i,n.full,r))return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let a=sx(o);if(!a)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let c=Buffer.byteLength(i),u=await r.store?.mint(Buffer.from(i),{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 ${Le(u)}
|
|
67
67
|
`;return{stdout:Buffer.from(`${C(a.payload)}
|
|
68
|
-
${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(i)}}function
|
|
69
|
-
`)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=n?.[1]??"",c=n?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),m=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:m,summary:`commit ${c} on ${a}: ${u} files, +${l} -${m}`}}function
|
|
70
|
-
`).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,m=""]=c.split(" "),[d,p]=(l??"").split(":");return{flag:u??"",from:d??"",to:p??"",summary:m}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.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 ${i} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${i} -> ${n} +${a} commits`}}function
|
|
71
|
-
`),s=[],o=null;for(let c of n){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){o={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!o)continue;if(c.startsWith("author ")){o.author=c.slice(7);continue}if(c.startsWith("filename ")){o.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),m=o.commit.slice(0,12);l&&l.commit===m&&l.author===o.author&&l.path===o.path&&l.line_end+1===o.finalLine?l.line_end=o.finalLine:s.push({line_start:o.finalLine,line_end:o.finalLine,author:o.author,commit:m,path:o.path}),o=null}let i=te(s,r),a=
|
|
72
|
-
`).filter(Boolean).map(i=>{let[a,c,u,l,m,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:m||null,subject:d??""}}),s=te(n,r),o=s.find(i=>i.current)?.name??"";return
|
|
73
|
-
`)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(b);if(!w)continue;let S=w[3]??"";p.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...S].filter(O=>O==="+").length,deleted:[...S].filter(O=>O==="-").length,binary:S.startsWith("Bin")})}let f=te(p,r),_=0,g=0,y=0;for(let b of f)_+=typeof b.changed=="number"?b.changed:0,g+=typeof b.added=="number"?b.added:0,y+=typeof b.deleted=="number"?b.deleted:0;return
|
|
74
|
-
`).length:0,files:f,summary:`${r?`${f.length}/${p.length}`:f.length} files, ${_} changed, +${g} -${y}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function
|
|
75
|
-
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Un(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=
|
|
68
|
+
${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(i)}}function Le(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Sf(e){let t=Dt(e),r=[],n=!1;for(let o of t.argv){if(o==="--full"){n=!0;continue}r.push(o)}let s=r.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new To(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function $E(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!ME(e)||n.level!=="lossless")return!0;let s=nx(n.heavyGitByteThreshold,ct);return Buffer.byteLength(t)<=s}function ME(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ef(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 BE(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${Rf.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 FE(e,t){let r=DE("git",BE(e,t),{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function jE(e,t,r,n){switch(e){case"status":return HE(t,r,n);case"log":return zE(t,r,n);case"diff":return YE(t,r,n);case"commit":return _t(XE(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return _t(QE(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return ZE(t,r,n);case"branch":return ex(t,r,n);case"show":return tx(t,r,n)}}function HE(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of GE(t)){if(!u)continue;if(i=!0,u.startsWith("# branch.head ")){n=u.slice(14),o=!0;continue}if(u.startsWith("# ")){o=!0;continue}if(u.startsWith("## ")){n=JE(u),o=!0;continue}let l=WE(u);if(l){o=!0,s.push(l);continue}let m=UE(u);m&&(o=!0,s.push(m))}if(s.length===0){if(!i||o)return xf(e.join(" "),n);throw new Oo("git-status-unparseable")}let a=te(s,r),c=vf(a,"state");return _t({command:e.join(" "),branch:n,rows:a,summary:KE(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function GE(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function WE(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return Wn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return Wn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return Wn(t.slice(10).join(" "),r)}return e.startsWith("? ")?Wn(e.slice(2),"??"):null}function UE(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Wn(qE(e.slice(3),t),t):null}function Wn(e,t){let r=_f(t[0]??"."),n=_f(t[1]??".");return{path:VE(e),index:r,worktree:n,state:rx(`${r}${n}`)}}function _f(e){return e===" "?".":e}function JE(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function qE(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function VE(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function KE(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 xf(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 zE(e,t,r){let n=t.split("\0").filter(Boolean).map(o=>{let i=o.replace(/^\x1e/,"").split("");return{short:i[0]??"",author:i[1]??"",date:i[2]??"",subject:i[3]??""}}),s=te(n,r);return _t({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 YE(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)}}),o=te(s,r),i=o.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 _t({command:e.join(" "),files:o,summary:`${r?`${o.length}/${s.length}`:o.length} files, +${i.added} -${i.deleted}`},r,["rsp git status --query <path>","rsp git log --query <subject>"])}function XE(e,t){let r=t.split(`
|
|
69
|
+
`)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=n?.[1]??"",c=n?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),m=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:m,summary:`commit ${c} on ${a}: ${u} files, +${l} -${m}`}}function QE(e,t){let r=t.split(`
|
|
70
|
+
`).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,m=""]=c.split(" "),[d,p]=(l??"").split(":");return{flag:u??"",from:d??"",to:p??"",summary:m}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.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 ${i} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${i} -> ${n} +${a} commits`}}function ZE(e,t,r){let n=t.split(`
|
|
71
|
+
`),s=[],o=null;for(let c of n){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){o={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!o)continue;if(c.startsWith("author ")){o.author=c.slice(7);continue}if(c.startsWith("filename ")){o.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),m=o.commit.slice(0,12);l&&l.commit===m&&l.author===o.author&&l.path===o.path&&l.line_end+1===o.finalLine?l.line_end=o.finalLine:s.push({line_start:o.finalLine,line_end:o.finalLine,author:o.author,commit:m,path:o.path}),o=null}let i=te(s,r),a=vf(i,"author");return _t({command:e.join(" "),ranges:i,authors:a,summary:`${r?`${i.length}/${s.length}`:i.length} ranges, ${Object.keys(a).length} authors`},r,["rsp git show --query <commit>","rsp git log --query <author>"])}function ex(e,t,r){let n=t.split(`
|
|
72
|
+
`).filter(Boolean).map(i=>{let[a,c,u,l,m,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:m||null,subject:d??""}}),s=te(n,r),o=s.find(i=>i.current)?.name??"";return _t({command:e.join(" "),branches:s,summary:`${r?`${s.length}/${n.length}`:s.length} branches${o?`, current ${o}`:""}`},r,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function tx(e,t,r){let n=t.indexOf(""),s=n>=0?t.indexOf("",n+1):-1,o=n>=0&&s>=0?t.slice(n+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,m,d=""]=o.split(""),p=[];for(let b of i.split(`
|
|
73
|
+
`)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(b);if(!w)continue;let S=w[3]??"";p.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...S].filter(O=>O==="+").length,deleted:[...S].filter(O=>O==="-").length,binary:S.startsWith("Bin")})}let f=te(p,r),_=0,g=0,y=0;for(let b of f)_+=typeof b.changed=="number"?b.changed:0,g+=typeof b.added=="number"?b.added:0,y+=typeof b.deleted=="number"?b.deleted:0;return _t({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:m??"",body_lines:d.trim()?d.trim().split(`
|
|
74
|
+
`).length:0,files:f,summary:`${r?`${f.length}/${p.length}`:f.length} files, ${_} changed, +${g} -${y}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function _t(e,t,r){return t?nt(e,r):e}function rx(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function vf(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function nx(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function sx(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 Rf,To,Oo,Xt=h(()=>{"use strict";U();L();Pe();Qr();Fe();Pe();Rf=["%h","%an","%as","%s"];To=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return is(this.command,this.flag,this.validFlags,`${this.command} --help`)}},Oo=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var qc={};M(qc,{NORMALIZATION_ALLOWLIST:()=>Lf,NORMALIZE_ANSI:()=>Po,NORMALIZE_BLANK_LINES:()=>Do,NORMALIZE_CR_PROGRESS:()=>Io,NORMALIZE_JSON_TOON:()=>If,NORMALIZE_TRAILING_WHITESPACE:()=>Lo,crushJsonArrayItems:()=>Un,formatCodexNormalizeDecision:()=>Bf,formatNormalizeDecision:()=>Mf,hookDecisionFromClaudePostExecJson:()=>Df,hookDecisionFromCodexPostExecJson:()=>Nf,normalizeOutput:()=>No,renderGenericJsonLane:()=>Uc,runClaudePostExecHook:()=>ax,runCodexPostExecHook:()=>cx,transcodeJsonToToon:()=>Pf});import{readFileSync as Ao}from"node:fs";function Pf(e,t){let r=t?.encode??C,n=t?.decode??D,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=r(o)}catch{return e}let a;try{a=n(i)}catch{return e}return Wc(o,a)?i.trimEnd():e}async function Uc(e,t={}){let r=mx(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,o=Af(t.minTokens,ox),i=Af(t.maxItems,ix);if(!(s>i&&yx(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Un)(n,i)}catch(_){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:bx(_)}}}let u=c.items,l={items:u},m=`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"}`,f=C(l).trimEnd();return{output:[m,p,f].filter(Boolean).join(`
|
|
75
|
+
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Un(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=px(e),s=new Set;n&&e.forEach((a,c)=>{Jc(a)!==n&&s.add(c)});let o=fx(e,n);for(let a of s)r.add(a);for(let a of o)r.add(a);let i=[...r].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:i.map(a=>e[a]),total:e.length,kept:i.length,dropped:e.length-i.length,shapeOutliers:[...s].filter(a=>i.includes(a)).length,valueOutliers:[...o].filter(a=>i.includes(a)).length}}function No(e){let t=e;for(let r of Lf)t=r.apply(t);return t}async function Df(e,t){return await $f(e,t)}async function Nf(e,t){return await $f(e,t)}async function $f(e,t){let r=dx(e),n=wx(r,["cwd"])||t.cwd;if(!await(t.isEnabled??lx)(n))return{kind:"passthrough",reason:"disabled"};let o=_x(r,"tool_response");if(!o)return{kind:"passthrough",reason:"missing-output"};if(typeof o.output!="string")return{kind:"passthrough",reason:"missing-output"};let i=o.output,c=(t.normalize??No)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Mf(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Bf(e){return{stdout:"",status:0}}async function ax(e){let t=e?Ao(e,"utf8"):Ao(0,"utf8"),r=await Df(t,{cwd:process.cwd()}),n=Mf(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function cx(e){let t=e?Ao(e,"utf8"):Ao(0,"utf8"),r=await Nf(t,{cwd:process.cwd()}),n=Bf(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function ux(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 o=e.charCodeAt(r);if(o===7){r++;break}if(o===27&&e.charCodeAt(r+1)===92){r+=2;break}r++}continue}if(s===91){for(r+=2;r<e.length&&Cf(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&Cf(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function Cf(e){return e>=32&&e<=63}function lx(e){return Ae(e,process.env).enabled}function dx(e){try{let t=JSON.parse(e);return Nr(t)?t:{}}catch{return{}}}function mx(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Nr(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 px(e){let t=new Map;for(let s of e){let o=Jc(s);t.set(o,(t.get(o)??0)+1)}let[r,n]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof r=="string"&&typeof n=="number"&&n>e.length/2?r:null}function Jc(e){return Array.isArray(e)?"array":Nr(e)?Object.keys(e).sort().map(t=>`${t}:${Tf(e[t])}`).join("|"):Tf(e)}function fx(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&Jc(s)!==t))for(let[i,a]of Ff(s)){let c=n.get(i)??[];c.push({index:o,value:a}),n.set(i,c)}});for(let s of n.values()){for(let o of gx(s))r.add(o);for(let o of hx(s))r.add(o)}return r}function gx(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=Of(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=Of(s);if(o===0)return t.filter(c=>c.value===n).length/t.length<.8?[]:t.filter(c=>c.value!==n).map(c=>c.index);let i=o*8;return t.filter(a=>Math.abs(a.value-n)>i).map(a=>a.index)}function hx(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 Ff(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Nr(e)?Object.entries(e).flatMap(([r,n])=>Ff(n,t?`${t}.${r}`:r)):[]}function Tf(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Of(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 yx(e){return Math.ceil(e.length/4)}function Af(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function bx(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 wx(e,t){let r=e;for(let n of t){if(!Nr(r))return"";r=r[n]}return typeof r=="string"?r:""}function _x(e,t){let r=e[t];return Nr(r)?r:null}function Nr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Wc(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 i=t;return e.length!==i.length?!1:e.every((a,c)=>Wc(a,i[c]))}let r=e,n=t,s=Object.keys(r),o=Object.keys(n);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&Wc(r[i],n[i]))}var Po,Io,Lo,Do,If,ox,ix,Lf,Jn=h(()=>{"use strict";L();Pe();Po={id:"ansi",apply:ux},Io={id:"cr-progress",apply:e=>e.split(`
|
|
76
76
|
`).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(`
|
|
77
|
-
`)},
|
|
77
|
+
`)},Lo={id:"trailing-whitespace",apply:e=>e.split(`
|
|
78
78
|
`).map(t=>t.replace(/[ \t]+$/,"")).join(`
|
|
79
|
-
`)},
|
|
79
|
+
`)},Do={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
|
|
80
80
|
|
|
81
|
-
`)};
|
|
82
|
-
`}function
|
|
83
|
-
`,status:0}}async function
|
|
81
|
+
`)};If={id:"json-to-toon",apply:e=>Pf(e)},ox=200,ix=15;Lf=[Po,Io,Lo,Do,If]});var Kn={};M(Kn,{parseExecCommandLine:()=>Jf,renderExecContract:()=>Uf,runExecWrapper:()=>xx});import{isUtf8 as Rx}from"node:buffer";import{spawn as kx}from"node:child_process";async function xx(e,t){let r=Jf(e),n=await vx(r);return await Uf(r,n,t)}async function Uf(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=Ee(e,t.stdout,t.stderr);return{stdout:$(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 o=Cx(n),i=o.kind==="text"?Buffer.from(o.text):n,a=Vx(r.heavyByteThreshold,Sx);if(i.length<=a&&r.level!=="terse")return{stdout:i,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 m=o.kind==="text"?Ox(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):Ax(n,n.length,l,e);return{stdout:Buffer.from(m.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:m.degradation}}function Jf(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 vx(e){let t=kx(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function Cx(e){return Rx(e)?{kind:"text",text:Tx(e.toString("utf8"))}:{kind:"bytes"}}function Tx(e){let t=e;for(let r of[Po,Io,Lo,Do])t=r.apply(t);return t}function Ox(e,t,r,n,s,o=jx,i=Un){let c=Math.max(1,Math.floor((n==="terse"?Wf:Ex)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),m=Fx(e,c,l,o),d=Px(e),p=Ix(d,e,u,c,l,m.kind==="ok"?m.lines:[],i),f=qf(s,d,t,qx(u),r,p.summary),_=m.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Qf(m.error)}:p.degradation;return{text:Xf(f),degradation:_}}function Ax(e,t,r,n){let s=Math.max(1,Math.floor(Wf/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Xf(qf(n,"bytes",t,0,r,o))}}function qf(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Le(s)}}}function Px(e){let t=e.trim();return t?Kf(t)?"json":zf(e)?"jsonl":Hx(e)?"unified-diff":Yf(e)?"tabular":Gx(e)?"log-like":Wx(e)?"prose":"untyped":"untyped"}function Ix(e,t,r,n,s,o,i=Un){switch(e){case"json":return Lx(t,i);case"jsonl":return{summary:Dx(t)};case"unified-diff":return{summary:Nx(t)};case"tabular":return{summary:$x(t)};case"log-like":return{summary:Mx(t,o)};case"prose":return{summary:Bx(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Vf(r,n,s,o)}}}function Lx(e,t){let r=Kf(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(Rt),item_keys:Kc(r)}}}catch(n){return{summary:Hf(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Qf(n)}}}return{summary:Hf(r)}}if(Vn(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,o])=>[s,Rt(o)]))}}}return{summary:{root_type:typeof r,value:Rt(r)}}}function Hf(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Rt),item_keys:Kc(e)}}function Dx(e){let t=zf(e)??[],r=Ux(t,"level");return{records:t.length,keys:Kc(t),levels:r,first:Rt(t[0]),last:Rt(t.at(-1))}}function Nx(e){let t=new Map,r="",n=0,s=0,o=0;for(let i of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(i);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(i);c&&(r=c[1]??"unknown",t.has(r)||t.set(r,{path:r,added:0,deleted:0,hunks:0}))}i.startsWith("@@")?(o++,r&&t.get(r).hunks++):i.startsWith("+")&&!i.startsWith("+++")?(n++,r&&t.get(r).added++):i.startsWith("-")&&!i.startsWith("---")&&(s++,r&&t.get(r).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:o,added_lines:n,deleted_lines:s}}function $x(e){let t=Yf(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Vf(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function Mx(e,t){let r=qn(e);return{entries:r.length,levels:Jx(r),first:Qt(r[0]??""),last:Qt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Qt(n.text)}))}}function Bx(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:Qt(t[0]??""),closing:Qt(t.at(-1)??"")}}function Vf(e,t,r,n){let s=Gf(e.subarray(0,t)),o=Gf(e.subarray(r));return{head:s,tail:o,outliers:n.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:Qt(i.text)}))}}function Fx(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function jx(e,t){return bf(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Kf(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Vn(r)||Array.isArray(r)?r:null}catch{return null}}function zf(e){let t=qn(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 Hx(e){let t=qn(e),r=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(r)&&!/^--- /.test(r))return!1;let n=t.some(i=>/^diff --git a\/.+ b\/.+/.test(i))||t.some(i=>/^--- /.test(i))&&t.some(i=>/^\+\+\+ /.test(i)),s=t.some(i=>/^@@ /.test(i)),o=t.some(i=>/^[+-]/.test(i)&&!/^(---|\+\+\+) /.test(i));return n&&s&&o}function Yf(e){let t=qn(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(i=>i.trim()).filter(Boolean);if(s.length<2||s.some(i=>!/^[A-Za-z0-9_.-]+$/.test(i)))return null;let o=[];for(let i of t.slice(1)){let a=i.split(n).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;o.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return o.length>0?{columns:s,rows:o}:null}function Gx(e){let t=qn(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 Wx(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 qn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Kc(e){let t=new Map;for(let r of e)if(Vn(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 Ux(e,t){let r=new Map;for(let n of e){if(!Vn(n))continue;let s=n[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();r.set(o,(r.get(o)??0)+1)}}return Object.fromEntries([...r.entries()].sort((n,s)=>n[0].localeCompare(s[0])))}function Jx(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 Rt(e){return typeof e=="string"?Qt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(Rt):Vn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,Rt(r)])):String(e)}function Qt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=jf?t:`${t.slice(0,jf-1)}\u2026`}function Xf(e){let t=C(e).trimEnd(),r=D(t);if(!Vc(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
|
|
82
|
+
`}function Vc(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 i=t;return e.length!==i.length?!1:e.every((a,c)=>Vc(a,i[c]))}let r=e,n=t,s=Object.keys(r),o=Object.keys(n);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(n,i)&&Vc(r[i],n[i]))}function Vn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Qf(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 Gf(e){return e.toString("utf8").replace(/�$/g,"")}function qx(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 Vx(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var Sx,Ex,Wf,jf,zn=h(()=>{"use strict";U();L();wf();Xt();Jn();Fe();Sx=8*1024,Ex=2*1024,Wf=1024,jf=240});var Jo={};M(Jo,{RSP_WRAPPER_CAPABILITIES:()=>Qn,_testOnlyResetBinaryState:()=>sv,formatCodexHookDecision:()=>dg,formatHookDecision:()=>lg,hookDecisionFromClaudePreExecJson:()=>lv,hookDecisionFromCodexPreExecJson:()=>dv,rewriteCommand:()=>cg,rewriteTableFromCapabilities:()=>ag,runClaudePreExecHook:()=>mv,runCodexPreExecHook:()=>pv});import{accessSync as ev,constants as tv,existsSync as rv,readFileSync as Wo}from"node:fs";import{fileURLToPath as nv}from"node:url";function sv(){Go=void 0,zc=!1}function ov(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return ev(`${t}/rsp`,tv.X_OK),!0}catch{}return!1}function iv(e){return Go===void 0&&(Go=e()),Go}function av(){zc||(zc=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function ag(e){let t=new Map;for(let r of e)t.set(Pv(r.command),["rsp",...r.wrapper]);return t}function cg(e,t=Gn()){let r=kv(e);if(r)return r;let n=_v(e);if(!n)return Ho(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&Tr(s[0]))return Ho(e,t);let o=uv(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return Ho(e,t);let i=[...Qn].sort((u,l)=>l.command.length-u.command.length).find(u=>Rv(s,u.command));if(!i)return Ho(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=hg(n.redirectSuffix);return{kind:"rewrite",command:[...a.map(kt),...c].join(" "),capabilityId:i.id}}function uv(e,t){let r=e.tokens.map(i=>i.text),n=r[0],s=hg(e.redirectSuffix),o=t.map(kt);return n==="cat"&&r.length===2&&jo(r[1])?{kind:"rewrite",command:[...o,"cat",kt(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&jo(r[1])?{kind:"rewrite",command:[...o,"cat",`--${n}`,"10",kt(r[1]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===4&&r[1]==="-n"&&/^[1-9][0-9]*$/.test(r[2])&&jo(r[3])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[2],kt(r[3]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===3&&/^-[1-9][0-9]*$/.test(r[1])&&jo(r[2])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[1].slice(1),kt(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function jo(e){return!!e&&!e.startsWith("-")}async function lv(e,t){return await ug(e,t)}async function dv(e,t){return await ug(e,t)}async function ug(e,t){return(await Xc(e,t,"pre-exec")).decision}async function Xc(e,t,r){let n=_g(e);if(!n.ok){let f={kind:"passthrough",reason:n.reason};return{decision:f,telemetryRoot:t.cwd,event:$r({hook:r,command:"",decision:f,reason:n.reason})}}let s=n.payload,o=De(s,["cwd"])||De(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??fv)(o)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:Yc(s),decision:f,reason:"disabled"})}}let a=Yc(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:a,decision:f,reason:"missing-command"})}}if(!iv(t.resolveBinary??ov)){av();let f={kind:"passthrough",reason:"binary-unresolved"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:a,decision:f,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Ae(o,process.env),m=t.rspInvocationPrefix??Gn(),d=l.proxyEnabled?Sv(a,m):(t.rewrite??(f=>cg(f,m)))(a),p=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let f=d.reason?d:{...d,reason:"unsupported-command"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:p})}}return await hv(o,t.wakeResident??gv),{decision:d,telemetryRoot:o,event:$r({hook:r,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:p})}}function lg(e){return e.kind==="rewrite"?mg(e.command):{stdout:"",status:0}}function dg(e){return e.kind==="rewrite"?mg(e.command):{stdout:"",status:0}}function mg(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
|
|
83
|
+
`,status:0}}async function mv(e){let t="";try{t=e?Wo(e,"utf8"):Wo(0,"utf8");let r=await Xc(t,{cwd:process.cwd()},"claude-pre-exec");Uo(r.telemetryRoot,r.event);let n=r.decision;fg("claude-pre-exec",n);let s=lg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Uo(process.cwd(),pg("claude-pre-exec",t,r)),gg("claude-pre-exec",r),0}}async function pv(e){let t="";try{t=e?Wo(e,"utf8"):Wo(0,"utf8");let r=await Xc(t,{cwd:process.cwd()},"codex-pre-exec");Uo(r.telemetryRoot,r.event);let n=r.decision;fg("codex-pre-exec",n);let s=dg(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Uo(process.cwd(),pg("codex-pre-exec",t,r)),gg("codex-pre-exec",r),0}}function Uo(e,t){lt(e,t).catch(()=>{})}function $r(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:ye(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function pg(e,t,r){let n=_g(t),s=n.ok?Yc(n.payload):"";return{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:ye(s),decision:"failed-open",reason:"hook-exception",error:Qc(r)}}function fv(e){return Ae(e,process.env).enabled}async function gv(e){let t=Ae(e,process.env);if(!t.enabled||!wv(t))return;let r=He(e);await _s(r,bv(t))}async function hv(e,t){try{await Promise.resolve(t(e))}catch(r){yv(r)}}function fg(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
|
|
84
84
|
`);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
|
|
85
|
-
`)}}function
|
|
86
|
-
`)}function
|
|
87
|
-
`)}function
|
|
88
|
-
`)}function
|
|
85
|
+
`)}}function gg(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Qc(t)}
|
|
86
|
+
`)}function yv(e){ta(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${Qc(e)}
|
|
87
|
+
`)}function Qc(e){return e instanceof Error?e.name||"Error":typeof e}function bv(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 wv(e){if(!e.storeUri.startsWith("file://"))return!0;try{return rv(nv(e.storeUri))}catch{return!1}}function Yc(e){return De(e,["tool_input","command"])||De(e,["tool_input","cmd"])||De(e,["tool_input","args","command"])||De(e,["input","command"])||De(e,["input","cmd"])||De(e,["arguments","command"])||De(e,["arguments","cmd"])||De(e,["command"])||De(e,["cmd"])}function _v(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=Zc(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Tr(o.text)))return null;let n=[],s=[];for(let o of r){if(o.text.includes(">")||o.text.includes("<")){if(o.quoted||o.text!=="2>/dev/null"&&o.text!=="2>&1")return null;s.push(o);continue}n.push(o)}return n.length===0?null:{tokens:n,redirectSuffix:s}}function Zc(e){let t=[],r="",n=!1,s=null,o=()=>{!r&&!n||(t.push({text:r,quoted:n}),r="",n=!1)};for(let i=0;i<e.length;i+=1){let a=e[i];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&i+1<e.length){i+=1,r+=e[i];continue}r+=a;continue}if(a==="'"||a==='"'){s=a,n=!0;continue}if(a==="\\"&&i+1<e.length){i+=1,r+=e[i];continue}if(/[ \t]/.test(a)){o();continue}r+=a}return s?[]:(o(),t)}function Rv(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function kv(e){let t=Zc(e.trim()).map(r=>r.text);return Ut(t)?{kind:"passthrough",reason:cv}:null}function hg(e){return e.map(t=>t.text)}function kt(e){return/[^\w@%+=:,./-]/.test(e)?eu(e):e}function Sv(e,t){let r=xv(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(kt).join(" ")} proxy -- ${eu(e.trim())}`,capabilityId:"proxy:universal"}}function Ev(e){if(!process.argv[1])return!1;let t=Zc(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function xv(e){let t=e.trim();if(!t)return"missing-command";if(bg(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=Rn(_n(t)[0]??"")[0];if(r==="rsp"||Ev(t))return"opt-out";if(r&&yg.has(r))return"interactive"}function Ho(e,t){let r=e.trim();return vv(r)?{kind:"rewrite",command:`${t.map(kt).join(" ")} exec -- ${eu(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function vv(e){return!(!e||!Cv(e)||!Tv(e)||bg(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Ov(e,"rsp")||wg(e,yg)||Av(e))}function Cv(e){return/&&|[;|]/.test(e)}function bg(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 Tv(e){return _n(e).some(t=>{let r=Rn(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 wg(e,t){return _n(e).some(r=>{let n=Rn(r)[0];return n?t.has(n):!1})}function Ov(e,t){return wg(e,new Set([t]))}function Av(e){return _n(e).some(t=>{let r=Rn(t);return r[0]==="grep"&&r.includes("-q")})}function eu(e){return`'${e.replace(/'/g,"'\\''")}'`}function Pv(e){return e.join("\0")}function _g(e){try{let t=JSON.parse(e);return Rg(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function De(e,t){let r=e;for(let n of t){if(!Rg(r))return"";r=r[n]}return typeof r=="string"?r:""}function Rg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Go,zc,Qn,dB,cv,yg,Zn=h(()=>{"use strict";kn();Pe();Ge();jt();Bc();Ie();zc=!1;Qn=[{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:"gh:issues:batch",command:["gh","issues"],wrapper:["gh","issues"]},{id:"gh:prs:batch",command:["gh","prs"],wrapper:["gh","prs"]},{id:"gh:edit-labels:batch",command:["gh","edit-labels"],wrapper:["gh","edit-labels"]},{id:"gh:link-sub-issues:batch",command:["gh","link-sub-issues"],wrapper:["gh","link-sub-issues"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],dB=ag(Qn),cv="lossless-gh-json-jq";yg=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Tg={};M(Tg,{fastTelemetryRoot:()=>ru,isFastGitStatus:()=>qo,runFastGitStatus:()=>Vo});import{spawnSync as vg}from"node:child_process";import{existsSync as Cg,readdirSync as jv}from"node:fs";function qo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Vo(){if(Hv(process.cwd()))return{stdout:tu(),stderr:Buffer.alloc(0),status:0,signal:null};if(vg("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:tu(),stderr:Buffer.alloc(0),status:0,signal:null};let t=vg("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?tu():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function ru(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ge(),Ft));return t(e).rootDir}catch{return e}}function tu(){return Buffer.from(`${W({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
|
|
88
|
+
`)}function Hv(e){try{return!Cg(`${e}/.git`)||Cg(`${e}/.git/index`)?!1:jv(e).every(t=>t===".git")}catch{return!1}}var nu=h(()=>{"use strict";rt()});async function Br(e,t,r){let n=new Array(e.length),s=0,o=Math.min(Math.max(1,Math.floor(t)),e.length),i=Array.from({length:o},async()=>{for(;s<e.length;){let a=s++;n[a]=await r(e[a])}});return await Promise.all(i),n}function Pg(e,t,r,n={}){sC(t);let s=e==="issue"?"i":"p",o=t.map((d,p)=>({alias:`${s}${p}`,number:d})),i=(n.labelNames??[]).map((d,p)=>({alias:`l${p}`,name:d})),c=oC(["id","number",...r]).map(d=>iC(nC[d],6)).join(`
|
|
89
89
|
`),u=o.map(({alias:d,number:p})=>[` ${d}: ${e}(number: ${p}) {`,c," }"].join(`
|
|
90
90
|
`)),l=i.map(({alias:d,name:p})=>` ${d}: label(name: ${JSON.stringify(p)}) { id name }`),m=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
|
|
91
|
-
`);return{kind:e,query:m,aliases:o,labelAliases:i}}function
|
|
92
|
-
`)}}function
|
|
93
|
-
`)}}function
|
|
91
|
+
`);return{kind:e,query:m,aliases:o,labelAliases:i}}function Ig(e,t){let r=Mr(t),n=Mr(r.data),s=Mr(n.repository),o=Array.isArray(r.errors)?r.errors.map(Mr):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(Ng(c))return{number:a,value:c};let u=o.find(l=>{let m=l.path;return Array.isArray(m)&&m.includes(i)});return{number:a,error:$g(u?.message)||"not found"}})}function Lg(e,t,r){let n=[],s=[];return e.forEach((o,i)=>{if(t.length>0){let a=`add${i}`;n.push({alias:a,number:o.number}),s.push(` ${a}: addLabelsToLabelable(input: { labelableId: ${Et(o.nodeId)}, labelIds: ${Ag(t)}, clientMutationId: ${Et(String(o.number))} }) { clientMutationId }`)}if(r.length>0){let a=`remove${i}`;n.push({alias:a,number:o.number}),s.push(` ${a}: removeLabelsFromLabelable(input: { labelableId: ${Et(o.nodeId)}, labelIds: ${Ag(r)}, clientMutationId: ${Et(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
|
|
92
|
+
`)}}function Dg(e,t){let r=t.map((s,o)=>({alias:`link${o}`,number:s.number})),n=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${Et(e.nodeId)}, subIssueId: ${Et(s.nodeId)}, clientMutationId: ${Et(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
|
|
93
|
+
`)}}function su(e,t){let r=Mr(t),n=Array.isArray(r.errors)?r.errors.map(Mr):[],s=new Map;for(let{alias:o}of e){let i=n.find(a=>Array.isArray(a.path)&&a.path.includes(o));i&&s.set(o,$g(i.message)||"mutation failed")}return s}function sC(e){if(e.length===0)throw new Error("at least one GitHub number is required");if(e.length>100)throw new Error("GitHub batch exceeds 100 nodes");for(let t of e)if(!Number.isSafeInteger(t)||t<=0)throw new Error(`invalid GitHub number: ${t}`)}function oC(e){return[...new Set(e)]}function iC(e,t){let r=" ".repeat(t);return e.split(`
|
|
94
94
|
`).map(n=>`${r}${n}`).join(`
|
|
95
|
-
`)}function
|
|
96
|
-
`),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as
|
|
97
|
-
`))}async function
|
|
98
|
-
`),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function
|
|
99
|
-
${e.stdout}`)}function
|
|
100
|
-
`)[0]?.slice(0,240)??""}function
|
|
95
|
+
`)}function Et(e){return JSON.stringify(e)}function Ag(e){return`[${e.map(Et).join(", ")}]`}function Mr(e){return Ng(e)?e:{}}function Ng(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $g(e){return typeof e=="string"?e:""}var nC,Mg=h(()=>{nC={id:"id",number:"number",title:"title",state:"state",labels:"labels(first: 100) { nodes { id name } }",body:"body",mergeable:"mergeable",checks:["commits(last: 1) {"," nodes { commit { statusCheckRollup {"," state"," contexts(first: 100) { nodes {"," __typename"," ... on CheckRun { name status conclusion detailsUrl }"," ... on StatusContext { context state targetUrl }"," } }"," } } }","}"].join(`
|
|
96
|
+
`),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as cC,spawnSync as uC}from"node:child_process";function au(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function jg(e,t={}){let r=SC(e),n=r.repo??t.repo??process.env.GH_REPO??xC();if(!n||!n.includes("/"))return lu(e,"repository is required; pass --repo owner/repo");let s=t.exec??vC,o=Math.max(1,Math.floor(t.restConcurrency??Fg));return r.verb==="issues"||r.verb==="prs"?await mC(r,n,s,o,e):r.verb==="edit-labels"?await fC(r,n,s,o,e):await hC(r,n,s,o,e)}async function mC(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=Hg(e),a=[],c=[];for(let l of uu(e.numbers,100)){let m=Pg(o,l,i.query),d=await cu(r,t,m.query);if(mu(d))return await pC(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(p=>({number:p,value:{error:we(d)||`failed to read ${p}`},failed:!0})));continue}a.push(...Ig(m,xt(d.stdout)).map(p=>({number:p.number,value:p.error?{error:p.error}:bC(e.verb,p.value??{},i.output),failed:!!p.error})))}let u=a.filter(l=>l.failed).length;return zo({command:Yo(s),transport:"graphql",order:e.numbers,[e.verb]:es(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
|
|
97
|
+
`))}async function pC(e,t,r,n,s){let o=Hg(e),i=e.verb==="issues"?"issues":"pulls",a=await Br(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:we(l)||"REST fallback failed"}};let m=Ve(xt(l.stdout));if(e.verb==="prs"&&o.output.some(Gg)){let d=H(Ve(m.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let p=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(p.code!==0)return{number:u,value:{error:we(p)||"REST check-runs fallback failed"}};let f=await r(["api",`repos/${t}/commits/${d}/status`]);if(f.code!==0)return{number:u,value:{error:we(f)||"REST commit-status fallback failed"}};m={...m,restCheckRollup:_C(Ve(xt(p.stdout)),Ve(xt(f.stdout)))}}return{number:u,value:wC(e.verb,m,o.output)}}),c=a.filter(u=>"error"in u.value).length;return zo({command:Yo(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:es(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function fC(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return lu(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Wg(e.numbers,t,r,n),Br(o,n,async d=>{let p=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:H(Ve(xt(p.stdout)).node_id),error:p.code===0?"":we(p)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return jr(s,e.numbers,du(e.numbers,()=>({error:`label not found: ${u.join(", ")}`})),"graphql");let l=new Map(i.filter(d=>d.error).map(d=>[d.number,{error:d.error}])),m=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of uu(m,100)){let p=Lg(d,e.add.map(g=>c.get(g)),e.remove.map(g=>c.get(g))),f=await cu(r,t,p.query);if(mu(f))return await gC(e,t,r,n,s);if(f.code!==0){for(let g of d)l.set(g.number,{error:we(f)||"label mutation failed"});continue}let _=su(p.aliases,xt(f.stdout));for(let g of d){let b=p.aliases.filter(w=>w.number===g.number).map(w=>_.get(w.alias)).find(Boolean);l.set(g.number,b?{error:b}:{ok:!0})}}return jr(s,e.numbers,Ug(e.numbers,l),"graphql")}async function gC(e,t,r,n,s){let o=await Br(e.numbers,n,async i=>{for(let a of e.remove){let c=await r(["api","-X","DELETE",`repos/${t}/issues/${i}/labels/${encodeURIComponent(a)}`]);if(c.code!==0)return{number:i,value:{error:we(c)||`failed to remove label ${a}`}}}if(e.add.length>0){let a=["api","-X","POST",`repos/${t}/issues/${i}/labels`];for(let u of e.add)a.push("-f",`labels[]=${u}`);let c=await r(a);if(c.code!==0)return{number:i,value:{error:we(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return jr(s,e.numbers,es(o),"rest-fallback",n)}async function hC(e,t,r,n,s){if(e.numbers.length<2)return lu(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Wg(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return jr(s,i,du(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,m=a.slice(1).flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:(l.set(d.number,{error:d.error??"child not found"}),[]));for(let d of uu(m,100)){let p=Dg({number:o,nodeId:u},d),f=await cu(r,t,p.query);if(mu(f))return await yC(o,i,t,r,n,s);if(f.code!==0){for(let g of d)l.set(g.number,{error:we(f)||"sub-issue mutation failed"});continue}let _=su(p.aliases,xt(f.stdout));for(let g of p.aliases){let y=_.get(g.alias);l.set(g.number,y?{error:y}:{ok:!0})}}return jr(s,i,Ug(i,l),"graphql")}async function yC(e,t,r,n,s,o){let i=await Br(t,s,async a=>{let c=await n(["api",`repos/${r}/issues/${a}`,"--jq",".id"]),u=Number(c.stdout.trim());if(c.code!==0||!Number.isSafeInteger(u)||u<=0)return{number:a,value:{error:we(c)||"REST id lookup failed"}};let l=await n(["api","-X","POST",`repos/${r}/issues/${e}/sub_issues`,"-F",`sub_issue_id=${u}`]);return{number:a,value:l.code===0?{ok:!0}:{error:we(l)||"REST link failed"}}});return jr(o,t,es(i),"rest-fallback",s)}function jr(e,t,r,n,s){let o=Object.values(r).filter(i=>Hr(i)&&"error"in i).length;return zo({command:Yo(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Fg}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function Hg(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Bg(r,lC),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Bg(t,dC),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Bg(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function bC(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=ou(t.labels).map(o=>H(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=kC(t.commits):s==="state"||s==="mergeable"?n[s]=H(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=Jg(t[s]));return"number"in n||(n.number=pu(t.number)),n}function wC(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Hr):[];n.labels=o.map(i=>H(i.name)).filter(Boolean)}else if(Gg(s))n[s]=Ve(t.restCheckRollup);else if(s==="state")n.state=H(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;n.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else n[s]=Jg(t[s]);return"number"in n||(n.number=pu(t.number)),n}function _C(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Hr):[],n=Array.isArray(t.statuses)?t.statuses.filter(Hr):[],s=[...r.map(o=>({name:H(o.name),state:(H(o.conclusion)||H(o.status)).toLowerCase()})),...n.map(o=>({name:H(o.context),state:H(o.state).toLowerCase()}))];return{state:H(t.state).toLowerCase()||RC(s.map(o=>o.state)),contexts:s}}function RC(e){return e.some(t=>["failure","error","cancelled","timed_out","action_required"].includes(t))?"failure":e.some(t=>["pending","queued","in_progress","requested","waiting"].includes(t))?"pending":e.length>0&&e.every(t=>["success","neutral","skipped"].includes(t))?"success":""}function Gg(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function kC(e){let t=ou(e).at(-1),r=Ve(Ve(t?.commit).statusCheckRollup);return{state:H(r.state).toLowerCase(),contexts:ou(r.contexts).map(n=>({name:H(n.name)||H(n.context),state:(H(n.conclusion)||H(n.status)||H(n.state)).toLowerCase()}))}}async function cu(e,t,r){let[n,s]=EC(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function Wg(e,t,r,n){return await Br(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=Ve(xt(o.stdout)),a=H(i.node_id),c=pu(i.id);return o.code!==0||!a?{number:s,error:we(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function uu(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function SC(e){if(!au(e))throw new Error("unsupported rsp gh batch command");let t=e[1],r=[],n=[],s=[],o=[],i;for(let a=2;a<e.length;a++){let c=e[a];if(c==="--repo")i=e[++a];else if(c==="--json")n.push(...Fr(e[++a]??""));else if(c.startsWith("--json="))n.push(...Fr(c.slice(7)));else if(c==="--add")s.push(...Fr(e[++a]??""));else if(c.startsWith("--add="))s.push(...Fr(c.slice(6)));else if(c==="--remove")o.push(...Fr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...Fr(c.slice(9)));else{let u=Number(c);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`invalid GitHub number: ${c}`);r.push(u)}}if(r.length===0)throw new Error("at least one GitHub number is required");return{verb:t,numbers:r,repo:i,fields:n,add:s,remove:o}}function zo(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
|
|
98
|
+
`),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function lu(e,t){return zo({command:Yo(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function du(e,t){return es(e.map(r=>({number:r,value:t(r)})))}function es(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Ug(e,t){return du(e,r=>t.get(r)??{error:"mutation skipped"})}function mu(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
|
|
99
|
+
${e.stdout}`)}function we(e){return(e.stderr||e.stdout).trim().split(`
|
|
100
|
+
`)[0]?.slice(0,240)??""}function xt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function ou(e){let t=Ve(e).nodes;return Array.isArray(t)?t.filter(Hr):[]}function Jg(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function pu(e){let t=Number(e);return Number.isFinite(t)?t:0}function Fr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function EC(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function Yo(e){return`rsp ${e.join(" ")}`}function xC(){let e=uC("git",["config","--get","remote.origin.url"],{encoding:"utf8"});if(e.status!==0)return;let t=e.stdout.trim().match(/(?:github\.com[/:])([^/]+)\/([^/]+?)(?:\.git)?$/);return t?`${t[1]}/${t[2]}`:void 0}async function vC(e){let t=cC("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",a=>o({code:a??1,stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8")}))})}function Ve(e){return Hr(e)?e:{}}function Hr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function H(e){return typeof e=="string"?e:""}var Fg,lC,dC,qg=h(()=>{"use strict";U();L();Mg();Fg=4,lC=new Set(["number","title","state","labels","body"]),dC=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var Ru={};M(Ru,{renderGhContract:()=>Qg,runGhWrapper:()=>IC});import{spawn as CC}from"node:child_process";async function IC(e,t){if(au(e))return await jg(e);let r=Zg(e),n=await DC(r);return Qg(e,n,t)}async function Qg(e,t,r){if((t.status??0)!==0||t.signal){let p=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let n=Zg(e),s=ts(t.stdout),o=GC(n,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=YC(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let p=await r.store.mint(Buffer.from(i.original),{command:e.join(" "),loss:{level:n.full?"brief":r.level,bytes_elided:i.bytes}});i.target.truncated.handle=p}let a=i?.target.truncated.handle||void 0,c=C(o);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let u=XC(o);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let l=Buffer.byteLength(c),m=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!m)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Le(m)}
|
|
101
101
|
`;return{stdout:Buffer.from(`${C(u.payload)}
|
|
102
|
-
${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:m,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Kg(e){let t=Nt(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 o=r,i=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let p=0;p<l.length;p+=1){let f=l[p]??"";f==="--full"?a=!0:f==="--wide"?c=!0:f==="--fields"?u=Wg(l[++p]??""):f.startsWith("--fields=")?u=Wg(f.slice(9)):i.push(f)}let d={kind:o,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:i,query:t.query};return vC(d),d}function Gg(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?kC[t]:RC[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Wg(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function vC(e){if(e.fields.size===0)return;if(e.action!=="list")throw new Qo(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=EC[t];for(let n of e.fields)if(!r.includes(n))throw new Qo(e,`unknown field: ${n}`,r)}async function CC(e){if(e.action==="combined")return await TC(e);let t=OC(e);if(!t)return await DC(Gg(e));let r=await ue({...t,command:["gh",...Gg(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await AC(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function TC(e){let t=e.target??"",[r,n,s]=await Promise.all([ue({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ue({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ue({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),o=[r,n,s].find(a=>(a.status??0)!==0);if(o)return{stdout:o.stdout,stderr:o.stderr,status:o.status,signal:null};let i=Yg(ts(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:me(ts(s.stdout)).map(IC)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function OC(e){let t=Xg(e.passthrough),r=LC(e.passthrough,"--limit")??30,n=ze(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:ze(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 AC(e,t){let r=ts(t);switch(`${e.kind}:${e.action}`){case"pr:list":return me(r).map(zg);case"pr:view":return Yg(r);case"issue:list":return me(r).filter(n=>!er(n.pull_request)).map(Ug);case"issue:view":return Ug(r);case"run:list":return{items:me(B(r).workflow_runs).map(Jg),total:le(B(r),"total_count")};case"run:view":{let n=Jg(r),s=Xg(e.passthrough);if(!s)return n;let o=await ue({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:o.status===0?me(B(ts(o.stdout)).jobs).map(PC):[]}}default:return r}}function zg(e){let t=B(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:hu(t.user),labels:me(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(B(t.base),"ref"),headRefName:x(B(t.head),"ref")}}function Yg(e){return zg(e)}function Ug(e){let t=B(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:me(t.labels).map(r=>({name:x(r,"name")})),author:hu(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Jg(e){let t=B(e);return{databaseId:le(t,"database_id")||le(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 PC(e){let t=B(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function IC(e){let t=B(e);return{author:hu(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function hu(e){let t=B(e);return{login:x(t,"login")}}function Xg(e){return e.find(t=>!t.startsWith("-"))}function ze(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function LC(e,t){let r=ze(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function DC(e){let t=_C("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function NC(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=du(r,"prs"),o=s.rows.map(c=>Qg(c,e)),i=te(o,e.query),a=mu(i.length,o.length,s.total,e.query);return i.length===0?pu(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Gr({...n,prs:i,aggregate:a,summary:`${fu(i.length,o.length,e.query)} ${qg(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Gr({...n,pr:Zg(B(r),e),summary:`PR #${le(B(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return $C(e,t,B(r));case"issue:list":{let s=du(r,"issues"),o=s.rows.map(c=>eh(c,e)),i=te(o,e.query),a=mu(i.length,o.length,s.total,e.query);return i.length===0?pu(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Gr({...n,issues:i,aggregate:a,summary:`${fu(i.length,o.length,e.query)} ${qg(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Gr({...n,issue:HC(B(r),e),summary:`issue #${le(B(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=du(r,"runs"),o=s.rows.map(c=>th(c,e)),i=te(o,e.query),a=mu(i.length,o.length,s.total,e.query);return i.length===0?pu(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Gr({...n,runs:i,aggregate:a,summary:`${fu(i.length,o.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Gr({...n,run:GC(B(r),e),summary:`run ${le(B(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function $C(e,t,r){let n=Zg(B(r.view),{...e,action:"view",wide:!0}),s=te(me(r.checks).map(MC),e.query),o=B(r.comments).comments,i=te(me(o).map(BC).slice(-3),e.query);return st({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${le(B(r.view),"number")}: ${s.length} checks, ${i.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function MC(e){return{name:x(e,"name"),state:rs(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function BC(e){return{author:nh(e.author),body:Zo(e,"body",gu,!1),created:x(e,"createdAt")}}function du(e,t){if(Array.isArray(e))return{rows:me(e)};let r=B(e),n=le(r,"total")||le(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:me(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:me(r.workflow_runs),total:n}:{rows:[]}}function mu(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function pu(e,t,r,n,s){return st({...e,empty:!0,scope:FC(t),[r]:[],aggregate:n,summary:`0 ${jC(t)}`},s)}function FC(e){let t=ze(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=ze(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=ze(e.passthrough,"--branch")??ze(e.passthrough,"-b"),s=ze(e.passthrough,"--workflow")??ze(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function jC(e){let t=ze(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Qg(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:rs(e),draft:!!e.isDraft};return yu(r,e,t,["author","labels","url","updated"]),r}function Zg(e,t){let r=Qg(e,t);return r.body=Zo(e,"body",gu,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function eh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:rs(e),labels:rh(e.labels)};return yu(r,e,t,["author","url","updated"]),r}function HC(e,t){let r=eh(e,t);return r.body=Zo(e,"body",gu,t.full),r}function th(e,t){let r={id:le(e,"databaseId"),name:x(e,"name"),status:rs(e),conclusion:x(e,"conclusion")};return yu(r,e,t,["event","branch","workflow","created"]),r}function GC(e,t){let r=th(e,t),n=me(e.jobs).map(s=>({name:x(s,"name"),status:rs(s),conclusion:x(s,"conclusion"),log:Zo(s,"log",SC,t.full)}));return r.jobs=n,r}function Zo(e,t,r,n){let s=x(e,t);if(n||Buffer.byteLength(s)<=r)return s;let o=s.slice(0,r),i={preview:o,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(o),hint:"--full",handle:""}};return Object.defineProperty(i,"__rsp_original",{value:s,enumerable:!1}),i}function WC(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(er(r)){if(er(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 UC(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 qg(e,t){return e.every(r=>r.state===t)?t:"returned"}function fu(e,t,r){return r?`${e}/${t}`:String(e)}function Gr(e,t,r){return t.query?st(e,r):e}function rs(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function yu(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=nh(t.author):s==="labels"?e.labels=rh(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 rh(e){return Array.isArray(e)?e.map(t=>er(t)?x(t,"name"):String(t)).filter(Boolean):[]}function nh(e){return er(e)?x(e,"login"):""}function ts(e){return e.trim()?JSON.parse(e):null}function me(e){return Array.isArray(e)?e.filter(er):[]}function B(e){return er(e)?e:{}}function x(e,t){let r=e[t];return typeof r=="string"?r:""}function le(e,t){let r=e[t];return typeof r=="number"?r:0}function er(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var RC,kC,gu,SC,EC,Qo,wu=h(()=>{"use strict";U();L();fo();Hg();Yt();Qr();je();RC={"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"]},kC={"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"]},gu=160,SC=160,EC={"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"]};Qo=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return $({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 ku={};M(ku,{renderTestContract:()=>sh,runTestWrapper:()=>zC});import{spawn as JC}from"node:child_process";async function zC(e,t){let r=Nt(e),n=await e0(r.argv);return await sh(e,n,t)}async function sh(e,t,r){let n=Nt(e),o=oh(n.argv)==="vitest"?t0(t.stdout):r0(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let f=xe(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${o0(o.durationSeconds)}`,c=te(o.failures,n.query);if(r.level==="terse")return await YC(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,m=0;for(let f of c){let _=await n0(f.excerpt,n.argv.join(" "),r.store);u.push({suite:f.suite,name:f.name,excerpt:_.text}),l??=_.handle,m+=_.bytesElided}let d={exit_code:i,summary:n.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let p=n.query?st(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(p)),stderr:Buffer.from(t.stderr),status:Ru(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:m>0?m:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function YC(e,t,r,n,s,o,i){let a=XC(r.failures),c={exit_code:n,summary:i?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=i?st(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),m=Math.max(0,r.failures.length-a.length),d=a.some((w,S)=>w.excerpt!==r.failures[S].excerpt);if(m===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Ru(t.status),signal:t.signal,payload:u};let p={exit_code:n,summary:s};r.failures.length>0&&(p.failures=r.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let f=C(p),_=Buffer.byteLength(f),g=await o.store?.mint(Buffer.from(f),{command:e.join(" "),loss:{level:"terse",bytes_elided:_}});if(!g)throw new Error("terse test output requires an elision store");let b=`\u2026 elided ${m>0?`${m} failures`:"full detail"} (+${_}) \u2014 ${De(g)}`;return{stdout:Buffer.from(`${l}
|
|
103
|
-
${b}`),stderr:Buffer.from(t.stderr),status:
|
|
102
|
+
${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:m,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Zg(e){let t=Dt(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 o=r,i=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let p=0;p<l.length;p+=1){let f=l[p]??"";f==="--full"?a=!0:f==="--wide"?c=!0:f==="--fields"?u=Kg(l[++p]??""):f.startsWith("--fields=")?u=Kg(f.slice(9)):i.push(f)}let d={kind:o,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:i,query:t.query};return LC(d),d}function Vg(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?OC[t]:TC[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Kg(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function LC(e){if(e.fields.size===0)return;if(e.action!=="list")throw new Xo(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=PC[t];for(let n of e.fields)if(!r.includes(n))throw new Xo(e,`unknown field: ${n}`,r)}async function DC(e){if(e.action==="combined")return await NC(e);let t=$C(e);if(!t)return await HC(Vg(e));let r=await ue({...t,command:["gh",...Vg(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await MC(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function NC(e){let t=e.target??"",[r,n,s]=await Promise.all([ue({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ue({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ue({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),o=[r,n,s].find(a=>(a.status??0)!==0);if(o)return{stdout:o.stdout,stderr:o.stderr,status:o.status,signal:null};let i=th(ts(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:me(ts(s.stdout)).map(FC)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function $C(e){let t=rh(e.passthrough),r=jC(e.passthrough,"--limit")??30,n=Ke(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:Ke(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 MC(e,t){let r=ts(t);switch(`${e.kind}:${e.action}`){case"pr:list":return me(r).map(eh);case"pr:view":return th(r);case"issue:list":return me(r).filter(n=>!tr(n.pull_request)).map(zg);case"issue:view":return zg(r);case"run:list":return{items:me(B(r).workflow_runs).map(Yg),total:le(B(r),"total_count")};case"run:view":{let n=Yg(r),s=rh(e.passthrough);if(!s)return n;let o=await ue({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:o.status===0?me(B(ts(o.stdout)).jobs).map(BC):[]}}default:return r}}function eh(e){let t=B(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:wu(t.user),labels:me(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(B(t.base),"ref"),headRefName:x(B(t.head),"ref")}}function th(e){return eh(e)}function zg(e){let t=B(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:me(t.labels).map(r=>({name:x(r,"name")})),author:wu(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Yg(e){let t=B(e);return{databaseId:le(t,"database_id")||le(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 BC(e){let t=B(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function FC(e){let t=B(e);return{author:wu(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function wu(e){let t=B(e);return{login:x(t,"login")}}function rh(e){return e.find(t=>!t.startsWith("-"))}function Ke(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function jC(e,t){let r=Ke(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function HC(e){let t=CC("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function GC(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=fu(r,"prs"),o=s.rows.map(c=>nh(c,e)),i=te(o,e.query),a=gu(i.length,o.length,s.total,e.query);return i.length===0?hu(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Gr({...n,prs:i,aggregate:a,summary:`${yu(i.length,o.length,e.query)} ${Xg(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Gr({...n,pr:sh(B(r),e),summary:`PR #${le(B(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return WC(e,t,B(r));case"issue:list":{let s=fu(r,"issues"),o=s.rows.map(c=>oh(c,e)),i=te(o,e.query),a=gu(i.length,o.length,s.total,e.query);return i.length===0?hu(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Gr({...n,issues:i,aggregate:a,summary:`${yu(i.length,o.length,e.query)} ${Xg(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Gr({...n,issue:KC(B(r),e),summary:`issue #${le(B(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=fu(r,"runs"),o=s.rows.map(c=>ih(c,e)),i=te(o,e.query),a=gu(i.length,o.length,s.total,e.query);return i.length===0?hu(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Gr({...n,runs:i,aggregate:a,summary:`${yu(i.length,o.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Gr({...n,run:zC(B(r),e),summary:`run ${le(B(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function WC(e,t,r){let n=sh(B(r.view),{...e,action:"view",wide:!0}),s=te(me(r.checks).map(UC),e.query),o=B(r.comments).comments,i=te(me(o).map(JC).slice(-3),e.query);return nt({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${le(B(r.view),"number")}: ${s.length} checks, ${i.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function UC(e){return{name:x(e,"name"),state:rs(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function JC(e){return{author:ch(e.author),body:Qo(e,"body",bu,!1),created:x(e,"createdAt")}}function fu(e,t){if(Array.isArray(e))return{rows:me(e)};let r=B(e),n=le(r,"total")||le(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:me(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:me(r.workflow_runs),total:n}:{rows:[]}}function gu(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function hu(e,t,r,n,s){return nt({...e,empty:!0,scope:qC(t),[r]:[],aggregate:n,summary:`0 ${VC(t)}`},s)}function qC(e){let t=Ke(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=Ke(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=Ke(e.passthrough,"--branch")??Ke(e.passthrough,"-b"),s=Ke(e.passthrough,"--workflow")??Ke(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function VC(e){let t=Ke(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function nh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:rs(e),draft:!!e.isDraft};return _u(r,e,t,["author","labels","url","updated"]),r}function sh(e,t){let r=nh(e,t);return r.body=Qo(e,"body",bu,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function oh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:rs(e),labels:ah(e.labels)};return _u(r,e,t,["author","url","updated"]),r}function KC(e,t){let r=oh(e,t);return r.body=Qo(e,"body",bu,t.full),r}function ih(e,t){let r={id:le(e,"databaseId"),name:x(e,"name"),status:rs(e),conclusion:x(e,"conclusion")};return _u(r,e,t,["event","branch","workflow","created"]),r}function zC(e,t){let r=ih(e,t),n=me(e.jobs).map(s=>({name:x(s,"name"),status:rs(s),conclusion:x(s,"conclusion"),log:Qo(s,"log",AC,t.full)}));return r.jobs=n,r}function Qo(e,t,r,n){let s=x(e,t);if(n||Buffer.byteLength(s)<=r)return s;let o=s.slice(0,r),i={preview:o,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(o),hint:"--full",handle:""}};return Object.defineProperty(i,"__rsp_original",{value:s,enumerable:!1}),i}function YC(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(tr(r)){if(tr(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 XC(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 Xg(e,t){return e.every(r=>r.state===t)?t:"returned"}function yu(e,t,r){return r?`${e}/${t}`:String(e)}function Gr(e,t,r){return t.query?nt(e,r):e}function rs(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function _u(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=ch(t.author):s==="labels"?e.labels=ah(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 ah(e){return Array.isArray(e)?e.map(t=>tr(t)?x(t,"name"):String(t)).filter(Boolean):[]}function ch(e){return tr(e)?x(e,"login"):""}function ts(e){return e.trim()?JSON.parse(e):null}function me(e){return Array.isArray(e)?e.filter(tr):[]}function B(e){return tr(e)?e:{}}function x(e,t){let r=e[t];return typeof r=="string"?r:""}function le(e,t){let r=e[t];return typeof r=="number"?r:0}function tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var TC,OC,bu,AC,PC,Xo,ku=h(()=>{"use strict";U();L();po();qg();Xt();Qr();Fe();TC={"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"]},OC={"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"]},bu=160,AC=160,PC={"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"]};Xo=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return $({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 xu={};M(xu,{renderTestContract:()=>uh,runTestWrapper:()=>r0});import{spawn as QC}from"node:child_process";async function r0(e,t){let r=Dt(e),n=await a0(r.argv);return await uh(e,n,t)}async function uh(e,t,r){let n=Dt(e),o=lh(n.argv)==="vitest"?c0(t.stdout):u0(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let f=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${m0(o.durationSeconds)}`,c=te(o.failures,n.query);if(r.level==="terse")return await n0(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,m=0;for(let f of c){let _=await l0(f.excerpt,n.argv.join(" "),r.store);u.push({suite:f.suite,name:f.name,excerpt:_.text}),l??=_.handle,m+=_.bytesElided}let d={exit_code:i,summary:n.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let p=n.query?nt(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(p)),stderr:Buffer.from(t.stderr),status:Eu(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:m>0?m:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function n0(e,t,r,n,s,o,i){let a=s0(r.failures),c={exit_code:n,summary:i?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=i?nt(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),m=Math.max(0,r.failures.length-a.length),d=a.some((w,S)=>w.excerpt!==r.failures[S].excerpt);if(m===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Eu(t.status),signal:t.signal,payload:u};let p={exit_code:n,summary:s};r.failures.length>0&&(p.failures=r.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let f=C(p),_=Buffer.byteLength(f),g=await o.store?.mint(Buffer.from(f),{command:e.join(" "),loss:{level:"terse",bytes_elided:_}});if(!g)throw new Error("terse test output requires an elision store");let b=`\u2026 elided ${m>0?`${m} failures`:"full detail"} (+${_}) \u2014 ${Le(g)}`;return{stdout:Buffer.from(`${l}
|
|
103
|
+
${b}`),stderr:Buffer.from(t.stderr),status:Eu(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:_,rowsElided:m,rawOutput:Buffer.from(f)}}function Eu(e){return e===0||e===null?0:1}function s0(e){let t=[],r=e0;for(let n of e.slice(0,t0)){let s=o0(n.excerpt,Math.min(ZC,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function o0(e,t){if(t<=0)return"";let r=e.split(`
|
|
104
104
|
`),n=r.length<=2?e:`${r[0]}
|
|
105
105
|
\u2026
|
|
106
|
-
${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function
|
|
107
|
-
`).filter(Boolean).map(c=>
|
|
108
|
-
`)}),o||=1,n||=1,s||=1),s||=r.length,o||=1,n||=Math.max(s,r.length),{failed:s,total:n,suites:o,durationSeconds:i,failures:r}}async function
|
|
109
|
-
\u2026 elided ${i} bytes (+${n.length}) \u2014 ${
|
|
110
|
-
`):""}function
|
|
111
|
-
`),status:1,signal:null}}return
|
|
112
|
-
`;if(!i&&Buffer.byteLength(c)<=
|
|
113
|
-
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function
|
|
114
|
-
`),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??
|
|
106
|
+
${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function lh(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 i0(e){if(lh(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(i=>i==="--reporter=json"||i==="--reporter"||i.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 a0(e){let t=i0(e),r=QC(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function c0(e){let t=dh(e);if(!vt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=Ct(t.numTotalTests),o=Ct(t.numFailedTests),i=p0(Ct(t.startTime),Ct(t.endTime));for(let a of r){if(!vt(a))continue;let c=ze(a.name)||ze(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)vt(l)&&l.status==="failed"&&n.push({suite:c,name:ze(l.fullName)||ze(l.title)||ze(l.name),excerpt:d0(l.failureMessages)||ze(l.failureMessage)})}return s||=r.reduce((a,c)=>!vt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>vt(c)?a+Ct(c.perfStats&&vt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function u0(e){let t=e.split(`
|
|
107
|
+
`).filter(Boolean).map(c=>dh(c)).filter(vt);if(t.length===0)return null;let r=[],n=0,s=0,o=0,i=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(o+=1,n+=Ct(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Ct(c.failed),i+=Ct(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:ze(c.name).split("::").slice(0,-1).join("::"),name:ze(c.name),excerpt:ze(c.stdout)});continue}if(c.reason==="compiler-message"&&vt(c.message)){let u=ze(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(`
|
|
108
|
+
`)}),o||=1,n||=1,s||=1),s||=r.length,o||=1,n||=Math.max(s,r.length),{failed:s,total:n,suites:o,durationSeconds:i,failures:r}}async function l0(e,t,r){let n=Buffer.from(e);if(n.length<=Su)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}}),o=n.subarray(0,Su).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
|
|
109
|
+
\u2026 elided ${i} bytes (+${n.length}) \u2014 ${Le(s)}`,handle:s,bytesElided:n.length}}function dh(e){try{return JSON.parse(e)}catch{return null}}function d0(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
|
|
110
|
+
`):""}function m0(e){return`${Number(e.toFixed(1))}s`}function p0(e,t){return e>0&&t>e?(t-e)/1e3:0}function Ct(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function ze(e){return typeof e=="string"?e:""}function vt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Su,ZC,e0,t0,vu=h(()=>{"use strict";U();L();Xt();Qr();Fe();Su=320,ZC=160,e0=Su,t0=3});var Ou={};M(Ou,{parseCatCommand:()=>Tu,renderCatContract:()=>R0,runCatWrapper:()=>_0});import{isUtf8 as f0}from"node:buffer";import{readFile as g0}from"node:fs/promises";import{extname as h0}from"node:path";async function _0(e,t){let r=Tu(e),n;try{n=await g0(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=Ee(e.join(" "),"",o);return{stdout:$({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
|
|
111
|
+
`),status:1,signal:null}}return yh(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await hh(e,r,n,t)}async function R0(e,t,r){if((t.status??0)!==0||t.signal){let i=Ee(e.join(" "),t.stdout,t.stderr);return{stdout:$(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=Tu(e),s=Buffer.from(t.stdout,"utf8");return yh(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await hh(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Tu(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),r="full",n,s=!1,o=[];for(let i=0;i<t.length;i++){let a=t[i];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){r=a.slice(2),n=gh(t[++i],Cu);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=gh(u,Cu);continue}o.push(a)}if(o.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:o[0],mode:r,...n?{limit:n}:{},...s?{inlineFull:s}:{}}}async function hh(e,t,r,n){let s=r.toString("utf8"),o=E0(s,t);if(t.inlineFull)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let i=n.level!=="lossless"||r.length>fh(n.heavyByteThreshold,mh)||o.truncated;if(!ph(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=ph(t.file)?k0(e,t.file,r,s,n.level,o):S0(e,t.file,r,s,o),c=`${C(a)}
|
|
112
|
+
`;if(!i&&Buffer.byteLength(c)<=fh(n.heavyByteThreshold,mh))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 ${Le(u)}
|
|
113
|
+
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function k0(e,t,r,n,s,o){let i=Zo(n),a=s==="terse"?b0:y0,c=Zo(o.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:i.length,symbols:x0(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function S0(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:Zo(n).length,content:Zo(s.text),truncated:s.truncated}}function E0(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
|
|
114
|
+
`),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??Cu,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
|
|
115
115
|
`)}${n&&i.length>0?`
|
|
116
|
-
`:""}`,truncated:i.length<s.length}}function
|
|
117
|
-
`);return t.at(-1)===""?t.slice(0,-1):t}function
|
|
118
|
-
`),s=
|
|
116
|
+
`:""}`,truncated:i.length<s.length}}function x0(e){let t=[];for(let r=0;r<e.length;r++){let s=e[r].trim(),o=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(o){t.push({kind:o[1],name:o[2],line:r+1,signature:s});continue}let i=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(i){t.push({kind:"function",name:i[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&&!v0(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function Zo(e){let t=e.split(`
|
|
117
|
+
`);return t.at(-1)===""?t.slice(0,-1):t}function yh(e){return e.includes(0)||!f0(e)}function ph(e){return w0.has(h0(e).toLowerCase())}function v0(e){return["for","if","switch","while"].includes(e)}function fh(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function gh(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var mh,Cu,y0,b0,w0,Au=h(()=>{"use strict";L();Xt();Fe();mh=8*1024,Cu=10,y0=8,b0=2,w0=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var xh={};M(xh,{REPO_STORE_PATH:()=>Lu,mergeRspBlock:()=>kh,provisionRspRepoStore:()=>$0});import{constants as C0}from"node:fs";import{access as T0,copyFile as O0,mkdir as wh,readFile as A0,rename as P0,writeFile as _h}from"node:fs/promises";import{dirname as I0,join as ns,resolve as L0}from"node:path";async function $0(e,t={}){let r=L0(e),n=ns(r,".red"),s=ns(n,"config.yaml"),o=ns(r,Lu);await wh(n,{recursive:!0}),await wh(I0(o),{recursive:!0});let i="";try{i=await A0(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=kh(i,{enabled:!0,ttlDays:t.ttlDays??Ce,ephemeralTtlHours:t.ephemeralTtlHours??Te,byteBudget:t.byteBudget??Oe,heavyGitByteThreshold:t.heavyGitByteThreshold??ct}),c=a!==i;c&&await _h(s,a,"utf8");let u=!await Iu(o),l=!1,m=!1;if(u){let p=ns(r,D0),f=ns(r,N0);if(await Iu(p))await P0(p,o),m=!0;else if(await Iu(f))await O0(f,o),l=!0;else{let{provisionElisionStore:_}=await Promise.resolve().then(()=>(lo(),dp)),g=process.env.REDDB_BIN;try{await _({uri:`file://${o}`,ttlDays:t.ttlDays??Ce,ephemeralTtlHours:t.ephemeralTtlHours??Te,byteBudget:t.byteBudget??Oe})}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=M0(a,Lu);return d!==a&&await _h(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:m}}function kh(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${ei(t.ttlDays,Ce)}`,` ephemeralTtlHours: ${ei(t.ephemeralTtlHours,Te)}`,` byteBudget: ${ei(t.byteBudget,Oe)}`,` heavyGitByteThreshold: ${ei(t.heavyGitByteThreshold,ct)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
118
|
+
`),s=Sh(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
|
|
119
119
|
`)}
|
|
120
|
-
`}let o=
|
|
120
|
+
`}let o=Du(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
|
|
121
121
|
`)}
|
|
122
|
-
`}function
|
|
123
|
-
`),n=
|
|
122
|
+
`}function Sh(e,t){for(let r=0;r<e.length;r++){let n=e[r];if($u(n)&&Nu(n)===0&&Eh(n)===t)return r}return-1}function Du(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if($u(e[s])&&Nu(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Nu(e){return(e.match(/^ */)?.[0]??"").length}function $u(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Eh(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function ei(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function M0(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
123
|
+
`),n=Sh(r,"plugins");if(n===-1)return e;let s=Du(r,n,0),o=Rh(r,"memory",n+1,s,2);if(o===-1)return e;let i=Du(r,o,2),a=[...r],c=Rh(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
|
|
124
124
|
`)}
|
|
125
|
-
`}function
|
|
126
|
-
`}function
|
|
125
|
+
`}function Rh(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if($u(i)&&Nu(i)===s&&Eh(i)===t)return o}return-1}async function Iu(e){try{return await T0(e,C0.F_OK),!0}catch{return!1}}var Lu,D0,N0,vh=h(()=>{"use strict";pe();Pe();Lu=Ca,D0=El,N0=".red/memory/graph.rdb"});var Ih={};M(Ih,{runRspMcpServer:()=>F0});import{createInterface as B0}from"node:readline";async function F0(){let e=Ae(process.cwd(),process.env),t=B0({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 j0(n,e);Oh({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Oh({jsonrpc:"2.0",id:typeof Ah(r)?.id>"u"?null:Ah(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function j0(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:Th(t)}]};if(!t.enabled)return{content:[{type:"text",text:Th(t)}],isError:!0};let n=K0(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:rr({tool:"rsp_stats",...await n.accountingStats(t.telemetryByteBudget)})}]};if(r?.name==="rsp_show"){let s=String(r.arguments?.handle??""),o=await n.get(s);return o?"status"in o?{content:[{type:"text",text:rr({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:o.status,expired_at:o.expired_at,help:[o.command]})}],isError:!0}:{content:[{type:"text",text:rr({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:rr(H0(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await G0(r.arguments,n)}]}}return{}}function rr(e){return`${W(e)}
|
|
126
|
+
`}function H0(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function G0(e,t){let r=U0(e?.payload);try{return await W0(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return Ph(r)}}async function W0(e,t,r){let n=J0(t?.level),s=await Uc(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return Ph(s.output);let o=No(e);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return rr({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(e),text:o});let i=Buffer.from(e),a=await r.mint(i,{command:"rsp mcp compress",loss:{level:n,bytes_elided:i.length}});return q0(o,i.length,a,n)}function U0(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function J0(e){return e==="terse"?"terse":"brief"}function q0(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=Ch(o.subarray(0,i)),c=Ch(o.subarray(Math.max(0,o.length-i)));return rr({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:V0(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function Ph(e){return e.endsWith(`
|
|
127
127
|
`)?e:`${e}
|
|
128
|
-
`}function
|
|
129
|
-
`)}function
|
|
130
|
-
`)}function
|
|
131
|
-
`)}function ri(e,t){if(t.length===0)return[];if(t.some(o=>o.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(o=>o.command.slice(1)).filter(o=>o.length===1).map(o=>o[0]).filter(ni),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ni)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(r.length>0){let o=r.map(i=>Oh(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of J0(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${V0(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Oh(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function J0(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 q0(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ni(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ni(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Oh(e){return e.replace(/[\\|)&;]/g,"\\$&")}function V0(e){return e.replace(/'/g,"'\\''")}function K0(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ph=h(()=>{"use strict";Zn()});function Du(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"&&z0(t.chosenOption)&&Y0(t.outcome)&&X0(t.cost)}function z0(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Y0(e){return e==="success"||e==="failure"||e==="escalated"}function X0(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 Ih=h(()=>{});import{createHash as Q0}from"node:crypto";function Uh(e,t){return new $u(e,t)}function Lh(e){let t=Number(e.red_entity_id??e.rid),r=Mu(e.properties??e.PROPERTIES),n=Jh(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),o=String(r.title??e.label??e.LABEL??s),i=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:o,content:i,tags:a,created_at:Number(r.created_at??c),updated_at:Number(r.updated_at??r.created_at??c),hash:String(r.hash??"")}}}function Dh(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=qh(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:Mu(e.properties??e.PROPERTIES)}}function tT(e){let t=Number(e.red_entity_id??e.rid),r=Mu(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Du(r)?null:{rid:t,event:r}}function Mu(e){return e==null?{}:typeof e=="string"?JSON.parse(e):si(e)?e:{}}function Jh(e){let t=e==="contact"?"person":e;if(Z0.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function qh(e){if(eT.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function rT(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Nh(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function nr(e){return si(e)?e:{}}function $h(e,t){return nr(e)[t]}function Mh(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Bh(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Fh(e){let t=nr(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function de(e){return typeof e=="string"&&e.length>0?e:void 0}function si(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Nu(e){return e!=null}function nT(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function sT(e){return Q0("sha256").update(JSON.stringify(e)).digest("hex")}function oT(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function jh(e){return`artifact-hash:${e}`}function Hh(e,t,r){return`connection:${e}:${t}:${r}`}function Gh(){return"model-tier-bandit:v1"}function iT(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Wh(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function Vh(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(i=>i.toLowerCase()),o=e.kind.toLowerCase();return{lexical:t.reduce((i,a)=>i+Wh(r,a)*3+Wh(n,a),0),tags:t.reduce((i,a)=>i+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((i,a)=>i+(o===a?3:o.includes(a)||a.includes(o)?1:0),0)}}function aT(e,t,r,n){let s=0;for(let o of r){let i=o.from_rid===e.rid?o.to_rid:o.to_rid===e.rid?o.from_rid:null;if(i==null)continue;let a=n.get(i);if(!a)continue;let c=Kh({...Vh(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return rr(s)}function Kh(e){return{...e,lexical:rr(e.lexical),tags:rr(e.tags),kind:rr(e.kind),connections:rr(e.connections),vector:rr(e.vector),total:rr(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function rr(e){return Math.round(e*1e3)/1e3}function cT(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(o=>r.indexOf(o)).filter(o=>o>=0).sort((o,i)=>o-i)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function uT(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,o)=>({ref:`B${o+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 lT(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Xe,Z0,eT,$u,zh=h(()=>{"use strict";Ih();Xe={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Z0=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),eT=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),$u=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(nr(r));if(t==="getArtifact")return await this.getArtifact($h(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=nr(r);return await this.search(Mh(n,"query"),Bh(n,"limit")??10,Fh(n.options))}if(t==="think"){let n=nr(r);return await this.think(Mh(n,"query"),Bh(n,"limit")??8,Fh(n.options))}if(t==="link")return await this.link(nr(r));if(t==="backlinks")return await this.backlinks($h(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(nr(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 ${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(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:lT(t.map(n=>n.kind))}}async capture(t){let r=de(t.title)||"Untitled artifact",n=de(t.content);if(!n)throw new Error("brain capture requires content");let s=Jh(de(t.kind)||"note"),o=nT(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=sT([s,r,n,o,de(t.sourcePath),de(t.sourceSession)]),c=await this.kv().get(jh(a));if(c!=null){let f=await this.getArtifact(Number(c));if(f)return f}let u=`${oT(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:o,source_agent:de(t.sourceAgent),source_runner:de(t.sourceRunner),source_session:de(t.sourceSession),source_path:de(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:si(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=Lh(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(jh(a),p.rid),await this.materializeTagConnections(p),p}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 ${Xe.artifacts}`)).rows.map(Lh).filter(Nu)}async search(t,r,n={}){let s=iT(t),o=new Set(n.excludeRids??[]),i=await this.listArtifacts(),a=await this.listConnections(),c=new Map(i.map(u=>[u.rid,u]));return i.filter(u=>!o.has(u.rid)).map(u=>{let l=Vh(u,s),m=Kh({...l,connections:aT(u,s,a,c),vector:0});return{artifact:u,score:m.total,score_breakdown:m,excerpt:cT(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 uT(t,s)}async link(t){let r=await this.getArtifact(Nh(t.from)),n=await this.getArtifact(Nh(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=qh(de(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(m=>m.rid===o);if(l)return l}let i={reason:de(t.reason),confidence:de(t.confidence)||"explicit",created_at:Date.now(),metadata:si(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,r.rid,n.rid,1,i)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Dh(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Hh(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 ${Xe.connections}`)).rows.map(Dh).filter(Nu)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=rT(de(t.interval)||"day"),s=de(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(!Du(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(tT).filter(Nu).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Gh());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Gh(),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(Hh(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Xe.kv)}}});var cy={};M(cy,{runResidentServer:()=>bT});import{randomUUID as Wr}from"node:crypto";import{execFileSync as dT,spawn as mT}from"node:child_process";import{existsSync as pT}from"node:fs";import{mkdir as ry,rename as fT,rm as Yh,writeFile as ny}from"node:fs/promises";import{createServer as gT}from"node:net";import{dirname as Hu,join as oi}from"node:path";import{fileURLToPath as hT,pathToFileURL as yT}from"node:url";async function bT(e){await ry(Hu(e.socketPath),{recursive:!0});let t=PT();AT();let r=e.telemetryDrainTimeoutMs??sy,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??Gs,a,c,u=!1,l=new Set,m=e.telemetryDrainIntervalMs??3e4,d=gT(S=>{l.add(S),S.once("close",()=>l.delete(S)),f(),BT(S,async O=>{f();let j=await FT(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),Re={id:O.id,ok:!0,value:j,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};ay(S,Re),O.op==="handover"&&setImmediate(()=>p())})});function p(){o=!0,u=!0,c=OT(c),d.close();for(let S of l)S.destroy()}function f(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},i),a.unref())}let g=["SIGINT","SIGTERM"].map(S=>{let O=()=>{ii(),d.close();for(let j of l)j.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(S,O),{signal:S,handler:O}});await new Promise((S,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),S()})}),(async()=>{let S=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(oe=>setTimeout(oe,O));let j=await Vt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),Re=Number(process.hrtime.bigint()-S)/1e6,$e=new ju(j,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??js,byteBudget:e.telemetryByteBudget??e.byteBudget??Hs});if(o){await j.close();return}if(await Bu($e,r),o){await j.close();return}n={kind:"ready",store:j,telemetry:$e,storeOpenCount:1,storeElapsedMs:Re},s=setInterval(()=>{let oe=n.kind==="ready"?n:void 0;oe&&Bu(oe.telemetry,r)},m),s.unref(),f()})().catch(S=>{n={kind:"failed",error:S instanceof Error?S:new Error(String(S))},f()}),e.pidPath&&await ny(e.pidPath,`${process.pid}
|
|
132
|
-
`,{encoding:"utf8",mode:384});let y=e.residentVersion??"0.0.0-dev",b=e.registryPath??
|
|
133
|
-
`,{encoding:"utf8",mode:384}),await
|
|
134
|
-
`)}}async function
|
|
128
|
+
`}function Ch(e){return e.toString("utf8").replace(/�$/g,"")}function V0(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 K0(e){return ea(process.cwd(),e)}function Th(e){let t=e.enabled?ft(process.cwd(),e.overhead):null;return rr({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",overhead_verdict:t?.verdict??"unknown",overhead_summary:t?.summary??"rsp is not enabled in this directory",overhead_disabled_families:t?.disabled_families.map(r=>r.family)??[],help:e.enabled?[]:["/red-setup"]})}function Oh(e){process.stdout.write(`${JSON.stringify(e)}
|
|
129
|
+
`)}function Ah(e){try{return JSON.parse(e)}catch{return null}}var Lh=h(()=>{"use strict";rt();Pe();U();Jn();jt()});var Nh={};M(Nh,{renderShellInit:()=>z0});function z0(e,t=Qn){if(e==="fish")return Y0(t);if(e==="bash"||e==="zsh")return X0(e,t);throw new Error(`unsupported shell: ${e}`)}function Y0(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(ri))].map(r=>` abbr --add --position command -- ${r} '${tT(`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(`
|
|
130
|
+
`)}function X0(e,t){let r=Z0(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ti("git",r.get("git")??[]),...ti("gh",r.get("gh")??[]),...ti("vitest",r.get("vitest")??[]),...ti("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(`
|
|
131
|
+
`)}function ti(e,t){if(t.length===0)return[];if(t.some(o=>o.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(o=>o.command.slice(1)).filter(o=>o.length===1).map(o=>o[0]).filter(ri),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ri)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(r.length>0){let o=r.map(i=>Dh(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of Q0(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${eT(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Dh(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Q0(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 Z0(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ri(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ri(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Dh(e){return e.replace(/[\\|)&;]/g,"\\$&")}function eT(e){return e.replace(/'/g,"'\\''")}function tT(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var $h=h(()=>{"use strict";Zn()});function Mu(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"&&rT(t.chosenOption)&&nT(t.outcome)&&sT(t.cost)}function rT(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function nT(e){return e==="success"||e==="failure"||e==="escalated"}function sT(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 Mh=h(()=>{});import{createHash as oT}from"node:crypto";function zh(e,t){return new Fu(e,t)}function Bh(e){let t=Number(e.red_entity_id??e.rid),r=ju(e.properties??e.PROPERTIES),n=Yh(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),o=String(r.title??e.label??e.LABEL??s),i=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:o,content:i,tags:a,created_at:Number(r.created_at??c),updated_at:Number(r.updated_at??r.created_at??c),hash:String(r.hash??"")}}}function Fh(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=Xh(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:ju(e.properties??e.PROPERTIES)}}function cT(e){let t=Number(e.red_entity_id??e.rid),r=ju(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Mu(r)?null:{rid:t,event:r}}function ju(e){return e==null?{}:typeof e=="string"?JSON.parse(e):ni(e)?e:{}}function Yh(e){let t=e==="contact"?"person":e;if(iT.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Xh(e){if(aT.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function uT(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function jh(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function sr(e){return ni(e)?e:{}}function Hh(e,t){return sr(e)[t]}function Gh(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Wh(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Uh(e){let t=sr(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function de(e){return typeof e=="string"&&e.length>0?e:void 0}function ni(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Bu(e){return e!=null}function lT(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function dT(e){return oT("sha256").update(JSON.stringify(e)).digest("hex")}function mT(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Jh(e){return`artifact-hash:${e}`}function qh(e,t,r){return`connection:${e}:${t}:${r}`}function Vh(){return"model-tier-bandit:v1"}function pT(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Kh(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function Qh(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(i=>i.toLowerCase()),o=e.kind.toLowerCase();return{lexical:t.reduce((i,a)=>i+Kh(r,a)*3+Kh(n,a),0),tags:t.reduce((i,a)=>i+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((i,a)=>i+(o===a?3:o.includes(a)||a.includes(o)?1:0),0)}}function fT(e,t,r,n){let s=0;for(let o of r){let i=o.from_rid===e.rid?o.to_rid:o.to_rid===e.rid?o.from_rid:null;if(i==null)continue;let a=n.get(i);if(!a)continue;let c=Zh({...Qh(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return nr(s)}function Zh(e){return{...e,lexical:nr(e.lexical),tags:nr(e.tags),kind:nr(e.kind),connections:nr(e.connections),vector:nr(e.vector),total:nr(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function nr(e){return Math.round(e*1e3)/1e3}function gT(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(o=>r.indexOf(o)).filter(o=>o>=0).sort((o,i)=>o-i)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function hT(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,o)=>({ref:`B${o+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 yT(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Ye,iT,aT,Fu,ey=h(()=>{"use strict";Mh();Ye={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},iT=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),aT=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Fu=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(sr(r));if(t==="getArtifact")return await this.getArtifact(Hh(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=sr(r);return await this.search(Gh(n,"query"),Wh(n,"limit")??10,Uh(n.options))}if(t==="think"){let n=sr(r);return await this.think(Gh(n,"query"),Wh(n,"limit")??8,Uh(n.options))}if(t==="link")return await this.link(sr(r));if(t==="backlinks")return await this.backlinks(Hh(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(sr(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 ${Ye.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ye.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ye.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:yT(t.map(n=>n.kind))}}async capture(t){let r=de(t.title)||"Untitled artifact",n=de(t.content);if(!n)throw new Error("brain capture requires content");let s=Yh(de(t.kind)||"note"),o=lT(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=dT([s,r,n,o,de(t.sourcePath),de(t.sourceSession)]),c=await this.kv().get(Jh(a));if(c!=null){let f=await this.getArtifact(Number(c));if(f)return f}let u=`${mT(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:o,source_agent:de(t.sourceAgent),source_runner:de(t.sourceRunner),source_session:de(t.sourceSession),source_path:de(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:ni(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${Ye.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=Bh(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Jh(a),p.rid),await this.materializeTagConnections(p),p}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 ${Ye.artifacts}`)).rows.map(Bh).filter(Bu)}async search(t,r,n={}){let s=pT(t),o=new Set(n.excludeRids??[]),i=await this.listArtifacts(),a=await this.listConnections(),c=new Map(i.map(u=>[u.rid,u]));return i.filter(u=>!o.has(u.rid)).map(u=>{let l=Qh(u,s),m=Zh({...l,connections:fT(u,s,a,c),vector:0});return{artifact:u,score:m.total,score_breakdown:m,excerpt:gT(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 hT(t,s)}async link(t){let r=await this.getArtifact(jh(t.from)),n=await this.getArtifact(jh(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=Xh(de(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(m=>m.rid===o);if(l)return l}let i={reason:de(t.reason),confidence:de(t.confidence)||"explicit",created_at:Date.now(),metadata:ni(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${Ye.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,r.rid,n.rid,1,i)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Fh(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(qh(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 ${Ye.connections}`)).rows.map(Fh).filter(Bu)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=uT(de(t.interval)||"day"),s=de(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(!Mu(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Ye.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 ${Ye.outcomeEvents}`)).rows.map(cT).filter(Bu).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Vh());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Vh(),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(qh(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Ye.kv)}}});var py={};M(py,{runResidentServer:()=>xT});import{randomUUID as Wr}from"node:crypto";import{execFileSync as bT,spawn as wT}from"node:child_process";import{existsSync as _T}from"node:fs";import{mkdir as ay,rename as RT,rm as ty,writeFile as cy}from"node:fs/promises";import{createServer as kT}from"node:net";import{dirname as Uu,join as si}from"node:path";import{fileURLToPath as ST,pathToFileURL as ET}from"node:url";async function xT(e){await ay(Uu(e.socketPath),{recursive:!0});let t=BT();MT();let r=e.telemetryDrainTimeoutMs??uy,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??Hs,a,c,u=!1,l=new Set,m=e.telemetryDrainIntervalMs??3e4,d=kT(S=>{l.add(S),S.once("close",()=>l.delete(S)),f(),JT(S,async O=>{f();let j=await qT(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),_e={id:O.id,ok:!0,value:j,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};my(S,_e),O.op==="handover"&&setImmediate(()=>p())})});function p(){o=!0,u=!0,c=$T(c),d.close();for(let S of l)S.destroy()}function f(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},i),a.unref())}let g=["SIGINT","SIGTERM"].map(S=>{let O=()=>{oi(),d.close();for(let j of l)j.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(S,O),{signal:S,handler:O}});await new Promise((S,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),S()})}),(async()=>{let S=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(oe=>setTimeout(oe,O));let j=await Kt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),_e=Number(process.hrtime.bigint()-S)/1e6,Ne=new Wu(j,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Fs,byteBudget:e.telemetryByteBudget??e.byteBudget??js});if(o){await j.close();return}if(await Hu(Ne,r),o){await j.close();return}n={kind:"ready",store:j,telemetry:Ne,storeOpenCount:1,storeElapsedMs:_e},s=setInterval(()=>{let oe=n.kind==="ready"?n:void 0;oe&&Hu(oe.telemetry,r)},m),s.unref(),f()})().catch(S=>{n={kind:"failed",error:S instanceof Error?S:new Error(String(S))},f()}),e.pidPath&&await cy(e.pidPath,`${process.pid}
|
|
132
|
+
`,{encoding:"utf8",mode:384});let y=e.residentVersion??"0.0.0-dev",b=e.registryPath??si(G(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await Rs(b,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:y})}catch{}await new Promise(S=>d.once("close",S)),a&&clearTimeout(a),s&&clearInterval(s),await ty(e.socketPath,{force:!0});let w=n;w.kind==="ready"&&(await Hu(w.telemetry,r,u),await w.store.close()),c&&clearTimeout(c);for(let{signal:S,handler:O}of g)process.off(S,O);t?.kill("SIGTERM"),oi(),e.pidPath&&await ty(e.pidPath,{force:!0}),await ks(b)}async function PT(e,t,r=new Date){let n=await mo(e,1,r),s=r.toISOString().slice(0,10),o=n.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,i=n.savings.tokens_saved>0?o/n.savings.tokens_saved*n.savings.dollars_saved_estimate_usd:0,a=si(G(t),OT),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:o,dollars_saved_today_usd:Math.round(i*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 ay(Uu(a),{recursive:!0}),await cy(c,`${W(u)}
|
|
133
|
+
`,{encoding:"utf8",mode:384}),await RT(c,a)}async function Hu(e,t=uy,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await dy(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
|
|
134
|
+
`)}}async function IT(e){let t=[];for(let r of AT){let n=await LT(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await DT(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${ly(r)}`))}return t}async function LT(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 o=(await e.list()).find(i=>i.name===t);if(o&&o.model!=="kv")return{ok:!1,previousModel:o.model};throw r}}async function DT(e,t,r){let n=NT(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${ly(t)}`)}function NT(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 ly(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function $T(e){return e&&clearTimeout(e),setTimeout(()=>{oi(),process.exit(0)},TT)}function MT(){ry||(ry=!0,process.on("exit",()=>oi()))}function BT(){if(process.platform==="win32")return;let t=wT(process.execPath,["-e",`
|
|
135
135
|
const { execFileSync } = require("node:child_process");
|
|
136
136
|
const parentPid = Number(process.argv[1]);
|
|
137
137
|
const known = new Set();
|
|
@@ -172,23 +172,23 @@ const timer = setInterval(() => {
|
|
|
172
172
|
clearInterval(timer);
|
|
173
173
|
process.exit(0);
|
|
174
174
|
}, 500);
|
|
175
|
-
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function
|
|
176
|
-
`);if(s<0)return;let o=r.slice(0,s);e.pause(),(async()=>{let i;try{i=JSON.parse(o),await t(i)}catch(a){let u={id:i?.id??Wr(),ok:!1,error:a instanceof Error?a.message:String(a)};
|
|
177
|
-
`)}catch{}}async function
|
|
178
|
-
`}function
|
|
179
|
-
`}function
|
|
180
|
-
`}function
|
|
181
|
-
`)}function
|
|
182
|
-
`}async function
|
|
183
|
-
`;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:n,stderrBytes:s,status:127,signal:null})}),r.on("close",(i,a)=>o({stdoutBytes:n,stderrBytes:s,status:i,signal:a}))})}function
|
|
184
|
-
`);let s=await
|
|
185
|
-
`),await
|
|
186
|
-
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function
|
|
187
|
-
`),2}let r
|
|
188
|
-
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function
|
|
189
|
-
`}async function
|
|
175
|
+
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function oi(){for(let e of FT())try{process.kill(e,"SIGTERM")}catch{}}function FT(){if(process.platform==="win32")return[];let e="";try{e=bT("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]),o=Number(n[2]),i=n[3]??"";o===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(i)&&t.push(s)}return t}async function jT(e){if(e.collection!==ge)return e;let t=await ny(e.raw_text,oy(e.raw_bytes)),r=await ny(e.emitted_text,oy(e.emitted_bytes)),{raw_text:n,emitted_text:s,...o}=e;return{...o,tokens_raw:t.tokens,tokens_emitted:r.tokens,estimated:t.estimated||r.estimated}}async function ny(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=vT)try{return await dy((async()=>({tokens:(await HT())("cl100k_base").encode(e).length,estimated:!1}))(),CT,"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 HT(){return sy??=import(ET(GT()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await sy}function GT(){let e=Uu(ST(import.meta.url)),r=[si(e,"..","node_modules","js-tiktoken","dist","index.js"),si(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>_T(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function oy(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function ee(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Gu(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function dy(e,t,r){let n;try{return await Promise.race([e,new Promise((s,o)=>{n=setTimeout(()=>o(new Error(r)),t),n.unref()})])}finally{n&&clearTimeout(n)}}function WT(e){try{return JSON.parse(e)}catch{return e}}function UT(e){return iy(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>iy(t)&&(t.collection===ce||t.collection===Q||t.collection===ge||t.collection===Je)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function iy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function JT(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
|
|
176
|
+
`);if(s<0)return;let o=r.slice(0,s);e.pause(),(async()=>{let i;try{i=JSON.parse(o),await t(i)}catch(a){let u={id:i?.id??Wr(),ok:!1,error:a instanceof Error?a.message:String(a)};my(e,u)}finally{e.end()}})()})}function my(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
|
|
177
|
+
`)}catch{}}async function qT(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==="recovery-handles")return await s.recoveryHandles(t.limit);if(t.op==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await bc(o,t.byteBudget)}if(t.op==="telemetry-stats"){let o=s.redDb();if(!o)throw new Error("rsp telemetry stats require the shared RedDB store");return await mo(o,t.sinceDays)}if(t.op==="telemetry-gains"){let o=s.redDb();if(!o)throw new Error("rsp telemetry gains require the shared RedDB store");return await wc(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return KT(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await VT(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function VT(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await zh(s,t).request(r,n)}function KT(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var vT,CT,uy,TT,OT,AT,Wu,ry,sy,fy=h(()=>{"use strict";pe();Ss();rt();lo();ey();Ie();Pe();vT=256*1024,CT=500,uy=2e3,TT=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),OT="rsp-status-summary.json",AT=[ce,Q,ge,Je,bn],Wu=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 IT(t);r.unshift(...this.pendingHeals),this.pendingHeals=[];let n=await this.readIndex(t),s=n.records.length,o=[...n.records];for(let a of r)o.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 Ba(this.opts.rootDir,async a=>{let c=Cr(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return o.push(u),!0}try{let u=await this.writeEvent(t,c);o.push(u);let l=await this.writeAccountingMirror(t,c);return l&&o.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:ee(c.command)||"unknown",source_id:ee(c.id),source_collection:ee(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return o.push(l),!0}});let i=o.length>s;await this.prune(t,{version:1,records:o},i),await PT(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof r.id=="string"&&r.id.trim()!==""?r.id:Wr(),a={...await jT(r),id:i,created_at:s,expires_at:o};return await t.kv(r.collection).put(i,a),{collection:r.collection,key:i,created_at:s,expires_at:o,bytes:r.collection===ce?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===ce||r.accounting_recorded===!0?null:r.collection===ge?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||Wr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:Gu(ee(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===Je?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||Wr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:Gu(ee(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:ee(r.reason)||"unknown",wrapper_family:ee(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:ee(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Je,id:Wr(),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:ce,id:`mirror:${Wr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:Gu(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(bn).get("index:v1"),n=typeof r=="string"?WT(r):r;return UT(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(bn).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),o=[];for(let a of r.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):o.push(a);let i=o.reduce((a,c)=>a+c.bytes,0);for(o.sort((a,c)=>a.created_at.localeCompare(c.created_at));i>this.opts.byteBudget&&o.length>0;){let a=o.shift();i-=a.bytes,await t.kv(a.collection).delete(a.key)}(n||o.length<r.records.length)&&await this.writeIndex(t,{version:1,records:o})}};ry=!1});Fe();function xe(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function q(e,t){let r=xe(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function gl(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function hl(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 Ei(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 Ei=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return is("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function lr(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function yl(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 o=e[++n]??"",i=o.indexOf("=");i<=0||(r[o.slice(0,i)]=o.slice(i+1))}return{path:t,params:r}}function as(e,t){let r=xe(e,"--since")??e.find(o=>o.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 bl(e){return e.includes("--full")}xi();Fe();import{existsSync as zT}from"node:fs";import{fileURLToPath as YT}from"node:url";rt();Qr();U();Ge();import{existsSync as aE}from"node:fs";import{fileURLToPath as cE}from"node:url";rt();Zi();U();import{existsSync as gw}from"node:fs";import{fileURLToPath as hw}from"node:url";async function fr(e,t){let r={stats:yw(e.telemetryByteBudget),telemetry:sa(t)};if(!e.storeUri.startsWith("file://"))return r;let n=hw(e.storeUri);if(!gw(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(jt(),cn)),o=s(process.cwd(),e);try{return n.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:sa(t)}}catch{return r}finally{await o.close()}}function oa(e,t=sa(30),r=!1,n=ld()){return`${W(ia(e,t,r,n))}
|
|
178
|
+
`}function ud(e,t){return`${W({...e,overhead:dd(t)})}
|
|
179
|
+
`}function ld(){return{schema_version:"red.rsp.overhead.v1",verdict:"green",summary:"every wrapper family is inside its overhead ceiling",ceiling:ve,breaching_families:[],disabled_families:[],families:[]}}function dd(e){return{schema_version:e.schema_version,verdict:e.verdict,summary:e.summary,ceiling:e.ceiling,breaching_families:e.breaching_families,disabled_families:e.disabled_families,families:e.families}}function ia(e,t,r,n=ld()){let s=t.savings.top_commands.slice(0,r?10:3),o=r?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??Es(),a=t.health.recent_failures.slice(0,r?20:5),c=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:bw(t.savings),dollars_saved_estimate_usd_display:ww(t.savings),daily_tokens_saved:o,daily_tokens_saved_elided:r?0:Math.max(0,t.savings.daily_tokens_saved.length-o.length),top_commands:s,top_commands_elided:r?0:Math.max(0,t.savings.top_commands.length-s.length)},overhead:dd(n),health:{overhead_verdict:n.verdict,overhead_summary:n.summary,...t.health,degradation_rate_display:na(t.health.degradation_rate),show_hit_rate_display:na(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:r?0:Math.max(0,t.health.recent_failures.length-a.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:na(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:r?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:r?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:r?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:ra(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:ra(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:ra(t.latency.store_elapsed_ms_avg)}}}function md(e){return`${W(e)}
|
|
180
|
+
`}function sa(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:[],by_command_family:[]}}}function yw(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Es()}}function Es(){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 aa(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
|
|
181
|
+
`)}function bw(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 ww(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?an(e.dollars_saved_estimate_usd):`${an(e.dollars_saved_low_usd)}-${an(e.dollars_saved_high_usd)} (estimate_midpoint: ${an(e.dollars_saved_estimate_usd)})`}function ra(e){return e==null?"none":String(e)}function na(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function df(e){let{stats:t,telemetry:r}=await fr(e,30),[n,s]=await Promise.all([uE(e),Promise.resolve().then(()=>(Mc(),$c)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s,overhead:ft(He(process.cwd()).rootDir,e.overhead)}}function mf(e){let t=ia(e.stats,e.telemetry,!1,e.overhead),r=Oi({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??Es()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},lE(e));return`${W(r)}
|
|
182
|
+
`}async function uE(e){if(!e.storeUri.startsWith("file://"))return[];let t=cE(e.storeUri);if(!aE(t))return[];let{residentElisionStore:r}=await Promise.resolve().then(()=>(jt(),cn)),n=r(process.cwd(),e);try{return await n.recoveryHandles(5)}catch{return[]}finally{await n.close()}}function lE(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"]}rt();U();Fe();import{existsSync as Iv}from"node:fs";import{fileURLToPath as Lv}from"node:url";Ie();import{spawn as $o}from"node:child_process";async function eg(e,t,r){let n=process.hrtime.bigint(),s=await tg(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return Kx(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function tg(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let r;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>(Co(),vo)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(zn(),Kn)).then(i=>i.parseExecCommandLine(e));r=$o(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=$o(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let n=0,s=0;return r.stdout?.on("data",o=>{n+=o.length,process.stdout.write(o)}),r.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{r.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
|
|
183
|
+
`;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:n,stderrBytes:s,status:127,signal:null})}),r.on("close",(i,a)=>o({stdoutBytes:n,stderrBytes:s,status:i,signal:a}))})}function rg(e){return e>0&&Math.random()<e}async function Xn(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
|
|
184
|
+
`);let s=await ig(t);if(n){let o=zx(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ie(),Bn));Bo(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Mo(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead})),Bo(i(n,{collection:c,ts:new Date().toISOString(),command:Mo(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function ng(e,t,r){let n=await tg(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Ie(),Bn)),a={ts:new Date().toISOString(),command:Mo(e),reason:"overhead-ceiling-self-disabled",wrapper_family:r.family,wrapper_exit_code:n.status??0,stderr_head:r.disabled_reason??r.reasons.join(",")};return Bo(s(t,{collection:o,event_type:"invocation",command_class:e[0]??"unknown",loss:"lossless",raw_bytes:n.stdoutBytes+n.stderrBytes,emitted_bytes:n.stdoutBytes+n.stderrBytes,degradation_reason:a.reason,...a})),Bo(s(t,{collection:i,accounting_recorded:!0,...a})),n.signal?(process.kill(process.pid,n.signal),128):n.status??0}async function sg(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Fo()}, passing through
|
|
185
|
+
`),await ig(e)}function Fo(){return"rsp is not enabled in this directory; run /red-setup"}function og(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function qe(e){return Mo(e.positional)}function Mo(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 Yn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Kx(e,t,r,n,s){let o=r.stdoutBytes+r.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:qe(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};ht(e,{collection:"rsp_accounting_events_v1",...i}),ht(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function zx(e,t,r){let n=t[0]??"unknown",s=Yx(r)||e;return{reason:Zf(r)==="ENOENT"||Zf(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:Qx(r)??1,stderrHead:Xx(s,240)}}function Yx(e){return e instanceof Error?Yn(e.message):Yn(String(e??""))}function Xx(e,t){let r=Yn(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Zf(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function Qx(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 Bo(e){e.catch(()=>{})}async function ig(e){if(e[0]==="exec"||e[0]==="proxy")return await Zx(e);let t=e[0];if(!t)return 2;let r=$o(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)}
|
|
186
|
+
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function Zx(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Co(),vo));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(zn(),Kn));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
|
|
187
|
+
`),2}let r=$o(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
188
|
+
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function Sg(e,t,r){let n=[],s=!e.enabled;if(n.push(s?z("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):z("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(z("hook_wiring","skipped because rsp is disabled"),z("proxy_mode","skipped because rsp is disabled"),z("resident_liveness","skipped because rsp is disabled"),z("store_provisioning","skipped because rsp is disabled"),z("recent_degradation_rate","skipped because rsp is disabled"),z("overhead_budget","skipped because rsp is disabled")),kg("disabled",n,r);n.push(await Dv(e)),n.push(e.proxyEnabled?z("proxy_mode","proxy routing enabled for pre-exec rewrites"):Zt("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(Ge(),Ft));if(n.push(Nv(await o(t))),n.push($v(e)),xg(e)){let{telemetry:i}=await fr(e,r);n.push(Mv(i,r))}else n.push(z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return n.push(Bv(ft(process.cwd(),e.overhead))),kg(n.some(i=>!i.pass)?"fail":"pass",n,r)}function Eg(e){let{exitCode:t,...r}=e;return`${W({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
|
|
189
|
+
`}async function Dv(e){try{if(e.proxyEnabled)return z("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(Zn(),Jo)),r=t("git status");return r.kind==="rewrite"?z("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):Zt("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Zt("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?Yn(t.message):"unknown error"}`,"rsp setup")}}function Nv(e){return e.state==="registered-alive-socket-healthy"?z("resident_liveness","resident registry points at a healthy socket"):Zt("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function $v(e){return e.storeUri.startsWith("file://")?xg(e)?z("store_provisioning","rsp store exists for this directory"):Zt("store_provisioning","rsp store is not provisioned","rsp setup"):z("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function Mv(e,t){let r=e.health.by_reason[0];if(e.health.degradations===0)return z("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",o=r?.count??n;return Zt("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,Fv(s,t))}function Bv(e){return e.verdict==="green"?z("overhead_budget",e.summary):Zt("overhead_budget",e.summary,"rsp status")}function Fv(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 xg(e){if(!e.storeUri.startsWith("file://"))return!0;try{return Iv(Lv(e.storeUri))}catch{return!1}}function z(e,t){return{name:e,pass:!0,finding:t}}function Zt(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Si({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function kg(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)}}nu();function Og(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${Gv(t).join(`
|
|
190
190
|
`)}
|
|
191
|
-
`}function Nv(e){switch(e){case"stats":return F("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 F("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 F("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 F("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 F("rsp gh <pr|issue|run> <list|view> [options] | <issues|prs|edit-labels|link-sub-issues> ...",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail","--json <fields> select fields for batched issues/prs","--repo <slug> owner/repo override for batched operations"],["rsp gh issues 42 43 --json state,title,labels,body","rsp gh prs 12 13 --json state,mergeable,statusCheckRollup","rsp gh edit-labels --add ready-for-agent --remove blocked:crashed 42 43","rsp gh link-sub-issues 100 101 102"]);case"vitest":return F("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 F("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 F("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 F('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 F("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 F("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return F("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return F("rsp sweep",["No flags. Removes stale resident registry entries, reclaims orphan state temps,","re-bounds the gh ETag cache, and prints TOON status."],["rsp sweep"]);case"setup":return F("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return F("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return F("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return F("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 F("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 F("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 F("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 F(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function F(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}pe();U();Le();import{spawn as $v}from"node:child_process";import{createHash as Mv}from"node:crypto";import{existsSync as Bv,readFileSync as Fv,statSync as jv}from"node:fs";import{tmpdir as Hv}from"node:os";import{dirname as Gv,join as Et}from"node:path";async function se(e,t,r,n,s=process.cwd(),o,i=o?.overhead??Ce){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let a=Number(process.hrtime.bigint()-r)/1e6;n&&o&&Uv(s,o);let c=Wv(e,t,a);return en(s,c,i),n?Zt(Kv(s,e,t,c,i,n.lastResponseMetrics())):zv(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Wv(e,t,r){let n=rn(),s=t.stdout.length+t.stderr.length,o=(t.rawOutput?.length??t.stdout.length)+t.stderr.length;return{family:e.command??"unknown",wrapperMs:r,childMs:n.childMs,selfStateBytesRead:n.selfStateBytesRead,bytesSaved:Math.max(0,o-s)}}function Zt(e){e.catch(()=>{})}async function zo(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Le(),Bn));await s(e,{collection:o,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 Uv(e,t){try{let r=ut(e),n=jv(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!Vv(r,Date.now()-s))return;let o=Jv(e),i=qv(o),a=Et(i,"rsp.sock"),c=Et(i,"rsp.pid"),u=Et(G(o),"rsp-resident.pid.json"),l=Et(o,".red","tmp","rsp","wake.lock");$v(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:o,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function Jv(e){let t=e;for(;;){if(Bv(Et(t,".git")))return t;let r=Gv(t);if(r===t)return e;t=r}}function qv(e){let t=Mv("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=Et(r,"red-skills",t);if(Et(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return Et(Hv(),`red-skills-${n}`,t)}function Vv(e,t){try{let r=Fv(e,"utf8");tn(Buffer.byteLength(r));for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),o=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof o=="string"){let i=Date.parse(o);if(Number.isFinite(i)&&i<=t)return!0}}catch{}}catch{}return!1}async function Kv(e,t,r,n,s,o){let i=Buffer.concat([r.stdout,r.stderr]),a=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),c=fs(n,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:m}=await Promise.resolve().then(()=>(Le(),Bn));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Ve(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs}),await u(e,{collection:m,ts:new Date().toISOString(),command:Ve(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,raw_text:a.toString("utf8"),emitted_text:i.toString("utf8"),...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Ve(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:a.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 u(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:Ve(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function zv(e,t,r,n,s){try{let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),a=fs(n,s);yt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Ve(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a}),yt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Ve(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a,accounting_recorded:!0})}catch{}}var Ot=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}},Tu=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function ph(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Tu,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(eu(),Sg));if(i(e.positional))return await se(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Yt(),Fc)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await se(e,u,o,s,r,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(wu(),bu)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(Su(),ku)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(Cu(),vu)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s,r,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(zn(),Kn)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s)}}catch(i){return ur(i)?(process.stdout.write(i.render()),2):await Xn("wrapper failed",e.positional,i,r)}finally{await s.close()}return await Xn("wrapper failed",e.positional,n,r)}async function ly(e=process.argv.slice(2)){let t=cs("rsp");if(ml(e))return process.stdout.write(Eg(e)),0;let r=pl(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(Zn(),qo));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(Zn(),qo));return await g()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Jn(),Wc));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Jn(),Wc));return await g()}if(r.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(Rh(),_h)),y=await g(process.cwd());return process.stdout.write(sa(y)),0}if(r.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(Th(),Ch));return await g(),0}if(r.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Dc(),Lc));return await g(r.positional)}if(r.command==="shell-init"){let g=r.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write($({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:y}=await Promise.resolve().then(()=>(Ph(),Ah));return process.stdout.write(y(g)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Ie(),Qd)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(We(),Bt)),y=g(process.cwd()),b=await bg(s,y,as(r.positional,1));return process.stdout.write(wg(b)),b.exitCode}let o=eg(r.command);if(!s.enabled)return o?await Zf(r.positional):(process.stdout.write(`${jo()}
|
|
192
|
-
`),0);if(r.command==="git"&&
|
|
193
|
-
`),0)}if(r.command==="warm-resident"){let g=i(process.cwd()),y=
|
|
194
|
-
`),b.status}if(!r.command){let g=await
|
|
191
|
+
`}function Gv(e){switch(e){case"stats":return F("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 F("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 F("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 F("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 F("rsp gh <pr|issue|run> <list|view> [options] | <issues|prs|edit-labels|link-sub-issues> ...",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail","--json <fields> select fields for batched issues/prs","--repo <slug> owner/repo override for batched operations"],["rsp gh issues 42 43 --json state,title,labels,body","rsp gh prs 12 13 --json state,mergeable,statusCheckRollup","rsp gh edit-labels --add ready-for-agent --remove blocked:crashed 42 43","rsp gh link-sub-issues 100 101 102"]);case"vitest":return F("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 F("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 F("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 F('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 F("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 F("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return F("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return F("rsp sweep",["No flags. Removes stale resident registry entries, reclaims orphan state temps,","re-bounds the gh ETag cache, and prints TOON status."],["rsp sweep"]);case"setup":return F("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return F("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return F("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return F("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 F("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 F("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 F("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 F(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function F(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}pe();U();Ie();import{spawn as Wv}from"node:child_process";import{createHash as Uv}from"node:crypto";import{existsSync as Jv,readFileSync as qv,statSync as Vv}from"node:fs";import{tmpdir as Kv}from"node:os";import{dirname as zv,join as St}from"node:path";async function se(e,t,r,n,s=process.cwd(),o,i=o?.overhead??ve){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let a=Number(process.hrtime.bigint()-r)/1e6;n&&o&&Xv(s,o);let c=Yv(e,t,a);return en(s,c,i),n?er(tC(s,e,t,c,i,n.lastResponseMetrics())):rC(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Yv(e,t,r){let n=rn(),s=t.stdout.length+t.stderr.length,o=(t.rawOutput?.length??t.stdout.length)+t.stderr.length;return{family:e.command??"unknown",wrapperMs:r,childMs:n.childMs,selfStateBytesRead:n.selfStateBytesRead,bytesSaved:Math.max(0,o-s)}}function er(e){e.catch(()=>{})}async function Ko(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ie(),Bn));await s(e,{collection:o,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 Xv(e,t){try{let r=ut(e),n=Vv(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!eC(r,Date.now()-s))return;let o=Qv(e),i=Zv(o),a=St(i,"rsp.sock"),c=St(i,"rsp.pid"),u=St(G(o),"rsp-resident.pid.json"),l=St(o,".red","tmp","rsp","wake.lock");Wv(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:o,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function Qv(e){let t=e;for(;;){if(Jv(St(t,".git")))return t;let r=zv(t);if(r===t)return e;t=r}}function Zv(e){let t=Uv("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=St(r,"red-skills",t);if(St(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return St(Kv(),`red-skills-${n}`,t)}function eC(e,t){try{let r=qv(e,"utf8");tn(Buffer.byteLength(r));for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),o=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof o=="string"){let i=Date.parse(o);if(Number.isFinite(i)&&i<=t)return!0}}catch{}}catch{}return!1}async function tC(e,t,r,n,s,o){let i=Buffer.concat([r.stdout,r.stderr]),a=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),c=fs(n,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:m}=await Promise.resolve().then(()=>(Ie(),Bn));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:qe(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs}),await u(e,{collection:m,ts:new Date().toISOString(),command:qe(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,raw_text:a.toString("utf8"),emitted_text:i.toString("utf8"),...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:qe(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:a.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 u(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:qe(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function rC(e,t,r,n,s){try{let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),a=fs(n,s);ht(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:qe(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a}),ht(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:qe(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a,accounting_recorded:!0})}catch{}}var Tt=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}},Pu=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function bh(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Pu,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(nu(),Tg));if(i(e.positional))return await se(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Xt(),Gc)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await se(e,u,o,s,r,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(ku(),Ru)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(vu(),xu)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(Au(),Ou)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s,r,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(zn(),Kn)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s)}}catch(i){return lr(i)?(process.stdout.write(i.render()),2):await Xn("wrapper failed",e.positional,i,r)}finally{await s.close()}return await Xn("wrapper failed",e.positional,n,r)}async function gy(e=process.argv.slice(2)){let t=cs("rsp");if(gl(e))return process.stdout.write(Og(e)),0;let r=hl(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(Zn(),Jo));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(Zn(),Jo));return await g()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Jn(),qc));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Jn(),qc));return await g()}if(r.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(vh(),xh)),y=await g(process.cwd());return process.stdout.write(aa(y)),0}if(r.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(Lh(),Ih));return await g(),0}if(r.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Mc(),$c));return await g(r.positional)}if(r.command==="shell-init"){let g=r.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write($({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:y}=await Promise.resolve().then(()=>($h(),Nh));return process.stdout.write(y(g)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Pe(),nm)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(Ge(),Ft)),y=g(process.cwd()),b=await Sg(s,y,as(r.positional,1));return process.stdout.write(Eg(b)),b.exitCode}let o=og(r.command);if(!s.enabled)return o?await sg(r.positional):(process.stdout.write(`${Fo()}
|
|
192
|
+
`),0);if(r.command==="git"&&qo(r.positional)){let g=process.hrtime.bigint();return await se(r,await Vo(),g,void 0,await ru(process.cwd()),s)}let{resolveResidentPaths:i,ensureResidentServer:a}=await Promise.resolve().then(()=>(Ge(),Ft)),c=i(process.cwd());if(o&&r.command){let{overheadFamilyDisabled:g}=await Promise.resolve().then(()=>(U(),hs)),y=g(c.rootDir,r.command);if(y)return await ng(r.positional,c.rootDir,y)}if(o&&rg(s.measurementHoldoutShare))return await eg(r,c.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(fy(),py)),y=i(process.cwd()),b=xe(r.positional,"--socket")??y.socketPath,w=n(process.cwd(),process.env,r.storeUri??xe(r.positional,"--store-uri"));return w.enabled?(await g({socketPath:b,pidPath:xe(r.positional,"--pid-file")??i(process.cwd()).pidPath,rootDir:y.rootDir,storeUri:w.storeUri,ttlDays:q(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:q(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:q(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:q(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:q(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:q(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:q(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:q(r.positional,"--idle-ms")??w.idleMs,residentVersion:xe(r.positional,"--resident-version")??t.version,registryPath:xe(r.positional,"--registry")??y.registryPath}),0):(process.stdout.write(`${Fo()}
|
|
193
|
+
`),0)}if(r.command==="warm-resident"){let g=i(process.cwd()),y=xe(r.positional,"--socket")??g.socketPath,b=xe(r.positional,"--wake-lock")??g.wakeLockPath,w=n(process.cwd(),process.env,r.storeUri??xe(r.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:S}=await Promise.resolve().then(()=>(Ge(),Ft));return await S({...g,socketPath:y,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:q(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:q(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:q(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:q(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:q(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:q(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:q(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:q(r.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:g}=await Promise.resolve().then(()=>(Co(),vo));return await g(r.positional,{telemetryRoot:c.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:g,sweepResidentRegistry:y}=await Promise.resolve().then(()=>(Ge(),Ft)),b=r.command==="sweep"?await y(c):await g(c);if(r.command==="sweep"){let{sweepGhEtagCache:O}=await Promise.resolve().then(()=>(yn(),Xd));await O(c.rootDir,{maxBytes:s.ghEtagCacheMaxBytes})}let{overheadHealth:w}=await Promise.resolve().then(()=>(U(),hs)),S=w(c.rootDir,s.overhead);return process.stdout.write(ud(b,S)),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(po(),yp)),y=yl(r.positional);if(!y)return process.stdout.write($({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 b=await g({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:c.rootDir,command:`rsp ${r.positional.join(" ")}`,overheadCeiling:s.overhead});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
|
|
194
|
+
`),b.status}if(!r.command){let g=await df(s);return process.stdout.write(mf(g)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!zT(YT(s.storeUri)))return o?await bh(r,s,c.rootDir):(process.stdout.write($({command:qe(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:u,residentElisionStore:l,reportResidentEntryDiagnostic:m}=await Promise.resolve().then(()=>(jt(),cn)),d=(g=!0)=>Promise.resolve(l(process.cwd(),s,{ensureResident:g,paths:c})),p=()=>a(c,u(s,t.version)).catch(g=>void m(g)),f=()=>d(),_;try{if(r.command==="stats"){let{stats:g,telemetry:y}=await fr(s,as(r.positional,30)),{overheadHealth:b}=await Promise.resolve().then(()=>(U(),hs));return process.stdout.write(oa(g,y,bl(r.positional),b(c.rootDir,s.overhead))),0}if(r.command==="gains"){let g=await f();_=()=>g.close();let y;try{y=await g.telemetryGains(as(r.positional,28))}catch(b){return process.stdout.write($({command:`rsp ${r.positional.join(" ")}`.trim(),category:"real-error",error:b instanceof Error?b.message:"rsp gains unavailable",help:"rsp gains requires the shared RedDB store"})),1}return process.stdout.write(md(y)),0}if(r.command==="git"){if(er(p()),qo(r.positional)){let S=process.hrtime.bigint();return await se(r,await Vo(),S,void 0,c.rootDir,s)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(Xt(),Gc)),y=new Tt(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyGitByteThreshold:s.heavyGitByteThreshold});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="gh"){er(p());let{runGhWrapper:g}=await Promise.resolve().then(()=>(ku(),Ru)),y=new Tt(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="vitest"||r.command==="cargo"){er(p());let{runTestWrapper:g}=await Promise.resolve().then(()=>(vu(),xu)),y=new Tt(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="cat"){er(p());let{runCatWrapper:g}=await Promise.resolve().then(()=>(Au(),Ou)),y=new Tt(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyByteThreshold:s.heavyGitByteThreshold});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="exec"){er(p());let{runExecWrapper:g}=await Promise.resolve().then(()=>(zn(),Kn)),y=new Tt(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyByteThreshold:s.heavyGitByteThreshold});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="show"&&r.handle){let g=await f();_=()=>g.close();let y=await g.get(r.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await Ko(c.rootDir,r.handle,!0,y.original.length),0;if(y?.status==="expired"){let w=$({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${y.expired_at}`,help:y.command});return process.stdout.write(w),await Ko(c.rootDir,r.handle,!1,w.length),1}let b=$({command:`rsp show ${r.handle}`,category:"real-error",error:"expired unknown",help:r.handle});return process.stdout.write(b),await Ko(c.rootDir,r.handle,!1,b.length),1}return process.stdout.write($({command:r.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(g){if(lr(g))return process.stdout.write(g.render()),2;if(o)return await Xn("wrapper failed",r.positional,g,c.rootDir);throw g}finally{await _?.()}}Fe();import.meta.url===`file://${process.argv[1]}`&&gy().then(e=>process.exit(e),e=>{lr(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write($({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{gy as main,aa as renderSetupResult,oa as renderStats};
|