@reddb-io/red-skills 2.81.0 → 2.83.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/castle-mcp.bundle.min.mjs +472 -444
- package/dist/code-nav.bundle.min.mjs +1 -1
- package/dist/dev.bundle.min.mjs +656 -627
- package/dist/memory.bundle.min.mjs +1 -1
- package/dist/rsp.bundle.min.mjs +125 -125
- package/package.json +1 -1
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -1,131 +1,131 @@
|
|
|
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
|
|
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[
|
|
8
|
-
`);return}e.push(
|
|
9
|
-
`),
|
|
10
|
-
`)}function
|
|
3
|
+
var Cg=Object.defineProperty;var y=(e,t)=>()=>(e&&(t=e(e=0)),t);var F=(e,t)=>{for(var r in t)Cg(e,r,{get:t[r],enumerable:!0})};function k(e,t){return new Ar(e,t)}function I(e,t){return new vt(e,t)}function Vt(e){return e instanceof vt?e:e instanceof Ar?new vt(e.line,e.reason):new vt(0,String(e&&e.message?e.message:e))}var Ar,vt,Lr=y(()=>{Ar=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},vt=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function Mn(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 Ie(e){return k(e,"invalid quoted string")}function Ae(e,t){if(e==="")return"";if(e.startsWith('"'))return Nc(e,t);if(e.includes('"'))throw Ie(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Og(e)?Number(e):e}function Je(e,t){let r=e.trim();if(r.startsWith('"'))return[Nc(r,t),!0];if(r.includes('"')||/\s/.test(r))throw k(t,"expected non-empty field name");return[r,!1]}function Nc(e,t){if(e[0]!=='"')throw Ie(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 Ie(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 Ie(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw Ie(t);r+=String.fromCharCode(a),n+=4;break}default:throw Ie(t)}continue}if(s<" "&&s!==" ")throw Ie(t);r+=s}throw Ie(t)}function Tt(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 Ie(r);return n.push(e.slice(s).trim()),n}function ne(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 Ie(r);return-1}function Og(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Pg(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ig(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 Dr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Le(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Ig(e);if(typeof e=="string")return Lg(e,t);throw k(0,"not a primitive")}function Ag(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function ye(e){return Ag(e)?e:$c(e)}function Lg(e,t){return Dg(e,t)?$c(e):e}function Dg(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Pg(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function $c(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 Kt(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var L,So=y(()=>{Lr();L=","});function Ng(e={}){return{indent:Math.max(1,e.indent??Po),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function $g(e,t){let r=[],n=!1;return Mn(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 N(e,t){let r=Ng(t),n=$g(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=Lo(s.content,ne(s.content,":",s.number))}catch(l){if(r.strict)throw Co(l,s.number);u=void 0}if(u!==void 0)return jg(u,n,r)}if(o&&ne(s.content,":",s.number)===-1)return Ae(s.content.trim(),s.number);let i={index:0},a=Io(n,i,0,r),c=n[i.index];if(c!==void 0)throw k(c.number,"expected end of document");return a}function Io(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}=Mg(e,t,r,n);jc(s,i,a,c,n,o.number)}return s}function Mg(e,t,r,n){let s=e[t.index],o=s.content,i=ne(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=ne(a,"[",s.number),l=ne(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=Wg(a)}catch(g){if(n.strict)throw Co(g,s.number);t.index+=1;let b=Eo(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:b}}if(c.trim()!=="")throw k(s.number,"expected keyed map rows");let m=Bg(h,e,t,r+1,n);return{key:h.key,quoted:h.keyQuoted,value:m}}if(u!==-1){let h;try{h=Lo(a,i)}catch(g){if(n.strict)throw Co(g,s.number);t.index+=1;let b=Eo(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:b}}if(h.key===""&&!h.keyQuoted)throw k(s.number,"expected non-empty field name");let m=Ao(h,c,e,t,r,n);return{key:h.key,quoted:h.keyQuoted,value:m}}let[p,d]=Je(a,s.number);if(p===""&&!d)throw k(s.number,"expected non-empty field name");t.index+=1;let f=Eo(e,t,r,c,s.number,n);return{key:p,quoted:d,value:f}}function Eo(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Ae(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?Io(e,t,r+1,o):{}}function Bg(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=ne(i.content,":",i.number);if(a===-1)throw k(i.number,"expected `key: value`");let[c,u]=Je(i.content.slice(0,a),i.number);if(c===""&&!u)throw k(i.number,"expected non-empty field name");let l=Tt(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 p={};e.fields.forEach((d,f)=>{Nr(p,d,Ae(l[f],i.number),s,i.number)}),jc(o,c,u,p,s,i.number),r.index+=1}return o}function jg(e,t,r){let n=t[0],s=ne(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=Ao(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 Ao(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 Fg(e,e.fields,r,n,s+1,o)}if(a!==""){let c=Tt(a,e.delimiter,i).map(u=>Ae(u,i));if(c.length!==e.len)throw k(i,"array length mismatch");return c}return Hg(e,r,n,s+1,o)}function Fg(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw vo(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(!Mc(c.content,e.delimiter,c.number))break;let u=Tt(c.content,e.delimiter,c.number);if(u.length!==t.length)throw k(c.number,"array row length mismatch");let l={};t.forEach((p,d)=>{Nr(l,p,Ae(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw vo(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&Mc(a.content,e.delimiter,a.number))throw k(a.number,"array length mismatch");return i}function Mc(e,t,r){let n=ne(e,":",r);if(n===-1)return!0;let s=ne(e,t,r);return s===-1?!1:s<n}function Hg(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 vo(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(Gg(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 Gg(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=ne(o,":",s.number),a;try{a=Lo(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Ao(a,c,e,t,r,n)}}if(ne(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 Io(i,{index:0},r+1,n)}return t.index+=1,Ae(o,s.number)}function vo(e,t){let r=e[t]??e[e.length-1];return k(r===void 0?1:r.number,"array length mismatch")}function Lo(e,t){if(t===-1)throw k(0,"array header missing colon");let r=e.slice(0,t),n=ne(r,"[",0);if(n===-1)throw k(0,"invalid array header");let s,o;try{[s,o]=Je(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),p;switch(c.slice(u.length)){case"":p=",";break;case" ":p=" ";break;case"|":p="|";break;default:throw k(0,"invalid array header")}let d=i.slice(a+1),f;if(d==="")f=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{f=Bc(d.slice(1,-1),p)}catch(h){throw k(0,h.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw k(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:p,fields:f}}function Wg(e){let t=ne(e,"{",0);if(t===-1||!e.endsWith("}"))throw k(0,"invalid keyed map header");let r,n;try{[r,n]=Je(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=Bc(e.slice(t+1,-1),L)}catch(o){throw k(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:L,fields:s}}function Bc(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[p]=Je(e.slice(l,n),0);if(p==="")throw k(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,p],!0),e[n]!=="}"||r.length===d)throw k(0,"invalid array header");n+=1}else r.push([...a,p]);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(Ug(r[a],r[c])||To(r[a],r[c])||To(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 Ug(e,t){return e.length===t.length&&To(e,t)}function To(e,t){return t.every((r,n)=>e[n]===r)}function Co(e,t){return k(t,e.reason??String(e.message))}function jc(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(Jg)){Nr(e,i,n,s,o);return}}Nr(e,[t],n,s,o)}function Nr(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");Kt(e,o,r);return}if(i&&!zt(e[o])){if(n.strict)throw k(s,"path expansion conflict");Kt(e,o,{})}else i||Kt(e,o,{});Nr(e[o],t.slice(1),r,n,s)}function Jg(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function zt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function T(e,t={}){let r={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},n=[];return Array.isArray(e)?Do(n,void 0,e,0,!1,r):zt(e)?Fc(n,e,0,r):n.push(Le(e,L)),n.join("")}function $r(e,t){e.push(" ".repeat(t*Po))}function Fc(e,t,r,n){for(let[s,o]of Object.entries(t))$r(e,r),Oo(e,s,o,r,n)}function Oo(e,t,r,n,s){if(Array.isArray(r)){Do(e,t,r,n,!1,s);return}if(zt(r)){let o=s.keyedMapCollapse?Vg(r,s):void 0;if(o!==void 0){e.push(ye(t),"{",o.fields.map(No).join(L),`}:
|
|
7
|
+
`);for(let[i,a]of Object.entries(r))$r(e,n+1),e.push(ye(i),": ",o.paths.map(c=>Le(Uc(a,c),L)).join(L),`
|
|
8
|
+
`);return}e.push(ye(t),`:
|
|
9
|
+
`),Fc(e,r,n+1,s);return}e.push(ye(t),": ",Le(r,L),`
|
|
10
|
+
`)}function Do(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(ye(t),`: []
|
|
11
11
|
`):s?e.push(`[0]:
|
|
12
12
|
`):e.push(`[]
|
|
13
|
-
`);return}if(r.every(
|
|
14
|
-
`);return}let
|
|
15
|
-
`);for(let a of r)
|
|
16
|
-
`);return}
|
|
17
|
-
`);for(let a of r)
|
|
18
|
-
`);return}e.push("- "),
|
|
19
|
-
`)}function
|
|
20
|
-
`}function
|
|
21
|
-
`}function
|
|
22
|
-
`,h=()=>
|
|
23
|
-
`;return
|
|
24
|
-
`},end(){return
|
|
25
|
-
`)}function
|
|
26
|
-
`).trim()}var De=
|
|
27
|
-
expected at: ${
|
|
13
|
+
`);return}if(r.every(Dr)){xo(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Le(a,L)).join(L)),e.push(`
|
|
14
|
+
`);return}let i=s?void 0:Hc(r,o);if(i!==void 0){xo(e,t,r.length,i.fields),e.push(`
|
|
15
|
+
`);for(let a of r)$r(e,n+1),e.push(i.paths.map(c=>Le(Uc(a,c),L)).join(L)),e.push(`
|
|
16
|
+
`);return}xo(e,t,r.length,void 0),e.push(`
|
|
17
|
+
`);for(let a of r)$r(e,n+1),qg(e,a,n+1,o)}function qg(e,t,r,n){if(Array.isArray(t)){e.push("- "),Do(e,void 0,t,r,!0,n);return}if(zt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
|
|
18
|
+
`);return}e.push("- "),Oo(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))$r(e,r+1),Oo(e,o,i,r+1,n);return}e.push("- ",Le(t,L),`
|
|
19
|
+
`)}function xo(e,t,r,n){t!==void 0&&e.push(ye(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(No).join(L),"}"),e.push(":")}function Hc(e,t){let r=Gc(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:Wc(r)}}function Vg(e,t){let r=Object.values(e);if(!(r.length<2))return Hc(r,t)}function Gc(e,t){let r=e[0]?.value;if(!zt(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!zt(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})=>Dr(a)))continue;if(!t.nestedTabularHeaders)return;let i=Gc(o,t);if(i===void 0)return;s.children=i}return n}}function Wc(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:Wc(r.children,n)})}function Uc(e,t){let r=e;for(let n of t)r=r[n];return r}function No(e){return e.children===void 0?ye(e.key):`${ye(e.key)}{${e.children.map(No).join(L)}}`}var Po,Mr=y(()=>{Lr();So();Po=2});var Jc=y(()=>{Mr()});function zg(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw I(t,"invalid trailer count");return Number.parseInt(r,10)}function ru(e,t){if(!tu.test(e))throw I(t,"invalid tag")}function Yg(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!tu.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw I(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Xg(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw I(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(!Zc.includes(i)&&i!=="")throw I(t,"invalid header delimiter");let a=i===""?L:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw I(t,"invalid tag");if(u=c.slice(1,d),ru(u,t),i!=="")throw I(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw I(t,"invalid header");let l=c.slice(1,-2),p;try{p=Tt(l,a,t).map(d=>Je(d,t)[0])}catch(d){throw Vt(d)}if(p.length===0||p.some(d=>d===""))throw I(t,"invalid header fields");return{delimiter:a,fields:p,fieldText:l,continuation:o,tag:u}}function Qg(e,t,r){if(e===null||e.delimiter===void 0)throw I(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw I(r,"continuation header mismatch")}function qc(e,t,r,n){let s;try{s=Tt(e,t,n)}catch(o){throw Vt(o)}if(s.length!==r)throw I(n,"row arity mismatch");for(let o of s)try{Ae(o,n)}catch(i){throw Vt(i)}return s}function Zg(e,t,r){let n={};return e.forEach((s,o)=>{try{Kt(n,s,Ae(t[o],r))}catch(i){throw Vt(i)}}),n}function eh(e,t,r){if(e.startsWith("- "))throw I(t,"reserved line prefix");let n=zg(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw I(t,"trailer without header");if(r.rowCount!==n)throw I(t,"trailer count mismatch");return{kind:"trailer"}}let s=Xg(e,t);if(s!==null)return s.continuation?(Qg(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=Yg(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw I(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:qc(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw I(t,"row before header");return{kind:"row",cells:qc(e,r.delimiter,r.fields.length,t)}}function th(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(f,h){let m=o.at(-1);if(m!==void 0&&m.lane===f.lane&&m.delimiter===f.delimiter&&m.fieldText===f.fieldText){m.rows.push(h);return}o.push({lane:f.lane,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[h]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function p(f,h,m){let g=n.get(f);if(g===void 0){if(n.size>=eu)throw I(m,"too many tagged lanes");g={segments:[],current:null},n.set(f,g),r.push(f)}else g.current!==null&&g.segments.push(g.current);g.current={lane:f,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(Mn(e).forEach((f,h)=>{let m=h+1;if(f==="")return;let g=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},b=eh(f,m,g);if(b.kind==="trailer"){l(),i=null;return}if(b.kind!=="continuation"){if(b.kind==="tag-header"){c=!0,p(b.header.tag,b.header,m);return}if(b.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:b.header.delimiter,fields:b.header.fields,fieldText:b.header.fieldText,rows:[]};return}if(b.kind==="tagged-row"){c=!0;let w=n.get(b.tag).current;w.rows.push(b.cells),u(w,b.cells);return}if(i===null)throw I(m,"row before header");i.rows.push(b.cells),u(i,b.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let f of r){if(f===null){d.push(...s);continue}let h=n.get(f);d.push(...h.segments),h.current!==null&&d.push(h.current)}return t.preserveInterleaving===!0?o:d}function ot(e){return th(e).flatMap(t=>t.rows.map(r=>Zg(t.fields,r,0)))}function rh(e){if(!Zc.includes(e))throw I(0,"invalid header delimiter")}function Vc(e,t,r=!1){return`[${`${r?"~":""}${e===L?"":e}`}]{${t}}:
|
|
20
|
+
`}function Kc(e,t){return`[]<${e}>{${t}}:
|
|
21
|
+
`}function $o(e,t){return t.map(ye).join(e)}function nh(e){if(!Array.isArray(e)||e.length===0)throw I(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Je(String(t),0)}catch(n){throw Vt(n)}if(r==="")throw I(0,"TOONL header requires fields");return r})}function zc(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function Yc(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw I(0,"TOONL continuation cadence must be positive")}function sh(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function Xc(e){if(e===null||typeof e!="object"||Array.isArray(e))throw I(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw I(0,"TOONL output requires object rows");if(t.some(r=>!Dr(e[r])))throw I(0,"TOONL rows must be flat objects");return t}function oh(e){return JSON.stringify([...e].sort())}function Qc(e,t){let r=oh(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function it({delimiter:e=L,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){rh(e),Yc(r),Yc(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,p=!1,d={continuationEveryRows:r,continuationEveryBytes:n},f=()=>s===null||!t?"":`[=${a}]
|
|
22
|
+
`,h=()=>sh(d,c,u)?(c=0,u=0,Vc(e,o,!0)):"",m=g=>{ru(g,0);let b=l.get(g);if(b===void 0){if(l.size>=eu)throw I(0,"too many tagged lanes");b={fields:null,fieldsByShape:new Map},l.set(g,b)}return b};return{push(g){if(p)throw I(0,"TOONL encoder is closed");let b=Qc(Xc(g),i),w="";(s===null||s.length!==b.length||s.some((O,j)=>O!==b[j]))&&(w+=f(),s=b,o=$o(e,s),a=0,c=0,u=0,w+=Vc(e,o));let E=s.map(O=>Le(g[O],e));w+=h();let v=`${E.join(e)}
|
|
23
|
+
`;return w+=v,a+=1,c+=1,u+=v.length,w},declareLane(g,b){if(p)throw I(0,"TOONL encoder is closed");let w=nh(b),E=$o(L,w),v=m(g);return zc(v.fields,w)?"":(v.fields=w,Kc(g,E))},pushTagged(g,b){if(p)throw I(0,"TOONL encoder is closed");let w=m(g),E=Qc(Xc(b),w.fieldsByShape),v=$o(L,E),O=E.map(me=>Le(b[me],L)),j="";return zc(w.fields,E)||(w.fields=E,j+=Kc(g,v)),`${j}${g}:${O.join(L)}
|
|
24
|
+
`},end(){return p?"":(p=!0,f())}}}var Zc,eu,tu,v0,T0,nu=y(()=>{Lr();Mr();So();Zc=[L,"|"," "],eu=8,tu=/^[A-Za-z0-9_-]+$/,v0=new TextEncoder,T0=new TextDecoder});var D=y(()=>{Lr();Mr();Mr();Jc();nu()});function ah(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${T(Mo(e))}
|
|
25
|
+
`)}function Mo(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??ah(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=ch(e.diagnostics,3)),t}function be(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:Br(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&o.includes("rate limit")?{command:e,category:"real-error",error:Br(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:Br(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:Br(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Br(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Bn(e,t,r,n){return $({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Br(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function ch(e,t){return e.split(/\r?\n/).slice(0,t).join(`
|
|
26
|
+
`).trim()}var De=y(()=>{"use strict";D()});import{isAbsolute as uh,join as qe,resolve as jo}from"node:path";function ph(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function uu(e){return qe(ph(e),cu)}function lu(e){return qe(uu(e),"state")}function du(e){return qe(uu(e),"tmp")}function Y(e){return qe(lu(e),"rsp")}function fh(e){return qe(lu(e),"red-skills.rdb")}function mh(e){return qe(du(e),"red-skills.rdb")}function mu(e,t){let r=fh(e);if(t(r))return r;let n=mh(e);if(t(n))throw gh();return r}function gh(){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 gu(e){return qe(du(e),"waits")}function hu(e){let t=e.overrideEnvVars??Fo;for(let n of t){let s=e.env[n];if(s)return uh(s)?s:jo(e.startDir,s)}let r=jo(e.startDir);for(;;){if(e.exists(qe(r,cu)))return r;let n=qe(r,".."),s=jo(n);if(s===r)break;r=s}return e.startDir}var cu,lh,dh,Fo,pu,fu,_e=y(()=>{cu=".red",lh="MEMORY_ROOT",dh="RED_BRAIN_ROOT",Fo=[lh,dh];pu=".red/state/red-skills.rdb";fu=".red/tmp/red-skills.rdb"});function H(e){return T(e,{keyedMapCollapse:!0})}var hh,yh,oT,Ne=y(()=>{D();_e();hh=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],yh=[{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"}],oT=[...hh,...yh]});function Ct(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 wh(e,t){if(!t)return!0;let r=Ho(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function X(e,t){return t?e.filter(r=>wh(r,t)):[...e]}function Ve(e,t){return Go(e,t,{includeLegacyHelp:!0})}function Go(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Ho(e){return Array.isArray(e)?e.map(Ho).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Ho).join(" "):String(e??"")}var jr=y(()=>{"use strict"});async function bu(e,t){return _h?Sh(e,t):kh?xh(e,t):Rh(e,t)}async function Rh(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 Sh(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:Eh(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Eh(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 xh(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:vh(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*vh(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var _h,kh,wu=y(()=>{_h=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",kh=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Th}from"node:fs";import{join as Ch}from"node:path";function _u(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=Ch(r,"bin",t);if(Th(o))return o;throw new Error(`reddb: binary "${t}" not found.
|
|
27
|
+
expected at: ${o}
|
|
28
28
|
override: set ${n}=/path/to/${t}
|
|
29
29
|
fix: re-run \`pnpm install\` (the postinstall script downloads it),
|
|
30
|
-
or check the postinstall log for a download error.`)}var
|
|
31
|
-
`)).catch(a=>{this.pending.delete(n),
|
|
30
|
+
or check the postinstall log for a download error.`)}var ku=y(()=>{});import{fileURLToPath as Oh}from"node:url";import{dirname as Ph,resolve as Ih,join as gT}from"node:path";function Dh(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ru(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:_u({name:Dh(),packageRoot:Lh,envVar:"REDDB_BIN"})}var Ah,Lh,Su=y(()=>{ku();Ah=Ph(Oh(import.meta.url)),Lh=Ih(Ah,"..")});var Nh,$h,x,Fn,at=y(()=>{Nh=new TextEncoder,$h=new TextDecoder("utf-8"),x=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},Fn=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 x("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(Nh.encode(s+`
|
|
31
|
+
`)).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($h.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 x(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 x("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function Uo(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:/"?Mh(e):Bh(e)}function Mh(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 x("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=jh(s),a=r.port?Number(r.port):Wo(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 Bh(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 x("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):Wo(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 x("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Wo(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 x("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function jh(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 x("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Wo(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 Jo=y(()=>{at()});function Hh(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Eu(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Eu(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Eu(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 Gh(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 Fh,Fr,qo=y(()=>{at();Fh=new Set(["embedded"]),Fr=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&Fh.has(this._transport))throw new x("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:Gh(n.value)}async put(t,r,n,s={}){this._guard("put");let o=Hh(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 Vo(e,t){return`${Ko(e)}.${Wh(t)}`}function Ko(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new x("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function Wh(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Uh(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 xu(e){return`'${String(e).replace(/'/g,"''")}'`}var Qt,zo=y(()=>{at();Qt=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(xu).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Vo(s,t)} = ${Uh(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 ${Vo(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 ${Vo(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 x("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 ${Ko(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(xu).join(", ")}] FROM ${Ko(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new x("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 x("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
|
|
32
32
|
|
|
33
|
-
`)){let l=
|
|
34
|
-
`).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function Gg(e,t,r){let{waitMs:n,group:s=null,count:i=null}=r??{};if(!Number.isInteger(n)||n<0)throw new k("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=Ve(e),a=Ve(t),u=s!=null?` GROUP ${Ve(s)}`:"",c=i!=null?Mi(i):"";return`QUEUE READ ${o}${u} CONSUMER ${a}${c} WAIT ${n}ms`}function Ve(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Mi(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new k("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Fg(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Jg(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new k("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Fg(e.priority)}`),e.key!=null&&(t+=` KEY ${ji(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ji(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Ug(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ji(e):JSON.stringify(e)}function ji(e){return`'${String(e).replace(/'/g,"''")}'`}function Bi(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Lr,Gi=w(()=>{nt();Lr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${Ve(t)}`})}push(t,r,n={}){let s=Jg(n);return this.client.call("query",{sql:`QUEUE PUSH ${Ve(t)} ${Ug(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${Ve(t)}${Mi(r)}`});return Bi(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${Ve(t)}${Mi(r)}`});return Bi(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${Ve(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${Ve(t)}`})}async readWait(t,r,n={}){let s=Gg(t,r,n),i=await this.client.call("query",{sql:s});return Bi(i)}}});function ec(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function Wg(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new k("INVALID_ARGUMENT","limit must be a positive integer");return e}function Mn(e){return String(e).split(".").map(tc).join(".")}function tc(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Hg(e){return rc(JSON.stringify(e))}function qg(e){return JSON.stringify(e)}function Vg(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Hg(e):rc(e)}function rc(e){return`'${String(e).replace(/'/g,"''")}'`}var Br,Fi=w(()=>{nt();Br=class{constructor(t){this.db=t}async insert(t,r){ec(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${Mn(t)} DOCUMENT VALUES (${qg(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new k("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:n.affected??1,rid:s.rid,item:s}}async get(t,r){let n=await this.db.get(t,r);if(!n.entity)throw new k("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=Wg(r.limit),s=r.orderBy??r.order_by??"rid ASC",i=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${Mn(t)}${i} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){ec(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new k("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[u]of s)if(u.includes("/"))throw new k("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([u,c])=>`${tc(u)} = ${Vg(c)}`).join(", "),a=(await this.db.query(`UPDATE ${Mn(t)} SET ${i} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new k("NOT_FOUND",`document ${String(r)} was not found`);return a}async delete(t,r){let s=(await this.db.delete(t,r)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${Mn(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function Kg(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${st(r)}.${st(n)})`}return Yg(e)}function zg(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 st(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 Yg(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):nc(e)}function nc(e){return`'${String(e).replace(/'/g,"''")}'`}var Mr,Ji=w(()=>{Mr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){zg(n,"config");let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(nc).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${st(s)} ${st(t)} = ${Kg(r,n)}${i}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${st(n)} ${st(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${st(n)} ${st(t)}`})}}});function Qg(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 Yt(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 Zg(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):sc(e)}function sc(e){return`'${String(e).replace(/'/g,"''")}'`}var jr,Ui=w(()=>{jr=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){Qg(n,"vault");let s=n.collection??this.collection,i=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(sc).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Yt(s)}.${Yt(t)} = ${Zg(r)}${i}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Yt(n)}.${Yt(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Yt(n)}.${Yt(t)}`})}}});async function oc(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Xg)}async function ac(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${th(t)}`)).rows??[]).some(n=>n.name===String(t))}function Xg(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function ic(e){return String(e).split(".").map(eh).join(".")}function eh(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function th(e){return`'${String(e).replace(/'/g,"''")}'`}var Gr,Wi=w(()=>{nt();Gr=class e{constructor(t,r,n=null,s=[],i=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=i}select(...t){let r=t.length===1&&Array.isArray(t[0])?t[0]:t,n=r.length===1&&r[0]==="*"?null:r;return new e(this.db,this.collection,n!=null&&n.length>0?n:null,this.whereClauses,this.params)}where(t,...r){if(typeof t!="string"||t.trim().length===0)throw new k("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let n=r.length===1&&Array.isArray(r[0])?r[0]:r;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...n])}async run(){let t=this.columns==null?"*":this.columns.map(ic).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${ic(this.collection)}${r}`,i=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).rows??[];return this.columns==null?i:i.map(o=>{let a={};for(let u of this.columns)a[u]=o[u];return a})}}});async function Qt(e,t={}){let r=Ii(e);if(dh(r),r.kind==="embedded"){let n=lh(r,t.auth);if(n.token||n.username)throw new k("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=ch(r),i=t.binary??Yu(),o=await qu(i,s),a=new Bn(o);return await a.call("version",{}),new qi(a,{transport:"embedded"})}}function cc(e){return sh(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:oh(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&uh(e)?{$uuid:e}:e}function sh(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new k("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new k("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new k("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function ih(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(cc):e.map(cc)}function oh(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 ah(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 uh(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function jn(e){if(Array.isArray(e))return e.map(jn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return ah(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]=jn(s);return r}return e}function ch(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function lh(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 dh(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",rh)}function Vi(){return new k(uc,`${uc}: nested transactions are not supported on one connection`)}function dc(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function fh(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${lc} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function ph(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new k("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${lc} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new k("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var rh,nh,lc,uc,Gn,Hi,qi,Ki=w(()=>{Vu();Qu();nt();Di();Ai();Li();Gi();Fi();Ji();Ui();Wi();Ai();Li();Gi();Fi();Ji();Ui();Wi();Di();rh="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",nh="1.0",lc="1.0.9",uc="NESTED_TX_NOT_SUPPORTED";Gn=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 Vi()}},Hi=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Vi();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new k("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new k("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new k("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new Gn(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){dc(r,n)}throw r}}},qi=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=nh,this.cache=new Nr(t,this.transport),this.queue=new Lr(t),this.queues=this.queue,this.documents=new Br(this);let n=new zt(t);this.kv=Object.assign((s="kv_default")=>new zt(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 Mr(t,s),this.vault=(s="red.vault")=>new jr(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new k("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=ih(r);return n==null?this.client.call("query",{sql:t}).then(jn):this.client.call("query",{sql:t,params:n}).then(jn)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return fh(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 ph(n,r.length)}tx(){return new Hi(this)}async transaction(t){if(this.inTransaction)throw Vi();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 Gn(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){dc(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return ac(this,t)}list(){return oc(this)}from(t){return new Gr(this,t)}get(t,r){return this.client.call("get",{collection:t,id:String(r)})}delete(t,r){return this.client.call("delete",{collection:t,id:String(r)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,r){return this.client.call("auth.login",{username:t,password:r})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,r){return this.client.call("auth.change_password",{current_password:t,new_password:r})}createApiKey({username:t,role:r}={}){return this.client.call("auth.create_api_key",{username:t,role:r})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});function Yi(e,t,r=fc){let n=Math.max(0,Math.floor(e)),s=r in pc?r:fc,i=pc[s],o=t?Math.floor(n*(1-.25)):null,a=t?Math.ceil(n*(1+.25)):null;return{tokens_saved:n,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:o,tokens_saved_high:a,dollars_saved_estimate_usd:zi(n,i),dollars_saved_low_usd:o==null?null:zi(o,i),dollars_saved_high_usd:a==null?null:zi(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:mh}}function zi(e,t){return gh(Math.max(0,e)/1e6*t)}function Fr(e){return`$${e.toFixed(6)}`}function gh(e){return Math.round(e*1e6)/1e6}var fc,pc,mh,Qi=w(()=>{"use strict";fc="gpt-5",pc={"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},mh="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as hh,readFileSync as bv}from"node:fs";import{dirname as yh,join as bh}from"node:path";function mc(e,t){let r=e;for(let n=0;n<16;n++){let s=bh(r,t);if(hh(s))return s;let i=yh(r);if(i===r)break;r=i}return null}function wh(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Fn(e,t){let r=[];for(let n of e.split(`
|
|
35
|
-
`)){let s=n.replace(/\r$/,""),
|
|
36
|
-
`)}),
|
|
37
|
-
`);if(
|
|
38
|
-
`,{encoding:"utf8",mode:384}),await
|
|
33
|
+
`)){let l=u.split(`
|
|
34
|
+
`).find(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function Jh(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new x("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=Ke(e),a=Ke(t),c=s!=null?` GROUP ${Ke(s)}`:"",u=o!=null?Xo(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function Ke(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new x("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Xo(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new x("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function qh(e){if(!Number.isInteger(e))throw new x("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Vh(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new x("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${qh(e.priority)}`),e.key!=null&&(t+=` KEY ${Qo(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Qo(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Kh(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Qo(e):JSON.stringify(e)}function Qo(e){return`'${String(e).replace(/'/g,"''")}'`}function Yo(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Hr,Zo=y(()=>{at();Hr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${Ke(t)}`})}push(t,r,n={}){let s=Vh(n);return this.client.call("query",{sql:`QUEUE PUSH ${Ke(t)} ${Kh(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${Ke(t)}${Xo(r)}`});return Yo(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${Ke(t)}${Xo(r)}`});return Yo(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${Ke(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${Ke(t)}`})}async readWait(t,r,n={}){let s=Jh(t,r,n),o=await this.client.call("query",{sql:s});return Yo(o)}}});function vu(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new x("INVALID_ARGUMENT",`${t} must be an object`)}function zh(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new x("INVALID_ARGUMENT","limit must be a positive integer");return e}function Hn(e){return String(e).split(".").map(Tu).join(".")}function Tu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new x("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Yh(e){return Cu(JSON.stringify(e))}function Xh(e){return JSON.stringify(e)}function Qh(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Yh(e):Cu(e)}function Cu(e){return`'${String(e).replace(/'/g,"''")}'`}var Gr,ei=y(()=>{at();Gr=class{constructor(t){this.db=t}async insert(t,r){vu(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${Hn(t)} DOCUMENT VALUES (${Xh(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new x("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 x("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=zh(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 ${Hn(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){vu(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new x("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new x("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Tu(c)} = ${Qh(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Hn(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new x("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 ${Hn(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function Zh(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${ct(r)}.${ct(n)})`}return ty(e)}function ey(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 ct(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 ty(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ou(e)}function Ou(e){return`'${String(e).replace(/'/g,"''")}'`}var Wr,ti=y(()=>{Wr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){ey(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Ou).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${ct(s)} ${ct(t)} = ${Zh(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${ct(n)} ${ct(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${ct(n)} ${ct(t)}`})}}});function ry(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 Zt(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 ny(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Pu(e)}function Pu(e){return`'${String(e).replace(/'/g,"''")}'`}var Ur,ri=y(()=>{Ur=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){ry(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Pu).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Zt(s)}.${Zt(t)} = ${ny(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Zt(n)}.${Zt(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Zt(n)}.${Zt(t)}`})}}});async function Au(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(sy)}async function Lu(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${iy(t)}`)).rows??[]).some(n=>n.name===String(t))}function sy(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Iu(e){return String(e).split(".").map(oy).join(".")}function oy(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new x("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function iy(e){return`'${String(e).replace(/'/g,"''")}'`}var Jr,ni=y(()=>{at();Jr=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 x("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(Iu).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Iu(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 er(e,t={}){let r=Uo(e);if(hy(r),r.kind==="embedded"){let n=gy(r,t.auth);if(n.token||n.username)throw new x("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=my(r),o=t.binary??Ru(),i=await bu(o,s),a=new Fn(i);return await a.call("version",{}),new oi(a,{transport:"embedded"})}}function Nu(e){return uy(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:dy(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&fy(e)?{$uuid:e}:e}function uy(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new x("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 x("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new x("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function ly(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Nu):e.map(Nu)}function dy(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 py(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 fy(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Gn(e){if(Array.isArray(e))return e.map(Gn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return py(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]=Gn(s);return r}return e}function my(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function gy(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 hy(e){if(e.kind!=="embedded")throw new x("EMBEDDED_ONLY",ay)}function ii(){return new x(Du,`${Du}: nested transactions are not supported on one connection`)}function Mu(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function yy(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new x("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${$u} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function by(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new x("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${$u} 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 x("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var ay,cy,$u,Du,Wn,si,oi,ai=y(()=>{wu();Su();at();Jo();qo();zo();Zo();ei();ti();ri();ni();qo();zo();Zo();ei();ti();ri();ni();Jo();ay="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",cy="1.0",$u="1.0.9",Du="NESTED_TX_NOT_SUPPORTED";Wn=class{constructor(t){this.db=t}query(t,...r){return this.db.query(t,...r)}execute(t,...r){return this.db.execute(t,...r)}insert(t,r){return this.db.insert(t,r)}bulkInsert(t,r){return this.db.bulkInsert(t,r)}async transaction(){throw ii()}},si=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ii();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new x("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 x("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 x("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new Wn(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Mu(r,n)}throw r}}},oi=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=cy,this.cache=new Fr(t,this.transport),this.queue=new Hr(t),this.queues=this.queue,this.documents=new Gr(this);let n=new Qt(t);this.kv=Object.assign((s="kv_default")=>new Qt(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 Wr(t,s),this.vault=(s="red.vault")=>new Ur(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new x("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=ly(r);return n==null?this.client.call("query",{sql:t}).then(Gn):this.client.call("query",{sql:t,params:n}).then(Gn)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return yy(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 by(n,r.length)}tx(){return new si(this)}async transaction(t){if(this.inTransaction)throw ii();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let r=!1;try{await this.query("BEGIN"),r=!0;let n=await t(new Wn(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){Mu(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Lu(this,t)}list(){return Au(this)}from(t){return new Jr(this,t)}get(t,r){return this.client.call("get",{collection:t,id:String(r)})}delete(t,r){return this.client.call("delete",{collection:t,id:String(r)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,r){return this.client.call("auth.login",{username:t,password:r})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,r){return this.client.call("auth.change_password",{current_password:t,new_password:r})}createApiKey({username:t,role:r}={}){return this.client.call("auth.create_api_key",{username:t,role:r})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});function ui(e,t,r=Bu){let n=Math.max(0,Math.floor(e)),s=r in ju?r:Bu,o=ju[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:ci(n,o),dollars_saved_low_usd:i==null?null:ci(i,o),dollars_saved_high_usd:a==null?null:ci(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:wy}}function ci(e,t){return _y(Math.max(0,e)/1e6*t)}function qr(e){return`$${e.toFixed(6)}`}function _y(e){return Math.round(e*1e6)/1e6}var Bu,ju,wy,li=y(()=>{"use strict";Bu="gpt-5",ju={"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},wy="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as ky,readFileSync as rC}from"node:fs";import{dirname as Ry,join as Sy}from"node:path";function Fu(e,t){let r=e;for(let n=0;n<16;n++){let s=Sy(r,t);if(ky(s))return s;let o=Ry(r);if(o===r)break;r=o}return null}function Ey(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Un(e,t){let r=[];for(let n of e.split(`
|
|
35
|
+
`)){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(p=>p.key).join(".")===t)return Ey(u)}}var Hu=y(()=>{});import{createConnection as xy}from"node:net";async function tr(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let o=xy(e.socketPath),i=!1,a="",c=setTimeout(()=>{u(()=>s(new Error("resident rsp server timed out"))),o.destroy()},r);function u(l){i||(i=!0,clearTimeout(c),l())}o.on("connect",()=>{o.write(`${JSON.stringify(t)}
|
|
36
|
+
`)}),o.on("data",l=>{a+=l.toString("utf8");let p=a.indexOf(`
|
|
37
|
+
`);if(p<0)return;let d=a.slice(0,p);u(()=>{try{n(JSON.parse(d))}catch(f){s(f)}}),o.end()}),o.on("error",l=>u(()=>s(l))),o.on("close",()=>{i||u(()=>s(new Error("resident rsp server closed without response")))})})}var di=y(()=>{});import{createHash as vy,randomUUID as qu}from"node:crypto";import{spawn as Vu}from"node:child_process";import{constants as pi}from"node:fs";import{readFileSync as Ty}from"node:fs";import{mkdir as Jn,open as Cy,readFile as Ku,rename as Oy,rm as $e,stat as Py,writeFile as Iy}from"node:fs/promises";import{tmpdir as Ay}from"node:os";import{dirname as ut,join as ue,resolve as qn}from"node:path";import{fileURLToPath as zu}from"node:url";function lt(e){let t=Uy(e)??qn(e),r=Wy(t),n=Y(t);return{rootDir:t,socketPath:ue(r,"rsp.sock"),pidPath:ue(r,"rsp.pid"),lockPath:ue(r,"rsp.lock"),wakeLockPath:ue(t,".red","tmp","rsp","wake.lock"),summaryPath:ue(n,"rsp-status-summary.json"),registryPath:ue(n,"rsp-resident.pid.json")}}async function Vn(e,t){if(await Jn(ut(e.socketPath),{recursive:!0,mode:448}),await Uu(e.socketPath,t))return;await Wu(e,t);let r=await el(e.lockPath);if(r)try{if(await Uu(e.socketPath,t))return;await Wu(e,t),await $y(e.socketPath);let n=My(e,t);await Gu(e.socketPath,n);return}finally{await r.close(),await $e(e.lockPath,{force:!0})}await Gu(e.socketPath)}async function Ot(e,t=200){try{return await Xu(e,t)!=null}catch{return!1}}async function Xu(e,t=200){let r=await tr({socketPath:e,timeoutMs:t},{id:qu(),op:"ping"});return r.ok?sl(r.value)?{version:Ky(r.value.version)}:{}:null}async function Kn(e,t){if(await Jn(ut(e.socketPath),{recursive:!0,mode:448}),await Ot(e.socketPath,50))return!1;let r=await el(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=rl(t);return Vu(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 Qu(e,t){try{await Vn(e,t)}finally{await $e(e.wakeLockPath,{force:!0})}}async function Kr(e){try{let t=Fy(await Ku(e,"utf8"));return zy(t)?t:null}catch{return null}}async function zn(e,t){let r={version:Yu,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 Jn(ut(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await Iy(n,`${T(r)}
|
|
38
|
+
`,{encoding:"utf8",mode:384}),await Oy(n,e)}async function Yn(e,t=process.pid){try{let r=await Kr(e);if(r&&r.pid!==t)return;await $e(e,{force:!0})}catch{}}async function Vr(e){let t=await Kr(e.registryPath);if(!t)try{return await Ku(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!rr(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await Ot(t.socket_path,100);return r&&await Gy(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 Zu(e){let t=await Vr(e);return t.state==="registered-dead"||t.state==="invalid"?(await $e(e.registryPath,{force:!0}),await Vr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await tl(t.entry.pid),await $e(e.registryPath,{force:!0}),await $e(t.entry.socket_path,{force:!0}),await Vr(e)):t}async function Gu(e,t){let r=Date.now()+Ny(),n;for(;Date.now()<r;){if(await Ot(e))return;if(t){let s=t.spawnError();if(s)throw new Error(fi("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(fi("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?fi("resident rsp server did not start",t):"resident rsp server did not start")}function Ny(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Dy}async function $y(e){await $e(e,{force:!0})}async function el(e){await Jn(ut(e),{recursive:!0,mode:448});try{return await Cy(e,pi.O_CREAT|pi.O_EXCL|pi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function My(e,t){let[r,n]=rl(t),s=process.env.RSP_DEBUG==="1",o,i="",a=Vu(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=jy(`${i}${c}`,By)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function fi(e,t,r){let n=[e];r&&n.push(`error: ${r.message}`),t.child.exitCode!=null&&n.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&n.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&n.push(`stderr tail:
|
|
39
39
|
${s}`),n.join(`
|
|
40
|
-
`)}function $h(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Nh(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return U(t)}}async function yc(e,t){try{let r=await Ur(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!Xt(r.pid)){await Ne(e.registryPath,{force:!0});return}if(await vt(r.socket_path,100))return;if(Ic(t.clientVersion,r.resident_version)&&(await Lh(r.pid,1500),!Xt(r.pid))){await Ne(e.registryPath,{force:!0});return}await Pc(r.pid),await Ne(e.registryPath,{force:!0})}catch{}}function Xt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Pc(e){if(!Xt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Xt(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Lh(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!Xt(e))return;await new Promise(n=>setTimeout(n,50))}}async function Bh(e){if(!e.startsWith("file://"))return!1;try{return await kh(Ec(e)),!1}catch(t){return t.code==="ENOENT"}}function Cc(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Un(process.argv[1]):Ec(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Mh(e){let t=Rh("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=ue(r,"red-skills",t);if(ue(s,"rsp.sock").length<Oh)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return ue(Th(),`red-skills-${n}`,t)}function jh(e){let t=Un(e);for(let r=0;r<32;r++){try{let s=to(ue(t,".git"));if(s!=null)return Gh(t,s)??t;if(to(ue(t,".git","HEAD"))!=null||to(ue(t,".red","config.yaml"))!=null)return t}catch{}let n=it(t);if(n===t)return null;t=n}return null}function Gh(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=Un(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?it(it(it(n))):null}function to(e){try{return Sh(e,"utf8")}catch{return null}}async function bc(e,t){let r=await kc(e).catch(()=>null);return r?Ic(t.clientVersion,r.version)?(await Fh(e,t.clientVersion),await Hh(e),!1):!0:!1}async function Fh(e,t){try{await Zt({socketPath:e,timeoutMs:200},{id:_c(),op:"handover",clientVersion:t})}catch{}}function Ic(e,t){return!e||!t?!1:Jh(e,t)>0}function Jh(e,t){let r=wc(e),n=wc(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function wc(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 Dc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Uh(e){return typeof e=="string"&&e.length>0?e:void 0}function Wh(e){return Dc(e)&&e.version===xc&&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 Hh(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await vt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Oh,xc,Ph,Ah,Kn=w(()=>{K();Ae();Zi();Oh=108,xc=1,Ph=5e3;Ah=8*1024});var Mc={};M(Mc,{DEFAULT_RSP_BYTE_BUDGET:()=>Se,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Re,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ze,DEFAULT_RSP_IDLE_MS:()=>Qn,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Bc,DEFAULT_RSP_STORE_PATH:()=>ro,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Yn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>$c,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Nc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>zn,DEFAULT_RSP_TTL_DAYS:()=>_e,MIN_RSP_IDLE_MS:()=>Lc,resolveRspConfig:()=>Ee});import{existsSync as qh,readFileSync as Vh}from"node:fs";import{join as Kh,resolve as Ac}from"node:path";function Ee(e,t,r){let n=mc(Ac(e),Kh(".red","config.yaml")),s=n?Vh(n,"utf8"):"",i=Fn(s,"rsp.enabled")==="true",o=Fn(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",u=Ke(we(s,"rsp.ttlDays"),_e),c=Ke(er(t.RSP_EPHEMERAL_TTL_HOURS)??we(s,"rsp.ephemeralTtlHours"),Re),l=Ke(we(s,"rsp.byteBudget"),Se),f=Ke(we(s,"rsp.telemetryTtlDays"),zn),d=Ke(we(s,"rsp.telemetryByteBudget")??we(s,"rsp.byteBudget"),Yn),p=Ke(er(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??we(s,"rsp.telemetryDrainIntervalMs"),$c),h=Ke(er(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??we(s,"rsp.telemetryDrainTimeoutMs"),Nc),m=zh(er(t.RSP_IDLE_MS)??we(s,"rsp.idleMs"),Qn,Lc),g=Ke(er(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??we(s,"rsp.heavyGitByteThreshold"),ze),y=Yh(er(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??we(s,"rsp.measurement.holdoutShare"),Bc),b=ot(e).rootDir,x=r??t.RSP_STORE_URI??`file://${Ju(Ac(b),qh)}`;return{enabled:i,proxyEnabled:a,storeUri:x,ttlDays:u,ephemeralTtlHours:c,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:h,idleMs:m,heavyGitByteThreshold:g,measurementHoldoutShare:y}}function we(e,t){let r=Fn(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function Ke(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function zh(e,t,r){let n=Ke(e,t);return Math.max(n,r)}function Yh(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function er(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ze,ro,_e,Re,Se,zn,Yn,$c,Nc,Qn,Lc,Bc,xe=w(()=>{"use strict";gc();Ae();Kn();ze=8*1024,ro=Gu,_e=7,Re=6,Se=64*1024*1024,zn=90,Yn=4*1024*1024,$c=3e4,Nc=2e3,Qn=5*6e4,Lc=5e3,Bc=0});var J,Zn=w(()=>{"use strict";xe();J="rsp_elisions_v1"});import{spawnSync as qr}from"node:child_process";import{createHash as io}from"node:crypto";import{existsSync as Qh}from"node:fs";import{mkdir as Zh,readFile as Xh,readdir as jc,rename as ey,writeFile as ty}from"node:fs/promises";import{homedir as ry}from"node:os";import{basename as ny,dirname as sy,join as Wr}from"node:path";import{fileURLToPath as iy}from"node:url";import{gunzipSync as oy,gzipSync as ay}from"node:zlib";function oo(e,t){return`el:${io("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 at(e){return`record:${e.slice(3)}`}function Ot(e){return`expired:${e.slice(3)}`}function ts(){return"index:v1"}function uy(e){return`blob:${e}`}function Gc(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function Ye(e){let t=e.trim().split(/\s+/).filter(Boolean),r=t[0]??"";if(r==="cat")return"derivable";if(r==="git"){let n=t[1]??"";return n==="log"||n==="diff"||n==="blame"||n==="show"?"derivable":rs(t)?"re-executable":"ephemeral"}return"ephemeral"}function Vr(e){return os(e.storage_class)?e.storage_class:Ye(e.command)}function Fc(e){return os(e.storage_class)?e.storage_class:Ye(e.command)}function ao(e){let t=dy(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=Fc(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 uo(e,t,r){let n=t.getTime();return[...e].sort((s,i)=>i.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,r)).map(s=>{let i=Math.max(0,Math.floor((n-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:i,age_display:cy(i),storage_class:Fc(s),recover:`rsp show ${s.handle}`}})}function cy(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 co(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 Pt(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 lo(e,t){let r=process.cwd(),n=qr("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=qr("git",["hash-object","-w","--stdin"],{cwd:r,input:e,encoding:"buffer"});if(s.status!==0)return null;let i=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(i)?{kind:"git-blob",command:t,cwd:r,object_ids:[i],working_tree_fingerprint:ly(r),original_bytes:e.length}:null}function ly(e){let t=no(e,["rev-parse","HEAD"])||"unborn",r=no(e,["write-tree"])||"no-index",n=no(e,["status","--porcelain=v1","-z"])||"";return io("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function no(e,t){let r=qr("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function fo(e,t){let r=t.trim().split(/\s+/).filter(Boolean);if(!rs(r))return null;let n=Hc(process.cwd(),r,e.length);return!n||Tt(n)!==Tt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Tt(e)}}function rs(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 Tt(e){return io("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function po(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 mo(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 go(e,t,r){let n=ay(e);return{key:uy(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function Jc(e){try{let t=oy(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function Uc(e){let t=e.object_ids[0];if(!t)return null;let r=qr("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 Wc(e){if(!rs(e.argv))return null;let t=Hc(e.cwd,e.argv,e.original_bytes);return t?Tt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
|
|
41
|
-
`,"utf8"),t]):null}function
|
|
42
|
-
`,"utf8"),await
|
|
43
|
-
`,"utf8");
|
|
44
|
-
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(
|
|
40
|
+
`)}function jy(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Fy(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return N(t)}}async function Wu(e,t){try{let r=await Kr(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!rr(r.pid)){await $e(e.registryPath,{force:!0});return}if(await Ot(r.socket_path,100))return;if(nl(t.clientVersion,r.resident_version)&&(await Hy(r.pid,1500),!rr(r.pid))){await $e(e.registryPath,{force:!0});return}await tl(r.pid),await $e(e.registryPath,{force:!0})}catch{}}function rr(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function tl(e){if(!rr(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!rr(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Hy(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!rr(e))return;await new Promise(n=>setTimeout(n,50))}}async function Gy(e){if(!e.startsWith("file://"))return!1;try{return await Py(zu(e)),!1}catch(t){return t.code==="ENOENT"}}function rl(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?qn(process.argv[1]):zu(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Wy(e){let t=vy("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=ue(r,"red-skills",t);if(ue(s,"rsp.sock").length<Ly)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return ue(Ay(),`red-skills-${n}`,t)}function Uy(e){let t=qn(e);for(let r=0;r<32;r++){try{let s=mi(ue(t,".git"));if(s!=null)return Jy(t,s)??t;if(mi(ue(t,".git","HEAD"))!=null||mi(ue(t,".red","config.yaml"))!=null)return t}catch{}let n=ut(t);if(n===t)return null;t=n}return null}function Jy(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=qn(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?ut(ut(ut(n))):null}function mi(e){try{return Ty(e,"utf8")}catch{return null}}async function Uu(e,t){let r=await Xu(e).catch(()=>null);return r?nl(t.clientVersion,r.version)?(await qy(e,t.clientVersion),await Yy(e),!1):!0:!1}async function qy(e,t){try{await tr({socketPath:e,timeoutMs:200},{id:qu(),op:"handover",clientVersion:t})}catch{}}function nl(e,t){return!e||!t?!1:Vy(e,t)>0}function Vy(e,t){let r=Ju(e),n=Ju(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Ju(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 sl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ky(e){return typeof e=="string"&&e.length>0?e:void 0}function zy(e){return sl(e)&&e.version===Yu&&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 Yy(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Ot(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Ly,Yu,Dy,By,Xn=y(()=>{D();_e();di();Ly=108,Yu=1,Dy=5e3;By=8*1024});var ll={};F(ll,{DEFAULT_RSP_BYTE_BUDGET:()=>Ee,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Se,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ye,DEFAULT_RSP_IDLE_MS:()=>es,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>ul,DEFAULT_RSP_STORE_PATH:()=>gi,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Zn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>il,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>al,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Qn,DEFAULT_RSP_TTL_DAYS:()=>Re,MIN_RSP_IDLE_MS:()=>cl,resolveRspConfig:()=>xe});import{existsSync as Xy,readFileSync as Qy}from"node:fs";import{join as Zy,resolve as ol}from"node:path";function xe(e,t,r){let n=Fu(ol(e),Zy(".red","config.yaml")),s=n?Qy(n,"utf8"):"",o=Un(s,"rsp.enabled")==="true",i=Un(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ze(ke(s,"rsp.ttlDays"),Re),u=ze(nr(t.RSP_EPHEMERAL_TTL_HOURS)??ke(s,"rsp.ephemeralTtlHours"),Se),l=ze(ke(s,"rsp.byteBudget"),Ee),p=ze(ke(s,"rsp.telemetryTtlDays"),Qn),d=ze(ke(s,"rsp.telemetryByteBudget")??ke(s,"rsp.byteBudget"),Zn),f=ze(nr(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ke(s,"rsp.telemetryDrainIntervalMs"),il),h=ze(nr(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ke(s,"rsp.telemetryDrainTimeoutMs"),al),m=eb(nr(t.RSP_IDLE_MS)??ke(s,"rsp.idleMs"),es,cl),g=ze(nr(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ke(s,"rsp.heavyGitByteThreshold"),Ye),b=tb(nr(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??ke(s,"rsp.measurement.holdoutShare"),ul),w=lt(e).rootDir,E=r??t.RSP_STORE_URI??`file://${mu(ol(w),Xy)}`;return{enabled:o,proxyEnabled:a,storeUri:E,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:p,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:h,idleMs:m,heavyGitByteThreshold:g,measurementHoldoutShare:b}}function ke(e,t){let r=Un(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function ze(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function eb(e,t,r){let n=ze(e,t);return Math.max(n,r)}function tb(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function nr(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Ye,gi,Re,Se,Ee,Qn,Zn,il,al,es,cl,ul,ve=y(()=>{"use strict";Hu();_e();Xn();Ye=8*1024,gi=pu,Re=7,Se=6,Ee=64*1024*1024,Qn=90,Zn=4*1024*1024,il=3e4,al=2e3,es=5*6e4,cl=5e3,ul=0});var U,ts=y(()=>{"use strict";ve();U="rsp_elisions_v1"});import{spawnSync as Xr}from"node:child_process";import{createHash as bi}from"node:crypto";import{existsSync as rb}from"node:fs";import{mkdir as nb,readFile as sb,readdir as dl,rename as ob,writeFile as ib}from"node:fs/promises";import{homedir as ab}from"node:os";import{basename as cb,dirname as ub,join as zr}from"node:path";import{fileURLToPath as lb}from"node:url";import{gunzipSync as db,gzipSync as pb}from"node:zlib";function wi(e,t){return`el:${bi("sha256").update("rsp-elision-v1\0").update(e).update("\0").update(JSON.stringify({command:t.command,loss:t.loss})).digest("hex").slice(0,12)}`}function dt(e){return`record:${e.slice(3)}`}function It(e){return`expired:${e.slice(3)}`}function ss(){return"index:v1"}function fb(e){return`blob:${e}`}function pl(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function Xe(e){let t=e.trim().split(/\s+/).filter(Boolean),r=t[0]??"";if(r==="cat")return"derivable";if(r==="git"){let n=t[1]??"";return n==="log"||n==="diff"||n==="blame"||n==="show"?"derivable":os(t)?"re-executable":"ephemeral"}return"ephemeral"}function Qr(e){return us(e.storage_class)?e.storage_class:Xe(e.command)}function fl(e){return us(e.storage_class)?e.storage_class:Xe(e.command)}function _i(e){let t=hb(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=fl(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 ki(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:mb(o),storage_class:fl(s),recover:`rsp show ${s.handle}`}})}function mb(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let r=Math.floor(t/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}function Ri(e,t,r,n){let s=t==="ephemeral"?n*60*60*1e3:r*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function At(e){let t=0,r=new Set;for(let n of e){if(n.blob_key){if(r.has(n.blob_key))continue;r.add(n.blob_key)}t+=n.bytes}return t}function Si(e,t){let r=process.cwd(),n=Xr("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=Xr("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:gb(r),original_bytes:e.length}:null}function gb(e){let t=hi(e,["rev-parse","HEAD"])||"unborn",r=hi(e,["write-tree"])||"no-index",n=hi(e,["status","--porcelain=v1","-z"])||"";return bi("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function hi(e,t){let r=Xr("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function Ei(e,t){let r=t.trim().split(/\s+/).filter(Boolean);if(!os(r))return null;let n=yl(process.cwd(),r,e.length);return!n||Pt(n)!==Pt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Pt(e)}}function os(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 Pt(e){return bi("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function xi(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 vi(e){return typeof e.stored_bytes=="number"?e.stored_bytes:e.derivation_recipe?Buffer.byteLength(JSON.stringify(e.derivation_recipe),"utf8"):e.reexecution_recipe?Buffer.byteLength(JSON.stringify(e.reexecution_recipe),"utf8"):e.blob_key?typeof e.stored_bytes=="number"?e.stored_bytes:0:e.original_bytes}function Ti(e,t,r){let n=pb(e);return{key:fb(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function ml(e){try{let t=db(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function gl(e){let t=e.object_ids[0];if(!t)return null;let r=Xr("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 hl(e){if(!os(e.argv))return null;let t=yl(e.cwd,e.argv,e.original_bytes);return t?Pt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
|
|
41
|
+
`,"utf8"),t]):null}function yl(e,t,r){let n=t[0];if(!n)return null;let s=Xr(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 hb(){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 Zr(e){return/^el:[a-f0-9]{12}$/.test(e)}function ns(e){return/^blob:[a-f0-9]{64}$/.test(e)}function bl(e){if(!Yr(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:Yr(e.scope)?e.scope:void 0,ranking:Yr(e.ranking)?e.ranking:void 0}}}function wl(e){if(!Yr(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 Yr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function _l(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 dl(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=zr(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 kl(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=Yr(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 is(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function en(e){if(!le(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=bb(e.derivation_recipe),n=wb(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&ns(s);return e.collection===U&&typeof e.handle=="string"&&Zr(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Oi(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&ns(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&yb(e.loss)&&(e.storage_class===void 0||us(e.storage_class))}function Ci(e){return!le(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!le(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&Zr(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||us(t.storage_class))&&(r===void 0||typeof r=="string"&&ns(r))})}function as(e){return le(e)&&typeof e.key=="string"&&ns(e.key)&&Oi(e.content_hash)&&e.encoding==="gzip+base64"&&typeof e.bytes=="string"&&typeof e.original_bytes=="number"&&typeof e.stored_bytes=="number"&&typeof e.created_at=="string"}function cs(e){return le(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function yb(e){return le(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function us(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function bb(e){return le(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 wb(e){return le(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&os(e.argv)&&typeof e.original_bytes=="number"&&Oi(e.content_hash)}function Oi(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function le(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Rl(e){try{let n=(await sb(e,"utf8")).trim();if(n==="")return rs();let s;try{s=JSON.parse(n)}catch{s=N(n)}if(_b(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=rs();return await sr(e,s),s}let n=rs();return await sr(e,n),n}let t=rs();return await sr(e,t),t}async function Sl(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function El(e){return cb(e)==="red-skills.rdb"}async function ls(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?zr(process.env.XDG_CACHE_HOME,"red-skills","bundles"):zr(ab(),".cache","red-skills","bundles")),t=zr(e,"reddb"),r;try{r=await dl(t)}catch{return}r.sort().reverse();for(let n of r){let s=zr(t,n,process.platform==="win32"?"red.exe":"red");if(rb(s)){process.env.REDDB_BIN=s;return}}}async function sr(e,t){await nb(ub(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await ib(r,`${T(yi(t))}
|
|
42
|
+
`,"utf8"),await ob(r,e)}function yi(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=>yi(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=yi(n));return t}return String(e)}function rs(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function _b(e){return le(e)&&e.version===1&&le(e.records)&&Object.values(e.records).every(en)&&(e.blobs===void 0||le(e.blobs)&&Object.values(e.blobs).every(as))&&le(e.tombstones)&&Object.values(e.tombstones).every(cs)&&Ci(e.index)}function xl(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return lb(e)}var Pi=y(()=>{"use strict";D();ts()});import{createHash as kb}from"node:crypto";import{existsSync as vl}from"node:fs";import{mkdir as Rb,readFile as Sb,rename as Ii,rm as tn,stat as Ai}from"node:fs/promises";import{basename as Eb,dirname as xb}from"node:path";var pt,Tl=y(()=>{"use strict";ai();ts();Pi();pt=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=xl(t.uri),n=await Sl(r),s=new e(n,{uri:t.uri,ttlDays:is(t.ttlDays,Re),ephemeralTtlHours:is(t.ephemeralTtlHours,Se),byteBudget:is(t.byteBudget,Ee),now:t.now??(()=>new Date)});return El(n)?(await ls(),await Rb(xb(n),{recursive:!0}),s.db=await er(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Rl(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=wi(n,r),a=dt(i),c=Xe(r.command),u=c==="derivable"?Si(n,r.command):null,l=c==="re-executable"?Ei(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ri(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Pt(n),h=p==="ephemeral"?Ti(n,f,o):null,m=xi(n,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:U,handle:i,original_bytes:n.length,stored_bytes:m,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[It(i)],this.document.records[a]=g,this.upsertIndex({handle:i,key:a,bytes:m,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:h?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!Zr(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[dt(t)];if(!en(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:dt(n.handle),bytes:vi(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Qr(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:U,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Qr(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:At(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:_i(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),ki(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=At(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=At(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[It(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[It(t)];return cs(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return gl(t.derivation_recipe);if(t.reexecution_recipe)return hl(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return as(r)?ml(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 sr(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Ai(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)}
|
|
43
|
+
`,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await sr(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(U)}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===U);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${U}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${U}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${U}`),await this.db.query(`CREATE KV IF NOT EXISTS ${U}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=wi(n,r),a=dt(i),c=Xe(r.command),u=c==="derivable"?Si(n,r.command):null,l=c==="re-executable"?Ei(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ri(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Pt(n),h=p==="ephemeral"?Ti(n,f,o):null,m=xi(n,u,l,h);h&&!as(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:U,handle:i,original_bytes:n.length,stored_bytes:m,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(It(i)),await this.kv().put(a,g);let w=(await this.readRedDbIndex()).records.filter(E=>E.handle!==i);return w.push({handle:i,key:a,bytes:m,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:h?.key}),await this.pruneRedDb({version:1,records:w},!0),await this.assertRedDbMintPersisted(i,m),i}async getRedDb(t){if(!Zr(t))return null;let r=await this.kvGet(It(t));if(cs(r))return r;let n=await this.kvGet(dt(t));if(!en(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:dt(n.handle),bytes:vi(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Qr(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:U,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Qr(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:At(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:_i(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return ki(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=bl(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=wl(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 _l(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await Sb(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=Eb(s),c=kb("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}},p=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(p.rows[0]?.red_entity_id??p.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=>kl(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(`
|
|
44
|
+
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(ss());return Ci(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ss(),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=At(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=At(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 Ai(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 tn(o,{force:!0}),await tn(i,{force:!0});let a=await er(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${pl(u.name)}`);let l=a.kv(u.name);for(let p of u.items)await l.put(p.key,p.value)}}finally{await a.close()}let c=await Ai(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await tn(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await Ii(this.path,i),await Ii(o,this.path),await tn(i,{force:!0})}catch(u){throw!vl(this.path)&&vl(i)&&await Ii(i,this.path),await tn(o,{force:!0}),u}finally{this.db=await er(`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===U){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:ss(),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:U,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(It(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(dt(t));if(!en(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 or={};F(or,{DEFAULT_RSP_BYTE_BUDGET:()=>Ee,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Se,DEFAULT_RSP_TTL_DAYS:()=>Re,RSP_ELISION_COLLECTION:()=>U,RspElisionStore:()=>pt,ensureReddbBinaryFromWarmCache:()=>ls,storageClassForCommand:()=>Xe});var Qe=y(()=>{"use strict";ts();Pi();Tl()});var Li,Di,Ni,se,q,de,Me,rn,ds=y(()=>{"use strict";Li="rsp-telemetry.spool.toonl",Di="rsp-telemetry.spool.jsonl",Ni="rsp-telemetry.spool.corrections.toonl",se="rsp_accounting_events_v1",q="rsp_decisions_v1",de="rsp_telemetry_invocations_v1",Me="rsp_telemetry_degradations_v1",rn="rsp_telemetry_index_v1"});function ir(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function pe(e){return ft(e)??0}function ft(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var $i=y(()=>{"use strict"});import{randomUUID as Bi,createHash as vb}from"node:crypto";import{appendFileSync as Al,existsSync as Tb,mkdirSync as Ll}from"node:fs";import{mkdir as Dl,readdir as Cb,readFile as Nl,rename as Ob,rm as $l,writeFile as ji}from"node:fs/promises";import{basename as Mi,dirname as nn,join as ar,resolve as Cl}from"node:path";function fs(e){if(!e)return null;let t=Cl(e);for(;;){if(Tb(ar(t,".red")))return t;let r=Cl(ar(t,".."));if(r===t)break;t=r}return null}function Ze(e){return ar(Y(e),Li)}function ms(e){return ar(Y(e),Di)}function Hi(e){return ar(Y(e),Ni)}async function et(e,t){mt(e,t)}function mt(e,t){try{let r=fs(e);if(!r)return;let n=Ze(r);Ll(nn(n),{recursive:!0}),Al(n,Nb({spool_id:Bi(),event:Ib(t)}),{encoding:"utf8",mode:384})}catch{}}function Ib(e){return Ol(Ol(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Ol(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=Pb)return e;let o={...e};return delete o[t],pe(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function Ab(e){let t=fs(e);if(!t)return[];let r=Ze(t);await Dl(nn(r),{recursive:!0}).catch(()=>{});let n=await jl(t),s=[...await Fl(t),...await Mb(n)];return await Promise.all(n.map(o=>$l(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Gi(e,t){let r=fs(e);if(!r)return;let n=Ze(r);await Dl(nn(n),{recursive:!0}).catch(()=>{}),await $b(r);for(let s of await Lb(r))await Pl(r,s,t);for(let s of await Fl(r))await Ml(r,s,t,!0);for(let s of await jl(r))await Pl(r,s,t)}async function Lb(e){let t=[Ze(e),ms(e)],r=nn(t[0]);return(await Cb(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Mi(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Mi(c)}.`));if(!o)return!1;let i=`${Mi(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Db(a))}).sort().map(s=>ar(r,s))}function Db(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Pl(e,t,r){try{let n=await Bl(t);for(let s of Hl(n))await Ml(e,s,r,!1)}finally{await $l(t,{force:!0})}}async function Ml(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Il(e,{correction_id:Bi(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Il(e,{correction_id:Bi(),target_spool_id:t.spool_id,action:"retry",created_at:new Date().toISOString(),event_json:t.event?JSON.stringify(t.event):void 0})}async function Bl(e){let t="";for(let r=0;r<5;r++){let n=await Nl(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!ir(t)||t.collection!==se&&t.collection!==q&&t.collection!==de&&t.collection!==Me?null:t}catch{return null}}function Nb(e){return it().push(Fb(e))}function Il(e,t){try{let r=fs(e);if(!r)return;let n=Hi(r);Ll(nn(n),{recursive:!0});let s=it();Al(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 jl(e){let t=[Ze(e),ms(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await Ob(n,s),await ji(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function $b(e){await Promise.all([ji(Ze(e),"",{flag:"a"}),ji(ms(e),"",{flag:"a"})]).catch(()=>{})}async function Mb(e){let t=[];for(let r of e)t.push(...Hl(await Bl(r)));return t}async function Fl(e){let t=await Nl(Hi(e),"utf8").catch(()=>""),r=new Map;for(let n of Bb(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 Hl(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(ir(o)){let i=cr(JSON.stringify(o));t.push(i?{spool_id:ps(JSON.stringify(o)),event:i}:{spool_id:ps(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:ps(s),raw_line:s});continue}try{for(let o of ot(`${r}
|
|
45
45
|
${s}
|
|
46
|
-
`))
|
|
46
|
+
`))Fi(o)&&Hb(o)&&t.push({spool_id:o.spool_id,event:Gl(o)})}catch{s.startsWith("{")&&t.push({spool_id:ps(s),raw_line:s})}}}return t}function Bb(e){return jb(e).map(Gb).filter(t=>t!==null)}function jb(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);Fi(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of ot(`${r}
|
|
47
47
|
${s}
|
|
48
|
-
`))Oo(i)&&t.push(i)}catch{}}}return t}function cs(e){return`legacy:${Ry("sha256").update(e).digest("hex").slice(0,24)}`}function Ny(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 hl(e){let{spool_id:t,...r}=e;return ir(JSON.stringify(r))}function Ly(e){return typeof e.spool_id=="string"&&hl(e)!==null}function By(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 Oo(e){return nr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var ky,yl=w(()=>{"use strict";Ae();K();us();xo();ky=64*1024});async function ps(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,i=await _l(e,s),o=(await Xr(e,W)).filter(S=>ar(S)>=s),a=i.filter(S=>C(S.event_type)!=="show"&&C(S.degradation_reason)===""),u=i.filter(S=>C(S.event_type)==="show"),c=i.filter(S=>C(S.degradation_reason)!==""),l=0,f=0,d=0,p=0,h=!1,m=new Map,g=new Map,y=[],b=0,x=0,v=0;for(let S of a){S.elided===!0&&l++;let D=de(S.raw_bytes),Ue=de(S.emitted_bytes),_t=Math.max(0,D-Ue),Jt=ur(S,"raw"),_=ur(S,"emitted"),T=Math.max(0,Jt.tokens-_.tokens);h||=(S.estimated===!0||Jt.estimated||_.estimated)&&T>0,f+=D,d+=Ue,p+=T;let Rt=Ct(S).slice(0,10);Rt&&m.set(Rt,(m.get(Rt)??0)+T);let St=C(S.command)||"unknown",me=g.get(St)??{command:St,invocations:0,bytes_saved:0,tokens_saved:0};me.invocations++,me.bytes_saved+=_t,me.tokens_saved+=T,g.set(St,me);let ge=ct(S.wrapper_ms);ge!=null&&y.push(ge),b+=de(S.store_open_count);let Ut=ct(S.store_elapsed_ms);Ut!=null&&(x+=Ut,v++)}let P=new Map,B=new Map,pe=[],Oe=null;for(let S of c){let D=C(S.degradation_reason)||C(S.reason)||"unknown",Ue=C(S.wrapper_family)||fs(C(S.command));P.set(D,(P.get(D)??0)+1),B.set(Ue,(B.get(Ue)??0)+1);let _t=Ct(S);pe.push({timestamp:_t,family:Ue,command:C(S.command)||"unknown",reason:D,exit_code:ct(S.wrapper_exit_code),stderr_head:C(S.stderr_head)||null}),(!Oe||_t>Oe.timestamp)&&(Oe={timestamp:_t,reason:D,command:C(S.command)||"unknown"})}let ee=a.length+c.length,rt=u.filter(S=>S.hit===!0).length,te=Yi(p,h),vr=My(o);return{window_days:n,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:f,emitted_bytes:d,bytes_saved:Math.max(0,f-d),tokens_saved:p,tokens_saved_estimated:te.tokens_saved_estimated,token_estimate_range_pct:te.token_estimate_range_pct,tokens_saved_low:te.tokens_saved_low,tokens_saved_high:te.tokens_saved_high,dollars_saved_estimate_usd:te.dollars_saved_estimate_usd,dollars_saved_low_usd:te.dollars_saved_low_usd,dollars_saved_high_usd:te.dollars_saved_high_usd,pricing_model_family:te.pricing_model_family,pricing_input_usd_per_million_tokens:te.pricing_input_usd_per_million_tokens,pricing_note:te.pricing_note,daily_tokens_saved:[...m.entries()].sort(([S],[D])=>S.localeCompare(D)).map(([S,D])=>({date:S,tokens_saved:D})),top_commands:[...g.values()].sort((S,D)=>D.bytes_saved-S.bytes_saved||D.tokens_saved-S.tokens_saved||S.command.localeCompare(D.command))},health:{degradations:c.length,degradation_rate:ee===0?0:c.length/ee,show_total:u.length,show_hits:rt,show_misses:Math.max(0,u.length-rt),show_hit_rate:u.length===0?0:Q(rt/u.length),by_reason:[...P.entries()].sort((S,D)=>D[1]-S[1]||S[0].localeCompare(D[0])).map(([S,D])=>({reason:S,count:D})),by_family:[...B.entries()].sort((S,D)=>D[1]-S[1]||S[0].localeCompare(D[0])).map(([S,D])=>({family:S,count:D})),recent_failures:pe.sort((S,D)=>D.timestamp.localeCompare(S.timestamp)).slice(0,20),most_recent:Oe},latency:{wrapper_ms_p50:or(y,.5),wrapper_ms_p95:or(y,.95),store_open_count_sum:b,store_elapsed_ms_sum:Q(x),store_elapsed_ms_avg:v===0?null:Q(x/v)},decisions:vr}}function My(e){let t=0,r=0,n=0,s=0,i=new Map;for(let o of e){let a=C(o.decision);if(a==="contributed"?t++:a==="failed-open"?n++:r++,o.quota_free===!0&&(s+=Math.max(1,de(o.saved_units))),a!=="contributed"){let u=C(o.reason)||"unknown";i.set(u,(i.get(u)??0)+1)}}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Q(t/e.length),top_pass_reasons:[...i.entries()].sort((o,a)=>a[1]-o[1]||o[0].localeCompare(a[0])).map(([o,a])=>({reason:o,count:a}))}}async function Io(e,t,r=new Date){let s=(await Xr(e,ne)).filter(i=>ar(i)<=r.getTime()||Ct(i)==="");return{records:s.length,bytes:s.reduce((i,o)=>i+Buffer.byteLength(JSON.stringify(o),"utf8"),0),oldest:s.reduce((i,o)=>{let a=Ct(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:Vy(s)}}async function Do(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),i=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),o=Date.parse(i),a=await _l(e,o),u=a.filter(_=>C(_.event_type)!=="show"&&C(_.event_type)!=="control_holdout"&&_.control_holdout!==!0&&C(_.degradation_reason)===""),c=a.filter(_=>C(_.event_type)==="control_holdout"||_.control_holdout===!0),l=a.filter(_=>C(_.event_type)==="show"),f=a.filter(_=>C(_.degradation_reason)!==""),d=[...u,...f].map(ar).filter(_=>Number.isFinite(_)&&_>0),p=d.length===0?null:Math.min(...d),h=p==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-p)/rb()))),m=[],g=new Map,y=new Map,b=new Map,x=new Map,v=new Map,P=new Map,B=0,pe=!1,Oe=0,ee=null,rt=0,te=0;for(let _ of u){let T=Ct(_),Rt=T.slice(0,10),St=T.slice(0,16),me=fs(C(_.command)),ge=Math.max(0,ur(_,"raw").tokens-ur(_,"emitted").tokens);B+=ge,pe||=_.estimated===!0&&ge>0;let Ut=Math.max(0,de(_.raw_bytes)-de(_.emitted_bytes)),ai=ct(_.wrapper_ms);if(ai!=null){m.push(ai);let uu=g.get(me)??[];uu.push(ai),g.set(me,uu)}Rt&&y.set(Rt,(y.get(Rt)??0)+1),St&&b.set(St,(b.get(St)??0)+1);let ui=Qy(T);ui&&x.set(ui,(x.get(ui)??0)+1);let ci=eb(T);ci&&v.set(ci,(v.get(ci)??0)+ge);let In=P.get(me)??{command_family:me,invocations:0,tokens_saved:0,bytes_saved:0};In.invocations++,In.tokens_saved+=ge,In.bytes_saved+=Ut,P.set(me,In),_.elided===!0&&Oe++,(_.store_open_count!=null||_.store_elapsed_ms!=null)&&(rt++,de(_.store_open_count)>0&&te++),ge>0&&(!ee||ge>ee.tokens_saved||ge===ee.tokens_saved&&Ut>ee.bytes_saved)&&(ee={timestamp:T,command_family:me,tokens_saved:ge,bytes_saved:Ut})}let vr=f.map(_=>({timestamp:Ct(_),command_family:fs(C(_.command)),reason:C(_.degradation_reason)||C(_.reason)||"unknown"})).sort((_,T)=>_.timestamp.localeCompare(T.timestamp)),S=new Map;for(let _ of vr)S.set(_.reason,(S.get(_.reason)??0)+1);let D=Jy(vr),Ue=Fy(l),_t=Wy([...P.values()],Ue,D),Jt=[...b.entries()].sort((_,T)=>T[1]-_[1]||_[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:h,since:i,until:s,label:`window: ${n}d, data: ${h}d`,empty:u.length===0&&f.length===0,invocations:u.length,degradations:f.length},latency:{global:wl(m),by_command_family:[...g.entries()].sort((_,T)=>T[1].length-_[1].length||_[0].localeCompare(T[0])).map(([_,T])=>({command_family:_,count:T.length,...wl(T)}))},throughput:{requests_per_day:[...y.entries()].sort(([_],[T])=>_.localeCompare(T)).map(([_,T])=>({date:_,requests:T})),active_minute_avg:b.size===0?null:Q([...b.values()].reduce((_,T)=>_+T,0)/b.size),peak_minute:Jt?{minute:Jt[0],requests:Jt[1]}:null,hour_weekday_heatmap:Zy(x)},savings:{tokens:Yi(B,pe),measured_control_holdout:jy(u,c),weekly_tokens_saved:tb(v),elision_rate:u.length===0?0:Q(Oe/u.length),top_commands_by_tokens_saved:[...P.values()].sort((_,T)=>T.tokens_saved-_.tokens_saved||T.bytes_saved-_.bytes_saved||_.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...P.values()].sort((_,T)=>T.invocations-_.invocations||T.tokens_saved-_.tokens_saved||_.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:ee},health:{degradation_timeline:vr,degradations_by_reason:[...S.entries()].sort((_,T)=>T[1]-_[1]||_[0].localeCompare(T[0])).map(([_,T])=>({reason:_,count:T})),cold_boots:rt===0?null:te,warm_hits:rt===0?null:Math.max(0,rt-te)},mining:{recovery_usage_by_family:Ue,degradation_clusters:D,threshold_tuning_suggestions:_t}}}async function _l(e,t){let r=(await Xr(e,ne)).filter(o=>ar(o)>=t),n=r.some(o=>C(o.event_type)!=="show"||C(o.degradation_reason)!==""),s=(await Xr(e,le)).filter(o=>ar(o)>=t).filter(o=>!n&&o.accounting_recorded!==!0).map(o=>({...o,event_type:C(o.event_type)||"invocation"})),i=(await Xr(e,Le)).filter(o=>ar(o)>=t).filter(o=>!n&&o.accounting_recorded!==!0).map(o=>({...o,event_type:"invocation",degradation_reason:C(o.reason)||"unknown"}));return[...r,...s,...i]}function ur(e,t){let r=ct(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=de(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function jy(e,t){let r=qy(t.map(a=>ct(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(bl).filter(a=>a!=null),s=t.map(bl).filter(a=>a!=null),i=n.length>0?n:s,o=i.length===0?null:Q(Hy(i));return{enabled:!0,holdout_share:Q(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:Gy(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function bl(e){let t=ur(e,"raw").tokens;if(t<=0)return null;let r=ur(e,"emitted").tokens;return Math.max(0,t-r)/t}function Gy(e,t){if(e.length<=1)return{low:Q(Math.max(0,t)),high:Q(Math.min(1,t))};let r=e.reduce((s,i)=>s+(i-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:Q(Math.max(0,t-n)),high:Q(Math.min(1,t+n))}}function Fy(e){let t=new Map;for(let r of e){let n=fs(C(r.recovered_command)||C(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:Q(r.show_hits/r.show_total)}))}function Jy(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:Uy(r)}))}function Uy(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 Wy(e,t,r){let n=[];for(let s of t.filter(i=>i.show_total>0))n.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of r.filter(i=>i.count>1))n.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(i=>i.invocations>0&&i.tokens_saved===0))n.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return n.slice(0,10)}function Hy(e){return e.reduce((t,r)=>t+r,0)/e.length}function qy(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function Vy(e){let t=zy();for(let r of e){if(C(r.event_type)==="show"||C(r.degradation_reason)!==""||r.elided!==!0)continue;let n=Ky(r.storage_class)??Ye(C(r.command));t[n].records+=1;let s=de(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function Ky(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function zy(){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 Xr(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=>Yy(n.value)).filter(n=>nr(n))}function Yy(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function ar(e){let t=Date.parse(Ct(e));return Number.isFinite(t)?t:0}function Ct(e){return C(e.created_at)||C(e.ts)||""}function C(e){return typeof e=="string"?e:""}function or(e,t){if(e.length===0)return null;let r=[...e].sort((s,i)=>s-i),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return Q(r[n])}function wl(e){return{wrapper_ms_p50:or(e,.5),wrapper_ms_p90:or(e,.9),wrapper_ms_p95:or(e,.95),wrapper_ms_p99:or(e,.99)}}function Q(e){return Math.round(e*100)/100}function fs(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function Qy(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Xy(t.getUTCDay())}:${t.getUTCHours()}`:null}function Zy(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 Xy(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function eb(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 tb(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Q((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function rb(){return 24*60*60*1e3}var Rl=w(()=>{"use strict";Qe();Qi();us();xo()});var en={};M(en,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ne,RSP_DECISIONS_COLLECTION:()=>W,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Le,RSP_TELEMETRY_INDEX_COLLECTION:()=>Qr,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>le,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>So,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Eo,RSP_TELEMETRY_SPOOL_FILE:()=>Ro,appendTelemetryEvent:()=>Xe,appendTelemetryEventSync:()=>lt,drainTelemetrySpool:()=>Co,parseTelemetryEvent:()=>ir,readAccountingLaneStats:()=>Io,readTelemetryGainsReport:()=>Do,readTelemetryStats:()=>ps,takeTelemetrySpool:()=>Ty,telemetryLegacySpoolPath:()=>ds,telemetrySpoolCorrectionsPath:()=>Po,telemetrySpoolPath:()=>Ze});var ke=w(()=>{"use strict";us();yl();Rl()});function Fo(e){return e==="success"?0:e==="failure"?1:2}function Jo(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function et(e,t,r){return{status:e,exitCode:Fo(e),summary:t,...r?{details:r}:{}}}function H(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function lr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var El,xl,kl,jo,vl,Tl,Ol,Pl,Go,It=w(()=>{"use strict";El="rsp.wait.result",xl="rsp.wait.registry",kl="rsp.wait.list",jo={cmd:18e5,pr:27e5,run:27e5,release:72e5},vl=16*1024,Tl=1e4,Ol=2e3,Pl=6e4,Go={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 ub,readFile as cb}from"node:fs/promises";async function dr(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await hs(r),s=[r,...n];if(s.every(u=>!Dt(u)))return{cleaned:!0,escalation:"none",survivors:[]};if(Cl(e,"SIGTERM"),gs(n,"SIGTERM"),await Il(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let i=[...new Set([...s,...await hs(r)])];Cl(e,"SIGKILL"),gs(i,"SIGKILL");let o=Math.max(1e3,t);await lb(e,o);let a=await Il(i,o);return{cleaned:a,escalation:"kill",survivors:a?[]:i.filter(Dt)}}function Cl(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 gs(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function lb(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 Il(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Dt(n)))return!0;await db(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Dt(n))}async function hs(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await ub("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let i=Number(s),o=await Dl(i);if(!o)continue;let a=Number(o[1]);if(!Number.isSafeInteger(a))continue;let u=t.get(a)??[];u.push(i),t.set(a,u)}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 tn(e){return(await Dl(e))?.[19]}async function ys(e,t){if(!Dt(e))return!1;if(!t)return!0;let r=await tn(e);return r===void 0?process.platform!=="linux":r===t}function Dt(e){try{return process.kill(e,0),!0}catch{return!1}}async function Dl(e){if(process.platform!=="linux")return null;try{let t=await cb(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function db(e){await new Promise(t=>setTimeout(t,e))}var dt=w(()=>{"use strict"});import{constants as fb}from"node:os";async function Al(e){let t=e[1],r={timeoutMs:jo.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:Tl,terminateGraceMs:Ol,probeTimeoutMs:Pl,format:"toon",captureBytes:vl},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=jo[t]);let s=e.indexOf("--"),i=s>=0?s:e.length;for(let o=2;o<i;o++){let a=e[o];a==="--timeout"?r.timeoutMs=rn(e[++o]??""):a==="--reason"?r.reason=e[++o]??"":a==="--signal-pid"?r.signalPid=Number(e[++o]):a==="--signal"?r.signal=gb(e[++o]??""):a==="--notify-cmd"?r.notifyCmd=e[++o]??"":a==="--notify-timeout"?r.notifyTimeoutMs=rn(e[++o]??""):a==="--terminate-grace"?r.terminateGraceMs=rn(e[++o]??""):a==="--probe-timeout"?r.probeTimeoutMs=rn(e[++o]??""):a==="--result-file"?r.resultFile=e[++o]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=mb(e[++o]??"","capture bytes"):t==="run"&&a==="--branch"?n.branch=e[++o]??"":t==="run"&&a==="--latest"?n.latest=!0:t==="release"&&a==="--tag"?n.tagGlob=e[++o]??"":!a.startsWith("--")&&!n.target&&(n.target=a)}return await pb(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function pb(e){if(!(e.signal in fb.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(!Dt(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await tn(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function rn(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 nn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return rn(n)}catch{return t}}function mb(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function gb(e){return e.startsWith("SIG")?e:`SIG${e}`}var $l=w(()=>{"use strict";It();dt()});import{existsSync as Uo,readFileSync as hb,statSync as yb}from"node:fs";import{basename as Nl,dirname as bs,isAbsolute as bb,join as Wo,resolve as sn}from"node:path";function _b(e,t=process.env){let r=sn(e);if(Ti.map(o=>t[o]).find(Boolean))return Wu({startDir:r,env:t,exists:Uo});let s=Sb(r),i=Rb(r,s);return i||(s??r)}function Rb(e,t){let r=e;for(;;){if(Uo(Wo(r,".red")))return r;if(t&&r===t)return null;let n=sn(r,"..");if(n===r)return null;r=n}}function fr(e,t=process.env){return Uu(_b(e,t))}function Ll(e,t=process.env){return Wo(fr(e,t),wb)}function Sb(e){let t=e;for(;;){let r=Wo(t,".git");if(Uo(r))return kb(r)?t:Eb(r)??t;let n=sn(t,"..");if(n===t)return null;t=n}}function Eb(e){let t=xb(e);if(!t)return null;let r=bs(t),n=bs(r);return Nl(r)!=="worktrees"||Nl(n)!==".git"?null:bs(n)}function xb(e){let t;try{t=hb(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return bb(n)?sn(n):sn(bs(e),n)}function kb(e){try{return yb(e).isDirectory()}catch{return!1}}var wb,Ho=w(()=>{"use strict";Ae();wb="spool"});import{randomUUID as vb}from"node:crypto";import{existsSync as Tb}from"node:fs";import{mkdir as Ob,readdir as Pb,readFile as Cb,rename as Ib,rm as qo,writeFile as Db}from"node:fs/promises";import{dirname as Ab,join as Ml}from"node:path";function jl(e,t,r=process.env){return Ml(fr(e,r),`${t}${$b}`)}async function pr(e,t){await Vo(e,`${j(t)}
|
|
49
|
-
`)}async function
|
|
50
|
-
`:`${
|
|
51
|
-
`}var
|
|
52
|
-
`),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]),
|
|
48
|
+
`))Fi(o)&&t.push(o)}catch{}}}return t}function ps(e){return`legacy:${vb("sha256").update(e).digest("hex").slice(0,24)}`}function Fb(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 Gl(e){let{spool_id:t,...r}=e;return cr(JSON.stringify(r))}function Hb(e){return typeof e.spool_id=="string"&&Gl(e)!==null}function Gb(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 Fi(e){return ir(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var Pb,Wl=y(()=>{"use strict";_e();D();ds();$i();Pb=64*1024});async function hs(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await ql(e,s),i=(await sn(e,q)).filter(R=>lr(R)>=s),a=o.filter(R=>P(R.event_type)!=="show"&&P(R.degradation_reason)===""),c=o.filter(R=>P(R.event_type)==="show"),u=o.filter(R=>P(R.degradation_reason)!==""),l=0,p=0,d=0,f=0,h=!1,m=new Map,g=new Map,b=[],w=0,E=0,v=0;for(let R of a){R.elided===!0&&l++;let A=pe(R.raw_bytes),Ue=pe(R.emitted_bytes),St=Math.max(0,A-Ue),Jt=dr(R,"raw"),_=dr(R,"emitted"),C=Math.max(0,Jt.tokens-_.tokens);h||=(R.estimated===!0||Jt.estimated||_.estimated)&&C>0,p+=A,d+=Ue,f+=C;let Et=Lt(R).slice(0,10);Et&&m.set(Et,(m.get(Et)??0)+C);let xt=P(R.command)||"unknown",ge=g.get(xt)??{command:xt,invocations:0,bytes_saved:0,tokens_saved:0};ge.invocations++,ge.bytes_saved+=St,ge.tokens_saved+=C,g.set(xt,ge);let he=ft(R.wrapper_ms);he!=null&&b.push(he),w+=pe(R.store_open_count);let qt=ft(R.store_elapsed_ms);qt!=null&&(E+=qt,v++)}let O=new Map,j=new Map,me=[],Pe=null;for(let R of u){let A=P(R.degradation_reason)||P(R.reason)||"unknown",Ue=P(R.wrapper_family)||gs(P(R.command));O.set(A,(O.get(A)??0)+1),j.set(Ue,(j.get(Ue)??0)+1);let St=Lt(R);me.push({timestamp:St,family:Ue,command:P(R.command)||"unknown",reason:A,exit_code:ft(R.wrapper_exit_code),stderr_head:P(R.stderr_head)||null}),(!Pe||St>Pe.timestamp)&&(Pe={timestamp:St,reason:A,command:P(R.command)||"unknown"})}let te=a.length+u.length,st=c.filter(R=>R.hit===!0).length,re=ui(f,h),Ir=Wb(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:p,emitted_bytes:d,bytes_saved:Math.max(0,p-d),tokens_saved:f,tokens_saved_estimated:re.tokens_saved_estimated,token_estimate_range_pct:re.token_estimate_range_pct,tokens_saved_low:re.tokens_saved_low,tokens_saved_high:re.tokens_saved_high,dollars_saved_estimate_usd:re.dollars_saved_estimate_usd,dollars_saved_low_usd:re.dollars_saved_low_usd,dollars_saved_high_usd:re.dollars_saved_high_usd,pricing_model_family:re.pricing_model_family,pricing_input_usd_per_million_tokens:re.pricing_input_usd_per_million_tokens,pricing_note:re.pricing_note,daily_tokens_saved:[...m.entries()].sort(([R],[A])=>R.localeCompare(A)).map(([R,A])=>({date:R,tokens_saved:A})),top_commands:[...g.values()].sort((R,A)=>A.bytes_saved-R.bytes_saved||A.tokens_saved-R.tokens_saved||R.command.localeCompare(A.command))},health:{degradations:u.length,degradation_rate:te===0?0:u.length/te,show_total:c.length,show_hits:st,show_misses:Math.max(0,c.length-st),show_hit_rate:c.length===0?0:Q(st/c.length),by_reason:[...O.entries()].sort((R,A)=>A[1]-R[1]||R[0].localeCompare(A[0])).map(([R,A])=>({reason:R,count:A})),by_family:[...j.entries()].sort((R,A)=>A[1]-R[1]||R[0].localeCompare(A[0])).map(([R,A])=>({family:R,count:A})),recent_failures:me.sort((R,A)=>A.timestamp.localeCompare(R.timestamp)).slice(0,20),most_recent:Pe},latency:{wrapper_ms_p50:ur(b,.5),wrapper_ms_p95:ur(b,.95),store_open_count_sum:w,store_elapsed_ms_sum:Q(E),store_elapsed_ms_avg:v===0?null:Q(E/v)},decisions:Ir}}function Wb(e){let t=0,r=0,n=0,s=0,o=new Map;for(let i of e){let a=P(i.decision);if(a==="contributed"?t++:a==="failed-open"?n++:r++,i.quota_free===!0&&(s+=Math.max(1,pe(i.saved_units))),a!=="contributed"){let c=P(i.reason)||"unknown";o.set(c,(o.get(c)??0)+1)}}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Q(t/e.length),top_pass_reasons:[...o.entries()].sort((i,a)=>a[1]-i[1]||i[0].localeCompare(a[0])).map(([i,a])=>({reason:i,count:a}))}}async function Wi(e,t,r=new Date){let s=(await sn(e,se)).filter(o=>lr(o)<=r.getTime()||Lt(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=Lt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:Qb(s)}}async function Ui(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 ql(e,i),c=a.filter(_=>P(_.event_type)!=="show"&&P(_.event_type)!=="control_holdout"&&_.control_holdout!==!0&&P(_.degradation_reason)===""),u=a.filter(_=>P(_.event_type)==="control_holdout"||_.control_holdout===!0),l=a.filter(_=>P(_.event_type)==="show"),p=a.filter(_=>P(_.degradation_reason)!==""),d=[...c,...p].map(lr).filter(_=>Number.isFinite(_)&&_>0),f=d.length===0?null:Math.min(...d),h=f==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-f)/aw()))),m=[],g=new Map,b=new Map,w=new Map,E=new Map,v=new Map,O=new Map,j=0,me=!1,Pe=0,te=null,st=0,re=0;for(let _ of c){let C=Lt(_),Et=C.slice(0,10),xt=C.slice(0,16),ge=gs(P(_.command)),he=Math.max(0,dr(_,"raw").tokens-dr(_,"emitted").tokens);j+=he,me||=_.estimated===!0&&he>0;let qt=Math.max(0,pe(_.raw_bytes)-pe(_.emitted_bytes)),_o=ft(_.wrapper_ms);if(_o!=null){m.push(_o);let Dc=g.get(ge)??[];Dc.push(_o),g.set(ge,Dc)}Et&&b.set(Et,(b.get(Et)??0)+1),xt&&w.set(xt,(w.get(xt)??0)+1);let ko=rw(C);ko&&E.set(ko,(E.get(ko)??0)+1);let Ro=ow(C);Ro&&v.set(Ro,(v.get(Ro)??0)+he);let $n=O.get(ge)??{command_family:ge,invocations:0,tokens_saved:0,bytes_saved:0};$n.invocations++,$n.tokens_saved+=he,$n.bytes_saved+=qt,O.set(ge,$n),_.elided===!0&&Pe++,(_.store_open_count!=null||_.store_elapsed_ms!=null)&&(st++,pe(_.store_open_count)>0&&re++),he>0&&(!te||he>te.tokens_saved||he===te.tokens_saved&&qt>te.bytes_saved)&&(te={timestamp:C,command_family:ge,tokens_saved:he,bytes_saved:qt})}let Ir=p.map(_=>({timestamp:Lt(_),command_family:gs(P(_.command)),reason:P(_.degradation_reason)||P(_.reason)||"unknown"})).sort((_,C)=>_.timestamp.localeCompare(C.timestamp)),R=new Map;for(let _ of Ir)R.set(_.reason,(R.get(_.reason)??0)+1);let A=Vb(Ir),Ue=qb(l),St=zb([...O.values()],Ue,A),Jt=[...w.entries()].sort((_,C)=>C[1]-_[1]||_[0].localeCompare(C[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:h,since:o,until:s,label:`window: ${n}d, data: ${h}d`,empty:c.length===0&&p.length===0,invocations:c.length,degradations:p.length},latency:{global:Jl(m),by_command_family:[...g.entries()].sort((_,C)=>C[1].length-_[1].length||_[0].localeCompare(C[0])).map(([_,C])=>({command_family:_,count:C.length,...Jl(C)}))},throughput:{requests_per_day:[...b.entries()].sort(([_],[C])=>_.localeCompare(C)).map(([_,C])=>({date:_,requests:C})),active_minute_avg:w.size===0?null:Q([...w.values()].reduce((_,C)=>_+C,0)/w.size),peak_minute:Jt?{minute:Jt[0],requests:Jt[1]}:null,hour_weekday_heatmap:nw(E)},savings:{tokens:ui(j,me),measured_control_holdout:Ub(c,u),weekly_tokens_saved:iw(v),elision_rate:c.length===0?0:Q(Pe/c.length),top_commands_by_tokens_saved:[...O.values()].sort((_,C)=>C.tokens_saved-_.tokens_saved||C.bytes_saved-_.bytes_saved||_.command_family.localeCompare(C.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((_,C)=>C.invocations-_.invocations||C.tokens_saved-_.tokens_saved||_.command_family.localeCompare(C.command_family)).slice(0,10),single_biggest_elision:te},health:{degradation_timeline:Ir,degradations_by_reason:[...R.entries()].sort((_,C)=>C[1]-_[1]||_[0].localeCompare(C[0])).map(([_,C])=>({reason:_,count:C})),cold_boots:st===0?null:re,warm_hits:st===0?null:Math.max(0,st-re)},mining:{recovery_usage_by_family:Ue,degradation_clusters:A,threshold_tuning_suggestions:St}}}async function ql(e,t){let r=(await sn(e,se)).filter(i=>lr(i)>=t),n=r.some(i=>P(i.event_type)!=="show"||P(i.degradation_reason)!==""),s=(await sn(e,de)).filter(i=>lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:P(i.event_type)||"invocation"})),o=(await sn(e,Me)).filter(i=>lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:P(i.reason)||"unknown"}));return[...r,...s,...o]}function dr(e,t){let r=ft(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=pe(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function Ub(e,t){let r=Xb(t.map(a=>ft(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(Ul).filter(a=>a!=null),s=t.map(Ul).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Q(Yb(o));return{enabled:!0,holdout_share:Q(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:Jb(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Ul(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 Jb(e,t){if(e.length<=1)return{low:Q(Math.max(0,t)),high:Q(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:Q(Math.max(0,t-n)),high:Q(Math.min(1,t+n))}}function qb(e){let t=new Map;for(let r of e){let n=gs(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:Q(r.show_hits/r.show_total)}))}function Vb(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:Kb(r)}))}function Kb(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 zb(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 Yb(e){return e.reduce((t,r)=>t+r,0)/e.length}function Xb(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function Qb(e){let t=ew();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=Zb(r.storage_class)??Xe(P(r.command));t[n].records+=1;let s=pe(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function Zb(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function ew(){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 sn(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=>tw(n.value)).filter(n=>ir(n))}function tw(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function lr(e){let t=Date.parse(Lt(e));return Number.isFinite(t)?t:0}function Lt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function ur(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 Q(r[n])}function Jl(e){return{wrapper_ms_p50:ur(e,.5),wrapper_ms_p90:ur(e,.9),wrapper_ms_p95:ur(e,.95),wrapper_ms_p99:ur(e,.99)}}function Q(e){return Math.round(e*100)/100}function gs(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function rw(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${sw(t.getUTCDay())}:${t.getUTCHours()}`:null}function nw(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 sw(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function ow(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 iw(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Q((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function aw(){return 24*60*60*1e3}var Vl=y(()=>{"use strict";Qe();li();ds();$i()});var on={};F(on,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>se,RSP_DECISIONS_COLLECTION:()=>q,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Me,RSP_TELEMETRY_INDEX_COLLECTION:()=>rn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>de,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Di,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ni,RSP_TELEMETRY_SPOOL_FILE:()=>Li,appendTelemetryEvent:()=>et,appendTelemetryEventSync:()=>mt,drainTelemetrySpool:()=>Gi,parseTelemetryEvent:()=>cr,readAccountingLaneStats:()=>Wi,readTelemetryGainsReport:()=>Ui,readTelemetryStats:()=>hs,takeTelemetrySpool:()=>Ab,telemetryLegacySpoolPath:()=>ms,telemetrySpoolCorrectionsPath:()=>Hi,telemetrySpoolPath:()=>Ze});var Te=y(()=>{"use strict";ds();Wl();Vl()});function Zi(e){return e==="success"?0:e==="failure"?1:2}function ea(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function tt(e,t,r){return{status:e,exitCode:Zi(e),summary:t,...r?{details:r}:{}}}function V(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function fr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var zl,Yl,Xl,Xi,Ql,Zl,ed,td,Qi,Dt=y(()=>{"use strict";zl="rsp.wait.result",Yl="rsp.wait.registry",Xl="rsp.wait.list",Xi={cmd:18e5,pr:27e5,run:27e5,release:72e5},Ql=16*1024,Zl=1e4,ed=2e3,td=6e4,Qi={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 fw,readFile as mw}from"node:fs/promises";async function mr(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await ws(r),s=[r,...n];if(s.every(c=>!Nt(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(rd(e,"SIGTERM"),bs(n,"SIGTERM"),await nd(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await ws(r)])];rd(e,"SIGKILL"),bs(o,"SIGKILL");let i=Math.max(1e3,t);await gw(e,i);let a=await nd(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Nt)}}function rd(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 bs(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function gw(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 nd(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Nt(n)))return!0;await hw(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Nt(n))}async function ws(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await fw("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await sd(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 an(e){return(await sd(e))?.[19]}async function gr(e,t){if(!Nt(e))return!1;if(!t)return!0;let r=await an(e);return r===void 0?process.platform!=="linux":r===t}function Nt(e){try{return process.kill(e,0),!0}catch{return!1}}async function sd(e){if(process.platform!=="linux")return null;try{let t=await mw(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function hw(e){await new Promise(t=>setTimeout(t,e))}var rt=y(()=>{"use strict"});import{constants as yw}from"node:os";async function od(e){let t=e[1],r={timeoutMs:Xi.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:Zl,terminateGraceMs:ed,probeTimeoutMs:td,format:"toon",captureBytes:Ql},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=Xi[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=cn(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=_w(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=cn(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=cn(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=cn(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=ww(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 bw(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function bw(e){if(!(e.signal in yw.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(!Nt(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await an(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function cn(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 un(e,t,r=process.env){let n=r[e];if(!n)return t;try{return cn(n)}catch{return t}}function ww(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function _w(e){return e.startsWith("SIG")?e:`SIG${e}`}var id=y(()=>{"use strict";Dt();rt()});import{existsSync as ta,readFileSync as kw,statSync as Rw}from"node:fs";import{basename as ad,dirname as _s,isAbsolute as Sw,join as cd,resolve as ln}from"node:path";function ks(e,t=process.env){let r=ln(e);if(Fo.map(i=>t[i]).find(Boolean))return hu({startDir:r,env:t,exists:ta});let s=xw(r),o=Ew(r,s);return o||(s??r)}function Ew(e,t){let r=e;for(;;){if(ta(cd(r,".red")))return r;if(t&&r===t)return null;let n=ln(r,"..");if(n===r)return null;r=n}}function xw(e){let t=e;for(;;){let r=cd(t,".git");if(ta(r))return Cw(r)?t:vw(r)??t;let n=ln(t,"..");if(n===t)return null;t=n}}function vw(e){let t=Tw(e);if(!t)return null;let r=_s(t),n=_s(r);return ad(r)!=="worktrees"||ad(n)!==".git"?null:_s(n)}function Tw(e){let t;try{t=kw(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return Sw(n)?ln(n):ln(_s(e),n)}function Cw(e){try{return Rw(e).isDirectory()}catch{return!1}}var ra=y(()=>{_e()});import{join as Ow}from"node:path";function Iw(e,t=process.env){return ks(e,t)}function hr(e,t=process.env){return gu(Iw(e,t))}function ud(e,t=process.env){return Ow(hr(e,t),Pw)}var Pw,na=y(()=>{"use strict";_e();ra();Pw="spool"});import{randomUUID as Aw}from"node:crypto";import{existsSync as Lw}from"node:fs";import{mkdir as Dw,readdir as Nw,readFile as $w,rename as Mw,rm as sa,writeFile as Bw}from"node:fs/promises";import{dirname as jw,join as dd}from"node:path";function pd(e,t,r=process.env){return dd(hr(e,r),`${t}${Fw}`)}async function yr(e,t){await oa(e,`${H(t)}
|
|
49
|
+
`)}async function Rs(e,t,r){t.status=r,await yr(e,t)}async function Ss(e,t=process.env){let r=hr(e,t);if(!Lw(r))return[];let n=await Nw(r).catch(()=>[]),s=[];for(let o of n.filter(i=>Hw.some(a=>i.endsWith(a)))){let i=dd(r,o),a=await Gw(i);if(!a){await sa(i,{force:!0});continue}if(!await Ww(a)){await sa(i,{force:!0});continue}s.push(a)}return s}async function Gw(e){let t;try{t=await $w(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Uw(r);return n&&Object.keys(n).length>0?n:null}async function Ww(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 gr(t,r)}function Uw(e){try{let t=N(e);if(ld(t))return t}catch{}try{let t=JSON.parse(e);if(ld(t))return t}catch{}return null}async function oa(e,t){await Dw(jw(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${Aw()}`;try{await Bw(r,t,"utf8"),await Mw(r,e)}finally{await sa(r,{force:!0})}}function ia(e){return{schema:Yl,version:1,...e}}function ld(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Fw,Hw,pn=y(()=>{"use strict";D();Ne();Dt();na();rt();Fw=".toon",Hw=[".toon",".json"]});function br(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){return br(e)?e:{}}function $t(e){return Array.isArray(e)?e.filter(br):[]}function K(e,t){let r=e[t];return typeof r=="string"?r:""}function wr(e,t){let r=e[t];return typeof r=="number"?r:0}function aa(e){let t=JSON.parse(e);if(!br(t))throw new Error("expected JSON object");return t}function Es(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var xs=y(()=>{"use strict"});import{spawn as Jw}from"node:child_process";import{resolve as qw}from"node:path";async function fd(e,t,r){let n=[];if(e.signalPid){let s=await Vw(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await Kw(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function Vw(e){let t=e.signalPid;if(!await gr(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:md(r),pid:t,signal:e.signal}}}async function Kw(e,t,r){let n=Be(t.wait),s=Be(t.verdict);return await zw(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?qw(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 zw(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=p=>{i||(i=!0,o(p))},u=Jw(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,mr(u,n).then(p=>c({error:`timed out after ${r}ms`,...p.cleaned?{}:{survivors:p.survivors}}))},r);u.once("error",p=>{clearTimeout(l),c({error:md(p)})}),u.once("close",(p,d)=>{clearTimeout(l),!a&&c(p===0?null:{error:`exited with ${d??p??"unknown"}`,status:p??null,signal:d??null})})})}function md(e){return e instanceof Error?e.message:String(e)}var gd=y(()=>{"use strict";xs();rt()});import{resolve as Yw}from"node:path";async function hd(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=Xw(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=fn(t,r,o,{status:"pending"},i);await mn(n.resultFile,a,n.format);let c=await fd(n,a,s),u=fn(t,r,o,c,i);return await mn(n.resultFile,u,n.format),{result:u,exitCode:yd(o,c)}}function yd(e,t){return t.status!=="success"||e.status==="running"?2:Zi(e.status)}function Xw(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 fn(e,t,r,n,s){return{schema:zl,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:yd(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function mn(e,t,r){e&&await oa(Yw(e),_r(t,r))}function _r(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
|
|
50
|
+
`:`${H(e)}
|
|
51
|
+
`}var bd=y(()=>{"use strict";Ne();Dt();pn();gd()});import{createWriteStream as Qw,mkdirSync as Zw}from"node:fs";import{readFile as e_,rm as t_}from"node:fs/promises";import{dirname as r_}from"node:path";import{join as wd}from"node:path";function _d(e,t,r){return{stdout:new vs(r,wd(e,`${t}.stdout.bin`)),stderr:new vs(r,wd(e,`${t}.stderr.bin`))}}function n_(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!s_(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function s_(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var vs,kd=y(()=>{"use strict";vs=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,...n_(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 e_(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{Zw(r_(this.spoolPath),{recursive:!0}),t=Qw(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 t_(this.spoolPath,{force:!0}).catch(()=>{})}}});function Rd(e,t=process.env){return{async mint(r,n){let s=xe(e,t),o=await pt.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget});try{return await o.mint(r,n)}finally{await o.close()}}}}var Sd=y(()=>{"use strict";ve();Qe()});import{spawn as o_}from"node:child_process";async function xd(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:V("missing command line")};let a=e.store??Rd(n),c=_d(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,p=!1,d=async b=>{l||(l=!0,i.removeEventListener("abort",m),await Rs(s,o,b.verdict.status).catch(()=>{}),u(b))},f=o_(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});f.stdout?.on("data",b=>c.stdout.write(Buffer.from(b))),f.stderr?.on("data",b=>c.stderr.write(Buffer.from(b)));let h=async(b,w)=>{if(l||p)return;p=!0,clearTimeout(g);let E=await mr(f,r.terminateGraceMs),v=await Ed(null,null,c,a,t);await d({verdict:{status:b,exitCode:2,summary:w,details:v},cleanupProven:E.cleaned,survivors:E.survivors})},m=()=>void h("indeterminate","command interrupted");i.addEventListener("abort",m,{once:!0});let g=setTimeout(()=>{h("timeout",`command timed out after ${vd(r.timeoutMs)}`)},r.timeoutMs);f.once("error",b=>{clearTimeout(g),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:b.message}})}),f.once("close",(b,w)=>{if(clearTimeout(g),l||p)return;let E=b===0;Ed(b,w,c,a,t).then(v=>d({verdict:{status:E?"success":"failure",exitCode:E?0:1,summary:E?"command exited successfully":`command exited with ${w??b??"unknown"}`,details:v}}))}),i.aborted&&m()})}async function Ts(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:i_(u,c,o.last_poll_at)};let l;try{l=await t()}catch(m){l=V(m instanceof Error?m.message:String(m))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=ca(l),await yr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Rs(s,o,l.status).catch(()=>{}),{verdict:l};let p=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),f=Math.min(p+d,Math.max(0,a-Date.now())),h=e.makeWakeSignal?.();await a_(f,i,h)}return await Rs(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${vd(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:ca(u)}:{attempts:c}}}}async function Ed(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 ca(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function i_(e,t,r){return V("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:ca(e)}:{}})}async function a_(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 vd(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var Td=y(()=>{"use strict";kd();Sd();Dt();rt();pn()});var Id={};F(Id,{readGhConditionalJson:()=>oe});import{spawn as c_}from"node:child_process";import{createHash as u_,randomUUID as l_}from"node:crypto";import{mkdir as d_,readFile as p_,rename as f_,writeFile as m_}from"node:fs/promises";import{dirname as g_,join as Cd}from"node:path";async function oe(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=b_(e.path,e.params),s=w_(n),o=await R_(r),i=o.entries[s],a=["api","--include","--method","GET",e.path];for(let[p,d]of Od(e.params))a.push("-f",`${p}=${String(d)}`);i?.etag&&a.push("-H",`If-None-Match: ${i.etag}`);let c=await __(a,t,e.env,e.signal),u=k_(c.stdout);if(u.statusCode===304&&!!i)return await ua(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:i.body,stderr:c.stderr,etag:i.etag,quotaFree:!0};if(u.statusCode>=200&&u.statusCode<300){let p=u.headers.get("etag");return p&&(o.entries[s]={key:s,request:n,etag:p,body:u.body,updated_at:new Date().toISOString()},await S_(r,o)),await ua(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:p??void 0,quotaFree:!1}}return await ua(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function Od(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function b_(e,t){return JSON.stringify({method:"GET",path:e,params:Od(t)})}function w_(e){return u_("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function __(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=p=>{o||(o=!0,n?.removeEventListener("abort",c),s(p))},a=c_("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=[],l=[];a.stdout.on("data",p=>u.push(Buffer.from(p))),a.stderr.on("data",p=>l.push(Buffer.from(p))),a.once("error",p=>i({status:1,stdout:"",stderr:p.message})),a.once("close",p=>{i({status:p??1,stdout:Buffer.concat(u).toString("utf8"),stderr:Buffer.concat(l).toString("utf8").trim()})})})}function k_(e){let t=e.replace(/\r\n/g,`
|
|
52
|
+
`),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(`
|
|
53
53
|
|
|
54
|
-
`,
|
|
55
|
-
`)){let l=
|
|
56
|
-
`,{encoding:"utf8",mode:384}),await
|
|
57
|
-
`),stdout:JSON.stringify({number:
|
|
58
|
-
`)}var
|
|
59
|
-
`))>=0;){let
|
|
60
|
-
`),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function
|
|
61
|
-
`;return{stdout:Buffer.from(`${
|
|
62
|
-
${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:
|
|
63
|
-
`)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),
|
|
64
|
-
`).filter(Boolean),n=r.find(
|
|
65
|
-
`),s=[],
|
|
66
|
-
`).filter(Boolean).map(
|
|
67
|
-
`)){let
|
|
68
|
-
`).length:0,files:h,summary:`${r?`${h.length}/${
|
|
69
|
-
`),detected:!0,lossy:!0,totalItems:s,keptItems:
|
|
54
|
+
`,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
|
|
55
|
+
`)){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 R_(e){for(let t of[Pd(e),E_(e)])try{let r=x_(await p_(t,"utf8"));if(v_(r))return r}catch{}return{version:1,entries:{}}}async function S_(e,t){let r=Pd(e);await d_(g_(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await m_(n,`${T(t)}
|
|
56
|
+
`,{encoding:"utf8",mode:384}),await f_(n,r)}function Pd(e){return Cd(Y(e),h_)}function E_(e){return Cd(Y(e),y_)}function x_(e){try{return JSON.parse(e)}catch{return N(e)}}async function ua(e,t,r){await et(e,{collection:q,id:l_(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:r?"gh-conditional-304":"gh-conditional-fetch",quota_free:r,saved_units:r?1:0})}function v_(e){return la(e)&&e.version===1&&la(e.entries)&&Object.values(e.entries).every(T_)}function T_(e){return la(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function la(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var h_,y_,Cs=y(()=>{"use strict";_e();D();Te();h_="gh-etag-cache.toon",y_="gh-etag-cache.json"});import{spawn as C_}from"node:child_process";async function gn(e,t){return await O_(t,async r=>{let n=await I_(e,t.cwd,r);return n||await P_(e,t.cwd,r)})}async function O_(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 P_(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=C_("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&ws(l).then(p=>bs(p,"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 I_(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await A_(e[2],t,r);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await oe({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=Be(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:wr(s,"database_id")||wr(s,"id"),status:K(s,"status").toUpperCase(),conclusion:K(s,"conclusion").toUpperCase(),workflowName:K(s,"workflow_name")||K(s,"name"),headBranch:K(s,"head_branch"),url:K(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Es(e,"--branch"),s=Es(e,"--limit")??"20",o=await oe({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=$t(Be(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:wr(a,"database_id")||wr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=Es(e,"--limit")??"20",s=await oe({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=$t(JSON.parse(s.stdout)).map(i=>({tagName:K(i,"tag_name"),publishedAt:K(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function A_(e,t,r){let n=await oe({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:r,command:`gh pr view ${e}`});if(n.status!==0)return n;let s=Be(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let o=K(Be(s.head),"sha"),[i,a]=o?await Promise.all([oe({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:r,command:`gh pr view ${e} status`}),oe({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?$t(Be(JSON.parse(i.stdout)).statuses):[],u=a.status===0?$t(Be(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
|
|
57
|
+
`),stdout:JSON.stringify({number:wr(s,"number"),state:K(s,"state").toUpperCase(),mergeable:L_(s),statusCheckRollup:[...c.map(l=>({conclusion:K(l,"state").toUpperCase()})),...u.map(l=>({status:K(l,"status").toUpperCase(),conclusion:K(l,"conclusion").toUpperCase()}))],url:K(s,"html_url")})}}function L_(e){let t=K(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var Ad=y(()=>{"use strict";Cs();xs();rt()});function Dd(e,t,r){let n=Date.now();return()=>D_(e,t,r,n)}async function D_(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return V("missing PR number");let s=await gn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return V(s.stderr||"gh pr view failed");let o=aa(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(N_),u=c.filter(p=>p==="failure").length,l=c.filter(p=>p==="pending").length;if(String(o.state)!=="OPEN")return tt("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return tt("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return tt("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return fr(`PR #${e} has ${l} pending checks`);if(i.length===0){let p=Date.now()-n;return a==="UNKNOWN"||p<r.emptyChecksGraceMs?fr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:p}):tt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?fr(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):tt("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function Nd(e,t){if(!e)return V("missing run id");let r=await gn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return V(r.stderr||"gh run view failed");let n=aa(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?fr(`run ${e} is ${s||"pending"}`):o==="success"?tt("success",`run ${e} succeeded`,Ld(n)):tt("failure",`run ${e} concluded ${o||"unknown"}`,Ld(n))}async function $d(e,t){let r=await gn(["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 br(s)&&s.databaseId!=null?String(s.databaseId):""}async function Md(e,t,r){let n=await gn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return V(n.stderr||"gh release list failed");let o=$t(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||$_(e,a))&&c>=t});return o?tt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):fr("no matching release is published yet")}function N_(e){let t=br(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 Ld(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 $_(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var Bd=y(()=>{"use strict";Dt();Ad();xs()});function hn(){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(`
|
|
58
|
+
`)}var da=y(()=>{"use strict"});var jd=y(()=>{"use strict";D()});var Fd=y(()=>{"use strict"});function M_(e){return Object.keys(e)}function kr(e){return{...e,fields:M_(e.fields)}}var Hd,Gd,Wd,B_,j_,F_,Ud,pa=y(()=>{"use strict";Hd="red.castle.lane.v1",Gd="red.castle.state.v1",Wd="red.castle.history.v1",B_="red.castle.validation.v2",j_="red.castle.envelope.v1",F_="red.castle.hitl-card.v1",Ud=[kr({schemaId:Hd,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}}),kr({schemaId:Gd,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}}),kr({schemaId:Wd,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}}),kr({schemaId:B_,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}}),kr({schemaId:j_,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}}),kr({schemaId:F_,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 HP,fa=y(()=>{"use strict";D();pa();HP=new Map(Ud.map(e=>[e.schemaId,new Set(e.fields)]))});var Jd=y(()=>{"use strict";Fd();fa()});var qd=y(()=>{"use strict"});var Os=y(()=>{"use strict"});var ma=y(()=>{"use strict";Os()});var Ps=y(()=>{"use strict"});import{appendFile as H_,mkdir as G_,readFile as W_}from"node:fs/promises";import{dirname as U_,join as J_}from"node:path";function ga(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function Vd(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:ga(t.at,"at"),singleton:ga(t.singleton,"singleton"),kind:ga(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function q_(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function V_(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function K_(e){return J_(e.castleStateRoot,"singleton-events.toonl")}function ha(e,t={}){let r=t.fs??{appendFile:H_,mkdir:G_,readFile:W_},n=t.clock??(()=>new Date().toISOString()),s=K_(e);return{path:s,async append(o){let i=Vd({at:o.at??n(),...o});return await r.mkdir(U_(s),{recursive:!0}),await r.appendFile(s,it().push(q_(i)),"utf8"),i},async read(o={}){V_(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=ot(i).map(Vd);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var ya=y(()=>{"use strict";D()});var Is=y(()=>{"use strict";D();Ps();ya()});var Kd=y(()=>{"use strict";Os();ma();Is()});var zd=y(()=>{"use strict"});var TI,Yd=y(()=>{"use strict";D();TI=24*60*60*1e3});var OI,PI,Xd=y(()=>{"use strict";OI=15*6e4,PI=30*6e4});var Qd=y(()=>{"use strict"});var Y_,X_,LI,DI,Zd=y(()=>{"use strict";Y_=["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"],X_={pre_worktree:["cargo","gradle"]},LI=Object.values(X_).flat(),DI=new Set(Y_)});var ep=y(()=>{"use strict"});var tp=y(()=>{"use strict";Is()});var rp=y(()=>{"use strict"});var np=y(()=>{"use strict";D()});var sp=y(()=>{"use strict";D()});var ba=y(()=>{"use strict"});var wa=y(()=>{"use strict"});import{resolve as J}from"node:path";function op(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"),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 ip=y(()=>{"use strict"});var ap=y(()=>{"use strict";Ps()});var cp=y(()=>{"use strict"});var up=y(()=>{"use strict";ba();wa()});import{mkdir as Q_,readFile as Z_,rename as ek,rm as tk,writeFile as rk}from"node:fs/promises";import{dirname as nk,join as sk}from"node:path";function ik(e){if(!ok.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function ak(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function ck(e){return e.code==="ENOENT"}function uk(e){return e.code==="EEXIST"}function lk(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 _a(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function As(e,t){return ik(t),sk(e.castleStateRoot,"singletons",t,"lease.toon")}function lp(e,t={}){let r=t.fs??{mkdir:Q_,readFile:Z_,rename:ek,rm:tk,writeFile:rk},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??ak;async function o(a){try{return lk(N(await r.readFile(a,"utf8")))}catch(c){if(ck(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,T(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(As(e,a))},async acquire(a,c){let u=As(e,a);await r.mkdir(nk(u),{recursive:!0});let l=!1;for(;;){let p=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:p,renewed_at:p};try{return await r.writeFile(u,T(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(h){if(!uk(h))throw h}let f=await o(u);if(f){if(_a(f,c))return{acquired:!0,reaped:l,lease:f};if(await s(f.pid))return{acquired:!1,lease:f};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=As(e,a),l=await o(u);if(!l||!_a(l,c))throw new Ls(a);let p={...l,renewed_at:n()};return await i(u,p),p},async release(a,c){let u=As(e,a),l=await o(u);if(!l)return!1;if(!_a(l,c))throw new Ls(a);return await r.rm(u,{force:!0}),!0}}}var Ls,ok,dp=y(()=>{"use strict";D();Ls=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},ok=/^[a-z0-9][a-z0-9._-]{0,63}$/});var ka=y(()=>{"use strict"});var pp=y(()=>{"use strict"});import{execFile as mk}from"node:child_process";import{promisify as gk}from"node:util";var fA,fp=y(()=>{"use strict";ka();fA=gk(mk)});var mp=y(()=>{"use strict";jd();Jd();qd();Os();Kd();zd();Yd();fa();Xd();Qd();Zd();ep();ma();tp();rp();np();Is();sp();pa();ba();wa();ip();ap();cp();up();Ps();ya();dp();ka();pp();fp()});import{EventEmitter as hk}from"node:events";import{spawn as yk}from"node:child_process";function Ns(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 $s(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var yn,Ra,bk,wk,_k,kk,Ds,Sa=y(()=>{yn="github-webhook",Ra="github.webhook.delivery";bk="pull_request,pull_request_review,check_run,check_suite,workflow_run",wk=3,_k=1e3,kk=/no extension matched|unknown command|command not found/i,Ds=class extends hk{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,_k).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Ns(c,n):$s(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=yk(r,["webhook","forward",`--events=${bk}`],{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(`
|
|
59
|
+
`))>=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");kk.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>=wk)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var Ms,gp=y(()=>{"use strict";Sa();Sa();rt();Ms=class extends Ds{constructor(t){super(t,mr)}}});import{EventEmitter as Rk}from"node:events";import{join as Sk}from"node:path";function xa(e){let t=ks(e.cwd),r=op(Sk(t,".red"));return new Ea({...e,leases:e.leases??lp(r),lane:e.lane??ha(r),makeForwarder:e.makeForwarder??((n,s)=>new Ms({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>gr(n.pid,n.start_time))})}var Ea,hp=y(()=>{"use strict";mp();gp();rt();ra();Ea=class extends Rk{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(yn).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"?Ns(a,n):$s(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===yn&&o.kind===Ra&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(yn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var va={};F(va,{listWaits:()=>Ss,renderWaitHelp:()=>hn,runWait:()=>vk});import{randomUUID as yp}from"node:crypto";import{mkdir as Ek,rm as xk}from"node:fs/promises";async function vk(e,t=process.cwd()){let r;try{r=await od(e)}catch(n){return await Ik(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(hn()),0;if(r.kind==="ls"){let n={schema:Xl,version:1,waits:await Ss(t)};return process.stdout.write(_r(n,r.options.format)),0}return ea(r.kind)?await Tk({...r,kind:r.kind},t):(process.stdout.write(hn()),2)}async function Tk(e,t){let r=e.kind,n=ia({id:yp(),kind:r,target:Pk(e),reason:e.options.reason,pid:process.pid,pid_start_time:await an(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Qi[r],status:"running",attempts:0}),s=pd(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 Ek(hr(t),{recursive:!0}),await yr(s,n);let l=await Ck(e,t,s,n,o.signal);i&&(l={...l,verdict:V(`wait interrupted by ${i}`,l.verdict.details)});let p=await hd({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(_r(p.result,e.options.format)),p.exitCode}catch(l){let p=V(l instanceof Error?l.message:String(l)),d=fn(r,n,p,{status:"success"},new Date().toISOString());return await mn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(_r(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await xk(s,{force:!0}).catch(()=>{})}}async function Ck(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await xd({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:ud(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:V("missing PR number")};n.webhook_mode="polling";let a=xa({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Ts({probe:Dd(i,o,{emptyChecksGraceMs:un("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:un("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 Ok(e,o,r,n);if(!i.ok)return{verdict:V(i.reason)};n.webhook_mode="polling";let a=xa({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Ts({probe:()=>Nd(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:un("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 Ts({probe:()=>Md(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:un("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function Ok(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 $d(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await yr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function Pk(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 Ik(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=ea(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=ia({id:yp(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Qi[o],status:"indeterminate",attempts:0}),c=fn(o,a,V(t instanceof Error?t.message:String(t)),{status:"success"},i);return await mn(s,c,r).catch(()=>{}),process.stdout.write(_r(c,r)),2}var Ta=y(()=>{"use strict";id();bd();Td();Dt();na();Bd();rt();pn();da();hp();pn();da()});var js={};F(js,{parseProxyCommandLine:()=>Sp,rewriteProxyCommandLine:()=>Rp,runProxy:()=>Mk});import{spawn as $k}from"node:child_process";async function Mk(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=Sp(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Rp(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await Bk(t.telemetryRoot,r,c),await _p(r);throw c}for(let c of s)await jk(t.telemetryRoot,c);let i=await _p(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await et(t.telemetryRoot,{collection:de,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 Rp(e,t="lossless"){let r=Jk(e),n=[];return{commandLine:r.map((o,i)=>{if(o.kind==="operator"||Uk(r,i)==="|")return o.text;let a=Fk(o.text,t);return a?(n.push(a.match),a.text):o.text}).join(""),matches:n}}function Sp(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 Bk(e,t,r){await et(e,{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Oa(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function jk(e,t){await et(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 _p(e){let t=$k(e,{shell:!0,stdio:"inherit"});return await new Promise(r=>{t.on("error",n=>{process.stderr.write(`${n instanceof Error?n.message:String(n)}
|
|
60
|
+
`),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function Fk(e,t){let r=e.match(/^\s*/)?.[0]??"",n=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let o=Vk(s);if(!o)return null;let i=Wk(o);if(i>=o.length)return null;let a=o.slice(i),c=a.map(f=>f.value);if(Bs(c))return{text:e,match:{command:a.map(f=>f.raw).join(" "),commandFamily:Oa(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=Hk(a);if(!u)return null;let l=o.slice(0,i).map(f=>f.raw),p=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...p,...u.wrapperWords].join(" ");return{text:`${r}${d}${n}`,match:{command:a.map(f=>f.raw).join(" "),commandFamily:Oa(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function Hk(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}:Gk(t,r)}function Gk(e,t){return e[0]==="cat"&&e.length===2&&Ca(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Ca(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])&&Ca(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Ca(e){return!!e&&!e.startsWith("-")}function Wk(e){let t=0;for(;t<e.length&&kp(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&kp(e[t].value);)t+=1;return t}function Uk(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function Jk(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=qk(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 qk(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 Vk(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)}function Oa(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Bs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Bs(t)&&t[1]?`gh ${t[1]} json-jq`:Bs(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 Bs(e){return e[0]==="gh"&&e.some(Kk)}function Kk(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function kp(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Fs=y(()=>{"use strict";Te()});function vp(e,t={}){let r=zk(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 f of new Set(d.tokens))n.set(f,(n.get(f)??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=Pa(o),u=Pa(i),l=Pa(a),p=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!p.some(f=>tR(d.start,d.end,f.start,f.end))).map(d=>({line:d,score:Ia(d.length,c)+Ia(d.tokens.length,u)+Ia(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+Zk(d.tokens,n,r.length)+eR(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,f)=>f.score-d.score||d.line.index-f.line.index).slice(0,t.maxOutliers??3).sort((d,f)=>d.line.index-f.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function zk(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(Ep(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(Ep(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function Ep(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:Yk(n),tokens:Xk(n),numbers:Qk(n),length:n.length}}function Yk(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 Xk(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function Qk(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function Zk(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 eR(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Pa(e){let t=xp(e),r=xp(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function Ia(e,t){return Math.abs(e-t.median)/t.mad}function xp(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 tR(e,t,r,n){return e<n&&r<t}var Tp=y(()=>{"use strict"});var Aa={};F(Aa,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ye,GIT_LOG_MACHINE_FIELDS:()=>Op,StructuredUsageError:()=>Hs,cleanStatusPayload:()=>Lp,recoveryInstruction:()=>Ce,renderGitContract:()=>Pp,runGitWrapper:()=>nR});import{spawn as rR}from"node:child_process";async function nR(e,t){let r=Ip(e),n=Ap(r.argv),s=await aR(n,r.argv.slice(1));return Pp(e,s,t)}async function Pp(e,t,r){let n=Ip(e);if((t.status??0)!==0||t.signal){let p=be(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let s=Ap(n.argv),o;try{o=cR(s,n.argv,t.stdout,n.query)}catch(p){if(p instanceof Gs)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:p.reason,family:"git status",stderrHead:p.message}};throw p}let i=T(o);if(sR(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=vR(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 ${Ce(u)}
|
|
61
|
+
`;return{stdout:Buffer.from(`${T(a.payload)}
|
|
62
|
+
${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 Ce(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Ip(e){let t=Ct(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 Hs(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function sR(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!oR(e)||n.level!=="lossless")return!0;let s=xR(n.heavyGitByteThreshold,Ye);return Buffer.byteLength(t)<=s}function oR(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ap(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 iR(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${Op.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 aR(e,t){let r=rR("git",iR(e,t),{stdio:["ignore","pipe","pipe"]}),n=[],s=[];return r.stdout.on("data",o=>n.push(o)),r.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{r.on("error",i),r.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function cR(e,t,r,n){switch(e){case"status":return uR(t,r,n);case"log":return yR(t,r,n);case"diff":return bR(t,r,n);case"commit":return gt(wR(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return gt(_R(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return kR(t,r,n);case"branch":return RR(t,r,n);case"show":return SR(t,r,n)}}function uR(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of lR(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=fR(u),o=!0;continue}let l=dR(u);if(l){o=!0,s.push(l);continue}let p=pR(u);p&&(o=!0,s.push(p))}if(s.length===0){if(!i||o)return Lp(e.join(" "),n);throw new Gs("git-status-unparseable")}let a=X(s,r),c=Dp(a,"state");return gt({command:e.join(" "),branch:n,rows:a,summary:hR(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function lR(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function dR(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return bn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return bn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return bn(t.slice(10).join(" "),r)}return e.startsWith("? ")?bn(e.slice(2),"??"):null}function pR(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?bn(mR(e.slice(3),t),t):null}function bn(e,t){let r=Cp(t[0]??"."),n=Cp(t[1]??".");return{path:gR(e),index:r,worktree:n,state:ER(`${r}${n}`)}}function Cp(e){return e===" "?".":e}function fR(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function mR(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function gR(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function hR(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 Lp(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 yR(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=X(n,r);return gt({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 bR(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=X(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 gt({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 wR(e,t){let r=t.split(`
|
|
63
|
+
`)[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),p=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:p,summary:`commit ${c} on ${a}: ${u} files, +${l} -${p}`}}function _R(e,t){let r=t.split(`
|
|
64
|
+
`).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,p=""]=c.split(" "),[d,f]=(l??"").split(":");return{flag:u??"",from:d??"",to:f??"",summary:p}}),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 kR(e,t,r){let n=t.split(`
|
|
65
|
+
`),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),p=o.commit.slice(0,12);l&&l.commit===p&&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:p,path:o.path}),o=null}let i=X(s,r),a=Dp(i,"author");return gt({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 RR(e,t,r){let n=t.split(`
|
|
66
|
+
`).filter(Boolean).map(i=>{let[a,c,u,l,p,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:p||null,subject:d??""}}),s=X(n,r),o=s.find(i=>i.current)?.name??"";return gt({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 SR(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,p,d=""]=o.split(""),f=[];for(let w of i.split(`
|
|
67
|
+
`)){let E=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(w);if(!E)continue;let v=E[3]??"";f.push({path:(E[1]??"").trim(),changed:Number(E[2]??0),added:[...v].filter(O=>O==="+").length,deleted:[...v].filter(O=>O==="-").length,binary:v.startsWith("Bin")})}let h=X(f,r),m=0,g=0,b=0;for(let w of h)m+=typeof w.changed=="number"?w.changed:0,g+=typeof w.added=="number"?w.added:0,b+=typeof w.deleted=="number"?w.deleted:0;return gt({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:p??"",body_lines:d.trim()?d.trim().split(`
|
|
68
|
+
`).length:0,files:h,summary:`${r?`${h.length}/${f.length}`:h.length} files, ${m} changed, +${g} -${b}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function gt(e,t,r){return t?Ve(e,r):e}function ER(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Dp(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function xR(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function vR(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 Op,Hs,Gs,Mt=y(()=>{"use strict";D();ve();jr();De();ve();Op=["%h","%an","%as","%s"];Hs=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Bn(this.command,this.flag,this.validFlags,`${this.command} --help`)}},Gs=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var $a={};F($a,{NORMALIZATION_ALLOWLIST:()=>Hp,NORMALIZE_ANSI:()=>Us,NORMALIZE_BLANK_LINES:()=>Vs,NORMALIZE_CR_PROGRESS:()=>Js,NORMALIZE_JSON_TOON:()=>Fp,NORMALIZE_TRAILING_WHITESPACE:()=>qs,crushJsonArrayItems:()=>wn,formatCodexNormalizeDecision:()=>qp,formatNormalizeDecision:()=>Jp,hookDecisionFromClaudePostExecJson:()=>Gp,hookDecisionFromCodexPostExecJson:()=>Wp,normalizeOutput:()=>Ks,renderGenericJsonLane:()=>Da,runClaudePostExecHook:()=>OR,runCodexPostExecHook:()=>PR,transcodeJsonToToon:()=>jp});import{readFileSync as Ws}from"node:fs";function jp(e,t){let r=t?.encode??T,n=t?.decode??N,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 La(o,a)?i.trimEnd():e}async function Da(e,t={}){let r=DR(e);if(!r)return{output:e,detected:!1,lossy:!1};let n=r.value;if(!Array.isArray(n))return{output:T(n).trimEnd(),detected:!0,lossy:!1};let s=n.length,o=Bp(t.minTokens,TR),i=Bp(t.maxItems,CR);if(!(s>i&&jR(e)>=o))return{output:T(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??wn)(n,i)}catch(m){return{output:T(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:FR(m)}}}let u=c.items,l={items:u},p=`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 f=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,h=T(l).trimEnd();return{output:[p,f,h].filter(Boolean).join(`
|
|
69
|
+
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function wn(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=NR(e),s=new Set;n&&e.forEach((a,c)=>{Na(a)!==n&&s.add(c)});let o=$R(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 Ks(e){let t=e;for(let r of Hp)t=r.apply(t);return t}async function Gp(e,t){return await Up(e,t)}async function Wp(e,t){return await Up(e,t)}async function Up(e,t){let r=LR(e),n=HR(r,["cwd"])||t.cwd;if(!await(t.isEnabled??AR)(n))return{kind:"passthrough",reason:"disabled"};let o=GR(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??Ks)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Jp(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function qp(e){return{stdout:"",status:0}}async function OR(e){let t=e?Ws(e,"utf8"):Ws(0,"utf8"),r=await Gp(t,{cwd:process.cwd()}),n=Jp(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function PR(e){let t=e?Ws(e,"utf8"):Ws(0,"utf8"),r=await Wp(t,{cwd:process.cwd()}),n=qp(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function IR(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&&Np(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&Np(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function Np(e){return e>=32&&e<=63}function AR(e){return xe(e,process.env).enabled}function LR(e){try{let t=JSON.parse(e);return Rr(t)?t:{}}catch{return{}}}function DR(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Rr(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 NR(e){let t=new Map;for(let s of e){let o=Na(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 Na(e){return Array.isArray(e)?"array":Rr(e)?Object.keys(e).sort().map(t=>`${t}:${$p(e[t])}`).join("|"):$p(e)}function $R(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&Na(s)!==t))for(let[i,a]of Vp(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 MR(s))r.add(o);for(let o of BR(s))r.add(o)}return r}function MR(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=Mp(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=Mp(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 BR(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 Vp(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Rr(e)?Object.entries(e).flatMap(([r,n])=>Vp(n,t?`${t}.${r}`:r)):[]}function $p(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Mp(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 jR(e){return Math.ceil(e.length/4)}function Bp(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function FR(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 HR(e,t){let r=e;for(let n of t){if(!Rr(r))return"";r=r[n]}return typeof r=="string"?r:""}function GR(e,t){let r=e[t];return Rr(r)?r:null}function Rr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function La(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)=>La(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)&&La(r[i],n[i]))}var Us,Js,qs,Vs,Fp,TR,CR,Hp,_n=y(()=>{"use strict";D();ve();Us={id:"ansi",apply:IR},Js={id:"cr-progress",apply:e=>e.split(`
|
|
70
70
|
`).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(`
|
|
71
|
-
`)}
|
|
71
|
+
`)},qs={id:"trailing-whitespace",apply:e=>e.split(`
|
|
72
72
|
`).map(t=>t.replace(/[ \t]+$/,"")).join(`
|
|
73
|
-
`)},
|
|
73
|
+
`)},Vs={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
|
|
74
74
|
|
|
75
|
-
`)};
|
|
76
|
-
`}function
|
|
77
|
-
`,status:0}}async function
|
|
75
|
+
`)};Fp={id:"json-to-toon",apply:e=>jp(e)},TR=200,CR=15;Hp=[Us,Js,qs,Vs,Fp]});var Sn={};F(Sn,{parseExecCommandLine:()=>Zp,renderExecContract:()=>Qp,runExecWrapper:()=>VR});import{isUtf8 as WR}from"node:buffer";import{spawn as UR}from"node:child_process";async function VR(e,t){let r=Zp(e),n=await KR(r);return await Qp(r,n,t)}async function Qp(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=be(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=zR(n),i=o.kind==="text"?Buffer.from(o.text):n,a=gS(r.heavyByteThreshold,JR);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 p=o.kind==="text"?XR(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):QR(n,n.length,l,e);return{stdout:Buffer.from(p.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:p.degradation}}function Zp(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 KR(e){let t=UR(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),r=[],n=[];return t.stdout.on("data",s=>r.push(s)),t.stderr.on("data",s=>n.push(s)),await new Promise((s,o)=>{t.on("error",o),t.on("close",(i,a)=>{s({stdout:Buffer.concat(r).toString("binary"),stderr:Buffer.concat(n).toString("binary"),status:i,signal:a})})})}function zR(e){return WR(e)?{kind:"text",text:YR(e.toString("utf8"))}:{kind:"bytes"}}function YR(e){let t=e;for(let r of[Us,Js,qs,Vs])t=r.apply(t);return t}function XR(e,t,r,n,s,o=cS,i=wn){let c=Math.max(1,Math.floor((n==="terse"?Xp:qR)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),p=aS(e,c,l,o),d=ZR(e),f=eS(d,e,u,c,l,p.kind==="ok"?p.lines:[],i),h=ef(s,d,t,mS(u),r,f.summary),m=p.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:af(p.error)}:f.degradation;return{text:of(h),degradation:m}}function QR(e,t,r,n){let s=Math.max(1,Math.floor(Xp/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:of(ef(n,"bytes",t,0,r,o))}}function ef(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Ce(s)}}}function ZR(e){let t=e.trim();return t?rf(t)?"json":nf(e)?"jsonl":uS(e)?"unified-diff":sf(e)?"tabular":lS(e)?"log-like":dS(e)?"prose":"untyped":"untyped"}function eS(e,t,r,n,s,o,i=wn){switch(e){case"json":return tS(t,i);case"jsonl":return{summary:rS(t)};case"unified-diff":return{summary:nS(t)};case"tabular":return{summary:sS(t)};case"log-like":return{summary:oS(t,o)};case"prose":return{summary:iS(t)};case"bytes":return{summary:{}};case"untyped":return{summary:tf(r,n,s,o)}}}function tS(e,t){let r=rf(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(ht),item_keys:Ba(r)}}}catch(n){return{summary:zp(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:af(n)}}}return{summary:zp(r)}}if(Rn(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,ht(o)]))}}}return{summary:{root_type:typeof r,value:ht(r)}}}function zp(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(ht),item_keys:Ba(e)}}function rS(e){let t=nf(e)??[],r=pS(t,"level");return{records:t.length,keys:Ba(t),levels:r,first:ht(t[0]),last:ht(t.at(-1))}}function nS(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 sS(e){let t=sf(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:tf(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function oS(e,t){let r=kn(e);return{entries:r.length,levels:fS(r),first:Bt(r[0]??""),last:Bt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Bt(n.text)}))}}function iS(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:Bt(t[0]??""),closing:Bt(t.at(-1)??"")}}function tf(e,t,r,n){let s=Yp(e.subarray(0,t)),o=Yp(e.subarray(r));return{head:s,tail:o,outliers:n.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:Bt(i.text)}))}}function aS(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function cS(e,t){return vp(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function rf(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Rn(r)||Array.isArray(r)?r:null}catch{return null}}function nf(e){let t=kn(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 uS(e){let t=kn(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 sf(e){let t=kn(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 lS(e){let t=kn(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 dS(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 kn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Ba(e){let t=new Map;for(let r of e)if(Rn(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 pS(e,t){let r=new Map;for(let n of e){if(!Rn(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 fS(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 ht(e){return typeof e=="string"?Bt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(ht):Rn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,ht(r)])):String(e)}function Bt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Kp?t:`${t.slice(0,Kp-1)}\u2026`}function of(e){let t=T(e).trimEnd(),r=N(t);if(!Ma(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
|
|
76
|
+
`}function Ma(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)=>Ma(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)&&Ma(r[i],n[i]))}function Rn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function af(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 Yp(e){return e.toString("utf8").replace(/�$/g,"")}function mS(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 gS(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var JR,qR,Xp,Kp,En=y(()=>{"use strict";D();Tp();Mt();_n();De();JR=8*1024,qR=2*1024,Xp=1024,Kp=240});var gf=y(()=>{"use strict";di()});var jt={};F(jt,{ResidentRspElisionStore:()=>Tn,ensureResidentServer:()=>Vn,kickResidentServer:()=>Kn,pingResident:()=>Ot,readResidentRegistry:()=>Kr,removeResidentRegistry:()=>Yn,residentRegistryStatus:()=>Vr,resolveResidentPaths:()=>lt,sweepResidentRegistry:()=>Zu,warmResidentServer:()=>Qu,writeResidentRegistry:()=>zn});import{randomUUID as SS}from"node:crypto";function hf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Tn,nt=y(()=>{"use strict";gf();Xn();Tn=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?hf(r)&&r.status==="expired"?r:!hf(r)||typeof r.original!="string"?null:{...r,original:Buffer.from(r.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,r){return await this.request({op:"memory",action:t,payload:r})}async close(){}async request(t){this.opts.ensureResident!==!1&&await Vn(this.paths,this.config);let r=await tr(this.paths,{...t,id:SS()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var so={};F(so,{RSP_WRAPPER_CAPABILITIES:()=>Pn,formatCodexHookDecision:()=>kf,formatHookDecision:()=>_f,hookDecisionFromClaudePreExecJson:()=>CS,hookDecisionFromCodexPreExecJson:()=>OS,rewriteCommand:()=>bf,rewriteTableFromCapabilities:()=>yf,runClaudePreExecHook:()=>PS,runCodexPreExecHook:()=>IS});import{readFileSync as eo}from"node:fs";import{existsSync as ES}from"node:fs";import{fileURLToPath as xS}from"node:url";function yf(e){let t=new Map;for(let r of e)t.set(zS(r.command),["rsp",...r.wrapper]);return t}function bf(e){let t=FS(e);if(t)return t;let r=BS(e);if(!r)return Qs(e);let n=r.tokens.map(c=>c.text);if(n.length>0&&Af(n[0]))return Qs(e);let s=TS(r);if(s)return s;if(r.tokens.some(c=>c.quoted))return Qs(e);let o=[...Pn].sort((c,u)=>u.command.length-c.command.length).find(c=>jS(n,c.command));if(!o)return Qs(e);let i=["rsp",...o.wrapper,...n.slice(o.command.length)],a=Tf(r.redirectSuffix);return{kind:"rewrite",command:[...i.map(On),...a].join(" "),capabilityId:o.id}}function TS(e){let t=e.tokens.map(s=>s.text),r=t[0],n=Tf(e.redirectSuffix);return r==="cat"&&t.length===2&&Xs(t[1])?{kind:"rewrite",command:["rsp","cat",On(t[1]),...n].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&t.length===2&&Xs(t[1])?{kind:"rewrite",command:["rsp","cat",`--${r}`,"10",On(t[1]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Xs(t[3])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[2],On(t[3]),...n].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Xs(t[2])?{kind:"rewrite",command:["rsp","cat",`--${r}`,t[1].slice(1),On(t[2]),...n].join(" "),capabilityId:`cat:${r}`}:null}function Xs(e){return!!e&&!e.startsWith("-")}async function CS(e,t){return await wf(e,t)}async function OS(e,t){return await wf(e,t)}async function wf(e,t){return(await Ha(e,t,"pre-exec")).decision}async function Ha(e,t,r){let n=Lf(e);if(!n.ok){let d={kind:"passthrough",reason:n.reason};return{decision:d,telemetryRoot:t.cwd,event:Cn({hook:r,command:"",decision:d,reason:n.reason})}}let s=n.payload,o=Oe(s,["cwd"])||Oe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??AS)(o)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:o,event:Cn({hook:r,command:Fa(s),decision:d,reason:"disabled"})}}let a=Fa(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:o,event:Cn({hook:r,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=xe(o,process.env).proxyEnabled?GS(a):(t.rewrite??bf)(a),p=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let d=l.reason?l:{...l,reason:"unsupported-command"};return{decision:d,telemetryRoot:o,event:Cn({hook:r,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:p})}}return await DS(o,t.wakeResident??LS),{decision:l,telemetryRoot:o,event:Cn({hook:r,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:p})}}function _f(e){return e.kind==="rewrite"?Rf(e.command):{stdout:"",status:0}}function kf(e){return e.kind==="rewrite"?Rf(e.command):{stdout:"",status:0}}function Rf(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
|
|
77
|
+
`,status:0}}async function PS(e){let t="";try{t=e?eo(e,"utf8"):eo(0,"utf8");let r=await Ha(t,{cwd:process.cwd()},"claude-pre-exec");to(r.telemetryRoot,r.event);let n=r.decision;Ef("claude-pre-exec",n);let s=_f(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return to(process.cwd(),Sf("claude-pre-exec",t,r)),xf("claude-pre-exec",r),0}}async function IS(e){let t="";try{t=e?eo(e,"utf8"):eo(0,"utf8");let r=await Ha(t,{cwd:process.cwd()},"codex-pre-exec");to(r.telemetryRoot,r.event);let n=r.decision;Ef("codex-pre-exec",n);let s=kf(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return to(process.cwd(),Sf("codex-pre-exec",t,r)),xf("codex-pre-exec",r),0}}function to(e,t){et(e,t).catch(()=>{})}function Cn(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:If(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function Sf(e,t,r){let n=Lf(t),s=n.ok?Fa(n.payload):"";return{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:If(s),decision:"failed-open",reason:"hook-exception",error:Ga(r)}}function AS(e){return xe(e,process.env).enabled}async function LS(e){let t=xe(e,process.env);if(!t.enabled||!MS(t))return;let r=lt(e);await Kn(r,$S(t))}async function DS(e,t){try{await Promise.resolve(t(e))}catch(r){NS(r)}}function Ef(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
|
|
78
78
|
`);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
|
|
79
|
-
`)}}function
|
|
80
|
-
`)}function
|
|
81
|
-
`)}function
|
|
82
|
-
`)}function
|
|
83
|
-
`),
|
|
84
|
-
`)),l=
|
|
85
|
-
`);return{kind:e,query:
|
|
86
|
-
`)}}function
|
|
87
|
-
`)}}function
|
|
79
|
+
`)}}function xf(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Ga(t)}
|
|
80
|
+
`)}function NS(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${Ga(e)}
|
|
81
|
+
`)}function Ga(e){return e instanceof Error?e.name||"Error":typeof e}function $S(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 MS(e){if(!e.storeUri.startsWith("file://"))return!0;try{return ES(xS(e.storeUri))}catch{return!1}}function Fa(e){return Oe(e,["tool_input","command"])||Oe(e,["tool_input","cmd"])||Oe(e,["tool_input","args","command"])||Oe(e,["input","command"])||Oe(e,["input","cmd"])||Oe(e,["arguments","command"])||Oe(e,["arguments","cmd"])||Oe(e,["command"])||Oe(e,["cmd"])}function BS(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=vf(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Af(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 vf(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 jS(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function FS(e){let t=vf(e.trim()).map(r=>r.text);return Zs(t)?{kind:"passthrough",reason:vS}:null}function Zs(e){return e[0]==="gh"&&e.some(HS)}function HS(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Tf(e){return e.map(t=>t.text)}function On(e){return/[^\w@%+=:,./-]/.test(e)?Wa(e):e}function GS(e){let t=WS(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${Wa(e.trim())}`,capabilityId:"proxy:universal"}}function WS(e){let t=e.trim();if(!t)return"missing-command";if(Of(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=no(ro(t)[0]??"")[0];if(r==="rsp")return"opt-out";if(r&&Cf.has(r))return"interactive"}function Qs(e){let t=e.trim();return US(t)?{kind:"rewrite",command:`rsp exec -- ${Wa(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function US(e){return!(!e||!JS(e)||!qS(e)||Of(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||VS(e,"rsp")||Pf(e,Cf)||KS(e))}function JS(e){return/&&|[;|]/.test(e)}function Of(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 qS(e){return ro(e).some(t=>{let r=no(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 Pf(e,t){return ro(e).some(r=>{let n=no(r)[0];return n?t.has(n):!1})}function VS(e,t){return Pf(e,new Set([t]))}function KS(e){return ro(e).some(t=>{let r=no(t);return r[0]==="grep"&&r.includes("-q")})}function ro(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function no(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Wa(e){return`'${e.replace(/'/g,"'\\''")}'`}function If(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Zs(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Zs(t)&&t[1]?`gh ${t[1]} json-jq`:Zs(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 Af(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function zS(e){return e.join("\0")}function Lf(e){try{let t=JSON.parse(e);return Df(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Oe(e,t){let r=e;for(let n of t){if(!Df(r))return"";r=r[n]}return typeof r=="string"?r:""}function Df(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Pn,lD,vS,Cf,In=y(()=>{"use strict";ve();nt();Te();Pn=[{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"]}],lD=yf(Pn),vS="lossless-gh-json-jq";Cf=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Hf={};F(Hf,{fastTelemetryRoot:()=>Ja,isFastGitStatus:()=>oo,runFastGitStatus:()=>io});import{spawnSync as jf}from"node:child_process";import{existsSync as Ff,readdirSync as nE}from"node:fs";function oo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function io(){if(sE(process.cwd()))return{stdout:Ua(),stderr:Buffer.alloc(0),status:0,signal:null};if(jf("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Ua(),stderr:Buffer.alloc(0),status:0,signal:null};let t=jf("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?Ua():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function Ja(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(nt(),jt));return t(e).rootDir}catch{return e}}function Ua(){return Buffer.from(`${H({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
|
|
82
|
+
`)}function sE(e){try{return!Ff(`${e}/.git`)||Ff(`${e}/.git/index`)?!1:nE(e).every(t=>t===".git")}catch{return!1}}var qa=y(()=>{"use strict";Ne()});async function xr(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 Uf(e,t,r,n={}){_E(t);let s=e==="issue"?"i":"p",o=t.map((d,f)=>({alias:`${s}${f}`,number:d})),i=(n.labelNames??[]).map((d,f)=>({alias:`l${f}`,name:d})),c=kE(["id","number",...r]).map(d=>RE(wE[d],6)).join(`
|
|
83
|
+
`),u=o.map(({alias:d,number:f})=>[` ${d}: ${e}(number: ${f}) {`,c," }"].join(`
|
|
84
|
+
`)),l=i.map(({alias:d,name:f})=>` ${d}: label(name: ${JSON.stringify(f)}) { id name }`),p=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
|
|
85
|
+
`);return{kind:e,query:p,aliases:o,labelAliases:i}}function Jf(e,t){let r=Er(t),n=Er(r.data),s=Er(n.repository),o=Array.isArray(r.errors)?r.errors.map(Er):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(Kf(c))return{number:a,value:c};let u=o.find(l=>{let p=l.path;return Array.isArray(p)&&p.includes(i)});return{number:a,error:zf(u?.message)||"not found"}})}function qf(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: ${bt(o.nodeId)}, labelIds: ${Wf(t)}, clientMutationId: ${bt(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: ${bt(o.nodeId)}, labelIds: ${Wf(r)}, clientMutationId: ${bt(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
|
|
86
|
+
`)}}function Vf(e,t){let r=t.map((s,o)=>({alias:`link${o}`,number:s.number})),n=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${bt(e.nodeId)}, subIssueId: ${bt(s.nodeId)}, clientMutationId: ${bt(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
|
|
87
|
+
`)}}function Va(e,t){let r=Er(t),n=Array.isArray(r.errors)?r.errors.map(Er):[],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,zf(i.message)||"mutation failed")}return s}function _E(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 kE(e){return[...new Set(e)]}function RE(e,t){let r=" ".repeat(t);return e.split(`
|
|
88
88
|
`).map(n=>`${r}${n}`).join(`
|
|
89
|
-
`)}function
|
|
90
|
-
`),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as
|
|
91
|
-
`))}async function
|
|
92
|
-
`),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function
|
|
89
|
+
`)}function bt(e){return JSON.stringify(e)}function Wf(e){return`[${e.map(bt).join(", ")}]`}function Er(e){return Kf(e)?e:{}}function Kf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function zf(e){return typeof e=="string"?e:""}var wE,Yf=y(()=>{wE={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(`
|
|
90
|
+
`),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as EE,spawnSync as xE}from"node:child_process";function Ya(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function Zf(e,t={}){let r=jE(e),n=r.repo??t.repo??process.env.GH_REPO??HE();if(!n||!n.includes("/"))return Za(e,"repository is required; pass --repo owner/repo");let s=t.exec??GE,o=Math.max(1,Math.floor(t.restConcurrency??Qf));return r.verb==="issues"||r.verb==="prs"?await CE(r,n,s,o,e):r.verb==="edit-labels"?await PE(r,n,s,o,e):await AE(r,n,s,o,e)}async function CE(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=em(e),a=[],c=[];for(let l of Qa(e.numbers,100)){let p=Uf(o,l,i.query),d=await Xa(r,t,p.query);if(tc(d))return await OE(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(f=>({number:f,value:{error:fe(d)||`failed to read ${f}`},failed:!0})));continue}a.push(...Jf(p,wt(d.stdout)).map(f=>({number:f.number,value:f.error?{error:f.error}:DE(e.verb,f.value??{},i.output),failed:!!f.error})))}let u=a.filter(l=>l.failed).length;return co({command:uo(s),transport:"graphql",order:e.numbers,[e.verb]:An(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
|
|
91
|
+
`))}async function OE(e,t,r,n,s){let o=em(e),i=e.verb==="issues"?"issues":"pulls",a=await xr(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:fe(l)||"REST fallback failed"}};let p=Fe(wt(l.stdout));if(e.verb==="prs"&&o.output.some(tm)){let d=G(Fe(p.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let f=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(f.code!==0)return{number:u,value:{error:fe(f)||"REST check-runs fallback failed"}};let h=await r(["api",`repos/${t}/commits/${d}/status`]);if(h.code!==0)return{number:u,value:{error:fe(h)||"REST commit-status fallback failed"}};p={...p,restCheckRollup:$E(Fe(wt(f.stdout)),Fe(wt(h.stdout)))}}return{number:u,value:NE(e.verb,p,o.output)}}),c=a.filter(u=>"error"in u.value).length;return co({command:uo(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:An(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function PE(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return Za(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([rm(e.numbers,t,r,n),xr(o,n,async d=>{let f=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(Fe(wt(f.stdout)).node_id),error:f.code===0?"":fe(f)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return Tr(s,e.numbers,ec(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}])),p=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of Qa(p,100)){let f=qf(d,e.add.map(g=>c.get(g)),e.remove.map(g=>c.get(g))),h=await Xa(r,t,f.query);if(tc(h))return await IE(e,t,r,n,s);if(h.code!==0){for(let g of d)l.set(g.number,{error:fe(h)||"label mutation failed"});continue}let m=Va(f.aliases,wt(h.stdout));for(let g of d){let w=f.aliases.filter(E=>E.number===g.number).map(E=>m.get(E.alias)).find(Boolean);l.set(g.number,w?{error:w}:{ok:!0})}}return Tr(s,e.numbers,nm(e.numbers,l),"graphql")}async function IE(e,t,r,n,s){let o=await xr(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:fe(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:fe(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return Tr(s,e.numbers,An(o),"rest-fallback",n)}async function AE(e,t,r,n,s){if(e.numbers.length<2)return Za(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await rm(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return Tr(s,i,ec(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,p=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 Qa(p,100)){let f=Vf({number:o,nodeId:u},d),h=await Xa(r,t,f.query);if(tc(h))return await LE(o,i,t,r,n,s);if(h.code!==0){for(let g of d)l.set(g.number,{error:fe(h)||"sub-issue mutation failed"});continue}let m=Va(f.aliases,wt(h.stdout));for(let g of f.aliases){let b=m.get(g.alias);l.set(g.number,b?{error:b}:{ok:!0})}}return Tr(s,i,nm(i,l),"graphql")}async function LE(e,t,r,n,s,o){let i=await xr(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:fe(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:fe(l)||"REST link failed"}}});return Tr(o,t,An(i),"rest-fallback",s)}function Tr(e,t,r,n,s){let o=Object.values(r).filter(i=>Cr(i)&&"error"in i).length;return co({command:uo(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Qf}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function em(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Xf(r,vE),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Xf(t,TE),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Xf(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function DE(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=Ka(t.labels).map(o=>G(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=BE(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=sm(t[s]));return"number"in n||(n.number=rc(t.number)),n}function NE(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Cr):[];n.labels=o.map(i=>G(i.name)).filter(Boolean)}else if(tm(s))n[s]=Fe(t.restCheckRollup);else if(s==="state")n.state=G(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;n.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else n[s]=sm(t[s]);return"number"in n||(n.number=rc(t.number)),n}function $E(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Cr):[],n=Array.isArray(t.statuses)?t.statuses.filter(Cr):[],s=[...r.map(o=>({name:G(o.name),state:(G(o.conclusion)||G(o.status)).toLowerCase()})),...n.map(o=>({name:G(o.context),state:G(o.state).toLowerCase()}))];return{state:G(t.state).toLowerCase()||ME(s.map(o=>o.state)),contexts:s}}function ME(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 tm(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function BE(e){let t=Ka(e).at(-1),r=Fe(Fe(t?.commit).statusCheckRollup);return{state:G(r.state).toLowerCase(),contexts:Ka(r.contexts).map(n=>({name:G(n.name)||G(n.context),state:(G(n.conclusion)||G(n.status)||G(n.state)).toLowerCase()}))}}async function Xa(e,t,r){let[n,s]=FE(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function rm(e,t,r,n){return await xr(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=Fe(wt(o.stdout)),a=G(i.node_id),c=rc(i.id);return o.code!==0||!a?{number:s,error:fe(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function Qa(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function jE(e){if(!Ya(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(...vr(e[++a]??""));else if(c.startsWith("--json="))n.push(...vr(c.slice(7)));else if(c==="--add")s.push(...vr(e[++a]??""));else if(c.startsWith("--add="))s.push(...vr(c.slice(6)));else if(c==="--remove")o.push(...vr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...vr(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 co(e,t=0,r=""){return{stdout:Buffer.from(`${T(e)}
|
|
92
|
+
`),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function Za(e,t){return co({command:uo(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function ec(e,t){return An(e.map(r=>({number:r,value:t(r)})))}function An(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function nm(e,t){return ec(e,r=>t.get(r)??{error:"mutation skipped"})}function tc(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
|
|
93
93
|
${e.stdout}`)}function fe(e){return(e.stderr||e.stdout).trim().split(`
|
|
94
|
-
`)[0]?.slice(0,240)??""}function
|
|
95
|
-
`;return{stdout:Buffer.from(`${
|
|
96
|
-
${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:c.payload,mintedHandle:f,bytesElided:l,rowsElided:c.rowsElided,rawOutput:Buffer.from(u)}}function up(e){let t=kt(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let r=t.argv[1],n=t.argv[2];if(!(r==="pr"||r==="issue"||r==="run"))throw new Error(`unsupported gh surface: ${r??""}`);let s=r==="pr"&&n&&n!=="list"&&n!=="view";if(!(n==="list"||n==="view"||s))throw new Error(`unsupported gh subcommand: ${n??""}`);let i=r,o=[],a=!1,u=!1,c=new Set,l=t.argv.slice(3);for(let p=0;p<l.length;p+=1){let h=l[p]??"";h==="--full"?a=!0:h==="--wide"?u=!0:h==="--fields"?c=np(l[++p]??""):h.startsWith("--fields=")?c=np(h.slice(9)):o.push(h)}let d={kind:i,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:u,fields:c,passthrough:o,query:t.query};return lE(d),d}function rp(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?oE[t]:iE[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function np(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function lE(e){if(e.fields.size===0)return;if(e.action!=="list")throw new Zs(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=uE[t];for(let n of e.fields)if(!r.includes(n))throw new Zs(e,`unknown field: ${n}`,r)}async function dE(e){if(e.action==="combined")return await fE(e);let t=pE(e);if(!t)return await bE(rp(e));let r=await se({...t,command:["gh",...rp(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await mE(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function fE(e){let t=e.target??"",[r,n,s]=await Promise.all([se({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),se({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),se({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),i=[r,n,s].find(a=>(a.status??0)!==0);if(i)return{stdout:i.stdout,stderr:i.stderr,status:i.status,signal:null};let o=lp(On(r.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:ae(On(s.stdout)).map(hE)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function pE(e){let t=dp(e.passthrough),r=yE(e.passthrough,"--limit")??30,n=Ge(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:Ge(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 mE(e,t){let r=On(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ae(r).map(cp);case"pr:view":return lp(r);case"issue:list":return ae(r).filter(n=>!Mt(n.pull_request)).map(sp);case"issue:view":return sp(r);case"run:list":return{items:ae(N(r).workflow_runs).map(ip),total:ie(N(r),"total_count")};case"run:view":{let n=ip(r),s=dp(e.passthrough);if(!s)return n;let i=await se({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:i.status===0?ae(N(On(i.stdout)).jobs).map(gE):[]}}default:return r}}function cp(e){let t=N(e);return{number:ie(t,"number"),title:E(t,"title"),state:E(t,"state").toUpperCase(),isDraft:!!t.draft,author:La(t.user),labels:ae(t.labels).map(r=>({name:E(r,"name")})),url:E(t,"html_url"),updatedAt:E(t,"updated_at"),body:E(t,"body"),baseRefName:E(N(t.base),"ref"),headRefName:E(N(t.head),"ref")}}function lp(e){return cp(e)}function sp(e){let t=N(e);return{number:ie(t,"number"),title:E(t,"title"),state:E(t,"state").toUpperCase(),labels:ae(t.labels).map(r=>({name:E(r,"name")})),author:La(t.user),url:E(t,"html_url"),updatedAt:E(t,"updated_at"),body:E(t,"body")}}function ip(e){let t=N(e);return{databaseId:ie(t,"database_id")||ie(t,"id"),name:E(t,"name")||E(t,"display_title"),status:E(t,"status").toUpperCase(),conclusion:E(t,"conclusion").toUpperCase(),event:E(t,"event"),headBranch:E(t,"head_branch"),workflowName:E(t,"workflow_name"),createdAt:E(t,"created_at"),url:E(t,"html_url"),jobs:[]}}function gE(e){let t=N(e);return{name:E(t,"name"),status:E(t,"status").toUpperCase(),conclusion:E(t,"conclusion").toUpperCase(),log:""}}function hE(e){let t=N(e);return{author:La(t.user),body:E(t,"body"),createdAt:E(t,"created_at")}}function La(e){let t=N(e);return{login:E(t,"login")}}function dp(e){return e.find(t=>!t.startsWith("-"))}function Ge(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function yE(e,t){let r=Ge(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function bE(e){let t=sE("gh",e,{stdio:["ignore","pipe","pipe"]}),r=[],n=[];return t.stdout.on("data",s=>r.push(s)),t.stderr.on("data",s=>n.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8"),status:o,signal:a})})})}function wE(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Ia(r,"prs"),i=s.rows.map(u=>fp(u,e)),o=Y(i,e.query),a=Da(o.length,i.length,s.total,e.query);return o.length===0?Aa(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):xr({...n,prs:o,aggregate:a,summary:`${$a(o.length,i.length,e.query)} ${op(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return xr({...n,pr:pp(N(r),e),summary:`PR #${ie(N(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return _E(e,t,N(r));case"issue:list":{let s=Ia(r,"issues"),i=s.rows.map(u=>mp(u,e)),o=Y(i,e.query),a=Da(o.length,i.length,s.total,e.query);return o.length===0?Aa(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):xr({...n,issues:o,aggregate:a,summary:`${$a(o.length,i.length,e.query)} ${op(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return xr({...n,issue:kE(N(r),e),summary:`issue #${ie(N(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Ia(r,"runs"),i=s.rows.map(u=>gp(u,e)),o=Y(i,e.query),a=Da(o.length,i.length,s.total,e.query);return o.length===0?Aa(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):xr({...n,runs:o,aggregate:a,summary:`${$a(o.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return xr({...n,run:vE(N(r),e),summary:`run ${ie(N(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function _E(e,t,r){let n=pp(N(r.view),{...e,action:"view",wide:!0}),s=Y(ae(r.checks).map(RE),e.query),i=N(r.comments).comments,o=Y(ae(i).map(SE).slice(-3),e.query);return qe({command:t.join(" "),pr:n,checks:s,comments:o,summary:`PR #${ie(N(r.view),"number")}: ${s.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function RE(e){return{name:E(e,"name"),state:Pn(e),bucket:E(e,"bucket"),conclusion:E(e,"conclusion"),workflow:E(e,"workflow"),link:E(e,"link")}}function SE(e){return{author:yp(e.author),body:Xs(e,"body",Na,!1),created:E(e,"createdAt")}}function Ia(e,t){if(Array.isArray(e))return{rows:ae(e)};let r=N(e),n=ie(r,"total")||ie(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:ae(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:ae(r.workflow_runs),total:n}:{rows:[]}}function Da(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function Aa(e,t,r,n,s){return qe({...e,empty:!0,scope:EE(t),[r]:[],aggregate:n,summary:`0 ${xE(t)}`},s)}function EE(e){let t=Ge(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let i=Ge(e.passthrough,"--label");return`${t} issues${i?` label=${i}`:""}${r}`}let n=Ge(e.passthrough,"--branch")??Ge(e.passthrough,"-b"),s=Ge(e.passthrough,"--workflow")??Ge(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function xE(e){let t=Ge(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function fp(e,t){let r={number:ie(e,"number"),title:E(e,"title"),state:Pn(e),draft:!!e.isDraft};return Ba(r,e,t,["author","labels","url","updated"]),r}function pp(e,t){let r=fp(e,t);return r.body=Xs(e,"body",Na,t.full),t.wide&&(r.base=E(e,"baseRefName"),r.head=E(e,"headRefName")),r}function mp(e,t){let r={number:ie(e,"number"),title:E(e,"title"),state:Pn(e),labels:hp(e.labels)};return Ba(r,e,t,["author","url","updated"]),r}function kE(e,t){let r=mp(e,t);return r.body=Xs(e,"body",Na,t.full),r}function gp(e,t){let r={id:ie(e,"databaseId"),name:E(e,"name"),status:Pn(e),conclusion:E(e,"conclusion")};return Ba(r,e,t,["event","branch","workflow","created"]),r}function vE(e,t){let r=gp(e,t),n=ae(e.jobs).map(s=>({name:E(s,"name"),status:Pn(s),conclusion:E(s,"conclusion"),log:Xs(s,"log",aE,t.full)}));return r.jobs=n,r}function Xs(e,t,r,n){let s=E(e,t);if(n||Buffer.byteLength(s)<=r)return s;let i=s.slice(0,r),o={preview:i,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(i),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:s,enumerable:!1}),o}function TE(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(Mt(r)){if(Mt(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 OE(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 op(e,t){return e.every(r=>r.state===t)?t:"returned"}function $a(e,t,r){return r?`${e}/${t}`:String(e)}function xr(e,t,r){return t.query?qe(e,r):e}function Pn(e){return(E(e,"state")||E(e,"status")).toLowerCase()}function Ba(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=yp(t.author):s==="labels"?e.labels=hp(t.labels):s==="url"?e.url=E(t,"url"):s==="updated"?e.updated=E(t,"updatedAt"):s==="event"?e.event=E(t,"event"):s==="branch"?e.branch=E(t,"headBranch"):s==="workflow"?e.workflow=E(t,"workflowName"):s==="created"&&(e.created=E(t,"createdAt")))}function hp(e){return Array.isArray(e)?e.map(t=>Mt(t)?E(t,"name"):String(t)).filter(Boolean):[]}function yp(e){return Mt(e)?E(e,"login"):""}function On(e){return e.trim()?JSON.parse(e):null}function ae(e){return Array.isArray(e)?e.filter(Mt):[]}function N(e){return Mt(e)?e:{}}function E(e,t){let r=e[t];return typeof r=="string"?r:""}function ie(e,t){let r=e[t];return typeof r=="number"?r:0}function Mt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var iE,oE,Na,aE,uE,Zs,ja=w(()=>{"use strict";K();ks();tp();$t();$r();De();iE={"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"]},oE={"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"]},Na=160,aE=160,uE={"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"]};Zs=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 Ja={};M(Ja,{renderTestContract:()=>bp,runTestWrapper:()=>AE});import{spawn as PE}from"node:child_process";async function AE(e,t){let r=kt(e),n=await ME(r.argv);return await bp(e,n,t)}async function bp(e,t,r){let n=kt(e),i=wp(n.argv)==="vitest"?jE(t.stdout):GE(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let h=ye(e.join(" "),t.stdout,t.stderr);return{stdout:$(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${UE(i.durationSeconds)}`,u=Y(i.failures,n.query);if(r.level==="terse")return await $E(n.argv,t,{...i,failures:u},o,a,r,n.query);let c=[],l,f=0;for(let h of u){let m=await FE(h.excerpt,n.argv.join(" "),r.store);c.push({suite:h.suite,name:h.name,excerpt:m.text}),l??=m.handle,f+=m.bytesElided}let d={exit_code:o,summary:n.query?`${a} \xB7 ${u.length}/${i.failures.length} failures matched`:a};c.length>0&&(d.failures=c);let p=n.query?qe(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(O(p)),stderr:Buffer.from(t.stderr),status:Fa(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:c.length>0?Math.max(0,i.total-c.length):void 0}}async function $E(e,t,r,n,s,i,o){let a=NE(r.failures),u={exit_code:n,summary:o?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(u.failures=a);let c=o?qe(u,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):u,l=O(c),f=Math.max(0,r.failures.length-a.length),d=a.some((x,v)=>x.excerpt!==r.failures[v].excerpt);if(f===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Fa(t.status),signal:t.signal,payload:c};let p={exit_code:n,summary:s};r.failures.length>0&&(p.failures=r.failures.map(x=>({suite:x.suite,name:x.name,excerpt:x.excerpt})));let h=O(p),m=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!g)throw new Error("terse test output requires an elision store");let b=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${m}) \u2014 ${ve(g)}`;return{stdout:Buffer.from(`${l}
|
|
97
|
-
${
|
|
94
|
+
`)[0]?.slice(0,240)??""}function wt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function Ka(e){let t=Fe(e).nodes;return Array.isArray(t)?t.filter(Cr):[]}function sm(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function rc(e){let t=Number(e);return Number.isFinite(t)?t:0}function vr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function FE(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function uo(e){return`rsp ${e.join(" ")}`}function HE(){let e=xE("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 GE(e){let t=EE("gh",e,{stdio:["ignore","pipe","pipe"]}),r=[],n=[];return t.stdout.on("data",s=>r.push(s)),t.stderr.on("data",s=>n.push(s)),await new Promise((s,o)=>{t.on("error",o),t.on("close",i=>s({code:i??1,stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8")}))})}function Fe(e){return Cr(e)?e:{}}function Cr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var Qf,vE,TE,om=y(()=>{"use strict";D();Yf();Qf=4,vE=new Set(["number","title","state","labels","body"]),TE=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var lc={};F(lc,{renderGhContract:()=>dm,runGhWrapper:()=>KE});import{spawn as WE}from"node:child_process";async function KE(e,t){if(Ya(e))return await Zf(e);let r=pm(e),n=await YE(r);return dm(e,n,t)}async function dm(e,t,r){if((t.status??0)!==0||t.signal){let f=be(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let n=pm(e),s=Ln(t.stdout),o=sx(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=px(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let f=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=f}let a=i?.target.truncated.handle||void 0,c=T(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=fx(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),p=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!p)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${Ce(p)}
|
|
95
|
+
`;return{stdout:Buffer.from(`${T(u.payload)}
|
|
96
|
+
${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:p,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function pm(e){let t=Ct(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 f=0;f<l.length;f+=1){let h=l[f]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=am(l[++f]??""):h.startsWith("--fields=")?u=am(h.slice(9)):i.push(h)}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 zE(d),d}function im(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?JE[t]:UE[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function am(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function zE(e){if(e.fields.size===0)return;if(e.action!=="list")throw new lo(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=VE[t];for(let n of e.fields)if(!r.includes(n))throw new lo(e,`unknown field: ${n}`,r)}async function YE(e){if(e.action==="combined")return await XE(e);let t=QE(e);if(!t)return await nx(im(e));let r=await oe({...t,command:["gh",...im(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await ZE(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function XE(e){let t=e.target??"",[r,n,s]=await Promise.all([oe({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),oe({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),oe({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=mm(Ln(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:ce(Ln(s.stdout)).map(tx)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function QE(e){let t=gm(e.passthrough),r=rx(e.passthrough,"--limit")??30,n=He(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:He(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 ZE(e,t){let r=Ln(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ce(r).map(fm);case"pr:view":return mm(r);case"issue:list":return ce(r).filter(n=>!Ht(n.pull_request)).map(cm);case"issue:view":return cm(r);case"run:list":return{items:ce(M(r).workflow_runs).map(um),total:ie(M(r),"total_count")};case"run:view":{let n=um(r),s=gm(e.passthrough);if(!s)return n;let o=await oe({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:o.status===0?ce(M(Ln(o.stdout)).jobs).map(ex):[]}}default:return r}}function fm(e){let t=M(e);return{number:ie(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:cc(t.user),labels:ce(t.labels).map(r=>({name:S(r,"name")})),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body"),baseRefName:S(M(t.base),"ref"),headRefName:S(M(t.head),"ref")}}function mm(e){return fm(e)}function cm(e){let t=M(e);return{number:ie(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:ce(t.labels).map(r=>({name:S(r,"name")})),author:cc(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function um(e){let t=M(e);return{databaseId:ie(t,"database_id")||ie(t,"id"),name:S(t,"name")||S(t,"display_title"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),event:S(t,"event"),headBranch:S(t,"head_branch"),workflowName:S(t,"workflow_name"),createdAt:S(t,"created_at"),url:S(t,"html_url"),jobs:[]}}function ex(e){let t=M(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function tx(e){let t=M(e);return{author:cc(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function cc(e){let t=M(e);return{login:S(t,"login")}}function gm(e){return e.find(t=>!t.startsWith("-"))}function He(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function rx(e,t){let r=He(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function nx(e){let t=WE("gh",e,{stdio:["ignore","pipe","pipe"]}),r=[],n=[];return t.stdout.on("data",s=>r.push(s)),t.stderr.on("data",s=>n.push(s)),await new Promise((s,o)=>{t.on("error",o),t.on("close",(i,a)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(n).toString("utf8"),status:i,signal:a})})})}function sx(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=nc(r,"prs"),o=s.rows.map(c=>hm(c,e)),i=X(o,e.query),a=sc(i.length,o.length,s.total,e.query);return i.length===0?oc(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Or({...n,prs:i,aggregate:a,summary:`${ic(i.length,o.length,e.query)} ${lm(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Or({...n,pr:ym(M(r),e),summary:`PR #${ie(M(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return ox(e,t,M(r));case"issue:list":{let s=nc(r,"issues"),o=s.rows.map(c=>bm(c,e)),i=X(o,e.query),a=sc(i.length,o.length,s.total,e.query);return i.length===0?oc(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Or({...n,issues:i,aggregate:a,summary:`${ic(i.length,o.length,e.query)} ${lm(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Or({...n,issue:lx(M(r),e),summary:`issue #${ie(M(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=nc(r,"runs"),o=s.rows.map(c=>wm(c,e)),i=X(o,e.query),a=sc(i.length,o.length,s.total,e.query);return i.length===0?oc(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Or({...n,runs:i,aggregate:a,summary:`${ic(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 Or({...n,run:dx(M(r),e),summary:`run ${ie(M(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function ox(e,t,r){let n=ym(M(r.view),{...e,action:"view",wide:!0}),s=X(ce(r.checks).map(ix),e.query),o=M(r.comments).comments,i=X(ce(o).map(ax).slice(-3),e.query);return Ve({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${ie(M(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 ix(e){return{name:S(e,"name"),state:Dn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function ax(e){return{author:km(e.author),body:po(e,"body",ac,!1),created:S(e,"createdAt")}}function nc(e,t){if(Array.isArray(e))return{rows:ce(e)};let r=M(e),n=ie(r,"total")||ie(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:ce(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:ce(r.workflow_runs),total:n}:{rows:[]}}function sc(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function oc(e,t,r,n,s){return Ve({...e,empty:!0,scope:cx(t),[r]:[],aggregate:n,summary:`0 ${ux(t)}`},s)}function cx(e){let t=He(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=He(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=He(e.passthrough,"--branch")??He(e.passthrough,"-b"),s=He(e.passthrough,"--workflow")??He(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function ux(e){let t=He(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function hm(e,t){let r={number:ie(e,"number"),title:S(e,"title"),state:Dn(e),draft:!!e.isDraft};return uc(r,e,t,["author","labels","url","updated"]),r}function ym(e,t){let r=hm(e,t);return r.body=po(e,"body",ac,t.full),t.wide&&(r.base=S(e,"baseRefName"),r.head=S(e,"headRefName")),r}function bm(e,t){let r={number:ie(e,"number"),title:S(e,"title"),state:Dn(e),labels:_m(e.labels)};return uc(r,e,t,["author","url","updated"]),r}function lx(e,t){let r=bm(e,t);return r.body=po(e,"body",ac,t.full),r}function wm(e,t){let r={id:ie(e,"databaseId"),name:S(e,"name"),status:Dn(e),conclusion:S(e,"conclusion")};return uc(r,e,t,["event","branch","workflow","created"]),r}function dx(e,t){let r=wm(e,t),n=ce(e.jobs).map(s=>({name:S(s,"name"),status:Dn(s),conclusion:S(s,"conclusion"),log:po(s,"log",qE,t.full)}));return r.jobs=n,r}function po(e,t,r,n){let s=S(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 px(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(Ht(r)){if(Ht(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 fx(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 lm(e,t){return e.every(r=>r.state===t)?t:"returned"}function ic(e,t,r){return r?`${e}/${t}`:String(e)}function Or(e,t,r){return t.query?Ve(e,r):e}function Dn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function uc(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=km(t.author):s==="labels"?e.labels=_m(t.labels):s==="url"?e.url=S(t,"url"):s==="updated"?e.updated=S(t,"updatedAt"):s==="event"?e.event=S(t,"event"):s==="branch"?e.branch=S(t,"headBranch"):s==="workflow"?e.workflow=S(t,"workflowName"):s==="created"&&(e.created=S(t,"createdAt")))}function _m(e){return Array.isArray(e)?e.map(t=>Ht(t)?S(t,"name"):String(t)).filter(Boolean):[]}function km(e){return Ht(e)?S(e,"login"):""}function Ln(e){return e.trim()?JSON.parse(e):null}function ce(e){return Array.isArray(e)?e.filter(Ht):[]}function M(e){return Ht(e)?e:{}}function S(e,t){let r=e[t];return typeof r=="string"?r:""}function ie(e,t){let r=e[t];return typeof r=="number"?r:0}function Ht(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var UE,JE,ac,qE,VE,lo,dc=y(()=>{"use strict";D();Cs();om();Mt();jr();De();UE={"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"]},JE={"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"]},ac=160,qE=160,VE={"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"]};lo=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 mc={};F(mc,{renderTestContract:()=>Rm,runTestWrapper:()=>bx});import{spawn as mx}from"node:child_process";async function bx(e,t){let r=Ct(e),n=await Sx(r.argv);return await Rm(e,n,t)}async function Rm(e,t,r){let n=Ct(e),o=Sm(n.argv)==="vitest"?Ex(t.stdout):xx(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let h=be(e.join(" "),t.stdout,t.stderr);return{stdout:$(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${Cx(o.durationSeconds)}`,c=X(o.failures,n.query);if(r.level==="terse")return await wx(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,p=0;for(let h of c){let m=await vx(h.excerpt,n.argv.join(" "),r.store);u.push({suite:h.suite,name:h.name,excerpt:m.text}),l??=m.handle,p+=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 f=n.query?Ve(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(T(f)),stderr:Buffer.from(t.stderr),status:fc(t.status),signal:t.signal,payload:f,mintedHandle:l,bytesElided:p>0?p:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function wx(e,t,r,n,s,o,i){let a=_x(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?Ve(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=T(u),p=Math.max(0,r.failures.length-a.length),d=a.some((E,v)=>E.excerpt!==r.failures[v].excerpt);if(p===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:fc(t.status),signal:t.signal,payload:u};let f={exit_code:n,summary:s};r.failures.length>0&&(f.failures=r.failures.map(E=>({suite:E.suite,name:E.name,excerpt:E.excerpt})));let h=T(f),m=Buffer.byteLength(h),g=await o.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!g)throw new Error("terse test output requires an elision store");let w=`\u2026 elided ${p>0?`${p} failures`:"full detail"} (+${m}) \u2014 ${Ce(g)}`;return{stdout:Buffer.from(`${l}
|
|
97
|
+
${w}`),stderr:Buffer.from(t.stderr),status:fc(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:m,rowsElided:p,rawOutput:Buffer.from(h)}}function fc(e){return e===0||e===null?0:1}function _x(e){let t=[],r=hx;for(let n of e.slice(0,yx)){let s=kx(n.excerpt,Math.min(gx,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function kx(e,t){if(t<=0)return"";let r=e.split(`
|
|
98
98
|
`),n=r.length<=2?e:`${r[0]}
|
|
99
99
|
\u2026
|
|
100
|
-
${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function
|
|
101
|
-
`).filter(Boolean).map(
|
|
102
|
-
`)}),
|
|
103
|
-
\u2026 elided ${
|
|
104
|
-
`):""}function
|
|
105
|
-
`),status:1,signal:null}}return
|
|
106
|
-
`;if(!
|
|
107
|
-
`;return{stdout:Buffer.from(`${
|
|
108
|
-
`),n=r.at(-1)==="",s=n?r.slice(0,-1):r,
|
|
109
|
-
`)}${n&&
|
|
110
|
-
`:""}`,truncated:
|
|
111
|
-
`);return t.at(-1)===""?t.slice(0,-1):t}function
|
|
112
|
-
`),s
|
|
100
|
+
${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Sm(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 Rx(e){if(Sm(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 Sx(e){let t=Rx(e),r=mx(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=[],s=[];return r.stdout.on("data",o=>n.push(o)),r.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{r.on("error",i),r.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function Ex(e){let t=Em(e);if(!_t(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=kt(t.numTotalTests),o=kt(t.numFailedTests),i=Ox(kt(t.startTime),kt(t.endTime));for(let a of r){if(!_t(a))continue;let c=Ge(a.name)||Ge(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)_t(l)&&l.status==="failed"&&n.push({suite:c,name:Ge(l.fullName)||Ge(l.title)||Ge(l.name),excerpt:Tx(l.failureMessages)||Ge(l.failureMessage)})}return s||=r.reduce((a,c)=>!_t(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>_t(c)?a+kt(c.perfStats&&_t(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function xx(e){let t=e.split(`
|
|
101
|
+
`).filter(Boolean).map(c=>Em(c)).filter(_t);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+=kt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=kt(c.failed),i+=kt(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Ge(c.name).split("::").slice(0,-1).join("::"),name:Ge(c.name),excerpt:Ge(c.stdout)});continue}if(c.reason==="compiler-message"&&_t(c.message)){let u=Ge(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(`
|
|
102
|
+
`)}),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 vx(e,t,r){let n=Buffer.from(e);if(n.length<=pc)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,pc).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
|
|
103
|
+
\u2026 elided ${i} bytes (+${n.length}) \u2014 ${Ce(s)}`,handle:s,bytesElided:n.length}}function Em(e){try{return JSON.parse(e)}catch{return null}}function Tx(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
|
|
104
|
+
`):""}function Cx(e){return`${Number(e.toFixed(1))}s`}function Ox(e,t){return e>0&&t>e?(t-e)/1e3:0}function kt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ge(e){return typeof e=="string"?e:""}function _t(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pc,gx,hx,yx,gc=y(()=>{"use strict";D();Mt();jr();De();pc=320,gx=160,hx=pc,yx=3});var bc={};F(bc,{parseCatCommand:()=>yc,renderCatContract:()=>Mx,runCatWrapper:()=>$x});import{isUtf8 as Px}from"node:buffer";import{readFile as Ix}from"node:fs/promises";import{extname as Ax}from"node:path";async function $x(e,t){let r=yc(e),n;try{n=await Ix(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=be(e.join(" "),"",o);return{stdout:$({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
|
|
105
|
+
`),status:1,signal:null}}return Pm(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await Om(e,r,n,t)}async function Mx(e,t,r){if((t.status??0)!==0||t.signal){let i=be(e.join(" "),t.stdout,t.stderr);return{stdout:$(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=yc(e),s=Buffer.from(t.stdout,"utf8");return Pm(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Om(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function yc(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=Cm(t[++i],hc);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=Cm(u,hc);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 Om(e,t,r,n){let s=r.toString("utf8"),o=Fx(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>Tm(n.heavyByteThreshold,xm)||o.truncated;if(!vm(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=vm(t.file)?Bx(e,t.file,r,s,n.level,o):jx(e,t.file,r,s,o),c=`${T(a)}
|
|
106
|
+
`;if(!i&&Buffer.byteLength(c)<=Tm(n.heavyByteThreshold,xm))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 ${Ce(u)}
|
|
107
|
+
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function Bx(e,t,r,n,s,o){let i=fo(n),a=s==="terse"?Dx:Lx,c=fo(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:Hx(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function jx(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:fo(n).length,content:fo(s.text),truncated:s.truncated}}function Fx(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
|
|
108
|
+
`),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??hc,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
|
|
109
|
+
`)}${n&&i.length>0?`
|
|
110
|
+
`:""}`,truncated:i.length<s.length}}function Hx(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&&!Gx(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function fo(e){let t=e.split(`
|
|
111
|
+
`);return t.at(-1)===""?t.slice(0,-1):t}function Pm(e){return e.includes(0)||!Px(e)}function vm(e){return Nx.has(Ax(e).toLowerCase())}function Gx(e){return["for","if","switch","while"].includes(e)}function Tm(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Cm(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var xm,hc,Lx,Dx,Nx,wc=y(()=>{"use strict";D();Mt();De();xm=8*1024,hc=10,Lx=8,Dx=2,Nx=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var Bm={};F(Bm,{REPO_STORE_PATH:()=>Rc,mergeRspBlock:()=>Nm,provisionRspRepoStore:()=>Qx});import{constants as Wx}from"node:fs";import{access as Ux,copyFile as Jx,mkdir as Am,readFile as qx,rename as Vx,writeFile as Lm}from"node:fs/promises";import{dirname as Kx,join as Nn,resolve as zx}from"node:path";async function Qx(e,t={}){let r=zx(e),n=Nn(r,".red"),s=Nn(n,"config.yaml"),o=Nn(r,Rc);await Am(n,{recursive:!0}),await Am(Kx(o),{recursive:!0});let i="";try{i=await qx(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=Nm(i,{enabled:!0,ttlDays:t.ttlDays??Re,ephemeralTtlHours:t.ephemeralTtlHours??Se,byteBudget:t.byteBudget??Ee,heavyGitByteThreshold:t.heavyGitByteThreshold??Ye}),c=a!==i;c&&await Lm(s,a,"utf8");let u=!await kc(o),l=!1,p=!1;if(u){let f=Nn(r,Yx),h=Nn(r,Xx);if(await kc(f))await Vx(f,o),p=!0;else if(await kc(h))await Jx(h,o),l=!0;else{let{RspElisionStore:m}=await Promise.resolve().then(()=>(Qe(),or)),g=process.env.REDDB_BIN;try{await(await m.open({uri:`file://${o}`,ttlDays:t.ttlDays??Re,ephemeralTtlHours:t.ephemeralTtlHours??Se,byteBudget:t.byteBudget??Ee,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=Zx(a,Rc);return d!==a&&await Lm(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:p}}function Nm(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${mo(t.ttlDays,Re)}`,` ephemeralTtlHours: ${mo(t.ephemeralTtlHours,Se)}`,` byteBudget: ${mo(t.byteBudget,Ee)}`,` heavyGitByteThreshold: ${mo(t.heavyGitByteThreshold,Ye)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
112
|
+
`),s=$m(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
|
|
113
113
|
`)}
|
|
114
|
-
`}let
|
|
114
|
+
`}let o=Sc(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
|
|
115
115
|
`)}
|
|
116
|
-
`}function
|
|
117
|
-
`),n
|
|
116
|
+
`}function $m(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(xc(n)&&Ec(n)===0&&Mm(n)===t)return r}return-1}function Sc(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(xc(e[s])&&Ec(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Ec(e){return(e.match(/^ */)?.[0]??"").length}function xc(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Mm(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function mo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Zx(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
117
|
+
`),n=$m(r,"plugins");if(n===-1)return e;let s=Sc(r,n,0),o=Dm(r,"memory",n+1,s,2);if(o===-1)return e;let i=Sc(r,o,2),a=[...r],c=Dm(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
|
|
118
118
|
`)}
|
|
119
|
-
`}function
|
|
120
|
-
`}function
|
|
119
|
+
`}function Dm(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(xc(i)&&Ec(i)===s&&Mm(i)===t)return o}return-1}async function kc(e){try{return await Ux(e,Wx.F_OK),!0}catch{return!1}}var Rc,Yx,Xx,jm=y(()=>{"use strict";_e();ve();Rc=gi,Yx=fu,Xx=".red/memory/graph.rdb"});var Um={};F(Um,{runRspMcpServer:()=>tv});import{createInterface as ev}from"node:readline";async function tv(){let e=xe(process.cwd(),process.env),t=ev({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 rv(n,e);Gm({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Gm({jsonrpc:"2.0",id:typeof Wm(r)?.id>"u"?null:Wm(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function rv(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:Hm(t)}]};if(!t.enabled)return{content:[{type:"text",text:Hm(t)}],isError:!0};let n=lv(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:Gt({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:Gt({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:Gt({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:Gt(nv(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await sv(r.arguments,n)}]}}return{}}function Gt(e){return`${H(e)}
|
|
120
|
+
`}function nv(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function sv(e,t){let r=ov(e?.payload),n=iv(e?.level),s=await Da(r,{level:n,command:"rsp mcp compress",store:t});if(s.detected)return cv(s.output);let o=Ks(r);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return Gt({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(r),text:o});let i=Buffer.from(r),a=await t.mint(i,{command:"rsp mcp compress",loss:{level:n,bytes_elided:i.length}});return av(o,i.length,a,n)}function ov(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function iv(e){return e==="terse"?"terse":"brief"}function av(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=Fm(o.subarray(0,i)),c=Fm(o.subarray(Math.max(0,o.length-i)));return Gt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:uv(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function cv(e){return e.endsWith(`
|
|
121
121
|
`)?e:`${e}
|
|
122
|
-
`}function
|
|
123
|
-
`)}function
|
|
124
|
-
`)}function
|
|
125
|
-
`)}function ri(e,t){if(t.length===0)return[];if(t.some(i=>i.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let r=t.map(i=>i.command.slice(1)).filter(i=>i.length===1).map(i=>i[0]).filter(ni),n=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.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 i=r.map(o=>Jp(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of Px(n)){let a=o.map(u=>u.map((c,l)=>`[ "$${l+2}" = '${Ix(c)}' ]`).join(" && ")).join(" || ");s.push(` ${Jp(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Px(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 Cx(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 Jp(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Ix(e){return e.replace(/'/g,"'\\''")}function Dx(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Wp=w(()=>{"use strict";vn()});function eu(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"&&Ax(t.chosenOption)&&$x(t.outcome)&&Nx(t.cost)}function Ax(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function $x(e){return e==="success"||e==="failure"||e==="escalated"}function Nx(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 Hp=w(()=>{});import{createHash as Lx}from"node:crypto";function nm(e,t){return new ru(e,t)}function qp(e){let t=Number(e.red_entity_id??e.rid),r=nu(e.properties??e.PROPERTIES),n=sm(String(e.node_type??e.NODE_TYPE??r.kind??"note"));if(!Number.isFinite(t))return null;let s=String(r.id??e.label??e.LABEL??t),i=String(r.title??e.label??e.LABEL??s),o=String(r.content??""),a=Array.isArray(r.tags)?r.tags.map(String):[],u=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:n,properties:{...r,id:s,title:i,content:o,tags:a,created_at:Number(r.created_at??u),updated_at:Number(r.updated_at??r.created_at??u),hash:String(r.hash??"")}}}function Vp(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=im(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:nu(e.properties??e.PROPERTIES)}}function jx(e){let t=Number(e.red_entity_id??e.rid),r=nu(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!eu(r)?null:{rid:t,event:r}}function nu(e){return e==null?{}:typeof e=="string"?JSON.parse(e):si(e)?e:{}}function sm(e){let t=e==="contact"?"person":e;if(Bx.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function im(e){if(Mx.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Gx(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Kp(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ft(e){return si(e)?e:{}}function zp(e,t){return Ft(e)[t]}function Yp(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Qp(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Zp(e){let t=Ft(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function oe(e){return typeof e=="string"&&e.length>0?e:void 0}function si(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function tu(e){return e!=null}function Fx(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Jx(e){return Lx("sha256").update(JSON.stringify(e)).digest("hex")}function Ux(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Xp(e){return`artifact-hash:${e}`}function em(e,t,r){return`connection:${e}:${t}:${r}`}function tm(){return"model-tier-bandit:v1"}function Wx(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function rm(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function om(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(o=>o.toLowerCase()),i=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+rm(r,a)*3+rm(n,a),0),tags:t.reduce((o,a)=>o+s.reduce((u,c)=>u+(c===a?4:c.includes(a)||a.includes(c)?2:0),0),0),kind:t.reduce((o,a)=>o+(i===a?3:i.includes(a)||a.includes(i)?1:0),0)}}function Hx(e,t,r,n){let s=0;for(let i of r){let o=i.from_rid===e.rid?i.to_rid:i.to_rid===e.rid?i.from_rid:null;if(o==null)continue;let a=n.get(o);if(!a)continue;let u=am({...om(a,t),connections:0,vector:0}).total;u>0&&(s+=Math.min(u,12)*.35)}return Gt(s)}function am(e){return{...e,lexical:Gt(e.lexical),tags:Gt(e.tags),kind:Gt(e.kind),connections:Gt(e.connections),vector:Gt(e.vector),total:Gt(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Gt(e){return Math.round(e*1e3)/1e3}function qx(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(i=>r.indexOf(i)).filter(i=>i>=0).sort((i,o)=>i-o)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function Vx(e,t){let r=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",n=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,i)=>({ref:`B${i+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:r,missing_evidence:n}}function Kx(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Je,Bx,Mx,ru,um=w(()=>{"use strict";Hp();Je={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Bx=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Mx=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),ru=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(Ft(r));if(t==="getArtifact")return await this.getArtifact(zp(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Ft(r);return await this.search(Yp(n,"query"),Qp(n,"limit")??10,Zp(n.options))}if(t==="think"){let n=Ft(r);return await this.think(Yp(n,"query"),Qp(n,"limit")??8,Zp(n.options))}if(t==="link")return await this.link(Ft(r));if(t==="backlinks")return await this.backlinks(zp(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Ft(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 ${Je.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Je.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Je.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:Kx(t.map(n=>n.kind))}}async capture(t){let r=oe(t.title)||"Untitled artifact",n=oe(t.content);if(!n)throw new Error("brain capture requires content");let s=sm(oe(t.kind)||"note"),i=Fx(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Jx([s,r,n,i,oe(t.sourcePath),oe(t.sourceSession)]),u=await this.kv().get(Xp(a));if(u!=null){let h=await this.getArtifact(Number(u));if(h)return h}let c=`${Ux(r)}-${a.slice(0,8)}`,l={id:c,title:r,content:n,tags:i,source_agent:oe(t.sourceAgent),source_runner:oe(t.sourceRunner),source_session:oe(t.sourceSession),source_path:oe(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:si(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${Je.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,c,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let p=qp(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Xp(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 ${Je.artifacts}`)).rows.map(qp).filter(tu)}async search(t,r,n={}){let s=Wx(t),i=new Set(n.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),u=new Map(o.map(c=>[c.rid,c]));return o.filter(c=>!i.has(c.rid)).map(c=>{let l=om(c,s),f=am({...l,connections:Hx(c,s,a,u),vector:0});return{artifact:c,score:f.total,score_breakdown:f,excerpt:qx(c.properties.content,s)}}).filter(c=>c.score>0).sort((c,l)=>l.score-c.score||l.artifact.properties.updated_at-c.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 Vx(t,s)}async link(t){let r=await this.getArtifact(Kp(t.from)),n=await this.getArtifact(Kp(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=im(oe(t.kind)||"related_to"),i=await this.findConnection(r.rid,n.rid,s);if(i!=null){let l=(await this.listConnections()).find(f=>f.rid===i);if(l)return l}let o={reason:oe(t.reason),confidence:oe(t.confidence)||"explicit",created_at:Date.now(),metadata:si(t.metadata)?t.metadata:void 0},u=(await this.db.query(`INSERT INTO ${Je.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,r.rid,n.rid,1,o)).rows[0];if(!u)throw new Error("INSERT connection returned no row");let c=Vp(u);if(!c)throw new Error("INSERT connection returned invalid row");return await this.kv().put(em(r.rid,n.rid,s),c.rid),c}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 ${Je.connections}`)).rows.map(Vp).filter(tu)}async eventKpis(t){let r=(await this.listArtifacts()).filter(i=>i.kind==="event"),n=Gx(oe(t.interval)||"day"),s=oe(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(!eu(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Je.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 ${Je.outcomeEvents}`)).rows.map(jx).filter(tu).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(tm());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(tm(),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(em(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Je.kv)}}});var Rm={};M(Rm,{runResidentServer:()=>rk});import{randomUUID as kr}from"node:crypto";import{execFileSync as zx,spawn as Yx}from"node:child_process";import{existsSync as Qx}from"node:fs";import{mkdir as gm,rename as Zx,rm as cm,writeFile as hm}from"node:fs/promises";import{createServer as Xx}from"node:net";import{dirname as au,join as ii}from"node:path";import{fileURLToPath as ek,pathToFileURL as tk}from"node:url";async function rk(e){await gm(au(e.socketPath),{recursive:!0});let t=gk();mk();let r=e.telemetryDrainTimeoutMs??ym,n={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??Qn,a,u,c=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=Xx(v=>{l.add(v),v.once("close",()=>l.delete(v)),h(),Sk(v,async P=>{h();let B=await Ek(n,P,e.storeUri,e.residentVersion??"0.0.0-dev"),pe={id:P.id,ok:!0,value:B,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};_m(v,pe),P.op==="handover"&&setImmediate(()=>p())})});function p(){i=!0,c=!0,u=pk(u),d.close();for(let v of l)v.destroy()}function h(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(v=>{let P=()=>{oi(),d.close();for(let B of l)B.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(v,P),{signal:v,handler:P}});await new Promise((v,P)=>{d.once("error",P),d.listen(e.socketPath,()=>{d.off("error",P),v()})}),(async()=>{let v=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let P=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(P)&&P>0&&await new Promise(ee=>setTimeout(ee,P));let B=await ut.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),pe=Number(process.hrtime.bigint()-v)/1e6,Oe=new ou(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??zn,byteBudget:e.telemetryByteBudget??e.byteBudget??Yn});if(i){await B.close();return}if(await su(Oe,r),i){await B.close();return}n={kind:"ready",store:B,telemetry:Oe,storeOpenCount:1,storeElapsedMs:pe},s=setInterval(()=>{let ee=n.kind==="ready"?n:void 0;ee&&su(ee.telemetry,r)},f),s.unref(),h()})().catch(v=>{n={kind:"failed",error:v instanceof Error?v:new Error(String(v))},h()}),e.pidPath&&await hm(e.pidPath,`${process.pid}
|
|
126
|
-
`,{encoding:"utf8",mode:384});let
|
|
127
|
-
`,{encoding:"utf8",mode:384}),await
|
|
128
|
-
`)}}async function
|
|
122
|
+
`}function Fm(e){return e.toString("utf8").replace(/�$/g,"")}function uv(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 lv(e){return new Tn(lt(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs})}function Hm(e){return Gt({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",help:e.enabled?[]:["/red-setup"]})}function Gm(e){process.stdout.write(`${JSON.stringify(e)}
|
|
123
|
+
`)}function Wm(e){try{return JSON.parse(e)}catch{return null}}var Jm=y(()=>{"use strict";Ne();ve();_n();nt()});var Vm={};F(Vm,{renderShellInit:()=>dv});function dv(e,t=Pn){if(e==="fish")return pv(t);if(e==="bash"||e==="zsh")return fv(e,t);throw new Error(`unsupported shell: ${e}`)}function pv(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(ho))].map(r=>` abbr --add --position command -- ${r} '${yv(`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(`
|
|
124
|
+
`)}function fv(e,t){let r=gv(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...go("git",r.get("git")??[]),...go("gh",r.get("gh")??[]),...go("vitest",r.get("vitest")??[]),...go("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(`
|
|
125
|
+
`)}function go(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(ho),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ho)),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=>qm(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of mv(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${hv(u)}' ]`).join(" && ")).join(" || ");s.push(` ${qm(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function mv(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 gv(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ho(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ho(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function qm(e){return e.replace(/[\\|)&;]/g,"\\$&")}function hv(e){return e.replace(/'/g,"'\\''")}function yv(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Km=y(()=>{"use strict";In()});function vc(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"&&bv(t.chosenOption)&&wv(t.outcome)&&_v(t.cost)}function bv(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function wv(e){return e==="success"||e==="failure"||e==="escalated"}function _v(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 zm=y(()=>{});import{createHash as kv}from"node:crypto";function ag(e,t){return new Cc(e,t)}function Ym(e){let t=Number(e.red_entity_id??e.rid),r=Oc(e.properties??e.PROPERTIES),n=cg(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 Xm(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=ug(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:Oc(e.properties??e.PROPERTIES)}}function Ev(e){let t=Number(e.red_entity_id??e.rid),r=Oc(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!vc(r)?null:{rid:t,event:r}}function Oc(e){return e==null?{}:typeof e=="string"?JSON.parse(e):yo(e)?e:{}}function cg(e){let t=e==="contact"?"person":e;if(Rv.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function ug(e){if(Sv.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function xv(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Qm(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ut(e){return yo(e)?e:{}}function Zm(e,t){return Ut(e)[t]}function eg(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function tg(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function rg(e){let t=Ut(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function ae(e){return typeof e=="string"&&e.length>0?e:void 0}function yo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Tc(e){return e!=null}function vv(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Tv(e){return kv("sha256").update(JSON.stringify(e)).digest("hex")}function Cv(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function ng(e){return`artifact-hash:${e}`}function sg(e,t,r){return`connection:${e}:${t}:${r}`}function og(){return"model-tier-bandit:v1"}function Ov(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ig(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function lg(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+ig(r,a)*3+ig(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 Pv(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=dg({...lg(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Wt(s)}function dg(e){return{...e,lexical:Wt(e.lexical),tags:Wt(e.tags),kind:Wt(e.kind),connections:Wt(e.connections),vector:Wt(e.vector),total:Wt(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Wt(e){return Math.round(e*1e3)/1e3}function Iv(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 Av(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 Lv(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var We,Rv,Sv,Cc,pg=y(()=>{"use strict";zm();We={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Rv=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Sv=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Cc=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(Ut(r));if(t==="getArtifact")return await this.getArtifact(Zm(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Ut(r);return await this.search(eg(n,"query"),tg(n,"limit")??10,rg(n.options))}if(t==="think"){let n=Ut(r);return await this.think(eg(n,"query"),tg(n,"limit")??8,rg(n.options))}if(t==="link")return await this.link(Ut(r));if(t==="backlinks")return await this.backlinks(Zm(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Ut(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 ${We.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${We.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${We.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:Lv(t.map(n=>n.kind))}}async capture(t){let r=ae(t.title)||"Untitled artifact",n=ae(t.content);if(!n)throw new Error("brain capture requires content");let s=cg(ae(t.kind)||"note"),o=vv(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=Tv([s,r,n,o,ae(t.sourcePath),ae(t.sourceSession)]),c=await this.kv().get(ng(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${Cv(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:o,source_agent:ae(t.sourceAgent),source_runner:ae(t.sourceRunner),source_session:ae(t.sourceSession),source_path:ae(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:yo(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${We.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 f=Ym(d);if(!f)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(ng(a),f.rid),await this.materializeTagConnections(f),f}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 ${We.artifacts}`)).rows.map(Ym).filter(Tc)}async search(t,r,n={}){let s=Ov(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=lg(u,s),p=dg({...l,connections:Pv(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:Iv(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 Av(t,s)}async link(t){let r=await this.getArtifact(Qm(t.from)),n=await this.getArtifact(Qm(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=ug(ae(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(p=>p.rid===o);if(l)return l}let i={reason:ae(t.reason),confidence:ae(t.confidence)||"explicit",created_at:Date.now(),metadata:yo(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${We.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=Xm(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(sg(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 ${We.connections}`)).rows.map(Xm).filter(Tc)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=xv(ae(t.interval)||"day"),s=ae(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(!vc(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${We.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 ${We.outcomeEvents}`)).rows.map(Ev).filter(Tc).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(og());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(og(),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(sg(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(We.kv)}}});var xg={};F(xg,{runResidentServer:()=>Hv});import{randomUUID as Pr}from"node:crypto";import{execFileSync as Dv,spawn as Nv}from"node:child_process";import{existsSync as $v}from"node:fs";import{mkdir as wg,rename as Mv,rm as fg,writeFile as _g}from"node:fs/promises";import{createServer as Bv}from"node:net";import{dirname as Lc,join as bo}from"node:path";import{fileURLToPath as jv,pathToFileURL as Fv}from"node:url";async function Hv(e){await wg(Lc(e.socketPath),{recursive:!0});let t=e0();Zv();let r=e.telemetryDrainTimeoutMs??kg,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??es,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=Bv(v=>{l.add(v),v.once("close",()=>l.delete(v)),h(),a0(v,async O=>{h();let j=await c0(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),me={id:O.id,ok:!0,value:j,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};Eg(v,me),O.op==="handover"&&setImmediate(()=>f())})});function f(){o=!0,u=!0,c=Qv(c),d.close();for(let v of l)v.destroy()}function h(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{f()},i),a.unref())}let g=["SIGINT","SIGTERM"].map(v=>{let O=()=>{wo(),d.close();for(let j of l)j.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(v,O),{signal:v,handler:O}});await new Promise((v,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),v()})}),(async()=>{let v=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(te=>setTimeout(te,O));let j=await pt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),me=Number(process.hrtime.bigint()-v)/1e6,Pe=new Ac(j,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Qn,byteBudget:e.telemetryByteBudget??e.byteBudget??Zn});if(o){await j.close();return}if(await Pc(Pe,r),o){await j.close();return}n={kind:"ready",store:j,telemetry:Pe,storeOpenCount:1,storeElapsedMs:me},s=setInterval(()=>{let te=n.kind==="ready"?n:void 0;te&&Pc(te.telemetry,r)},p),s.unref(),h()})().catch(v=>{n={kind:"failed",error:v instanceof Error?v:new Error(String(v))},h()}),e.pidPath&&await _g(e.pidPath,`${process.pid}
|
|
126
|
+
`,{encoding:"utf8",mode:384});let b=e.residentVersion??"0.0.0-dev",w=e.registryPath??bo(Y(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await zn(w,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:b})}catch{}await new Promise(v=>d.once("close",v)),a&&clearTimeout(a),s&&clearInterval(s),await fg(e.socketPath,{force:!0});let E=n;E.kind==="ready"&&(await Pc(E.telemetry,r,u),await E.store.close()),c&&clearTimeout(c);for(let{signal:v,handler:O}of g)process.off(v,O);t?.kill("SIGTERM"),wo(),e.pidPath&&await fg(e.pidPath,{force:!0}),await Yn(w)}async function Vv(e,t,r=new Date){let n=await hs(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=bo(Y(t),Jv),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 wg(Lc(a),{recursive:!0}),await _g(c,`${H(u)}
|
|
127
|
+
`,{encoding:"utf8",mode:384}),await Mv(c,a)}async function Pc(e,t=kg,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Sg(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
|
|
128
|
+
`)}}async function Kv(e){let t=[];for(let r of qv){let n=await zv(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await Yv(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Rg(r)}`))}return t}async function zv(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 Yv(e,t,r){let n=Xv(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${Rg(t)}`)}function Xv(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 Rg(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Qv(e){return e&&clearTimeout(e),setTimeout(()=>{wo(),process.exit(0)},Uv)}function Zv(){mg||(mg=!0,process.on("exit",()=>wo()))}function e0(){if(process.platform==="win32")return;let t=Nv(process.execPath,["-e",`
|
|
129
129
|
const { execFileSync } = require("node:child_process");
|
|
130
130
|
const parentPid = Number(process.argv[1]);
|
|
131
131
|
const known = new Set();
|
|
@@ -166,24 +166,24 @@ const timer = setInterval(() => {
|
|
|
166
166
|
clearInterval(timer);
|
|
167
167
|
process.exit(0);
|
|
168
168
|
}, 500);
|
|
169
|
-
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function
|
|
170
|
-
`);if(s<0)return;let
|
|
171
|
-
`)}catch{}}async function
|
|
172
|
-
`}function
|
|
173
|
-
`}function
|
|
174
|
-
`)}function
|
|
175
|
-
`}async function
|
|
176
|
-
`;s+=Buffer.byteLength(a),process.stderr.write(a),
|
|
177
|
-
`);let s=await
|
|
178
|
-
`),await
|
|
179
|
-
`),n(127)}),r.on("close",(s,
|
|
180
|
-
`),2}let r=
|
|
181
|
-
`),n(127)}),r.on("close",(s,
|
|
182
|
-
`}async function
|
|
169
|
+
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function wo(){for(let e of t0())try{process.kill(e,"SIGTERM")}catch{}}function t0(){if(process.platform==="win32")return[];let e="";try{e=Dv("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 r0(e){if(e.collection!==de)return e;let t=await gg(e.raw_text,yg(e.raw_bytes)),r=await gg(e.emitted_text,yg(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 gg(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=Gv)try{return await Sg((async()=>({tokens:(await n0())("cl100k_base").encode(e).length,estimated:!1}))(),Wv,"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 n0(){return hg??=import(Fv(s0()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await hg}function s0(){let e=Lc(jv(import.meta.url)),r=[bo(e,"..","node_modules","js-tiktoken","dist","index.js"),bo(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>$v(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function yg(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function z(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Ic(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Sg(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 o0(e){try{return JSON.parse(e)}catch{return e}}function i0(e){return bg(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>bg(t)&&(t.collection===se||t.collection===q||t.collection===de||t.collection===Me)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function bg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function a0(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
|
|
170
|
+
`);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??Pr(),ok:!1,error:a instanceof Error?a.message:String(a)};Eg(e,u)}finally{e.end()}})()})}function Eg(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
|
|
171
|
+
`)}catch{}}async function c0(e,t,r,n){if(t.op==="handover")return{handover:!0,version:n,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:n};if(t.op==="stats")return await s.stats();if(t.op==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await Wi(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 hs(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 Ui(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return l0(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await u0(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function u0(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await ag(s,t).request(r,n)}function l0(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Gv,Wv,kg,Uv,Jv,qv,Ac,mg,hg,vg=y(()=>{"use strict";_e();Xn();Ne();Qe();pg();Te();ve();Gv=256*1024,Wv=500,kg=2e3,Uv=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),Jv="rsp-status-summary.json",qv=[se,q,de,Me,rn],Ac=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 Kv(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 Gi(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:z(c.command)||"unknown",source_id:z(c.id),source_collection:z(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 Vv(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:Pr(),a={...await r0(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===se?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===se||r.accounting_recorded===!0?null:r.collection===de?await this.writeEvent(t,{collection:se,id:`mirror:${z(r.id)||Pr()}`,created_at:z(r.created_at)||z(r.ts)||new Date().toISOString(),event_type:"invocation",command:z(r.command)||"unknown",command_class:Ic(z(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===Me?await this.writeEvent(t,{collection:se,id:`mirror:${z(r.id)||Pr()}`,created_at:z(r.created_at)||z(r.ts)||new Date().toISOString(),event_type:"invocation",command:z(r.command)||"unknown",command_class:Ic(z(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:z(r.reason)||"unknown",wrapper_family:z(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:z(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Me,id:Pr(),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:se,id:`mirror:${Pr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:Ic(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(rn).get("index:v1"),n=typeof r=="string"?o0(r):r;return i0(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(rn).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})}};mg=!1});De();function we(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function W(e,t){let r=we(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function su(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function ou(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 Bo(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 Bo=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return Bn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Yt(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function iu(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 jn(e,t){let r=we(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 au(e){return e.includes("--full")}Ne();import{existsSync as d0}from"node:fs";import{fileURLToPath as p0}from"node:url";function yu(e){let t={app:e,version:bh(Xt("__RED_BUILD_VERSION__",()=>"2.83.0")??"0.0.0-dev"),gitSha:Xt("__RED_BUILD_GIT_SHA__",()=>"b5a884c17b2e357247ecc977cf0b5f4ab75b3335")??"unknown",buildTime:Xt("__RED_BUILD_TIME__",()=>"2026-07-23T03:45:55-03:00")??"unknown",bundleAsset:Xt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=Xt("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=Xt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function bh(e){return e.startsWith("v")?e.slice(1):e}function Xt(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}De();Ne();jr();import{existsSync as Ak}from"node:fs";import{fileURLToPath as Lk}from"node:url";ai();Ne();li();import{existsSync as cw}from"node:fs";import{fileURLToPath as uw}from"node:url";async function pr(e,t){let r={stats:lw(e.telemetryByteBudget),telemetry:Vi(t)};if(!e.storeUri.startsWith("file://"))return r;let n=uw(e.storeUri);if(!cw(n))return r;if(!n.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(Qe(),or)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:Vi(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(Qe(),or));await s();let{readAccountingLaneStats:o,readTelemetryStats:i}=await Promise.resolve().then(()=>(Te(),on)),a=await er(e.storeUri);try{return{stats:await o(a,e.telemetryByteBudget),telemetry:await i(a,t)}}finally{await a.close()}}function Ki(e,t=Vi(30),r=!1){return`${H(zi(e,t,r))}
|
|
172
|
+
`}function zi(e,t,r){let n=t.savings.top_commands.slice(0,r?10:3),s=r?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),o=e.storage_classes??ys(),i=t.health.recent_failures.slice(0,r?20:5),a=t.decisions.top_pass_reasons.slice(0,r?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:o,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:dw(t.savings),dollars_saved_estimate_usd_display:pw(t.savings),daily_tokens_saved:s,daily_tokens_saved_elided:r?0:Math.max(0,t.savings.daily_tokens_saved.length-s.length),top_commands:n,top_commands_elided:r?0:Math.max(0,t.savings.top_commands.length-n.length)},health:{...t.health,degradation_rate_display:qi(t.health.degradation_rate),show_hit_rate_display:qi(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:i,recent_failures_elided:r?0:Math.max(0,t.health.recent_failures.length-i.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:qi(t.decisions.contribution_rate),top_pass_reasons:a,top_pass_reasons_elided:r?0:Math.max(0,t.decisions.top_pass_reasons.length-a.length)},latency:{...t.latency,wrapper_ms_p50_display:Ji(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Ji(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Ji(t.latency.store_elapsed_ms_avg)}}}function Kl(e){return`${H(e)}
|
|
173
|
+
`}function Vi(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[]}}}function lw(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:ys()}}function ys(){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 Yi(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
|
|
174
|
+
`)}function dw(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 pw(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?qr(e.dollars_saved_estimate_usd):`${qr(e.dollars_saved_low_usd)}-${qr(e.dollars_saved_high_usd)} (estimate_midpoint: ${qr(e.dollars_saved_estimate_usd)})`}function Ji(e){return e==null?"none":String(e)}function qi(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function bp(e){let{stats:t,telemetry:r}=await pr(e,30),[n,s]=await Promise.all([Dk(e),Promise.resolve().then(()=>(Ta(),va)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function wp(e){let t=zi(e.stats,e.telemetry,!1),r=Go({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??ys()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},Nk(e));return`${H(r)}
|
|
175
|
+
`}async function Dk(e){if(!e.storeUri.startsWith("file://"))return[];let t=Lk(e.storeUri);if(!Ak(t))return[];let{RspElisionStore:r}=await Promise.resolve().then(()=>(Qe(),or)),n=await r.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return await n.recoveryHandles(5)}finally{await n.close()}}function Nk(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"]}Ne();De();import{existsSync as YS}from"node:fs";import{fileURLToPath as XS}from"node:url";Te();import{spawn as zs}from"node:child_process";async function lf(e,t,r){let n=process.hrtime.bigint(),s=await hS(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return yS(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function hS(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(()=>(Fs(),js)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(En(),Sn)).then(i=>i.parseExecCommandLine(e));r=zs(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=zs(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)}
|
|
176
|
+
`;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 df(e){return e>0&&Math.random()<e}async function vn(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
|
|
177
|
+
`);let s=await mf(t);if(n){let o=bS(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Te(),on));uf(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:ja(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})),uf(i(n,{collection:c,ts:new Date().toISOString(),command:ja(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function pf(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Ys()}, passing through
|
|
178
|
+
`),await mf(e)}function Ys(){return"rsp is not enabled in this directory; run /red-setup"}function ff(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function je(e){return ja(e.positional)}function ja(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 xn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function yS(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:je(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};mt(e,{collection:"rsp_accounting_events_v1",...i}),mt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function bS(e,t,r){let n=t[0]??"unknown",s=wS(r)||e;return{reason:cf(r)==="ENOENT"||cf(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:kS(r)??1,stderrHead:_S(s,240)}}function wS(e){return e instanceof Error?xn(e.message):xn(String(e??""))}function _S(e,t){let r=xn(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function cf(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function kS(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 uf(e){e.catch(()=>{})}async function mf(e){if(e[0]==="exec"||e[0]==="proxy")return await RS(e);let t=e[0];if(!t)return 2;let r=zs(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)}
|
|
179
|
+
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function RS(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(Fs(),js));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(En(),Sn));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
|
|
180
|
+
`),2}let r=zs(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
181
|
+
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function $f(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")),Nf("disabled",n,r);n.push(await QS(e)),n.push(e.proxyEnabled?Z("proxy_mode","proxy routing enabled for pre-exec rewrites"):Sr("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(nt(),jt));if(n.push(ZS(await o(t))),n.push(eE(e)),Bf(e)){let{telemetry:i}=await pr(e,r);n.push(tE(i,r))}else n.push(Z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return Nf(n.some(i=>!i.pass)?"fail":"pass",n,r)}function Mf(e){let{exitCode:t,...r}=e;return`${H({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
|
|
182
|
+
`}async function QS(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(()=>(In(),so)),r=t("git status");return r.kind==="rewrite"?Z("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):Sr("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Sr("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?xn(t.message):"unknown error"}`,"rsp setup")}}function ZS(e){return e.state==="registered-alive-socket-healthy"?Z("resident_liveness","resident registry points at a healthy socket"):Sr("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function eE(e){return e.storeUri.startsWith("file://")?Bf(e)?Z("store_provisioning","rsp store exists for this directory"):Sr("store_provisioning","rsp store is not provisioned","rsp setup"):Z("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function tE(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 Sr("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,rE(s,t))}function rE(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 Bf(e){if(!e.storeUri.startsWith("file://"))return!0;try{return YS(XS(e.storeUri))}catch{return!1}}function Z(e,t){return{name:e,pass:!0,finding:t}}function Sr(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Mo({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function Nf(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)}}qa();function Gf(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${oE(t).join(`
|
|
183
183
|
`)}
|
|
184
|
-
`}function _S(e){switch(e){case"stats":return L("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return L("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return L("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return L("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return L("rsp gh <pr|issue|run> <list|view> [options] | <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 L("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return L("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return L("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return L('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return L("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return L("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return L("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return L("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return L("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return L("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return L("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return L("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return L("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return L("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"hook":return L("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," stats, gains, show, git, gh, vitest, cargo, cat, exec, proxy, wait"," doctor, status, sweep, setup, mcp, shell-init, server, warm-resident, gh-api-json, hook","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return L(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function L(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}Ae();ke();import{spawn as RS}from"node:child_process";import{createHash as SS}from"node:crypto";import{existsSync as ES,readFileSync as xS,statSync as kS}from"node:fs";import{tmpdir as vS}from"node:os";import{dirname as TS,join as mt}from"node:path";async function X(e,t,r,n,s=process.cwd(),i){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-r)/1e6;return n?(Bt(DS(s,e,t,o,n.lastResponseMetrics())),i&&OS(s,i)):AS(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Bt(e){e.catch(()=>{})}async function zs(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(ke(),en));await s(e,{collection:i,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:r,loss:"lossless",raw_bytes:r?n:0,emitted_bytes:n})}function OS(e,t){try{let r=Ze(e),n=kS(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!IS(r,Date.now()-s))return;let i=PS(e),o=CS(i),a=mt(o,"rsp.sock"),u=mt(o,"rsp.pid"),c=mt(z(i),"rsp-resident.pid.json"),l=mt(i,".red","tmp","rsp","wake.lock");RS(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",u,"--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",c,"--wake-lock",l],{cwd:i,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function PS(e){let t=e;for(;;){if(ES(mt(t,".git")))return t;let r=TS(t);if(r===t)return e;t=r}}function CS(e){let t=SS("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=mt(r,"red-skills",t);if(mt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return mt(vS(),`red-skills-${n}`,t)}function IS(e,t){try{let r=xS(e,"utf8");for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),i=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof i=="string"){let o=Date.parse(i);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function DS(e,t,r,n,s){let i=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),{appendTelemetryEvent:a,RSP_ACCOUNTING_EVENTS_COLLECTION:u,RSP_TELEMETRY_INVOCATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(ke(),en));await a(e,{collection:u,event_type:"invocation",ts:new Date().toISOString(),command:Me(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:c,ts:new Date().toISOString(),command:Me(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,raw_text:o.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await a(e,{collection:u,event_type:"invocation",ts:new Date().toISOString(),command:Me(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:o.length,emitted_bytes:i.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await a(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:Me(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function AS(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);lt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Me(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:n}),lt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Me(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:n,accounting_recorded:!0})}catch{}}var wt=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}},Ka=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function Tp(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Ka,i=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:o,runFastGitStatus:a}=await Promise.resolve().then(()=>(_a(),Bf));if(o(e.positional))return await X(e,await a(),i,s,r,t);let{runGitWrapper:u}=await Promise.resolve().then(()=>($t(),oa)),c=await u(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await X(e,c,i,s,r,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(ja(),Ma)),a=await o(e.positional,{level:e.level,store:s});return await X(e,a,i,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Ua(),Ja)),a=await o(e.positional,{level:e.level,store:s});return await X(e,a,i,s,r,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Va(),qa)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await X(e,a,i,s,r,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(wn(),bn)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await X(e,a,i,s)}}catch(o){return Vt(o)?(process.stdout.write(o.render()),2):await Rn("wrapper failed",e.positional,o,r)}finally{await s.close()}return await Rn("wrapper failed",e.positional,n,r)}async function Em(e=process.argv.slice(2)){let t=Hu("rsp");if(Du(e))return process.stdout.write(Mf(e)),0;let r=Au(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(vn(),qs));return await m()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(vn(),qs));return await m()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(gn(),la));return await m()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(gn(),la));return await m()}if(r.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Np(),$p)),g=await m(process.cwd());return process.stdout.write(Mo(g)),0}if(r.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Fp(),Gp));return await m(),0}if(r.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(ta(),ea));return await m(r.positional)}if(r.command==="shell-init"){let m=r.positional[1];if(m!=="fish"&&m!=="bash"&&m!=="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:g}=await Promise.resolve().then(()=>(Wp(),Up));return process.stdout.write(g(m)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(xe(),Mc)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:m}=await Promise.resolve().then(()=>(tt(),Lt)),g=m(process.cwd()),y=await Df(s,g,Ln(r.positional,1));return process.stdout.write(Af(y)),y.exitCode}let i=cf(r.command);if(!s.enabled)return i?await uf(r.positional):(process.stdout.write(`${Ms()}
|
|
185
|
-
`),0);if(r.command==="git"&&
|
|
186
|
-
`),0)}if(r.command==="warm-resident"){let m=
|
|
187
|
-
`),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(
|
|
188
|
-
`),
|
|
189
|
-
`),1;let g=await m.telemetryGains(
|
|
184
|
+
`}function oE(e){switch(e){case"stats":return B("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return B("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return B("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return B("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return B("rsp gh <pr|issue|run> <list|view> [options] | <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 B("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return B("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return B("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return B('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return B("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return B("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return B("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return B("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return B("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return B("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return B("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return B("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return B("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return B("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"hook":return B("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," stats, gains, show, git, gh, vitest, cargo, cat, exec, proxy, wait"," doctor, status, sweep, setup, mcp, shell-init, server, warm-resident, gh-api-json, hook","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return B(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function B(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}_e();Te();import{spawn as iE}from"node:child_process";import{createHash as aE}from"node:crypto";import{existsSync as cE,readFileSync as uE,statSync as lE}from"node:fs";import{tmpdir as dE}from"node:os";import{dirname as pE,join as yt}from"node:path";async function ee(e,t,r,n,s=process.cwd(),o){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let i=Number(process.hrtime.bigint()-r)/1e6;return n?(Ft(yE(s,e,t,i,n.lastResponseMetrics())),o&&fE(s,o)):bE(s,e,t,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Ft(e){e.catch(()=>{})}async function ao(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Te(),on));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 fE(e,t){try{let r=Ze(e),n=lE(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!hE(r,Date.now()-s))return;let o=mE(e),i=gE(o),a=yt(i,"rsp.sock"),c=yt(i,"rsp.pid"),u=yt(Y(o),"rsp-resident.pid.json"),l=yt(o,".red","tmp","rsp","wake.lock");iE(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 mE(e){let t=e;for(;;){if(cE(yt(t,".git")))return t;let r=pE(t);if(r===t)return e;t=r}}function gE(e){let t=aE("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=yt(r,"red-skills",t);if(yt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return yt(dE(),`red-skills-${n}`,t)}function hE(e,t){try{let r=uE(e,"utf8");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 yE(e,t,r,n,s){let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),{appendTelemetryEvent:a,RSP_ACCOUNTING_EVENTS_COLLECTION:c,RSP_TELEMETRY_INVOCATIONS_COLLECTION:u}=await Promise.resolve().then(()=>(Te(),on));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:je(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,wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:u,ts:new Date().toISOString(),command:je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,raw_text:i.toString("utf8"),emitted_text:o.toString("utf8"),wrapper_ms:n,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:je(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:i.length,emitted_bytes:o.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await a(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:je(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function bE(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);mt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:s.length,wrapper_ms:n}),mt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:o.length,emitted_bytes:s.length,wrapper_ms:n,accounting_recorded:!0})}catch{}}var Rt=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}},_c=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function Im(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new _c,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(qa(),Hf));if(i(e.positional))return await ee(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Mt(),Aa)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await ee(e,u,o,s,r,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(dc(),lc)),a=await i(e.positional,{level:e.level,store:s});return await ee(e,a,o,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(gc(),mc)),a=await i(e.positional,{level:e.level,store:s});return await ee(e,a,o,s,r,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(wc(),bc)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await ee(e,a,o,s,r,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(En(),Sn)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await ee(e,a,o,s)}}catch(i){return Yt(i)?(process.stdout.write(i.render()),2):await vn("wrapper failed",e.positional,i,r)}finally{await s.close()}return await vn("wrapper failed",e.positional,n,r)}async function Tg(e=process.argv.slice(2)){let t=yu("rsp");if(su(e))return process.stdout.write(Gf(e)),0;let r=ou(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(In(),so));return await m()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(In(),so));return await m()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(_n(),$a));return await m()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(_n(),$a));return await m()}if(r.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(jm(),Bm)),g=await m(process.cwd());return process.stdout.write(Yi(g)),0}if(r.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Jm(),Um));return await m(),0}if(r.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(Ta(),va));return await m(r.positional)}if(r.command==="shell-init"){let m=r.positional[1];if(m!=="fish"&&m!=="bash"&&m!=="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:g}=await Promise.resolve().then(()=>(Km(),Vm));return process.stdout.write(g(m)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(ve(),ll)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:m}=await Promise.resolve().then(()=>(nt(),jt)),g=m(process.cwd()),b=await $f(s,g,jn(r.positional,1));return process.stdout.write(Mf(b)),b.exitCode}let o=ff(r.command);if(!s.enabled)return o?await pf(r.positional):(process.stdout.write(`${Ys()}
|
|
185
|
+
`),0);if(r.command==="git"&&oo(r.positional)){let m=process.hrtime.bigint();return await ee(r,await io(),m,void 0,await Ja(process.cwd()))}let{resolveResidentPaths:i,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(nt(),jt)),u=i(process.cwd());if(o&&df(s.measurementHoldoutShare))return await lf(r,u.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(vg(),xg)),g=i(process.cwd()),b=we(r.positional,"--socket")??g.socketPath,w=n(process.cwd(),process.env,r.storeUri??we(r.positional,"--store-uri"));return w.enabled?(await m({socketPath:b,pidPath:we(r.positional,"--pid-file")??i(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:w.storeUri,ttlDays:W(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:W(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:W(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:W(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:W(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:W(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:W(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:W(r.positional,"--idle-ms")??w.idleMs,residentVersion:we(r.positional,"--resident-version")??t.version,registryPath:we(r.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${Ys()}
|
|
186
|
+
`),0)}if(r.command==="warm-resident"){let m=i(process.cwd()),g=we(r.positional,"--socket")??m.socketPath,b=we(r.positional,"--wake-lock")??m.wakeLockPath,w=n(process.cwd(),process.env,r.storeUri??we(r.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:E}=await Promise.resolve().then(()=>(nt(),jt));return await E({...m,socketPath:g,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:W(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:W(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:W(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:W(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:W(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:W(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:W(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:W(r.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:m}=await Promise.resolve().then(()=>(Fs(),js));return await m(r.positional,{telemetryRoot:u.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:m,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(nt(),jt)),b=r.command==="sweep"?await g(u):await m(u);return process.stdout.write(`${H(b)}
|
|
187
|
+
`),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(Cs(),Id)),g=iu(r.positional);if(!g)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 m({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${r.positional.join(" ")}`});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
|
|
188
|
+
`),b.status}if(!r.command){let m=await bp(s);return process.stdout.write(wp(m)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!d0(p0(s.storeUri)))return o?await Im(r,s,u.rootDir):(process.stdout.write($({command:je(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let l=(m=!0)=>Promise.resolve(new a(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version},{ensureResident:m})),p=()=>c(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),d=async()=>{let{RspElisionStore:m}=await Promise.resolve().then(()=>(Qe(),or));return await m.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},f=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),h;try{if(r.command==="stats"){let{stats:m,telemetry:g}=await pr(s,jn(r.positional,30));return process.stdout.write(Ki(m,g,au(r.positional))),0}if(r.command==="gains"){let m=await f();if(h=()=>m.close(),!f0(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
|
|
189
|
+
`),1;let g=await m.telemetryGains(jn(r.positional,28));return process.stdout.write(Kl(g)),0}if(r.command==="git"){if(Ft(p()),oo(r.positional)){let E=process.hrtime.bigint();return await ee(r,await io(),E,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(Mt(),Aa)),g=new Rt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await m(r.positional,{level:r.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,g,u.rootDir)}if(r.command==="gh"){Ft(p());let{runGhWrapper:m}=await Promise.resolve().then(()=>(dc(),lc)),g=new Rt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await m(r.positional,{level:r.level,store:g});return await ee(r,w,b,g,u.rootDir)}if(r.command==="vitest"||r.command==="cargo"){Ft(p());let{runTestWrapper:m}=await Promise.resolve().then(()=>(gc(),mc)),g=new Rt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await m(r.positional,{level:r.level,store:g});return await ee(r,w,b,g,u.rootDir)}if(r.command==="cat"){Ft(p());let{runCatWrapper:m}=await Promise.resolve().then(()=>(wc(),bc)),g=new Rt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await m(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,g,u.rootDir)}if(r.command==="exec"){Ft(p());let{runExecWrapper:m}=await Promise.resolve().then(()=>(En(),Sn)),g=new Rt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await m(r.positional,{level:r.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,g,u.rootDir)}if(r.command==="show"&&r.handle){let m=await f();h=()=>m.close();let g=await m.get(r.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await ao(u.rootDir,r.handle,!0,g.original.length),0;if(g?.status==="expired"){let w=$({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(w),await ao(u.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 ao(u.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(m){if(Yt(m))return process.stdout.write(m.render()),2;if(o)return await vn("wrapper failed",r.positional,m,u.rootDir);throw m}finally{await h?.()}}function f0(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}De();import.meta.url===`file://${process.argv[1]}`&&Tg().then(e=>process.exit(e),e=>{Yt(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{Tg as main,Yi as renderSetupResult,Ki as renderStats};
|