@reddb-io/red-skills 2.87.5 → 2.87.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brain.bundle.min.mjs +58 -55
- package/dist/castle-mcp.bundle.min.mjs +451 -424
- package/dist/code-nav.bundle.min.mjs +1 -1
- package/dist/dev.bundle.min.mjs +646 -637
- package/dist/memory.bundle.min.mjs +680 -677
- package/dist/rsp.bundle.min.mjs +126 -122
- package/package.json +1 -1
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -1,131 +1,136 @@
|
|
|
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 Ie(e){return k(e,"invalid quoted string")}function Le(e,t){if(e==="")return"";if(e.startsWith('"'))return
|
|
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
|
|
6
|
-
`:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:r<" "?t+=`\\u${r.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=r}return`${t}"`}function
|
|
7
|
-
`);for(let[i,a]of Object.entries(r))
|
|
8
|
-
`);return}e.push(
|
|
9
|
-
`),
|
|
10
|
-
`)}function
|
|
3
|
+
var ih=Object.defineProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var j=(e,t)=>{for(var r in t)ih(e,r,{get:t[r],enumerable:!0})};function k(e,t){return new Fr(e,t)}function P(e,t){return new Tt(e,t)}function er(e){return e instanceof Tt?e:e instanceof Fr?new Tt(e.line,e.reason):new Tt(0,String(e&&e.message?e.message:e))}var Fr,Tt,jr=h(()=>{Fr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},Tt=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function Vn(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 Le(e,t){if(e==="")return"";if(e.startsWith('"'))return su(e,t);if(e.includes('"'))throw Ie(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:ah(e)?Number(e):e}function Ve(e,t){let r=e.trim();if(r.startsWith('"'))return[su(r,t),!0];if(r.includes('"')||/\s/.test(r))throw k(t,"expected non-empty field name");return[r,!1]}function su(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 At(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 ah(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function ch(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function uh(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 Hr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function De(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return uh(e);if(typeof e=="string")return dh(e,t);throw k(0,"not a primitive")}function lh(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function we(e){return lh(e)?e:ou(e)}function dh(e,t){return ph(e,t)?ou(e):e}function ph(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||ch(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function ou(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 tr(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var D,Fo=h(()=>{jr();D=","});function mh(e={}){return{indent:Math.max(1,e.indent??qo),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function fh(e,t){let r=[],n=!1;return Vn(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=mh(t),n=fh(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=zo(s.content,ne(s.content,":",s.number))}catch(l){if(r.strict)throw Uo(l,s.number);u=void 0}if(u!==void 0)return yh(u,n,r)}if(o&&ne(s.content,":",s.number)===-1)return Le(s.content.trim(),s.number);let i={index:0},a=Vo(n,i,0,r),c=n[i.index];if(c!==void 0)throw k(c.number,"expected end of document");return a}function Vo(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}=gh(e,t,r,n);cu(s,i,a,c,n,o.number)}return s}function gh(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 f;try{f=Rh(a)}catch(g){if(n.strict)throw Uo(g,s.number);t.index+=1;let y=jo(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(c.trim()!=="")throw k(s.number,"expected keyed map rows");let _=hh(f,e,t,r+1,n);return{key:f.key,quoted:f.keyQuoted,value:_}}if(u!==-1){let f;try{f=zo(a,i)}catch(g){if(n.strict)throw Uo(g,s.number);t.index+=1;let y=jo(e,t,r,c,s.number,n);return{key:a.trim(),quoted:!1,value:y}}if(f.key===""&&!f.keyQuoted)throw k(s.number,"expected non-empty field name");let _=Ko(f,c,e,t,r,n);return{key:f.key,quoted:f.keyQuoted,value:_}}let[p,d]=Ve(a,s.number);if(p===""&&!d)throw k(s.number,"expected non-empty field name");t.index+=1;let m=jo(e,t,r,c,s.number,n);return{key:p,quoted:d,value:m}}function jo(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Le(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?Vo(e,t,r+1,o):{}}function hh(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]=Ve(i.content.slice(0,a),i.number);if(c===""&&!u)throw k(i.number,"expected non-empty field name");let l=At(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,m)=>{Gr(p,d,Le(l[m],i.number),s,i.number)}),cu(o,c,u,p,s,i.number),r.index+=1}return o}function yh(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=Ko(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 Ko(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 bh(e,e.fields,r,n,s+1,o)}if(a!==""){let c=At(a,e.delimiter,i).map(u=>Le(u,i));if(c.length!==e.len)throw k(i,"array length mismatch");return c}return wh(e,r,n,s+1,o)}function bh(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw Go(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(!iu(c.content,e.delimiter,c.number))break;let u=At(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)=>{Gr(l,p,Le(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw Go(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&iu(a.content,e.delimiter,a.number))throw k(a.number,"array length mismatch");return i}function iu(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 wh(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 Go(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(_h(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 _h(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=zo(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Ko(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 Vo(i,{index:0},r+1,n)}return t.index+=1,Le(o,s.number)}function Go(e,t){let r=e[t]??e[e.length-1];return k(r===void 0?1:r.number,"array length mismatch")}function zo(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]=Ve(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),m;if(d==="")m=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{m=au(d.slice(1,-1),p)}catch(f){throw k(0,f.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw k(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:p,fields:m}}function Rh(e){let t=ne(e,"{",0);if(t===-1||!e.endsWith("}"))throw k(0,"invalid keyed map header");let r,n;try{[r,n]=Ve(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=au(e.slice(t+1,-1),D)}catch(o){throw k(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:D,fields:s}}function au(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]=Ve(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(kh(r[a],r[c])||Wo(r[a],r[c])||Wo(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 kh(e,t){return e.length===t.length&&Wo(e,t)}function Wo(e,t){return t.every((r,n)=>e[n]===r)}function Uo(e,t){return k(t,e.reason??String(e.message))}function cu(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(Sh)){Gr(e,i,n,s,o);return}}Gr(e,[t],n,s,o)}function Gr(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");tr(e,o,r);return}if(i&&!rr(e[o])){if(n.strict)throw k(s,"path expansion conflict");tr(e,o,{})}else i||tr(e,o,{});Gr(e[o],t.slice(1),r,n,s)}function Sh(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function rr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function C(e,t={}){let r={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},n=[];return Array.isArray(e)?Yo(n,void 0,e,0,!1,r):rr(e)?uu(n,e,0,r):n.push(De(e,D)),n.join("")}function Wr(e,t){e.push(" ".repeat(t*qo))}function uu(e,t,r,n){for(let[s,o]of Object.entries(t))Wr(e,r),Jo(e,s,o,r,n)}function Jo(e,t,r,n,s){if(Array.isArray(r)){Yo(e,t,r,n,!1,s);return}if(rr(r)){let o=s.keyedMapCollapse?xh(r,s):void 0;if(o!==void 0){e.push(we(t),"{",o.fields.map(Xo).join(D),`}:
|
|
7
|
+
`);for(let[i,a]of Object.entries(r))Wr(e,n+1),e.push(we(i),": ",o.paths.map(c=>De(mu(a,c),D)).join(D),`
|
|
8
|
+
`);return}e.push(we(t),`:
|
|
9
|
+
`),uu(e,r,n+1,s);return}e.push(we(t),": ",De(r,D),`
|
|
10
|
+
`)}function Yo(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(we(t),`: []
|
|
11
11
|
`):s?e.push(`[0]:
|
|
12
12
|
`):e.push(`[]
|
|
13
|
-
`);return}if(r.every(
|
|
14
|
-
`);return}let i=s?void 0:
|
|
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
|
-
`,
|
|
23
|
-
`;return
|
|
24
|
-
`},end(){return
|
|
25
|
-
`)}function
|
|
26
|
-
`).trim()}var Ne=
|
|
13
|
+
`);return}if(r.every(Hr)){Ho(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>De(a,D)).join(D)),e.push(`
|
|
14
|
+
`);return}let i=s?void 0:lu(r,o);if(i!==void 0){Ho(e,t,r.length,i.fields),e.push(`
|
|
15
|
+
`);for(let a of r)Wr(e,n+1),e.push(i.paths.map(c=>De(mu(a,c),D)).join(D)),e.push(`
|
|
16
|
+
`);return}Ho(e,t,r.length,void 0),e.push(`
|
|
17
|
+
`);for(let a of r)Wr(e,n+1),Eh(e,a,n+1,o)}function Eh(e,t,r,n){if(Array.isArray(t)){e.push("- "),Yo(e,void 0,t,r,!0,n);return}if(rr(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
|
|
18
|
+
`);return}e.push("- "),Jo(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))Wr(e,r+1),Jo(e,o,i,r+1,n);return}e.push("- ",De(t,D),`
|
|
19
|
+
`)}function Ho(e,t,r,n){t!==void 0&&e.push(we(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(Xo).join(D),"}"),e.push(":")}function lu(e,t){let r=du(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:pu(r)}}function xh(e,t){let r=Object.values(e);if(!(r.length<2))return lu(r,t)}function du(e,t){let r=e[0]?.value;if(!rr(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!rr(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})=>Hr(a)))continue;if(!t.nestedTabularHeaders)return;let i=du(o,t);if(i===void 0)return;s.children=i}return n}}function pu(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:pu(r.children,n)})}function mu(e,t){let r=e;for(let n of t)r=r[n];return r}function Xo(e){return e.children===void 0?we(e.key):`${we(e.key)}{${e.children.map(Xo).join(D)}}`}var qo,Ur=h(()=>{jr();Fo();qo=2});var fu=h(()=>{Ur()});function Ch(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let r=e.slice(2,-1);if(!/^[0-9]+$/.test(r))throw P(t,"invalid trailer count");return Number.parseInt(r,10)}function xu(e,t){if(!Eu.test(e))throw P(t,"invalid tag")}function Th(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!Eu.test(n)){if(/^[A-Za-z0-9_-]/.test(n)&&/^[^,[\]|{}:\t ]+$/.test(n))throw P(t,"invalid tag");return null}return{tag:n,cellsText:e.slice(r+1)}}function Ah(e,t){if(!e.startsWith("["))return null;let r=e.slice(1),n=r.indexOf("]");if(n===-1)throw P(t,"invalid header");let s=r.slice(0,n),o=s.startsWith("~"),i=o?s.slice(1):s;if(!o&&i.startsWith("="))return null;if(!ku.includes(i)&&i!=="")throw P(t,"invalid header delimiter");let a=i===""?D:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw P(t,"invalid tag");if(u=c.slice(1,d),xu(u,t),i!=="")throw P(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw P(t,"invalid header");let l=c.slice(1,-2),p;try{p=At(l,a,t).map(d=>Ve(d,t)[0])}catch(d){throw er(d)}if(p.length===0||p.some(d=>d===""))throw P(t,"invalid header fields");return{delimiter:a,fields:p,fieldText:l,continuation:o,tag:u}}function Oh(e,t,r){if(e===null||e.delimiter===void 0)throw P(r,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw P(r,"continuation header mismatch")}function gu(e,t,r,n){let s;try{s=At(e,t,n)}catch(o){throw er(o)}if(s.length!==r)throw P(n,"row arity mismatch");for(let o of s)try{Le(o,n)}catch(i){throw er(i)}return s}function Ph(e,t,r){let n={};return e.forEach((s,o)=>{try{tr(n,s,Le(t[o],r))}catch(i){throw er(i)}}),n}function Ih(e,t,r){if(e.startsWith("- "))throw P(t,"reserved line prefix");let n=Ch(e,t);if(n!==null){if(r===null||r.delimiter===void 0)throw P(t,"trailer without header");if(r.rowCount!==n)throw P(t,"trailer count mismatch");return{kind:"trailer"}}let s=Ah(e,t);if(s!==null)return s.continuation?(Oh(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=Th(e,t);if(o!==null){let i=r?.taggedLanes?.get(o.tag);if(i===void 0)throw P(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:gu(o.cellsText,i.delimiter,i.fields.length,t)}}if(r===null||r.delimiter===void 0)throw P(t,"row before header");return{kind:"row",cells:gu(e,r.delimiter,r.fields.length,t)}}function Lh(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(m,f){let _=o.at(-1);if(_!==void 0&&_.lane===m.lane&&_.delimiter===m.delimiter&&_.fieldText===m.fieldText){_.rows.push(f);return}o.push({lane:m.lane,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[f]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function p(m,f,_){let g=n.get(m);if(g===void 0){if(n.size>=Su)throw P(_,"too many tagged lanes");g={segments:[],current:null},n.set(m,g),r.push(m)}else g.current!==null&&g.segments.push(g.current);g.current={lane:m,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[]},g.delimiter=f.delimiter,g.fields=f.fields,g.fieldText=f.fieldText}if(Vn(e).forEach((m,f)=>{let _=f+1;if(m==="")return;let g=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},y=Ih(m,_,g);if(y.kind==="trailer"){l(),i=null;return}if(y.kind!=="continuation"){if(y.kind==="tag-header"){c=!0,p(y.header.tag,y.header,_);return}if(y.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:y.header.delimiter,fields:y.header.fields,fieldText:y.header.fieldText,rows:[]};return}if(y.kind==="tagged-row"){c=!0;let b=n.get(y.tag).current;b.rows.push(y.cells),u(b,y.cells);return}if(i===null)throw P(_,"row before header");i.rows.push(y.cells),u(i,y.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let m of r){if(m===null){d.push(...s);continue}let f=n.get(m);d.push(...f.segments),f.current!==null&&d.push(f.current)}return t.preserveInterleaving===!0?o:d}function Ke(e){return Lh(e).flatMap(t=>t.rows.map(r=>Ph(t.fields,r,0)))}function Dh(e){if(!ku.includes(e))throw P(0,"invalid header delimiter")}function hu(e,t,r=!1){return`[${`${r?"~":""}${e===D?"":e}`}]{${t}}:
|
|
20
|
+
`}function yu(e,t){return`[]<${e}>{${t}}:
|
|
21
|
+
`}function Qo(e,t){return t.map(we).join(e)}function Nh(e){if(!Array.isArray(e)||e.length===0)throw P(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Ve(String(t),0)}catch(n){throw er(n)}if(r==="")throw P(0,"TOONL header requires fields");return r})}function bu(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function wu(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw P(0,"TOONL continuation cadence must be positive")}function $h(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function _u(e){if(e===null||typeof e!="object"||Array.isArray(e))throw P(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw P(0,"TOONL output requires object rows");if(t.some(r=>!Hr(e[r])))throw P(0,"TOONL rows must be flat objects");return t}function Mh(e){return JSON.stringify([...e].sort())}function Ru(e,t){let r=Mh(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function ze({delimiter:e=D,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){Dh(e),wu(r),wu(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,p=!1,d={continuationEveryRows:r,continuationEveryBytes:n},m=()=>s===null||!t?"":`[=${a}]
|
|
22
|
+
`,f=()=>$h(d,c,u)?(c=0,u=0,hu(e,o,!0)):"",_=g=>{xu(g,0);let y=l.get(g);if(y===void 0){if(l.size>=Su)throw P(0,"too many tagged lanes");y={fields:null,fieldsByShape:new Map},l.set(g,y)}return y};return{push(g){if(p)throw P(0,"TOONL encoder is closed");let y=Ru(_u(g),i),b="";(s===null||s.length!==y.length||s.some((O,F)=>O!==y[F]))&&(b+=m(),s=y,o=Qo(e,s),a=0,c=0,u=0,b+=hu(e,o));let w=s.map(O=>De(g[O],e));b+=f();let x=`${w.join(e)}
|
|
23
|
+
`;return b+=x,a+=1,c+=1,u+=x.length,b},declareLane(g,y){if(p)throw P(0,"TOONL encoder is closed");let b=Nh(y),w=Qo(D,b),x=_(g);return bu(x.fields,b)?"":(x.fields=b,yu(g,w))},pushTagged(g,y){if(p)throw P(0,"TOONL encoder is closed");let b=_(g),w=Ru(_u(y),b.fieldsByShape),x=Qo(D,w),O=w.map(he=>De(y[he],D)),F="";return bu(b.fields,w)||(b.fields=w,F+=yu(g,x)),`${F}${g}:${O.join(D)}
|
|
24
|
+
`},end(){return p?"":(p=!0,m())}}}var ku,Su,Eu,N0,$0,vu=h(()=>{jr();Ur();Fo();ku=[D,"|"," "],Su=8,Eu=/^[A-Za-z0-9_-]+$/,N0=new TextEncoder,$0=new TextDecoder});var L=h(()=>{jr();Ur();Ur();fu();vu()});function Fh(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${C(Zo(e))}
|
|
25
|
+
`)}function Zo(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??Fh(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=jh(e.diagnostics,3)),t}function _e(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:Jr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&o.includes("rate limit")?{command:e,category:"real-error",error:Jr(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:Jr(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:Jr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Jr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Kn(e,t,r,n){return $({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Jr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function jh(e,t){return e.split(/\r?\n/).slice(0,t).join(`
|
|
26
|
+
`).trim()}var Ne=h(()=>{"use strict";L()});import{isAbsolute as Hh,join as Ye,resolve as ti}from"node:path";function Uh(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function Iu(e){return Ye(Uh(e),Pu)}function Lu(e){return Ye(Iu(e),"state")}function Du(e){return Ye(Iu(e),"tmp")}function X(e){return Ye(Lu(e),"rsp")}function Jh(e){return Ye(Lu(e),"red-skills.rdb")}function qh(e){return Ye(Du(e),"red-skills.rdb")}function Mu(e,t){let r=Jh(e);if(t(r))return r;let n=qh(e);if(t(n))throw Vh();return r}function Vh(){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 Bu(e){return Ye(Du(e),"waits")}function Fu(e){let t=e.overrideEnvVars??ri;for(let n of t){let s=e.env[n];if(s)return Hh(s)?s:ti(e.startDir,s)}let r=ti(e.startDir);for(;;){if(e.exists(Ye(r,Pu)))return r;let n=Ye(r,".."),s=ti(n);if(s===r)break;r=s}return e.startDir}var Pu,Gh,Wh,ri,Nu,$u,ke=h(()=>{Pu=".red",Gh="MEMORY_ROOT",Wh="RED_BRAIN_ROOT",ri=[Gh,Wh];Nu=".red/state/red-skills.rdb";$u=".red/tmp/red-skills.rdb"});function H(e){return C(e,{keyedMapCollapse:!0})}var Kh,zh,fT,$e=h(()=>{L();ke();Kh=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],zh=[{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"}],fT=[...Kh,...zh]});function Yn(e){let t={app:e,version:Yh(sr("__RED_BUILD_VERSION__",()=>"2.87.6")??"0.0.0-dev"),gitSha:sr("__RED_BUILD_GIT_SHA__",()=>"698c85881b043eb712d489860986832fb05c29cb")??"unknown",buildTime:sr("__RED_BUILD_TIME__",()=>"2026-07-28T19:08:02-03:00")??"unknown",bundleAsset:sr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=sr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=sr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function Yh(e){return e.startsWith("v")?e.slice(1):e}function sr(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var ni=h(()=>{});function Ot(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 Xh(e,t){if(!t)return!0;let r=si(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function Q(e,t){return t?e.filter(r=>Xh(r,t)):[...e]}function Xe(e,t){return oi(e,t,{includeLegacyHelp:!0})}function oi(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function si(e){return Array.isArray(e)?e.map(si).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(si).join(" "):String(e??"")}var qr=h(()=>{"use strict"});function ai(e,t,r=ju){let n=Math.max(0,Math.floor(e)),s=r in Hu?r:ju,o=Hu[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:ii(n,o),dollars_saved_low_usd:i==null?null:ii(i,o),dollars_saved_high_usd:a==null?null:ii(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:Qh}}function ii(e,t){return Zh(Math.max(0,e)/1e6*t)}function Vr(e){return`$${e.toFixed(6)}`}function Zh(e){return Math.round(e*1e6)/1e6}var ju,Hu,Qh,ci=h(()=>{"use strict";ju="gpt-5",Hu={"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},Qh="estimate derived from byte-based token estimate when token counts are estimated"});import{createConnection as ey}from"node:net";async function or(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let o=ey(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)}
|
|
27
|
+
`)}),o.on("data",l=>{a+=l.toString("utf8");let p=a.indexOf(`
|
|
28
|
+
`);if(p<0)return;let d=a.slice(0,p);u(()=>{try{n(JSON.parse(d))}catch(m){s(m)}}),o.end()}),o.on("error",l=>u(()=>s(l))),o.on("close",()=>{i||u(()=>s(new Error("resident rsp server closed without response")))})})}var ui=h(()=>{});var Gu=h(()=>{"use strict";ui()});import{existsSync as ty,readdirSync as ry}from"node:fs";import{homedir as ny}from"node:os";import{basename as di,dirname as li,join as ue,resolve as Xn}from"node:path";function sy(e){return"command"in e}function Qn(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??ty,s=t.execPath??process.execPath,o=t.execArgv??process.execArgv,i=t.callerEntry===void 0?process.argv[1]:t.callerEntry,a=(u,l)=>({command:s,args:[...o,u],source:l});if(r.RSP_BIN)return{command:r.RSP_BIN,args:[],source:"env-rsp-bin"};if(i&&ay(i))return a(Xn(i),"caller-entry");let c=[];for(let[u,l]of uy(i,t.rootDir,r,t.listDir??my))if(c.push(u),n(u))return a(u,l);return{diagnostic:Qe,searched:c,...i?{callerEntry:Xn(i)}:{}}}function Uu(e={},t={}){let r=Qn(e,t);if(sy(r))return r;throw new ir(r)}function ay(e){let t=di(e);return t===Pt||pi.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:cy(Xn(e))}function cy(e){let t=li(e);for(let r=0;r<4;r++){if(di(t)==="rsp")return!0;let n=li(t);if(n===t)return!1;t=n}return!1}function*uy(e,t,r,n){if(e){let o=li(Xn(e));yield[ue(o,Pt),"caller-sibling-bundle"];let i=oy.exec(di(e));i&&(yield[ue(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[ue(o,"..","dist",Pt),"caller-sibling-bundle"]}for(let o of iy){let i=r[o];i&&(yield[ue(i,"dist",Pt),"plugin-root-bundle"],yield[ue(i,"..","..","dist",Pt),"plugin-root-bundle"])}t&&(yield[ue(t,"dist",Pt),"repo-bundle"],yield[ue(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[ue(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=ly(r);yield[ue(s,Pt),"bundle-cache"];for(let o of dy(s,n))yield[ue(s,o),"bundle-cache"]}function ly(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ue(e.HOME||ny(),".cache");return ue(t,"red-skills","bundles")}function dy(e,t){return t(e).filter(r=>pi.test(r)).sort((r,n)=>py(Wu(n),Wu(r)))}function Wu(e){return pi.exec(e)?.[1]??""}function py(e,t){let r=o=>o.split(".").map(i=>Number.parseInt(i,10)),[n,s]=[r(e),r(t)];for(let o=0;o<Math.max(n.length,s.length);o++){let[i,a]=[n[o],s[o]];if(Number.isNaN(i)||i===void 0)return Number.isNaN(a)||a===void 0?e.localeCompare(t):-1;if(Number.isNaN(a)||a===void 0)return 1;if(i!==a)return i-a}return 0}function my(e){try{return ry(e)}catch{return[]}}var Qe,ir,Pt,oy,pi,iy,mi=h(()=>{Qe="rsp-resident-entry-unresolved";ir=class extends Error{code=Qe;searched;callerEntry;constructor(t){super(`${Qe}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
|
|
29
|
+
searched:
|
|
30
|
+
${t.searched.map(r=>` ${r}`).join(`
|
|
31
|
+
`)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Pt="rsp.bundle.min.mjs",oy=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,pi=/^rsp-(.+)\.bundle\.min\.mjs$/,iy=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{createHash as fy,randomUUID as zu}from"node:crypto";import{spawn as Yu}from"node:child_process";import{constants as fi}from"node:fs";import{readFileSync as gy}from"node:fs";import{mkdir as Zn,open as hy,readFile as Xu,rename as yy,rm as Me,stat as by,writeFile as wy}from"node:fs/promises";import{tmpdir as _y}from"node:os";import{dirname as ut,join as le,resolve as yi}from"node:path";import{fileURLToPath as Ry}from"node:url";function lt(e){let t=Ly(e)??yi(e),r=Iy(t),n=X(t);return{rootDir:t,socketPath:le(r,"rsp.sock"),pidPath:le(r,"rsp.pid"),lockPath:le(r,"rsp.lock"),wakeLockPath:le(t,".red","tmp","rsp","wake.lock"),summaryPath:le(n,"rsp-status-summary.json"),registryPath:le(n,"rsp-resident.pid.json")}}async function es(e,t){if(await Zn(ut(e.socketPath),{recursive:!0,mode:448}),await Vu(e.socketPath,t))return;await qu(e,t);let r=await rl(e.lockPath);if(r)try{if(await Vu(e.socketPath,t))return;await qu(e,t),await xy(e.socketPath);let n=vy(e,t);await Ju(e.socketPath,n);return}finally{await r.close(),await Me(e.lockPath,{force:!0})}await Ju(e.socketPath)}async function It(e,t=200){try{return await Zu(e,t)!=null}catch{return!1}}async function Zu(e,t=200){let r=await or({socketPath:e,timeoutMs:t},{id:zu(),op:"ping"});return r.ok?il(r.value)?{version:My(r.value.version)}:{}:null}async function ts(e,t){if(await Zn(ut(e.socketPath),{recursive:!0,mode:448}),await It(e.socketPath,50))return!1;let r=await rl(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=sl(e,t);return Yu(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 el(e,t){try{await es(e,t)}finally{await Me(e.wakeLockPath,{force:!0})}}async function zr(e){try{let t=Ay(await Xu(e,"utf8"));return By(t)?t:null}catch{return null}}async function rs(e,t){let r={version:Qu,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 Zn(ut(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await wy(n,`${C(r)}
|
|
32
|
+
`,{encoding:"utf8",mode:384}),await yy(n,e)}async function ns(e,t=process.pid){try{let r=await zr(e);if(r&&r.pid!==t)return;await Me(e,{force:!0})}catch{}}async function Kr(e){let t=await zr(e.registryPath);if(!t)try{return await Xu(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!ar(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await It(t.socket_path,100);return r&&await Py(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 tl(e){let t=await Kr(e);return t.state==="registered-dead"||t.state==="invalid"?(await Me(e.registryPath,{force:!0}),await Kr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await nl(t.entry.pid),await Me(e.registryPath,{force:!0}),await Me(t.entry.socket_path,{force:!0}),await Kr(e)):t}async function Ju(e,t){let r=Date.now()+Ey(),n;for(;Date.now()<r;){if(await It(e))return;if(t){let s=t.spawnError();if(s)throw new Error(gi("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(gi("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?gi("resident rsp server did not start",t):"resident rsp server did not start")}function Ey(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Sy}async function xy(e){await Me(e,{force:!0})}async function rl(e){await Zn(ut(e),{recursive:!0,mode:448});try{return await hy(e,fi.O_CREAT|fi.O_EXCL|fi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function vy(e,t){let[r,n]=sl(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Yu(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=Ty(`${i}${c}`,Cy)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function gi(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:
|
|
33
|
+
${s}`),n.join(`
|
|
34
|
+
`)}function Ty(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Ay(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return N(t)}}async function qu(e,t){try{let r=await zr(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!ar(r.pid)){await Me(e.registryPath,{force:!0});return}if(await It(r.socket_path,100))return;if(ol(t.clientVersion,r.resident_version)&&(await Oy(r.pid,1500),!ar(r.pid))){await Me(e.registryPath,{force:!0});return}await nl(r.pid),await Me(e.registryPath,{force:!0})}catch{}}function ar(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function nl(e){if(!ar(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!ar(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Oy(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!ar(e))return;await new Promise(n=>setTimeout(n,50))}}async function Py(e){if(!e.startsWith("file://"))return!1;try{return await by(Ry(e)),!1}catch(t){return t.code==="ENOENT"}}function sl(e,t){let r=Uu(t,{rootDir:e.rootDir});return[r.command,r.args]}function Iy(e){let t=fy("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=le(r,"red-skills",t);if(le(s,"rsp.sock").length<ky)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return le(_y(),`red-skills-${n}`,t)}function Ly(e){let t=yi(e);for(let r=0;r<32;r++){try{let s=hi(le(t,".git"));if(s!=null)return Dy(t,s)??t;if(hi(le(t,".git","HEAD"))!=null||hi(le(t,".red","config.yaml"))!=null)return t}catch{}let n=ut(t);if(n===t)return null;t=n}return null}function Dy(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=yi(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?ut(ut(ut(n))):null}function hi(e){try{return gy(e,"utf8")}catch{return null}}async function Vu(e,t){let r=await Zu(e).catch(()=>null);return r?ol(t.clientVersion,r.version)?(await Ny(e,t.clientVersion),await Fy(e),!1):!0:!1}async function Ny(e,t){try{await or({socketPath:e,timeoutMs:200},{id:zu(),op:"handover",clientVersion:t})}catch{}}function ol(e,t){return!e||!t?!1:$y(e,t)>0}function $y(e,t){let r=Ku(e),n=Ku(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Ku(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 il(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function My(e){return typeof e=="string"&&e.length>0?e:void 0}function By(e){return il(e)&&e.version===Qu&&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 Fy(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await It(e,50))return;await new Promise(r=>setTimeout(r,50))}}var ky,Qu,Sy,Cy,ss=h(()=>{L();ke();ui();mi();mi();ky=108,Qu=1,Sy=5e3;Cy=8*1024});var Lt={};j(Lt,{RSP_ENTRY_UNRESOLVED:()=>Qe,ResidentRspElisionStore:()=>Yr,RspResidentEntryError:()=>ir,ensureResidentServer:()=>es,kickResidentServer:()=>ts,pingResident:()=>It,readResidentRegistry:()=>zr,removeResidentRegistry:()=>ns,residentRegistryStatus:()=>Kr,resolveResidentPaths:()=>lt,resolveRspEntry:()=>Qn,sweepResidentRegistry:()=>tl,warmResidentServer:()=>el,writeResidentRegistry:()=>rs});import{randomUUID as jy}from"node:crypto";function al(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Yr,Ze=h(()=>{"use strict";Gu();ss();Yr=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?al(r)&&r.status==="expired"?r:!al(r)||typeof r.original!="string"?null:{...r,original:Buffer.from(r.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async recoveryHandles(t=5){return await this.request({op:"recovery-handles",limit:t})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,r){return await this.request({op:"memory",action:t,payload:r})}async close(){}async request(t){this.opts.ensureResident!==!1&&await es(this.paths,this.config);let r=await or(this.paths,{...t,id:jy()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});var Xr={};j(Xr,{isResidentEntryUnresolved:()=>ll,reportResidentEntryDiagnostic:()=>wi,residentConfigFor:()=>ul,residentElisionStore:()=>bi});function ul(e,t){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs,...t?{clientVersion:t}:{}}}function bi(e,t,r={}){let n=r.paths??lt(e);return new Yr(n,ul(t,Yn("rsp").version),{ensureResident:r.ensureResident})}function wi(e){return ll(e)?(cl||(cl=!0,process.stderr.write(`rsp: ${Qe} \u2014 elision is off until an rsp entry is installed
|
|
35
|
+
`),process.env.RSP_DEBUG==="1"&&e instanceof Error&&process.stderr.write(`${e.message}
|
|
36
|
+
`)),!0):!1}function ll(e){return typeof e=="object"&&e!==null&&e.code===Qe}var cl,Dt=h(()=>{"use strict";ni();Ze();cl=!1});function Ti(e){return e==="success"?0:e==="failure"?1:2}function Ai(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function et(e,t,r){return{status:e,exitCode:Ti(e),summary:t,...r?{details:r}:{}}}function q(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function ur(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var pl,ml,fl,vi,gl,hl,yl,bl,Ci,Nt=h(()=>{"use strict";pl="rsp.wait.result",ml="rsp.wait.registry",fl="rsp.wait.list",vi={cmd:18e5,pr:27e5,run:27e5,release:72e5},gl=16*1024,hl=1e4,yl=2e3,bl=6e4,Ci={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 qy,readFile as Vy}from"node:fs/promises";async function lr(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await as(r),s=[r,...n];if(s.every(c=>!$t(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(wl(e,"SIGTERM"),is(n,"SIGTERM"),await _l(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await as(r)])];wl(e,"SIGKILL"),is(o,"SIGKILL");let i=Math.max(1e3,t);await Ky(e,i);let a=await _l(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter($t)}}function wl(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 is(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function Ky(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 _l(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!$t(n)))return!0;await zy(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!$t(n))}async function as(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await qy("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await Rl(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 Qr(e){return(await Rl(e))?.[19]}async function dr(e,t){if(!$t(e))return!1;if(!t)return!0;let r=await Qr(e);return r===void 0?process.platform!=="linux":r===t}function $t(e){try{return process.kill(e,0),!0}catch{return!1}}async function Rl(e){if(process.platform!=="linux")return null;try{let t=await Vy(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function zy(e){await new Promise(t=>setTimeout(t,e))}var tt=h(()=>{"use strict"});import{constants as Yy}from"node:os";async function kl(e){let t=e[1],r={timeoutMs:vi.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:hl,terminateGraceMs:yl,probeTimeoutMs:bl,format:"toon",captureBytes:gl},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=vi[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=Zr(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=Zy(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=Zr(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=Zr(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=Zr(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=Qy(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 Xy(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Xy(e){if(!(e.signal in Yy.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(!$t(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await Qr(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function Zr(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 en(e,t,r=process.env){let n=r[e];if(!n)return t;try{return Zr(n)}catch{return t}}function Qy(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Zy(e){return e.startsWith("SIG")?e:`SIG${e}`}var Sl=h(()=>{"use strict";Nt();tt()});import{existsSync as Oi,readFileSync as eb,statSync as tb}from"node:fs";import{basename as El,dirname as cs,isAbsolute as rb,join as xl,resolve as tn}from"node:path";function us(e,t=process.env){let r=tn(e);if(ri.map(i=>t[i]).find(Boolean))return Fu({startDir:r,env:t,exists:Oi});let s=sb(r),o=nb(r,s);return o||(s??r)}function nb(e,t){let r=e;for(;;){if(Oi(xl(r,".red")))return r;if(t&&r===t)return null;let n=tn(r,"..");if(n===r)return null;r=n}}function sb(e){let t=e;for(;;){let r=xl(t,".git");if(Oi(r))return ab(r)?t:ob(r)??t;let n=tn(t,"..");if(n===t)return null;t=n}}function ob(e){let t=ib(e);if(!t)return null;let r=cs(t),n=cs(r);return El(r)!=="worktrees"||El(n)!==".git"?null:cs(n)}function ib(e){let t;try{t=eb(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return rb(n)?tn(n):tn(cs(e),n)}function ab(e){try{return tb(e).isDirectory()}catch{return!1}}var Pi=h(()=>{ke()});import{join as cb}from"node:path";function lb(e,t=process.env){return us(e,t)}function pr(e,t=process.env){return Bu(lb(e,t))}function vl(e,t=process.env){return cb(pr(e,t),ub)}var ub,Ii=h(()=>{"use strict";ke();Pi();ub="spool"});import{randomUUID as db}from"node:crypto";import{existsSync as pb}from"node:fs";import{mkdir as mb,readdir as fb,readFile as gb,rename as hb,rm as Li,writeFile as yb}from"node:fs/promises";import{dirname as bb,join as Tl}from"node:path";function Al(e,t,r=process.env){return Tl(pr(e,r),`${t}${wb}`)}async function mr(e,t){await Di(e,`${H(t)}
|
|
37
|
+
`)}async function ls(e,t,r){t.status=r,await mr(e,t)}async function ds(e,t=process.env){let r=pr(e,t);if(!pb(r))return[];let n=await fb(r).catch(()=>[]),s=[];for(let o of n.filter(i=>_b.some(a=>i.endsWith(a)))){let i=Tl(r,o),a=await Rb(i);if(!a){await Li(i,{force:!0});continue}if(!await kb(a)){await Li(i,{force:!0});continue}s.push(a)}return s}async function Rb(e){let t;try{t=await gb(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Sb(r);return n&&Object.keys(n).length>0?n:null}async function kb(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 dr(t,r)}function Sb(e){try{let t=N(e);if(Cl(t))return t}catch{}try{let t=JSON.parse(e);if(Cl(t))return t}catch{}return null}async function Di(e,t){await mb(bb(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${db()}`;try{await yb(r,t,"utf8"),await hb(r,e)}finally{await Li(r,{force:!0})}}function Ni(e){return{schema:ml,version:1,...e}}function Cl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var wb,_b,nn=h(()=>{"use strict";L();$e();Nt();Ii();tt();wb=".toon",_b=[".toon",".json"]});function fr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Be(e){return fr(e)?e:{}}function Mt(e){return Array.isArray(e)?e.filter(fr):[]}function V(e,t){let r=e[t];return typeof r=="string"?r:""}function gr(e,t){let r=e[t];return typeof r=="number"?r:0}function $i(e){let t=JSON.parse(e);if(!fr(t))throw new Error("expected JSON object");return t}function ps(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var ms=h(()=>{"use strict"});import{spawn as Eb}from"node:child_process";import{resolve as xb}from"node:path";async function Ol(e,t,r){let n=[];if(e.signalPid){let s=await vb(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await Cb(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function vb(e){let t=e.signalPid;if(!await dr(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:Pl(r),pid:t,signal:e.signal}}}async function Cb(e,t,r){let n=Be(t.wait),s=Be(t.verdict);return await Tb(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?xb(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 Tb(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=p=>{i||(i=!0,o(p))},u=Eb(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,lr(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:Pl(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 Pl(e){return e instanceof Error?e.message:String(e)}var Il=h(()=>{"use strict";ms();tt()});import{resolve as Ab}from"node:path";async function Ll(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=Ob(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=sn(t,r,o,{status:"pending"},i);await on(n.resultFile,a,n.format);let c=await Ol(n,a,s),u=sn(t,r,o,c,i);return await on(n.resultFile,u,n.format),{result:u,exitCode:Dl(o,c)}}function Dl(e,t){return t.status!=="success"||e.status==="running"?2:Ti(e.status)}function Ob(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 sn(e,t,r,n,s){return{schema:pl,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:Dl(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function on(e,t,r){e&&await Di(Ab(e),hr(t,r))}function hr(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
|
|
38
|
+
`:`${H(e)}
|
|
39
|
+
`}var Nl=h(()=>{"use strict";$e();Nt();nn();Il()});import{createWriteStream as Pb,mkdirSync as Ib}from"node:fs";import{readFile as Lb,rm as Db}from"node:fs/promises";import{dirname as Nb}from"node:path";import{join as $l}from"node:path";function Ml(e,t,r){return{stdout:new fs(r,$l(e,`${t}.stdout.bin`)),stderr:new fs(r,$l(e,`${t}.stderr.bin`))}}function $b(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!Mb(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function Mb(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var fs,Bl=h(()=>{"use strict";fs=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,...$b(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 Lb(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{Ib(Nb(this.spoolPath),{recursive:!0}),t=Pb(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 Db(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as Bb,readFileSync as jA}from"node:fs";import{dirname as Fb,join as jb}from"node:path";function Fl(e,t){let r=e;for(let n=0;n<16;n++){let s=jb(r,t);if(Bb(s))return s;let o=Fb(r);if(o===r)break;r=o}return null}function Hb(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function gs(e,t){let r=[];for(let n of e.split(`
|
|
40
|
+
`)){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 Hb(u)}}var jl=h(()=>{});var ql={};j(ql,{DEFAULT_RSP_BYTE_BUDGET:()=>ve,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>xe,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>nt,DEFAULT_RSP_IDLE_MS:()=>bs,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Jl,DEFAULT_RSP_STORE_PATH:()=>Mi,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>ys,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Gl,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Wl,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>hs,DEFAULT_RSP_TTL_DAYS:()=>Ee,MIN_RSP_IDLE_MS:()=>Ul,resolveRspConfig:()=>Ce});import{existsSync as Gb,readFileSync as Wb}from"node:fs";import{join as Ub,resolve as Hl}from"node:path";function Ce(e,t,r){let n=Fl(Hl(e),Ub(".red","config.yaml")),s=n?Wb(n,"utf8"):"",o=gs(s,"rsp.enabled")==="true",i=gs(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=rt(Se(s,"rsp.ttlDays"),Ee),u=rt(yr(t.RSP_EPHEMERAL_TTL_HOURS)??Se(s,"rsp.ephemeralTtlHours"),xe),l=rt(Se(s,"rsp.byteBudget"),ve),p=rt(Se(s,"rsp.telemetryTtlDays"),hs),d=rt(Se(s,"rsp.telemetryByteBudget")??Se(s,"rsp.byteBudget"),ys),m=rt(yr(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??Se(s,"rsp.telemetryDrainIntervalMs"),Gl),f=rt(yr(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??Se(s,"rsp.telemetryDrainTimeoutMs"),Wl),_=Jb(yr(t.RSP_IDLE_MS)??Se(s,"rsp.idleMs"),bs,Ul),g=rt(yr(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??Se(s,"rsp.heavyGitByteThreshold"),nt),y=qb(yr(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??Se(s,"rsp.measurement.holdoutShare"),Jl),b=lt(e).rootDir,w=r??t.RSP_STORE_URI??`file://${Mu(Hl(b),Gb)}`;return{enabled:o,proxyEnabled:a,storeUri:w,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:p,telemetryByteBudget:d,telemetryDrainIntervalMs:m,telemetryDrainTimeoutMs:f,idleMs:_,heavyGitByteThreshold:g,measurementHoldoutShare:y}}function Se(e,t){let r=gs(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function rt(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Jb(e,t,r){let n=rt(e,t);return Math.max(n,r)}function qb(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function yr(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var nt,Mi,Ee,xe,ve,hs,ys,Gl,Wl,bs,Ul,Jl,Te=h(()=>{"use strict";jl();ke();ss();nt=8*1024,Mi=Nu,Ee=7,xe=6,ve=64*1024*1024,hs=90,ys=4*1024*1024,Gl=3e4,Wl=2e3,bs=5*6e4,Ul=5e3,Jl=0});function Vl(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Dt(),Xr)),o=s(e,Ce(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var Kl=h(()=>{"use strict";Te()});import{spawn as Vb}from"node:child_process";async function Yl(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:q("missing command line")};let a=e.store??Vl(n),c=Ml(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,p=!1,d=async y=>{l||(l=!0,i.removeEventListener("abort",_),await ls(s,o,y.verdict.status).catch(()=>{}),u(y))},m=Vb(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});m.stdout?.on("data",y=>c.stdout.write(Buffer.from(y))),m.stderr?.on("data",y=>c.stderr.write(Buffer.from(y)));let f=async(y,b)=>{if(l||p)return;p=!0,clearTimeout(g);let w=await lr(m,r.terminateGraceMs),x=await zl(null,null,c,a,t);await d({verdict:{status:y,exitCode:2,summary:b,details:x},cleanupProven:w.cleaned,survivors:w.survivors})},_=()=>void f("indeterminate","command interrupted");i.addEventListener("abort",_,{once:!0});let g=setTimeout(()=>{f("timeout",`command timed out after ${Xl(r.timeoutMs)}`)},r.timeoutMs);m.once("error",y=>{clearTimeout(g),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:y.message}})}),m.once("close",(y,b)=>{if(clearTimeout(g),l||p)return;let w=y===0;zl(y,b,c,a,t).then(x=>d({verdict:{status:w?"success":"failure",exitCode:w?0:1,summary:w?"command exited successfully":`command exited with ${b??y??"unknown"}`,details:x}}))}),i.aborted&&_()})}async function ws(e){let{probe:t,timeoutMs:r,baseSleepMs:n,registryPath:s,entry:o,signal:i}=e,a=Date.now()+r,c=0,u;for(;Date.now()<a;){if(i.aborted)return{verdict:Kb(u,c,o.last_poll_at)};let l;try{l=await t()}catch(_){l=q(_ instanceof Error?_.message:String(_))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=Bi(l),await mr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await ls(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),m=Math.min(p+d,Math.max(0,a-Date.now())),f=e.makeWakeSignal?.();await zb(m,i,f)}return await ls(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Xl(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:Bi(u)}:{attempts:c}}}}async function zl(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 Bi(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function Kb(e,t,r){return q("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Bi(e)}:{}})}async function zb(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 Xl(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var Ql=h(()=>{"use strict";Bl();Kl();Nt();tt();nn()});var Fi,ji,Hi,se,K,de,Fe,an,_s=h(()=>{"use strict";Fi="rsp-telemetry.spool.toonl",ji="rsp-telemetry.spool.jsonl",Hi="rsp-telemetry.spool.corrections.toonl",se="rsp_accounting_events_v1",K="rsp_decisions_v1",de="rsp_telemetry_invocations_v1",Fe="rsp_telemetry_degradations_v1",an="rsp_telemetry_index_v1"});function br(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function pe(e){return dt(e)??0}function dt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var Gi=h(()=>{"use strict"});import{randomUUID as Ui,createHash as Yb}from"node:crypto";import{appendFileSync as nd,existsSync as Xb,mkdirSync as sd}from"node:fs";import{mkdir as od,readdir as Qb,readFile as id,rename as Zb,rm as ad,writeFile as Ji}from"node:fs/promises";import{basename as Wi,dirname as cn,join as wr,resolve as Zl}from"node:path";function ks(e){if(!e)return null;let t=Zl(e);for(;;){if(Xb(wr(t,".red")))return t;let r=Zl(wr(t,".."));if(r===t)break;t=r}return null}function st(e){return wr(X(e),Fi)}function Ss(e){return wr(X(e),ji)}function Vi(e){return wr(X(e),Hi)}async function ot(e,t){pt(e,t)}function pt(e,t){try{let r=ks(e);if(!r)return;let n=st(r);sd(cn(n),{recursive:!0}),nd(n,ow({spool_id:Ui(),event:tw(t)}),{encoding:"utf8",mode:384})}catch{}}function tw(e){return ed(ed(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function ed(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=ew)return e;let o={...e};return delete o[t],pe(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function rw(e){let t=ks(e);if(!t)return[];let r=st(t);await od(cn(r),{recursive:!0}).catch(()=>{});let n=await ld(t),s=[...await dd(t),...await aw(n)];return await Promise.all(n.map(o=>ad(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Ki(e,t){let r=ks(e);if(!r)return;let n=st(r);await od(cn(n),{recursive:!0}).catch(()=>{}),await iw(r);for(let s of await nw(r))await td(r,s,t);for(let s of await dd(r))await cd(r,s,t,!0);for(let s of await ld(r))await td(r,s,t)}async function nw(e){let t=[st(e),Ss(e)],r=cn(t[0]);return(await Qb(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Wi(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Wi(c)}.`));if(!o)return!1;let i=`${Wi(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&sw(a))}).sort().map(s=>wr(r,s))}function sw(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function td(e,t,r){try{let n=await ud(t);for(let s of pd(n))await cd(e,s,r,!1)}finally{await ad(t,{force:!0})}}async function cd(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&rd(e,{correction_id:Ui(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}rd(e,{correction_id:Ui(),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 ud(e){let t="";for(let r=0;r<5;r++){let n=await id(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function _r(e){try{let t=JSON.parse(e);return!br(t)||t.collection!==se&&t.collection!==K&&t.collection!==de&&t.collection!==Fe?null:t}catch{return null}}function ow(e){return ze().push(lw(e))}function rd(e,t){try{let r=ks(e);if(!r)return;let n=Vi(r);sd(cn(n),{recursive:!0});let s=ze();nd(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 ld(e){let t=[st(e),Ss(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await Zb(n,s),await Ji(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function iw(e){await Promise.all([Ji(st(e),"",{flag:"a"}),Ji(Ss(e),"",{flag:"a"})]).catch(()=>{})}async function aw(e){let t=[];for(let r of e)t.push(...pd(await ud(r)));return t}async function dd(e){let t=await id(Vi(e),"utf8").catch(()=>""),r=new Map;for(let n of cw(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:_r(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function pd(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(br(o)){let i=_r(JSON.stringify(o));t.push(i?{spool_id:Rs(JSON.stringify(o)),event:i}:{spool_id:Rs(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Rs(s),raw_line:s});continue}try{for(let o of Ke(`${r}
|
|
41
|
+
${s}
|
|
42
|
+
`))qi(o)&&dw(o)&&t.push({spool_id:o.spool_id,event:md(o)})}catch{s.startsWith("{")&&t.push({spool_id:Rs(s),raw_line:s})}}}return t}function cw(e){return uw(e).map(pw).filter(t=>t!==null)}function uw(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);qi(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of Ke(`${r}
|
|
43
|
+
${s}
|
|
44
|
+
`))qi(o)&&t.push(o)}catch{}}}return t}function Rs(e){return`legacy:${Yb("sha256").update(e).digest("hex").slice(0,24)}`}function lw(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 md(e){let{spool_id:t,...r}=e;return _r(JSON.stringify(r))}function dw(e){return typeof e.spool_id=="string"&&md(e)!==null}function pw(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 qi(e){return br(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var ew,fd=h(()=>{"use strict";ke();L();_s();Gi();ew=64*1024});function Es(e){return e.trim().split(/\s+/).filter(Boolean)}function un(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function ln(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function me(e){let t=Es(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Bt(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Bt(t)&&t[1]?`gh ${t[1]} json-jq`:Bt(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 Bt(e){return e[0]==="gh"&&e.some(mw)}function mw(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Rr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var dn=h(()=>{"use strict"});var J,xs=h(()=>{"use strict";Te();J="rsp_elisions_v1"});import{spawnSync as fn}from"node:child_process";import{createHash as Xi}from"node:crypto";import{existsSync as fw}from"node:fs";import{mkdir as gw,readFile as hw,readdir as gd,rename as yw,writeFile as bw}from"node:fs/promises";import{homedir as ww}from"node:os";import{basename as _w,dirname as Rw,join as pn}from"node:path";import{fileURLToPath as kw}from"node:url";import{gunzipSync as Sw,gzipSync as Ew}from"node:zlib";function gn(e,t){return`el:${Xi("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 mt(e){return`record:${e.slice(3)}`}function jt(e){return`expired:${e.slice(3)}`}function Ts(){return"index:v1"}function xw(e){return`blob:${e}`}function hd(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function it(e){let t=Es(e),r=t[0]??"";if(r==="cat")return"derivable";if(r==="git"){let n=t[1]??"";return n==="log"||n==="diff"||n==="blame"||n==="show"?"derivable":As(t)?"re-executable":"ephemeral"}return"ephemeral"}function hn(e){return Ls(e.storage_class)?e.storage_class:it(e.command)}function yd(e){return Ls(e.storage_class)?e.storage_class:it(e.command)}function Qi(e){let t=Tw(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=yd(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 Zi(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:vw(o),storage_class:yd(s),recover:`rsp show ${s.handle}`}})}function vw(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 ea(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 Ht(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 ta(e,t){let r=process.cwd(),n=fn("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=fn("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:Cw(r),original_bytes:e.length}:null}function Cw(e){let t=zi(e,["rev-parse","HEAD"])||"unborn",r=zi(e,["write-tree"])||"no-index",n=zi(e,["status","--porcelain=v1","-z"])||"";return Xi("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function zi(e,t){let r=fn("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function ra(e,t){let r=Es(t);if(!As(r))return null;let n=Rd(process.cwd(),r,e.length);return!n||Ft(n)!==Ft(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Ft(e)}}function As(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function Ft(e){return Xi("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function na(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 sa(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 oa(e,t,r){let n=Ew(e);return{key:xw(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function bd(e){try{let t=Sw(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function wd(e){let t=e.object_ids[0];if(!t)return null;let r=fn("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 _d(e){if(!As(e.argv))return null;let t=Rd(e.cwd,e.argv,e.original_bytes);return t?Ft(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
|
|
45
|
+
`,"utf8"),t]):null}function Rd(e,t,r){let n=t[0];if(!n)return null;let s=fn(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 Tw(){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 yn(e){return/^el:[a-f0-9]{12}$/.test(e)}function Cs(e){return/^blob:[a-f0-9]{64}$/.test(e)}function kd(e){if(!mn(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:mn(e.scope)?e.scope:void 0,ranking:mn(e.ranking)?e.ranking:void 0}}}function Sd(e){if(!mn(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 mn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Ed(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 gd(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=pn(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 xd(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=mn(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 Os(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function bn(e){if(!fe(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=Ow(e.derivation_recipe),n=Pw(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&Cs(s);return e.collection===J&&typeof e.handle=="string"&&yn(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||aa(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&Cs(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Aw(e.loss)&&(e.storage_class===void 0||Ls(e.storage_class))}function ia(e){return!fe(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!fe(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&yn(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||Ls(t.storage_class))&&(r===void 0||typeof r=="string"&&Cs(r))})}function Ps(e){return fe(e)&&typeof e.key=="string"&&Cs(e.key)&&aa(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 Is(e){return fe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Aw(e){return fe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Ls(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Ow(e){return fe(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 Pw(e){return fe(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&As(e.argv)&&typeof e.original_bytes=="number"&&aa(e.content_hash)}function aa(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function vd(e){try{let n=(await hw(e,"utf8")).trim();if(n==="")return vs();let s;try{s=JSON.parse(n)}catch{s=N(n)}if(Iw(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=vs();return await kr(e,s),s}let n=vs();return await kr(e,n),n}let t=vs();return await kr(e,t),t}async function Cd(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Td(e){return _w(e)==="red-skills.rdb"}async function Ds(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?pn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):pn(ww(),".cache","red-skills","bundles")),t=pn(e,"reddb"),r;try{r=await gd(t)}catch{return}r.sort().reverse();for(let n of r){let s=pn(t,n,process.platform==="win32"?"red.exe":"red");if(fw(s)){process.env.REDDB_BIN=s;return}}}async function kr(e,t){await gw(Rw(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await bw(r,`${C(Yi(t))}
|
|
46
|
+
`,"utf8"),await yw(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 vs(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Iw(e){return fe(e)&&e.version===1&&fe(e.records)&&Object.values(e.records).every(bn)&&(e.blobs===void 0||fe(e.blobs)&&Object.values(e.blobs).every(Ps))&&fe(e.tombstones)&&Object.values(e.tombstones).every(Is)&&ia(e.index)}function Ad(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return kw(e)}var Ns=h(()=>{"use strict";L();dn();xs()});async function Od(e,t){return Lw?$w(e,t):Dw?Bw(e,t):Nw(e,t)}async function Nw(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 $w(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:Mw(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*Mw(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 Bw(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:Fw(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*Fw(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var Lw,Dw,Pd=h(()=>{Lw=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Dw=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as jw}from"node:fs";import{join as Hw}from"node:path";function Id(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=Hw(r,"bin",t);if(jw(o))return o;throw new Error(`reddb: binary "${t}" not found.
|
|
27
47
|
expected at: ${o}
|
|
28
48
|
override: set ${n}=/path/to/${t}
|
|
29
49
|
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),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(
|
|
50
|
+
or check the postinstall log for a download error.`)}var Ld=h(()=>{});import{fileURLToPath as Gw}from"node:url";import{dirname as Ww,resolve as Uw,join as $O}from"node:path";function Vw(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Dd(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Id({name:Vw(),packageRoot:qw,envVar:"REDDB_BIN"})}var Jw,qw,Nd=h(()=>{Ld();Jw=Ww(Gw(import.meta.url)),qw=Uw(Jw,"..")});var Kw,zw,v,$s,ft=h(()=>{Kw=new TextEncoder,zw=new TextDecoder("utf-8"),v=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},$s=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,r={}){if(this.closed)return Promise.reject(new v("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let n=this.nextId++,s=JSON.stringify({jsonrpc:"2.0",id:n,method:t,params:r});return new Promise((o,i)=>{this.pending.set(n,{resolve:o,reject:i}),this.child.stdin.write(Kw.encode(s+`
|
|
51
|
+
`)).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(zw.decode(i)),s=o+1}s>0&&(t=t.subarray(s))}}catch(r){this.#e(`stdout reader error: ${r.message}`);return}this.#e("server stdout closed")}#r(t){if(!t.trim())return;let r;try{r=JSON.parse(t)}catch(o){this.#e(`malformed server response: ${o.message}`);return}let n=r.id;if(n==null)return;let s=this.pending.get(n);s&&(this.pending.delete(n),r.error?s.reject(new v(r.error.code??"UNKNOWN",r.error.message??"unknown error",r.error.data)):s.resolve(r.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let r=new v("CLIENT_CLOSED",t);for(let{reject:n}of this.pending.values())n(r);this.pending.clear()}}});function ua(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:/"?Yw(e):Xw(e)}function Yw(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let r;try{r=new URL(t)}catch(l){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let n=r.searchParams,s=(n.get("proto")||"").toLowerCase(),o=r.pathname&&r.pathname!=="/"?r.pathname:"";if(r.hostname==="embedded.local")return o?{kind:"embedded",path:o,params:n,originalUri:e}:{kind:"embedded",params:n,originalUri:e};let i=Qw(s),a=r.port?Number(r.port):ca(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 Xw(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],r;try{r=new URL("https://"+e.slice(`${t}://`.length))}catch(o){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${o.message}`)}if(!r.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let n=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",s=r.searchParams;return{kind:n,host:r.hostname,port:r.port?Number(r.port):ca(n),username:r.username?decodeURIComponent(r.username):void 0,password:r.password?decodeURIComponent(r.password):void 0,token:s.get("token")??void 0,apiKey:s.get("apiKey")??s.get("api_key")??void 0,loginUrl:s.get("loginUrl")??s.get("login_url")??void 0,params:s,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(r){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${r.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):ca(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new v("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Qw(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new v("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function ca(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 la=h(()=>{ft()});function e_(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return $d(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return $d(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function $d(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 t_(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 Zw,wn,da=h(()=>{ft();Zw=new Set(["embedded"]),wn=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&Zw.has(this._transport))throw new v("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,r){this._guard("get");let n=await this._client.call("cache.get",{namespace:t,key:r});return n==null||n.value==null?null:t_(n.value)}async put(t,r,n,s={}){this._guard("put");let o=e_(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 pa(e,t){return`${ma(e)}.${r_(t)}`}function ma(e){let t=String(e),r=t.match(/[^A-Za-z0-9_]/);if(r)throw new v("INVALID_KV_KEY",`invalid KV key "${t}": character "${r[0]}" is not supported`);return t}function r_(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function n_(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 Md(e){return`'${String(e).replace(/'/g,"''")}'`}var Sr,fa=h(()=>{ft();Sr=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(Md).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${pa(s,t)} = ${n_(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 ${pa(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 ${pa(n,t)}`}),o=s.affected??s.affected_rows??0;return{affected:o,deleted:o>0}}async list(t={}){let r=t.collection??this.collection,n=t.limit==null?100:Number(t.limit);if(!Number.isInteger(n)||n<=0)throw new v("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),i=(await this.client.call("query",{sql:`SELECT key, value FROM ${ma(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(Md).join(", ")}] FROM ${ma(n)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,r={}){if(!this.client.baseUrl)throw new v("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let n=r.collection??this.collection,s=new URLSearchParams;r.sinceLsn!=null&&s.set("since_lsn",String(r.sinceLsn)),r.limit!=null&&s.set("limit",String(r.limit));let o=s.toString()?`?${s}`:"",i=`${this.client.baseUrl}/collections/${encodeURIComponent(n)}/kv/${encodeURIComponent(String(t))}/watch${o}`,a=await fetch(i,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new v("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
|
|
32
52
|
|
|
33
53
|
`)){let l=u.split(`
|
|
34
|
-
`).find(m=>m.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function ey(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=ze(e),a=ze(t),c=s!=null?` GROUP ${ze(s)}`:"",u=o!=null?ri(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function ze(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 ri(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 ty(e){if(!Number.isInteger(e))throw new x("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function ry(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 ${ty(e.priority)}`),e.key!=null&&(t+=` KEY ${ni(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ni(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function ny(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ni(e):JSON.stringify(e)}function ni(e){return`'${String(e).replace(/'/g,"''")}'`}function ti(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var qr,si=y(()=>{ct();qr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ze(t)}`})}push(t,r,n={}){let s=ry(n);return this.client.call("query",{sql:`QUEUE PUSH ${ze(t)} ${ny(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${ze(t)}${ri(r)}`});return ti(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${ze(t)}${ri(r)}`});return ti(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${ze(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ze(t)}`})}async readWait(t,r,n={}){let s=ey(t,r,n),o=await this.client.call("query",{sql:s});return ti(o)}}});function Lu(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new x("INVALID_ARGUMENT",`${t} must be an object`)}function sy(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 Kn(e){return String(e).split(".").map(Du).join(".")}function Du(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 oy(e){return Nu(JSON.stringify(e))}function iy(e){return JSON.stringify(e)}function ay(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?oy(e):Nu(e)}function Nu(e){return`'${String(e).replace(/'/g,"''")}'`}var Vr,oi=y(()=>{ct();Vr=class{constructor(t){this.db=t}async insert(t,r){Lu(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${Kn(t)} DOCUMENT VALUES (${iy(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=sy(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 ${Kn(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Lu(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])=>`${Du(c)} = ${ay(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Kn(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 ${Kn(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function cy(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${ut(r)}.${ut(n)})`}return ly(e)}function uy(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 ut(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 ly(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):$u(e)}function $u(e){return`'${String(e).replace(/'/g,"''")}'`}var Kr,ii=y(()=>{Kr=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){uy(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map($u).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${ut(s)} ${ut(t)} = ${cy(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${ut(n)} ${ut(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${ut(n)} ${ut(t)}`})}}});function dy(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 rr(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 my(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Mu(e)}function Mu(e){return`'${String(e).replace(/'/g,"''")}'`}var zr,ai=y(()=>{zr=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){dy(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Mu).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${rr(s)}.${rr(t)} = ${my(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${rr(n)}.${rr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${rr(n)}.${rr(t)}`})}}});async function Fu(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(fy)}async function ju(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${gy(t)}`)).rows??[]).some(n=>n.name===String(t))}function fy(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Bu(e){return String(e).split(".").map(py).join(".")}function py(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 gy(e){return`'${String(e).replace(/'/g,"''")}'`}var Yr,ci=y(()=>{ct();Yr=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(Bu).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Bu(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 nr(e,t={}){let r=zo(e);if(xy(r),r.kind==="embedded"){let n=Ey(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=Sy(r),o=t.binary??Pu(),i=await xu(o,s),a=new Vn(i);return await a.call("version",{}),new li(a,{transport:"embedded"})}}function Gu(e){return by(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:_y(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Ry(e)?{$uuid:e}:e}function by(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 wy(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Gu):e.map(Gu)}function _y(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 ky(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 Ry(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function zn(e){if(Array.isArray(e))return e.map(zn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return ky(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]=zn(s);return r}return e}function Sy(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Ey(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 xy(e){if(e.kind!=="embedded")throw new x("EMBEDDED_ONLY",hy)}function di(){return new x(Hu,`${Hu}: nested transactions are not supported on one connection`)}function Uu(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function vy(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new x("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Wu} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Cy(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 >= ${Wu} 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 hy,yy,Wu,Hu,Yn,ui,li,mi=y(()=>{vu();Ou();ct();Yo();Xo();ei();si();oi();ii();ai();ci();Xo();ei();si();oi();ii();ai();ci();Yo();hy="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",yy="1.0",Wu="1.0.9",Hu="NESTED_TX_NOT_SUPPORTED";Yn=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 di()}},ui=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw di();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 Yn(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Uu(r,n)}throw r}}},li=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=yy,this.cache=new Jr(t,this.transport),this.queue=new qr(t),this.queues=this.queue,this.documents=new Vr(this);let n=new tr(t);this.kv=Object.assign((s="kv_default")=>new tr(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 Kr(t,s),this.vault=(s="red.vault")=>new zr(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=wy(r);return n==null?this.client.call("query",{sql:t}).then(zn):this.client.call("query",{sql:t,params:n}).then(zn)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return vy(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 Cy(n,r.length)}tx(){return new ui(this)}async transaction(t){if(this.inTransaction)throw di();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 Yn(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){Uu(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return ju(this,t)}list(){return Fu(this)}from(t){return new Yr(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 pi(e,t,r=Ju){let n=Math.max(0,Math.floor(e)),s=r in qu?r:Ju,o=qu[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:fi(n,o),dollars_saved_low_usd:i==null?null:fi(i,o),dollars_saved_high_usd:a==null?null:fi(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:Ty}}function fi(e,t){return Py(Math.max(0,e)/1e6*t)}function Xr(e){return`$${e.toFixed(6)}`}function Py(e){return Math.round(e*1e6)/1e6}var Ju,qu,Ty,gi=y(()=>{"use strict";Ju="gpt-5",qu={"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},Ty="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Oy,readFileSync as vT}from"node:fs";import{dirname as Ay,join as Iy}from"node:path";function Vu(e,t){let r=e;for(let n=0;n<16;n++){let s=Iy(r,t);if(Oy(s))return s;let o=Ay(r);if(o===r)break;r=o}return null}function Ly(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Xn(e,t){let r=[];for(let n of e.split(`
|
|
35
|
-
|
|
36
|
-
`)}),o.on("data",l=>{a+=l.toString("utf8");let m=a.indexOf(`
|
|
37
|
-
`);if(m<0)return;let d=a.slice(0,m);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 hi=y(()=>{});import{createHash as Ny,randomUUID as Zu}from"node:crypto";import{spawn as el}from"node:child_process";import{constants as yi}from"node:fs";import{readFileSync as $y}from"node:fs";import{mkdir as Qn,open as My,readFile as tl,rename as By,rm as Me,stat as Fy,writeFile as jy}from"node:fs/promises";import{tmpdir as Hy}from"node:os";import{dirname as lt,join as ue,resolve as Zn}from"node:path";import{fileURLToPath as rl}from"node:url";function dt(e){let t=Zy(e)??Zn(e),r=Qy(t),n=X(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 es(e,t){if(await Qn(lt(e.socketPath),{recursive:!0,mode:448}),await Xu(e.socketPath,t))return;await Yu(e,t);let r=await al(e.lockPath);if(r)try{if(await Xu(e.socketPath,t))return;await Yu(e,t),await Jy(e.socketPath);let n=qy(e,t);await zu(e.socketPath,n);return}finally{await r.close(),await Me(e.lockPath,{force:!0})}await zu(e.socketPath)}async function At(e,t=200){try{return await sl(e,t)!=null}catch{return!1}}async function sl(e,t=200){let r=await sr({socketPath:e,timeoutMs:t},{id:Zu(),op:"ping"});return r.ok?dl(r.value)?{version:nb(r.value.version)}:{}:null}async function ts(e,t){if(await Qn(lt(e.socketPath),{recursive:!0,mode:448}),await At(e.socketPath,50))return!1;let r=await al(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=ul(t);return el(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 ol(e,t){try{await es(e,t)}finally{await Me(e.wakeLockPath,{force:!0})}}async function Zr(e){try{let t=zy(await tl(e,"utf8"));return sb(t)?t:null}catch{return null}}async function rs(e,t){let r={version:nl,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 Qn(lt(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await jy(n,`${C(r)}
|
|
38
|
-
`,{encoding:"utf8",mode:384}),await By(n,e)}async function ns(e,t=process.pid){try{let r=await Zr(e);if(r&&r.pid!==t)return;await Me(e,{force:!0})}catch{}}async function Qr(e){let t=await Zr(e.registryPath);if(!t)try{return await tl(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!or(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await At(t.socket_path,100);return r&&await Xy(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 il(e){let t=await Qr(e);return t.state==="registered-dead"||t.state==="invalid"?(await Me(e.registryPath,{force:!0}),await Qr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await cl(t.entry.pid),await Me(e.registryPath,{force:!0}),await Me(t.entry.socket_path,{force:!0}),await Qr(e)):t}async function zu(e,t){let r=Date.now()+Uy(),n;for(;Date.now()<r;){if(await At(e))return;if(t){let s=t.spawnError();if(s)throw new Error(bi("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(bi("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?bi("resident rsp server did not start",t):"resident rsp server did not start")}function Uy(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Wy}async function Jy(e){await Me(e,{force:!0})}async function al(e){await Qn(lt(e),{recursive:!0,mode:448});try{return await My(e,yi.O_CREAT|yi.O_EXCL|yi.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function qy(e,t){let[r,n]=ul(t),s=process.env.RSP_DEBUG==="1",o,i="",a=el(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=Ky(`${i}${c}`,Vy)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function bi(e,t,r){let n=[e];r&&n.push(`error: ${r.message}`),t.child.exitCode!=null&&n.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&n.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&n.push(`stderr tail:
|
|
39
|
-
${s}`),n.join(`
|
|
40
|
-
`)}function Ky(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function zy(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return N(t)}}async function Yu(e,t){try{let r=await Zr(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!or(r.pid)){await Me(e.registryPath,{force:!0});return}if(await At(r.socket_path,100))return;if(ll(t.clientVersion,r.resident_version)&&(await Yy(r.pid,1500),!or(r.pid))){await Me(e.registryPath,{force:!0});return}await cl(r.pid),await Me(e.registryPath,{force:!0})}catch{}}function or(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function cl(e){if(!or(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!or(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Yy(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!or(e))return;await new Promise(n=>setTimeout(n,50))}}async function Xy(e){if(!e.startsWith("file://"))return!1;try{return await Fy(rl(e)),!1}catch(t){return t.code==="ENOENT"}}function ul(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Zn(process.argv[1]):rl(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Qy(e){let t=Ny("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<Gy)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return ue(Hy(),`red-skills-${n}`,t)}function Zy(e){let t=Zn(e);for(let r=0;r<32;r++){try{let s=wi(ue(t,".git"));if(s!=null)return eb(t,s)??t;if(wi(ue(t,".git","HEAD"))!=null||wi(ue(t,".red","config.yaml"))!=null)return t}catch{}let n=lt(t);if(n===t)return null;t=n}return null}function eb(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=Zn(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?lt(lt(lt(n))):null}function wi(e){try{return $y(e,"utf8")}catch{return null}}async function Xu(e,t){let r=await sl(e).catch(()=>null);return r?ll(t.clientVersion,r.version)?(await tb(e,t.clientVersion),await ob(e),!1):!0:!1}async function tb(e,t){try{await sr({socketPath:e,timeoutMs:200},{id:Zu(),op:"handover",clientVersion:t})}catch{}}function ll(e,t){return!e||!t?!1:rb(e,t)>0}function rb(e,t){let r=Qu(e),n=Qu(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Qu(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 dl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nb(e){return typeof e=="string"&&e.length>0?e:void 0}function sb(e){return dl(e)&&e.version===nl&&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 ob(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await At(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Gy,nl,Wy,Vy,ss=y(()=>{D();ke();hi();Gy=108,nl=1,Wy=5e3;Vy=8*1024});var yl={};j(yl,{DEFAULT_RSP_BYTE_BUDGET:()=>xe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Ee,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Xe,DEFAULT_RSP_IDLE_MS:()=>as,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>hl,DEFAULT_RSP_STORE_PATH:()=>_i,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>is,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>fl,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>pl,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>os,DEFAULT_RSP_TTL_DAYS:()=>Se,MIN_RSP_IDLE_MS:()=>gl,resolveRspConfig:()=>ve});import{existsSync as ib,readFileSync as ab}from"node:fs";import{join as cb,resolve as ml}from"node:path";function ve(e,t,r){let n=Vu(ml(e),cb(".red","config.yaml")),s=n?ab(n,"utf8"):"",o=Xn(s,"rsp.enabled")==="true",i=Xn(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=Ye(Re(s,"rsp.ttlDays"),Se),u=Ye(ir(t.RSP_EPHEMERAL_TTL_HOURS)??Re(s,"rsp.ephemeralTtlHours"),Ee),l=Ye(Re(s,"rsp.byteBudget"),xe),m=Ye(Re(s,"rsp.telemetryTtlDays"),os),d=Ye(Re(s,"rsp.telemetryByteBudget")??Re(s,"rsp.byteBudget"),is),f=Ye(ir(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??Re(s,"rsp.telemetryDrainIntervalMs"),fl),p=Ye(ir(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??Re(s,"rsp.telemetryDrainTimeoutMs"),pl),g=ub(ir(t.RSP_IDLE_MS)??Re(s,"rsp.idleMs"),as,gl),h=Ye(ir(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??Re(s,"rsp.heavyGitByteThreshold"),Xe),b=lb(ir(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??Re(s,"rsp.measurement.holdoutShare"),hl),w=dt(e).rootDir,E=r??t.RSP_STORE_URI??`file://${ku(ml(w),ib)}`;return{enabled:o,proxyEnabled:a,storeUri:E,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:m,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:p,idleMs:g,heavyGitByteThreshold:h,measurementHoldoutShare:b}}function Re(e,t){let r=Xn(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function Ye(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ub(e,t,r){let n=Ye(e,t);return Math.max(n,r)}function lb(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function ir(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Xe,_i,Se,Ee,xe,os,is,fl,pl,as,gl,hl,Ce=y(()=>{"use strict";Ku();ke();ss();Xe=8*1024,_i=wu,Se=7,Ee=6,xe=64*1024*1024,os=90,is=4*1024*1024,fl=3e4,pl=2e3,as=5*6e4,gl=5e3,hl=0});var U,cs=y(()=>{"use strict";Ce();U="rsp_elisions_v1"});function us(e){return e.trim().split(/\s+/).filter(Boolean)}function en(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function tn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function le(e){let t=us(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:It(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:It(t)&&t[1]?`gh ${t[1]} json-jq`:It(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 It(e){return e[0]==="gh"&&e.some(db)}function db(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function ar(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var rn=y(()=>{"use strict"});import{spawnSync as on}from"node:child_process";import{createHash as Si}from"node:crypto";import{existsSync as mb}from"node:fs";import{mkdir as fb,readFile as pb,readdir as bl,rename as gb,writeFile as hb}from"node:fs/promises";import{homedir as yb}from"node:os";import{basename as bb,dirname as wb,join as nn}from"node:path";import{fileURLToPath as _b}from"node:url";import{gunzipSync as kb,gzipSync as Rb}from"node:zlib";function Ei(e,t){return`el:${Si("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 mt(e){return`record:${e.slice(3)}`}function Dt(e){return`expired:${e.slice(3)}`}function ms(){return"index:v1"}function Sb(e){return`blob:${e}`}function wl(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function Qe(e){let t=us(e),r=t[0]??"";if(r==="cat")return"derivable";if(r==="git"){let n=t[1]??"";return n==="log"||n==="diff"||n==="blame"||n==="show"?"derivable":fs(t)?"re-executable":"ephemeral"}return"ephemeral"}function an(e){return ys(e.storage_class)?e.storage_class:Qe(e.command)}function _l(e){return ys(e.storage_class)?e.storage_class:Qe(e.command)}function xi(e){let t=vb(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=_l(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 vi(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:Eb(o),storage_class:_l(s),recover:`rsp show ${s.handle}`}})}function Eb(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 Ci(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 Nt(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 Ti(e,t){let r=process.cwd(),n=on("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=on("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:xb(r),original_bytes:e.length}:null}function xb(e){let t=ki(e,["rev-parse","HEAD"])||"unborn",r=ki(e,["write-tree"])||"no-index",n=ki(e,["status","--porcelain=v1","-z"])||"";return Si("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function ki(e,t){let r=on("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function Pi(e,t){let r=us(t);if(!fs(r))return null;let n=El(process.cwd(),r,e.length);return!n||Lt(n)!==Lt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Lt(e)}}function fs(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 Lt(e){return Si("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function Oi(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 Ai(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 Ii(e,t,r){let n=Rb(e);return{key:Sb(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function kl(e){try{let t=kb(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function Rl(e){let t=e.object_ids[0];if(!t)return null;let r=on("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 Sl(e){if(!fs(e.argv))return null;let t=El(e.cwd,e.argv,e.original_bytes);return t?Lt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
|
|
41
|
-
`,"utf8"),t]):null}function El(e,t,r){let n=t[0];if(!n)return null;let s=on(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 vb(){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 cn(e){return/^el:[a-f0-9]{12}$/.test(e)}function ds(e){return/^blob:[a-f0-9]{64}$/.test(e)}function xl(e){if(!sn(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let r=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:r,options:{includeSuperseded:e.includeSuperseded===!0,scope:sn(e.scope)?e.scope:void 0,ranking:sn(e.ranking)?e.ranking:void 0}}}function vl(e){if(!sn(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let 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 sn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Cl(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 bl(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=nn(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 Tl(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=sn(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 ps(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function un(e){if(!de(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=Tb(e.derivation_recipe),n=Pb(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&ds(s);return e.collection===U&&typeof e.handle=="string"&&cn(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Di(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&ds(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Cb(e.loss)&&(e.storage_class===void 0||ys(e.storage_class))}function Li(e){return!de(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!de(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&cn(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||ys(t.storage_class))&&(r===void 0||typeof r=="string"&&ds(r))})}function gs(e){return de(e)&&typeof e.key=="string"&&ds(e.key)&&Di(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 hs(e){return de(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Cb(e){return de(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function ys(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Tb(e){return de(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 Pb(e){return de(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&fs(e.argv)&&typeof e.original_bytes=="number"&&Di(e.content_hash)}function Di(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Pl(e){try{let n=(await pb(e,"utf8")).trim();if(n==="")return ls();let s;try{s=JSON.parse(n)}catch{s=N(n)}if(Ob(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=ls();return await cr(e,s),s}let n=ls();return await cr(e,n),n}let t=ls();return await cr(e,t),t}async function Ol(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Al(e){return bb(e)==="red-skills.rdb"}async function bs(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?nn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):nn(yb(),".cache","red-skills","bundles")),t=nn(e,"reddb"),r;try{r=await bl(t)}catch{return}r.sort().reverse();for(let n of r){let s=nn(t,n,process.platform==="win32"?"red.exe":"red");if(mb(s)){process.env.REDDB_BIN=s;return}}}async function cr(e,t){await fb(wb(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await hb(r,`${C(Ri(t))}
|
|
42
|
-
`,"utf8"),await gb(r,e)}function Ri(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=>Ri(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=Ri(n));return t}return String(e)}function ls(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Ob(e){return de(e)&&e.version===1&&de(e.records)&&Object.values(e.records).every(un)&&(e.blobs===void 0||de(e.blobs)&&Object.values(e.blobs).every(gs))&&de(e.tombstones)&&Object.values(e.tombstones).every(hs)&&Li(e.index)}function Il(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return _b(e)}var Ni=y(()=>{"use strict";D();rn();cs()});import{createHash as Ab}from"node:crypto";import{existsSync as Ll}from"node:fs";import{mkdir as Ib,readFile as Lb,rename as $i,rm as ln,stat as Mi}from"node:fs/promises";import{basename as Db,dirname as Nb}from"node:path";var ft,Dl=y(()=>{"use strict";mi();cs();Ni();ft=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=Il(t.uri),n=await Ol(r),s=new e(n,{uri:t.uri,ttlDays:ps(t.ttlDays,Se),ephemeralTtlHours:ps(t.ephemeralTtlHours,Ee),byteBudget:ps(t.byteBudget,xe),now:t.now??(()=>new Date)});return Al(n)?(await bs(),await Ib(Nb(n),{recursive:!0}),s.db=await nr(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Pl(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=Ei(n,r),a=mt(i),c=Qe(r.command),u=c==="derivable"?Ti(n,r.command):null,l=c==="re-executable"?Pi(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ci(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Lt(n),p=m==="ephemeral"?Ii(n,f,o):null,g=Oi(n,u,l,p);p&&!this.document.blobs[p.key]&&(this.document.blobs[p.key]=p,this.dirty=!0);let h={collection:U,handle:i,original_bytes:n.length,stored_bytes:g,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:p?.key}};return delete this.document.tombstones[Dt(i)],this.document.records[a]=h,this.upsertIndex({handle:i,key:a,bytes:g,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:p?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!cn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[mt(t)];if(!un(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:mt(n.handle),bytes:Ai(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:an(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:an(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:Nt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:xi(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),vi(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=Nt(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=Nt(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[Dt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[Dt(t)];return hs(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return Rl(t.derivation_recipe);if(t.reexecution_recipe)return Sl(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return gs(r)?kl(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 cr(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Mi(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 cr(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=Ei(n,r),a=mt(i),c=Qe(r.command),u=c==="derivable"?Ti(n,r.command):null,l=c==="re-executable"?Pi(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ci(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Lt(n),p=m==="ephemeral"?Ii(n,f,o):null,g=Oi(n,u,l,p);p&&!gs(await this.kvGet(p.key))&&await this.kv().put(p.key,p);let h={collection:U,handle:i,original_bytes:n.length,stored_bytes:g,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:p?.key}};await this.kv().delete(Dt(i)),await this.kv().put(a,h);let w=(await this.readRedDbIndex()).records.filter(E=>E.handle!==i);return w.push({handle:i,key:a,bytes:g,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:p?.key}),await this.pruneRedDb({version:1,records:w},!0),await this.assertRedDbMintPersisted(i,g),i}async getRedDb(t){if(!cn(t))return null;let r=await this.kvGet(Dt(t));if(hs(r))return r;let n=await this.kvGet(mt(t));if(!un(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:mt(n.handle),bytes:Ai(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:an(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:an(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Nt(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:xi(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return vi(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=xl(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=vl(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 Cl(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await Lb(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=Db(s),c=Ab("sha256").update("resident-memory-v1\0").update(s).update("\0").update(i).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:i,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},m=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(m.rows[0]?.red_entity_id??m.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),n+=1}return{files:r.length,nodes:n,edges:0,docs:r.length,added:n,updated:0,skipped:r.length-n,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,r){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),o=n.rows.map(i=>Tl(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(ms());return Li(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ms(),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=Nt(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=Nt(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 Mi(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 ln(o,{force:!0}),await ln(i,{force:!0});let a=await nr(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${wl(u.name)}`);let l=a.kv(u.name);for(let m of u.items)await l.put(m.key,m.value)}}finally{await a.close()}let c=await Mi(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await ln(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await $i(this.path,i),await $i(o,this.path),await ln(i,{force:!0})}catch(u){throw!Ll(this.path)&&Ll(i)&&await $i(i,this.path),await ln(o,{force:!0}),u}finally{this.db=await nr(`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:ms(),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(Dt(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(mt(t));if(!un(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 ur={};j(ur,{DEFAULT_RSP_BYTE_BUDGET:()=>xe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Ee,DEFAULT_RSP_TTL_DAYS:()=>Se,RSP_ELISION_COLLECTION:()=>U,RspElisionStore:()=>ft,ensureReddbBinaryFromWarmCache:()=>bs,storageClassForCommand:()=>Qe});var Ze=y(()=>{"use strict";cs();Ni();Dl()});var Bi,Fi,ji,se,q,me,Be,dn,ws=y(()=>{"use strict";Bi="rsp-telemetry.spool.toonl",Fi="rsp-telemetry.spool.jsonl",ji="rsp-telemetry.spool.corrections.toonl",se="rsp_accounting_events_v1",q="rsp_decisions_v1",me="rsp_telemetry_invocations_v1",Be="rsp_telemetry_degradations_v1",dn="rsp_telemetry_index_v1"});function lr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function fe(e){return pt(e)??0}function pt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var Hi=y(()=>{"use strict"});import{randomUUID as Wi,createHash as $b}from"node:crypto";import{appendFileSync as Fl,existsSync as Mb,mkdirSync as jl}from"node:fs";import{mkdir as Hl,readdir as Bb,readFile as Gl,rename as Fb,rm as Wl,writeFile as Ui}from"node:fs/promises";import{basename as Gi,dirname as mn,join as dr,resolve as Nl}from"node:path";function ks(e){if(!e)return null;let t=Nl(e);for(;;){if(Mb(dr(t,".red")))return t;let r=Nl(dr(t,".."));if(r===t)break;t=r}return null}function et(e){return dr(X(e),Bi)}function Rs(e){return dr(X(e),Fi)}function qi(e){return dr(X(e),ji)}async function tt(e,t){gt(e,t)}function gt(e,t){try{let r=ks(e);if(!r)return;let n=et(r);jl(mn(n),{recursive:!0}),Fl(n,Jb({spool_id:Wi(),event:Hb(t)}),{encoding:"utf8",mode:384})}catch{}}function Hb(e){return $l($l(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function $l(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=jb)return e;let o={...e};return delete o[t],fe(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function Gb(e){let t=ks(e);if(!t)return[];let r=et(t);await Hl(mn(r),{recursive:!0}).catch(()=>{});let n=await ql(t),s=[...await Vl(t),...await Vb(n)];return await Promise.all(n.map(o=>Wl(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Vi(e,t){let r=ks(e);if(!r)return;let n=et(r);await Hl(mn(n),{recursive:!0}).catch(()=>{}),await qb(r);for(let s of await Wb(r))await Ml(r,s,t);for(let s of await Vl(r))await Ul(r,s,t,!0);for(let s of await ql(r))await Ml(r,s,t)}async function Wb(e){let t=[et(e),Rs(e)],r=mn(t[0]);return(await Bb(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Gi(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Gi(c)}.`));if(!o)return!1;let i=`${Gi(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Ub(a))}).sort().map(s=>dr(r,s))}function Ub(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Ml(e,t,r){try{let n=await Jl(t);for(let s of Kl(n))await Ul(e,s,r,!1)}finally{await Wl(t,{force:!0})}}async function Ul(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Bl(e,{correction_id:Wi(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Bl(e,{correction_id:Wi(),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 Jl(e){let t="";for(let r=0;r<5;r++){let n=await Gl(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function mr(e){try{let t=JSON.parse(e);return!lr(t)||t.collection!==se&&t.collection!==q&&t.collection!==me&&t.collection!==Be?null:t}catch{return null}}function Jb(e){return at().push(Yb(e))}function Bl(e,t){try{let r=ks(e);if(!r)return;let n=qi(r);jl(mn(n),{recursive:!0});let s=at();Fl(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 ql(e){let t=[et(e),Rs(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await Fb(n,s),await Ui(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function qb(e){await Promise.all([Ui(et(e),"",{flag:"a"}),Ui(Rs(e),"",{flag:"a"})]).catch(()=>{})}async function Vb(e){let t=[];for(let r of e)t.push(...Kl(await Jl(r)));return t}async function Vl(e){let t=await Gl(qi(e),"utf8").catch(()=>""),r=new Map;for(let n of Kb(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:mr(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function Kl(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(lr(o)){let i=mr(JSON.stringify(o));t.push(i?{spool_id:_s(JSON.stringify(o)),event:i}:{spool_id:_s(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:_s(s),raw_line:s});continue}try{for(let o of it(`${r}
|
|
45
|
-
${s}
|
|
46
|
-
`))Ji(o)&&Xb(o)&&t.push({spool_id:o.spool_id,event:zl(o)})}catch{s.startsWith("{")&&t.push({spool_id:_s(s),raw_line:s})}}}return t}function Kb(e){return zb(e).map(Qb).filter(t=>t!==null)}function zb(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);Ji(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of it(`${r}
|
|
47
|
-
${s}
|
|
48
|
-
`))Ji(o)&&t.push(o)}catch{}}}return t}function _s(e){return`legacy:${$b("sha256").update(e).digest("hex").slice(0,24)}`}function Yb(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 zl(e){let{spool_id:t,...r}=e;return mr(JSON.stringify(r))}function Xb(e){return typeof e.spool_id=="string"&&zl(e)!==null}function Qb(e){return typeof e.correction_id=="string"&&typeof e.target_spool_id=="string"&&(e.action==="retry"||e.action==="resolved")&&typeof e.created_at=="string"&&(e.event_json===null||typeof e.event_json=="string")?{correction_id:e.correction_id,target_spool_id:e.target_spool_id,action:e.action,created_at:e.created_at,event_json:e.event_json??void 0}:null}function Ji(e){return lr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var jb,Yl=y(()=>{"use strict";ke();D();ws();Hi();jb=64*1024});async function Ss(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await Zl(e,s),i=(await fn(e,q)).filter(R=>pr(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,m=0,d=0,f=0,p=!1,g=new Map,h=new Map,b=[],w=0,E=0,v=0;for(let R of a){R.elided===!0&&l++;let I=fe(R.raw_bytes),Je=fe(R.emitted_bytes),xt=Math.max(0,I-Je),Kt=gr(R,"raw"),_=gr(R,"emitted"),T=Math.max(0,Kt.tokens-_.tokens);p||=(R.estimated===!0||Kt.estimated||_.estimated)&&T>0,m+=I,d+=Je,f+=T;let vt=$t(R).slice(0,10);vt&&g.set(vt,(g.get(vt)??0)+T);let Ct=P(R.command)||"unknown",he=h.get(Ct)??{command:Ct,invocations:0,bytes_saved:0,tokens_saved:0};he.invocations++,he.bytes_saved+=xt,he.tokens_saved+=T,h.set(Ct,he);let ye=pt(R.wrapper_ms);ye!=null&&b.push(ye),w+=fe(R.store_open_count);let zt=pt(R.store_elapsed_ms);zt!=null&&(E+=zt,v++)}let O=new Map,F=new Map,ge=[],Ae=null;for(let R of u){let I=P(R.degradation_reason)||P(R.reason)||"unknown",Je=P(R.wrapper_family)||le(P(R.command));O.set(I,(O.get(I)??0)+1),F.set(Je,(F.get(Je)??0)+1);let xt=$t(R);ge.push({timestamp:xt,family:Je,command:P(R.command)||"unknown",reason:I,exit_code:pt(R.wrapper_exit_code),stderr_head:P(R.stderr_head)||null}),(!Ae||xt>Ae.timestamp)&&(Ae={timestamp:xt,reason:I,command:P(R.command)||"unknown"})}let te=a.length+u.length,ot=c.filter(R=>R.hit===!0).length,re=pi(f,p),$r=Zb(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:m,emitted_bytes:d,bytes_saved:Math.max(0,m-d),tokens_saved: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:[...g.entries()].sort(([R],[I])=>R.localeCompare(I)).map(([R,I])=>({date:R,tokens_saved:I})),top_commands:[...h.values()].sort((R,I)=>I.bytes_saved-R.bytes_saved||I.tokens_saved-R.tokens_saved||R.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:te===0?0:u.length/te,show_total:c.length,show_hits:ot,show_misses:Math.max(0,c.length-ot),show_hit_rate:c.length===0?0:V(ot/c.length),by_reason:[...O.entries()].sort((R,I)=>I[1]-R[1]||R[0].localeCompare(I[0])).map(([R,I])=>({reason:R,count:I})),by_family:[...F.entries()].sort((R,I)=>I[1]-R[1]||R[0].localeCompare(I[0])).map(([R,I])=>({family:R,count:I})),recent_failures:ge.sort((R,I)=>I.timestamp.localeCompare(R.timestamp)).slice(0,20),most_recent:Ae},latency:{wrapper_ms_p50:fr(b,.5),wrapper_ms_p95:fr(b,.95),store_open_count_sum:w,store_elapsed_ms_sum:V(E),store_elapsed_ms_avg:v===0?null:V(E/v)},decisions:$r}}function Zb(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=P(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,fe(a.saved_units))),c!=="contributed"){let m=P(a.reason)||"unknown";o.set(m,(o.get(m)??0)+1)}let u=P(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:V(t/e.length),top_pass_reasons:[...o.entries()].sort((a,c)=>c[1]-a[1]||a[0].localeCompare(c[0])).map(([a,c])=>({reason:a,count:c})),by_command_family:[...i.entries()].sort((a,c)=>{let u=a[1].contributed+a[1].passed+a[1].failed_open;return c[1].contributed+c[1].passed+c[1].failed_open-u||a[0].localeCompare(c[0])}).map(([a,c])=>{let u=c.contributed+c.passed+c.failed_open;return{command_family:a,contributed:c.contributed,passed:c.passed,failed_open:c.failed_open,contribution_rate:u===0?0:V(c.contributed/u)}})}}async function Ki(e,t,r=new Date){let s=(await fn(e,se)).filter(o=>pr(o)<=r.getTime()||$t(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=$t(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:cw(s)}}async function zi(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 Zl(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"),m=a.filter(_=>P(_.degradation_reason)!==""),d=[...c,...m].map(pr).filter(_=>Number.isFinite(_)&&_>0),f=d.length===0?null:Math.min(...d),p=f==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-f)/yw()))),g=[],h=new Map,b=new Map,w=new Map,E=new Map,v=new Map,O=new Map,F=0,ge=!1,Ae=0,te=null,ot=0,re=0;for(let _ of c){let T=$t(_),vt=T.slice(0,10),Ct=T.slice(0,16),he=le(P(_.command)),ye=Math.max(0,gr(_,"raw").tokens-gr(_,"emitted").tokens);F+=ye,ge||=_.estimated===!0&&ye>0;let zt=Math.max(0,fe(_.raw_bytes)-fe(_.emitted_bytes)),xo=pt(_.wrapper_ms);if(xo!=null){g.push(xo);let Hc=h.get(he)??[];Hc.push(xo),h.set(he,Hc)}vt&&b.set(vt,(b.get(vt)??0)+1),Ct&&w.set(Ct,(w.get(Ct)??0)+1);let vo=mw(T);vo&&E.set(vo,(E.get(vo)??0)+1);let Co=gw(T);Co&&v.set(Co,(v.get(Co)??0)+ye);let Wn=O.get(he)??{command_family:he,invocations:0,tokens_saved:0,bytes_saved:0};Wn.invocations++,Wn.tokens_saved+=ye,Wn.bytes_saved+=zt,O.set(he,Wn),_.elided===!0&&Ae++,(_.store_open_count!=null||_.store_elapsed_ms!=null)&&(ot++,fe(_.store_open_count)>0&&re++),ye>0&&(!te||ye>te.tokens_saved||ye===te.tokens_saved&&zt>te.bytes_saved)&&(te={timestamp:T,command_family:he,tokens_saved:ye,bytes_saved:zt})}let $r=m.map(_=>({timestamp:$t(_),command_family:le(P(_.command)),reason:P(_.degradation_reason)||P(_.reason)||"unknown"})).sort((_,T)=>_.timestamp.localeCompare(T.timestamp)),R=new Map;for(let _ of $r)R.set(_.reason,(R.get(_.reason)??0)+1);let I=nw($r),Je=rw(l),xt=ow([...O.values()],Je,I),Kt=[...w.entries()].sort((_,T)=>T[1]-_[1]||_[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:p,since:o,until:s,label:`window: ${n}d, data: ${p}d`,empty:c.length===0&&m.length===0,invocations:c.length,degradations:m.length},latency:{global:Ql(g),by_command_family:[...h.entries()].sort((_,T)=>T[1].length-_[1].length||_[0].localeCompare(T[0])).map(([_,T])=>({command_family:_,count:T.length,...Ql(T)}))},throughput:{requests_per_day:[...b.entries()].sort(([_],[T])=>_.localeCompare(T)).map(([_,T])=>({date:_,requests:T})),active_minute_avg:w.size===0?null:V([...w.values()].reduce((_,T)=>_+T,0)/w.size),peak_minute:Kt?{minute:Kt[0],requests:Kt[1]}:null,hour_weekday_heatmap:fw(E)},savings:{tokens:pi(F,ge),measured_control_holdout:ew(c,u),weekly_tokens_saved:hw(v),elision_rate:c.length===0?0:V(Ae/c.length),top_commands_by_tokens_saved:[...O.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:[...O.values()].sort((_,T)=>T.invocations-_.invocations||T.tokens_saved-_.tokens_saved||_.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:te},health:{degradation_timeline:$r,degradations_by_reason:[...R.entries()].sort((_,T)=>T[1]-_[1]||_[0].localeCompare(T[0])).map(([_,T])=>({reason:_,count:T})),cold_boots:ot===0?null:re,warm_hits:ot===0?null:Math.max(0,ot-re)},mining:{recovery_usage_by_family:Je,degradation_clusters:I,threshold_tuning_suggestions:xt}}}async function Zl(e,t){let r=(await fn(e,se)).filter(i=>pr(i)>=t),n=r.some(i=>P(i.event_type)!=="show"||P(i.degradation_reason)!==""),s=(await fn(e,me)).filter(i=>pr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:P(i.event_type)||"invocation"})),o=(await fn(e,Be)).filter(i=>pr(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 gr(e,t){let r=pt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=fe(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function ew(e,t){let r=aw(t.map(a=>pt(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(Xl).filter(a=>a!=null),s=t.map(Xl).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:V(iw(o));return{enabled:!0,holdout_share:V(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:tw(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Xl(e){let t=gr(e,"raw").tokens;if(t<=0)return null;let r=gr(e,"emitted").tokens;return Math.max(0,t-r)/t}function tw(e,t){if(e.length<=1)return{low:V(Math.max(0,t)),high:V(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:V(Math.max(0,t-n)),high:V(Math.min(1,t+n))}}function rw(e){let t=new Map;for(let r of e){let n=le(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:V(r.show_hits/r.show_total)}))}function nw(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:sw(r)}))}function sw(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 ow(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 iw(e){return e.reduce((t,r)=>t+r,0)/e.length}function aw(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function cw(e){let t=lw();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=uw(r.storage_class)??Qe(P(r.command));t[n].records+=1;let s=fe(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function uw(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function lw(){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 fn(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=>dw(n.value)).filter(n=>lr(n))}function dw(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function pr(e){let t=Date.parse($t(e));return Number.isFinite(t)?t:0}function $t(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function fr(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 V(r[n])}function Ql(e){return{wrapper_ms_p50:fr(e,.5),wrapper_ms_p90:fr(e,.9),wrapper_ms_p95:fr(e,.95),wrapper_ms_p99:fr(e,.99)}}function V(e){return Math.round(e*100)/100}function mw(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${pw(t.getUTCDay())}:${t.getUTCHours()}`:null}function fw(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 pw(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function gw(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 hw(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:V((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function yw(){return 24*60*60*1e3}var ed=y(()=>{"use strict";rn();Ze();gi();ws();Hi()});var pn={};j(pn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>se,RSP_DECISIONS_COLLECTION:()=>q,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Be,RSP_TELEMETRY_INDEX_COLLECTION:()=>dn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>me,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Fi,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>ji,RSP_TELEMETRY_SPOOL_FILE:()=>Bi,appendTelemetryEvent:()=>tt,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>Vi,parseTelemetryEvent:()=>mr,readAccountingLaneStats:()=>Ki,readTelemetryGainsReport:()=>zi,readTelemetryStats:()=>Ss,takeTelemetrySpool:()=>Gb,telemetryLegacySpoolPath:()=>Rs,telemetrySpoolCorrectionsPath:()=>qi,telemetrySpoolPath:()=>et});var Te=y(()=>{"use strict";ws();Yl();ed()});function sa(e){return e==="success"?0:e==="failure"?1:2}function oa(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function rt(e,t,r){return{status:e,exitCode:sa(e),summary:t,...r?{details:r}:{}}}function K(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function yr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var rd,nd,sd,ra,od,id,ad,cd,na,Mt=y(()=>{"use strict";rd="rsp.wait.result",nd="rsp.wait.registry",sd="rsp.wait.list",ra={cmd:18e5,pr:27e5,run:27e5,release:72e5},od=16*1024,id=1e4,ad=2e3,cd=6e4,na={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 Sw,readFile as Ew}from"node:fs/promises";async function br(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await vs(r),s=[r,...n];if(s.every(c=>!Bt(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(ud(e,"SIGTERM"),xs(n,"SIGTERM"),await ld(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await vs(r)])];ud(e,"SIGKILL"),xs(o,"SIGKILL");let i=Math.max(1e3,t);await xw(e,i);let a=await ld(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Bt)}}function ud(e,t){let r=e.pid;if(r)try{process.platform!=="win32"?process.kill(-r,t):e.kill(t)}catch{try{e.kill(t)}catch{}}}function xs(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function xw(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 ld(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Bt(n)))return!0;await vw(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Bt(n))}async function vs(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await Sw("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await dd(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 gn(e){return(await dd(e))?.[19]}async function wr(e,t){if(!Bt(e))return!1;if(!t)return!0;let r=await gn(e);return r===void 0?process.platform!=="linux":r===t}function Bt(e){try{return process.kill(e,0),!0}catch{return!1}}async function dd(e){if(process.platform!=="linux")return null;try{let t=await Ew(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function vw(e){await new Promise(t=>setTimeout(t,e))}var nt=y(()=>{"use strict"});import{constants as Cw}from"node:os";async function md(e){let t=e[1],r={timeoutMs:ra.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:id,terminateGraceMs:ad,probeTimeoutMs:cd,format:"toon",captureBytes:od},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=ra[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=hn(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=Ow(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=hn(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=hn(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=hn(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=Pw(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 Tw(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function Tw(e){if(!(e.signal in Cw.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(!Bt(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await gn(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function hn(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 yn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return hn(n)}catch{return t}}function Pw(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Ow(e){return e.startsWith("SIG")?e:`SIG${e}`}var fd=y(()=>{"use strict";Mt();nt()});import{existsSync as ia,readFileSync as Aw,statSync as Iw}from"node:fs";import{basename as pd,dirname as Cs,isAbsolute as Lw,join as gd,resolve as bn}from"node:path";function Ts(e,t=process.env){let r=bn(e);if(Jo.map(i=>t[i]).find(Boolean))return Su({startDir:r,env:t,exists:ia});let s=Nw(r),o=Dw(r,s);return o||(s??r)}function Dw(e,t){let r=e;for(;;){if(ia(gd(r,".red")))return r;if(t&&r===t)return null;let n=bn(r,"..");if(n===r)return null;r=n}}function Nw(e){let t=e;for(;;){let r=gd(t,".git");if(ia(r))return Bw(r)?t:$w(r)??t;let n=bn(t,"..");if(n===t)return null;t=n}}function $w(e){let t=Mw(e);if(!t)return null;let r=Cs(t),n=Cs(r);return pd(r)!=="worktrees"||pd(n)!==".git"?null:Cs(n)}function Mw(e){let t;try{t=Aw(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return Lw(n)?bn(n):bn(Cs(e),n)}function Bw(e){try{return Iw(e).isDirectory()}catch{return!1}}var aa=y(()=>{ke()});import{join as Fw}from"node:path";function Hw(e,t=process.env){return Ts(e,t)}function _r(e,t=process.env){return Ru(Hw(e,t))}function hd(e,t=process.env){return Fw(_r(e,t),jw)}var jw,ca=y(()=>{"use strict";ke();aa();jw="spool"});import{randomUUID as Gw}from"node:crypto";import{existsSync as Ww}from"node:fs";import{mkdir as Uw,readdir as Jw,readFile as qw,rename as Vw,rm as ua,writeFile as Kw}from"node:fs/promises";import{dirname as zw,join as bd}from"node:path";function wd(e,t,r=process.env){return bd(_r(e,r),`${t}${Yw}`)}async function kr(e,t){await la(e,`${H(t)}
|
|
49
|
-
`)}async function Ps(e,t,r){t.status=r,await kr(e,t)}async function Os(e,t=process.env){let r=_r(e,t);if(!Ww(r))return[];let n=await Jw(r).catch(()=>[]),s=[];for(let o of n.filter(i=>Xw.some(a=>i.endsWith(a)))){let i=bd(r,o),a=await Qw(i);if(!a){await ua(i,{force:!0});continue}if(!await Zw(a)){await ua(i,{force:!0});continue}s.push(a)}return s}async function Qw(e){let t;try{t=await qw(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=e_(r);return n&&Object.keys(n).length>0?n:null}async function Zw(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 wr(t,r)}function e_(e){try{let t=N(e);if(yd(t))return t}catch{}try{let t=JSON.parse(e);if(yd(t))return t}catch{}return null}async function la(e,t){await Uw(zw(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${Gw()}`;try{await Kw(r,t,"utf8"),await Vw(r,e)}finally{await ua(r,{force:!0})}}function da(e){return{schema:nd,version:1,...e}}function yd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Yw,Xw,_n=y(()=>{"use strict";D();$e();Mt();ca();nt();Yw=".toon",Xw=[".toon",".json"]});function Rr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Fe(e){return Rr(e)?e:{}}function Ft(e){return Array.isArray(e)?e.filter(Rr):[]}function z(e,t){let r=e[t];return typeof r=="string"?r:""}function Sr(e,t){let r=e[t];return typeof r=="number"?r:0}function ma(e){let t=JSON.parse(e);if(!Rr(t))throw new Error("expected JSON object");return t}function As(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var Is=y(()=>{"use strict"});import{spawn as t_}from"node:child_process";import{resolve as r_}from"node:path";async function _d(e,t,r){let n=[];if(e.signalPid){let s=await n_(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await s_(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function n_(e){let t=e.signalPid;if(!await wr(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:kd(r),pid:t,signal:e.signal}}}async function s_(e,t,r){let n=Fe(t.wait),s=Fe(t.verdict);return await o_(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?r_(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 o_(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=m=>{i||(i=!0,o(m))},u=t_(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,br(u,n).then(m=>c({error:`timed out after ${r}ms`,...m.cleaned?{}:{survivors:m.survivors}}))},r);u.once("error",m=>{clearTimeout(l),c({error:kd(m)})}),u.once("close",(m,d)=>{clearTimeout(l),!a&&c(m===0?null:{error:`exited with ${d??m??"unknown"}`,status:m??null,signal:d??null})})})}function kd(e){return e instanceof Error?e.message:String(e)}var Rd=y(()=>{"use strict";Is();nt()});import{resolve as i_}from"node:path";async function Sd(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=a_(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=kn(t,r,o,{status:"pending"},i);await Rn(n.resultFile,a,n.format);let c=await _d(n,a,s),u=kn(t,r,o,c,i);return await Rn(n.resultFile,u,n.format),{result:u,exitCode:Ed(o,c)}}function Ed(e,t){return t.status!=="success"||e.status==="running"?2:sa(e.status)}function a_(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 kn(e,t,r,n,s){return{schema:rd,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:Ed(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function Rn(e,t,r){e&&await la(i_(e),Er(t,r))}function Er(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
|
|
50
|
-
`:`${H(e)}
|
|
51
|
-
`}var xd=y(()=>{"use strict";$e();Mt();_n();Rd()});import{createWriteStream as c_,mkdirSync as u_}from"node:fs";import{readFile as l_,rm as d_}from"node:fs/promises";import{dirname as m_}from"node:path";import{join as vd}from"node:path";function Cd(e,t,r){return{stdout:new Ls(r,vd(e,`${t}.stdout.bin`)),stderr:new Ls(r,vd(e,`${t}.stderr.bin`))}}function f_(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!p_(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function p_(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Ls,Td=y(()=>{"use strict";Ls=class{constructor(t,r){this.limit=t;this.spoolPath=r}head=[];headBytes=0;total=0;spool=null;spoolReady=Promise.resolve();spoolError=null;closed=!1;write(t){if(this.closed)return;this.total+=t.length;let r=this.limit-this.headBytes;if(r>0){let n=t.subarray(0,r);this.head.push(n),this.headBytes+=n.length}if(this.total>this.limit){let n=r>0?t.subarray(r):t;this.openSpool(),n.length>0&&this.appendSpool(n)}}async finish(t,r){this.closed=!0;let n=Buffer.concat(this.head),s=this.total>this.headBytes,o={bytes:this.total,...f_(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 l_(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{u_(m_(this.spoolPath),{recursive:!0}),t=c_(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 d_(this.spoolPath,{force:!0}).catch(()=>{})}}});function Pd(e,t=process.env){return{async mint(r,n){let s=ve(e,t),o=await ft.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 Od=y(()=>{"use strict";Ce();Ze()});import{spawn as g_}from"node:child_process";async function Id(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:K("missing command line")};let a=e.store??Pd(n),c=Cd(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,m=!1,d=async b=>{l||(l=!0,i.removeEventListener("abort",g),await Ps(s,o,b.verdict.status).catch(()=>{}),u(b))},f=g_(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 p=async(b,w)=>{if(l||m)return;m=!0,clearTimeout(h);let E=await br(f,r.terminateGraceMs),v=await Ad(null,null,c,a,t);await d({verdict:{status:b,exitCode:2,summary:w,details:v},cleanupProven:E.cleaned,survivors:E.survivors})},g=()=>void p("indeterminate","command interrupted");i.addEventListener("abort",g,{once:!0});let h=setTimeout(()=>{p("timeout",`command timed out after ${Ld(r.timeoutMs)}`)},r.timeoutMs);f.once("error",b=>{clearTimeout(h),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:b.message}})}),f.once("close",(b,w)=>{if(clearTimeout(h),l||m)return;let E=b===0;Ad(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&&g()})}async function Ds(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:h_(u,c,o.last_poll_at)};let l;try{l=await t()}catch(g){l=K(g instanceof Error?g.message:String(g))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=fa(l),await kr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Ps(s,o,l.status).catch(()=>{}),{verdict:l};let m=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),f=Math.min(m+d,Math.max(0,a-Date.now())),p=e.makeWakeSignal?.();await y_(f,i,p)}return await Ps(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Ld(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:fa(u)}:{attempts:c}}}}async function Ad(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 fa(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function h_(e,t,r){return K("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:fa(e)}:{}})}async function y_(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 Ld(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var Dd=y(()=>{"use strict";Td();Od();Mt();nt();_n()});var Bd={};j(Bd,{readGhConditionalJson:()=>oe});import{spawn as b_}from"node:child_process";import{createHash as w_,randomUUID as __}from"node:crypto";import{mkdir as k_,readFile as R_,rename as S_,writeFile as E_}from"node:fs/promises";import{dirname as x_,join as Nd}from"node:path";async function oe(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=T_(e.path,e.params),s=P_(n),o=await I_(r),i=o.entries[s],a=["api","--include","--method","GET",e.path];for(let[m,d]of $d(e.params))a.push("-f",`${m}=${String(d)}`);i?.etag&&a.push("-H",`If-None-Match: ${i.etag}`);let c=await O_(a,t,e.env,e.signal),u=A_(c.stdout);if(u.statusCode===304&&!!i)return await pa(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 m=u.headers.get("etag");return m&&(o.entries[s]={key:s,request:n,etag:m,body:u.body,updated_at:new Date().toISOString()},await L_(r,o)),await pa(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:m??void 0,quotaFree:!1}}return await pa(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function $d(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function T_(e,t){return JSON.stringify({method:"GET",path:e,params:$d(t)})}function P_(e){return w_("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function O_(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=m=>{o||(o=!0,n?.removeEventListener("abort",c),s(m))},a=b_("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",m=>u.push(Buffer.from(m))),a.stderr.on("data",m=>l.push(Buffer.from(m))),a.once("error",m=>i({status:1,stdout:"",stderr:m.message})),a.once("close",m=>{i({status:m??1,stdout:Buffer.concat(u).toString("utf8"),stderr:Buffer.concat(l).toString("utf8").trim()})})})}function A_(e){let t=e.replace(/\r\n/g,`
|
|
54
|
+
`).find(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function s_(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new v("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=at(e),a=at(t),c=s!=null?` GROUP ${at(s)}`:"",u=o!=null?ha(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function at(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function ha(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new v("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function o_(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function i_(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new v("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${o_(e.priority)}`),e.key!=null&&(t+=` KEY ${ya(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ya(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function a_(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ya(e):JSON.stringify(e)}function ya(e){return`'${String(e).replace(/'/g,"''")}'`}function ga(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var _n,ba=h(()=>{ft();_n=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${at(t)}`})}push(t,r,n={}){let s=i_(n);return this.client.call("query",{sql:`QUEUE PUSH ${at(t)} ${a_(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${at(t)}${ha(r)}`});return ga(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${at(t)}${ha(r)}`});return ga(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${at(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${at(t)}`})}async readWait(t,r,n={}){let s=s_(t,r,n),o=await this.client.call("query",{sql:s});return ga(o)}}});function Bd(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function c_(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new v("INVALID_ARGUMENT","limit must be a positive integer");return e}function Ms(e){return String(e).split(".").map(Fd).join(".")}function Fd(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function u_(e){return jd(JSON.stringify(e))}function l_(e){return JSON.stringify(e)}function d_(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?u_(e):jd(e)}function jd(e){return`'${String(e).replace(/'/g,"''")}'`}var Rn,wa=h(()=>{ft();Rn=class{constructor(t){this.db=t}async insert(t,r){Bd(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${Ms(t)} DOCUMENT VALUES (${l_(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new v("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:n.affected??1,rid:s.rid,item:s}}async get(t,r){let n=await this.db.get(t,r);if(!n.entity)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=c_(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 ${Ms(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Bd(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new v("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new v("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Fd(c)} = ${d_(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Ms(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return a}async delete(t,r){let s=(await this.db.delete(t,r)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${Ms(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function p_(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${gt(r)}.${gt(n)})`}return f_(e)}function m_(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 gt(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function f_(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Hd(e)}function Hd(e){return`'${String(e).replace(/'/g,"''")}'`}var kn,_a=h(()=>{kn=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){m_(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Hd).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${gt(s)} ${gt(t)} = ${p_(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${gt(n)} ${gt(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${gt(n)} ${gt(t)}`})}}});function g_(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 Er(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 h_(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Gd(e)}function Gd(e){return`'${String(e).replace(/'/g,"''")}'`}var Sn,Ra=h(()=>{Sn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){g_(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Gd).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Er(s)}.${Er(t)} = ${h_(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Er(n)}.${Er(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Er(n)}.${Er(t)}`})}}});async function Ud(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(y_)}async function Jd(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${w_(t)}`)).rows??[]).some(n=>n.name===String(t))}function y_(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Wd(e){return String(e).split(".").map(b_).join(".")}function b_(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function w_(e){return`'${String(e).replace(/'/g,"''")}'`}var En,ka=h(()=>{ft();En=class e{constructor(t,r,n=null,s=[],o=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=o}select(...t){let r=t.length===1&&Array.isArray(t[0])?t[0]:t,n=r.length===1&&r[0]==="*"?null:r;return new e(this.db,this.collection,n!=null&&n.length>0?n:null,this.whereClauses,this.params)}where(t,...r){if(typeof t!="string"||t.trim().length===0)throw new v("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let n=r.length===1&&Array.isArray(r[0])?r[0]:r;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...n])}async run(){let t=this.columns==null?"*":this.columns.map(Wd).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Wd(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 js(e,t={}){let r=ua(e);if(A_(r),r.kind==="embedded"){let n=T_(r,t.auth);if(n.token||n.username)throw new v("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=C_(r),o=t.binary??Dd(),i=await Od(o,s),a=new $s(i);return await a.call("version",{}),new Ea(a,{transport:"embedded"})}}function Vd(e){return k_(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:E_(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&v_(e)?{$uuid:e}:e}function k_(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new v("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new v("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new v("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function S_(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Vd):e.map(Vd)}function E_(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 x_(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 v_(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Bs(e){if(Array.isArray(e))return e.map(Bs);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return x_(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]=Bs(s);return r}return e}function C_(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function T_(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 A_(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",__)}function xa(){return new v(qd,`${qd}: nested transactions are not supported on one connection`)}function zd(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function O_(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Kd} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function P_(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new v("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Kd} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new v("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var __,R_,Kd,qd,Fs,Sa,Ea,Yd=h(()=>{Pd();Nd();ft();la();da();fa();ba();wa();_a();Ra();ka();da();fa();ba();wa();_a();Ra();ka();la();__="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",R_="1.0",Kd="1.0.9",qd="NESTED_TX_NOT_SUPPORTED";Fs=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 xa()}},Sa=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw xa();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new v("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new Fs(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){zd(r,n)}throw r}}},Ea=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=R_,this.cache=new wn(t,this.transport),this.queue=new _n(t),this.queues=this.queue,this.documents=new Rn(this);let n=new Sr(t);this.kv=Object.assign((s="kv_default")=>new Sr(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 kn(t,s),this.vault=(s="red.vault")=>new Sn(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new v("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=S_(r);return n==null?this.client.call("query",{sql:t}).then(Bs):this.client.call("query",{sql:t,params:n}).then(Bs)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return O_(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 P_(n,r.length)}tx(){return new Sa(this)}async transaction(t){if(this.inTransaction)throw xa();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 Fs(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){zd(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Jd(this,t)}list(){return Ud(this)}from(t){return new En(this,t)}get(t,r){return this.client.call("get",{collection:t,id:String(r)})}delete(t,r){return this.client.call("delete",{collection:t,id:String(r)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,r){return this.client.call("auth.login",{username:t,password:r})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,r){return this.client.call("auth.change_password",{current_password:t,new_password:r})}createApiKey({username:t,role:r}={}){return this.client.call("auth.create_api_key",{username:t,role:r})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});import{createHash as I_}from"node:crypto";import{existsSync as Xd}from"node:fs";import{mkdir as L_,readFile as D_,rename as va,rm as xn,stat as Ca}from"node:fs/promises";import{basename as N_,dirname as $_}from"node:path";async function Qd(e){await(await Gt.open({...e,allowResidentOpen:!0})).close()}var Gt,Zd=h(()=>{"use strict";Yd();xs();Ns();Gt=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=Ad(t.uri),n=await Cd(r),s=new e(n,{uri:t.uri,ttlDays:Os(t.ttlDays,Ee),ephemeralTtlHours:Os(t.ephemeralTtlHours,xe),byteBudget:Os(t.byteBudget,ve),now:t.now??(()=>new Date)});return Td(n)?(await Ds(),await L_($_(n),{recursive:!0}),s.db=await js(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await vd(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=gn(n,r),a=mt(i),c=it(r.command),u=c==="derivable"?ta(n,r.command):null,l=c==="re-executable"?ra(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=ea(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=Ft(n),f=p==="ephemeral"?oa(n,m,o):null,_=na(n,u,l,f);f&&!this.document.blobs[f.key]&&(this.document.blobs[f.key]=f,this.dirty=!0);let g={collection:J,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};return delete this.document.tombstones[jt(i)],this.document.records[a]=g,this.upsertIndex({handle:i,key:a,bytes:_,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:f?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!yn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[mt(t)];if(!bn(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:mt(n.handle),bytes:sa(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:hn(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:J,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:hn(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:Ht(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Qi(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),Zi(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=Ht(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=Ht(s)}s.length<n.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,r){delete this.document.records[t.key],this.document.tombstones[jt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[jt(t)];return Is(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return wd(t.derivation_recipe);if(t.reexecution_recipe)return _d(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return Ps(r)?bd(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 kr(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Ca(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)}
|
|
55
|
+
`,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await kr(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(J)}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===J);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${J}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${J}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${J}`),await this.db.query(`CREATE KV IF NOT EXISTS ${J}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=gn(n,r),a=mt(i),c=it(r.command),u=c==="derivable"?ta(n,r.command):null,l=c==="re-executable"?ra(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=ea(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=Ft(n),f=p==="ephemeral"?oa(n,m,o):null,_=na(n,u,l,f);f&&!Ps(await this.kvGet(f.key))&&await this.kv().put(f.key,f);let g={collection:J,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};await this.kv().delete(jt(i)),await this.kv().put(a,g);let b=(await this.readRedDbIndex()).records.filter(w=>w.handle!==i);return b.push({handle:i,key:a,bytes:_,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:f?.key}),await this.pruneRedDb({version:1,records:b},!0),await this.assertRedDbMintPersisted(i,_),i}async getRedDb(t){if(!yn(t))return null;let r=await this.kvGet(jt(t));if(Is(r))return r;let n=await this.kvGet(mt(t));if(!bn(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:mt(n.handle),bytes:sa(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:hn(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:J,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:hn(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Ht(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:Qi(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return Zi(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=kd(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Sd(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 Ed(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await D_(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=N_(s),c=I_("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=>xd(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(`
|
|
56
|
+
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Ts());return ia(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Ts(),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=Ht(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=Ht(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 Ca(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 xn(o,{force:!0}),await xn(i,{force:!0});let a=await js(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${hd(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 Ca(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await xn(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await va(this.path,i),await va(o,this.path),await xn(i,{force:!0})}catch(u){throw!Xd(this.path)&&Xd(i)&&await va(i,this.path),await xn(o,{force:!0}),u}finally{this.db=await js(`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===J){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:Ts(),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:J,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(jt(t.handle),{status:"expired",expired_at:r,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let r=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),n=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of n.items)s.key.startsWith("blob:")&&!r.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,r){let n=await this.kvGet(mt(t));if(!bn(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 ep={};j(ep,{DEFAULT_RSP_BYTE_BUDGET:()=>ve,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>xe,DEFAULT_RSP_TTL_DAYS:()=>Ee,RSP_ELISION_COLLECTION:()=>J,RspElisionStore:()=>Gt,contentHandle:()=>gn,ensureReddbBinaryFromWarmCache:()=>Ds,provisionElisionStore:()=>Qd,storageClassForCommand:()=>it});var Hs=h(()=>{"use strict";xs();Ns();Ns();Zd()});async function Gs(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await np(e,s),i=(await vn(e,K)).filter(S=>vr(S)>=s),a=o.filter(S=>A(S.event_type)!=="show"&&A(S.degradation_reason)===""),c=o.filter(S=>A(S.event_type)==="show"),u=o.filter(S=>A(S.degradation_reason)!==""),l=0,p=0,d=0,m=0,f=!1,_=new Map,g=new Map,y=[],b=0,w=0,x=0;for(let S of a){S.elided===!0&&l++;let I=pe(S.raw_bytes),qe=pe(S.emitted_bytes),xt=Math.max(0,I-qe),Qt=Cr(S,"raw"),R=Cr(S,"emitted"),T=Math.max(0,Qt.tokens-R.tokens);f||=(S.estimated===!0||Qt.estimated||R.estimated)&&T>0,p+=I,d+=qe,m+=T;let vt=Wt(S).slice(0,10);vt&&_.set(vt,(_.get(vt)??0)+T);let Ct=A(S.command)||"unknown",ye=g.get(Ct)??{command:Ct,invocations:0,bytes_saved:0,tokens_saved:0};ye.invocations++,ye.bytes_saved+=xt,ye.tokens_saved+=T,g.set(Ct,ye);let be=dt(S.wrapper_ms);be!=null&&y.push(be),b+=pe(S.store_open_count);let Zt=dt(S.store_elapsed_ms);Zt!=null&&(w+=Zt,x++)}let O=new Map,F=new Map,he=[],Pe=null;for(let S of u){let I=A(S.degradation_reason)||A(S.reason)||"unknown",qe=A(S.wrapper_family)||me(A(S.command));O.set(I,(O.get(I)??0)+1),F.set(qe,(F.get(qe)??0)+1);let xt=Wt(S);he.push({timestamp:xt,family:qe,command:A(S.command)||"unknown",reason:I,exit_code:dt(S.wrapper_exit_code),stderr_head:A(S.stderr_head)||null}),(!Pe||xt>Pe.timestamp)&&(Pe={timestamp:xt,reason:I,command:A(S.command)||"unknown"})}let te=a.length+u.length,ct=c.filter(S=>S.hit===!0).length,re=ai(m,f),Br=M_(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:m,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:[..._.entries()].sort(([S],[I])=>S.localeCompare(I)).map(([S,I])=>({date:S,tokens_saved:I})),top_commands:[...g.values()].sort((S,I)=>I.bytes_saved-S.bytes_saved||I.tokens_saved-S.tokens_saved||S.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:te===0?0:u.length/te,show_total:c.length,show_hits:ct,show_misses:Math.max(0,c.length-ct),show_hit_rate:c.length===0?0:z(ct/c.length),by_reason:[...O.entries()].sort((S,I)=>I[1]-S[1]||S[0].localeCompare(I[0])).map(([S,I])=>({reason:S,count:I})),by_family:[...F.entries()].sort((S,I)=>I[1]-S[1]||S[0].localeCompare(I[0])).map(([S,I])=>({family:S,count:I})),recent_failures:he.sort((S,I)=>I.timestamp.localeCompare(S.timestamp)).slice(0,20),most_recent:Pe},latency:{wrapper_ms_p50:xr(y,.5),wrapper_ms_p95:xr(y,.95),store_open_count_sum:b,store_elapsed_ms_sum:z(w),store_elapsed_ms_avg:x===0?null:z(w/x)},decisions:Br}}function M_(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=A(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,pe(a.saved_units))),c!=="contributed"){let p=A(a.reason)||"unknown";o.set(p,(o.get(p)??0)+1)}let u=A(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:z(t/e.length),top_pass_reasons:[...o.entries()].sort((a,c)=>c[1]-a[1]||a[0].localeCompare(c[0])).map(([a,c])=>({reason:a,count:c})),by_command_family:[...i.entries()].sort((a,c)=>{let u=a[1].contributed+a[1].passed+a[1].failed_open;return c[1].contributed+c[1].passed+c[1].failed_open-u||a[0].localeCompare(c[0])}).map(([a,c])=>{let u=c.contributed+c.passed+c.failed_open;return{command_family:a,contributed:c.contributed,passed:c.passed,failed_open:c.failed_open,contribution_rate:u===0?0:z(c.contributed/u)}})}}async function Ta(e,t,r=new Date){let s=(await vn(e,se)).filter(o=>vr(o)<=r.getTime()||Wt(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=Wt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:q_(s)}}async function Aa(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 np(e,i),c=a.filter(R=>A(R.event_type)!=="show"&&A(R.event_type)!=="control_holdout"&&R.control_holdout!==!0&&A(R.degradation_reason)===""),u=a.filter(R=>A(R.event_type)==="control_holdout"||R.control_holdout===!0),l=a.filter(R=>A(R.event_type)==="show"),p=a.filter(R=>A(R.degradation_reason)!==""),d=[...c,...p].map(vr).filter(R=>Number.isFinite(R)&&R>0),m=d.length===0?null:Math.min(...d),f=m==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-m)/tR()))),_=[],g=new Map,y=new Map,b=new Map,w=new Map,x=new Map,O=new Map,F=0,he=!1,Pe=0,te=null,ct=0,re=0;for(let R of c){let T=Wt(R),vt=T.slice(0,10),Ct=T.slice(0,16),ye=me(A(R.command)),be=Math.max(0,Cr(R,"raw").tokens-Cr(R,"emitted").tokens);F+=be,he||=R.estimated===!0&&be>0;let Zt=Math.max(0,pe(R.raw_bytes)-pe(R.emitted_bytes)),$o=dt(R.wrapper_ms);if($o!=null){_.push($o);let nu=g.get(ye)??[];nu.push($o),g.set(ye,nu)}vt&&y.set(vt,(y.get(vt)??0)+1),Ct&&b.set(Ct,(b.get(Ct)??0)+1);let Mo=Y_(T);Mo&&w.set(Mo,(w.get(Mo)??0)+1);let Bo=Z_(T);Bo&&x.set(Bo,(x.get(Bo)??0)+be);let qn=O.get(ye)??{command_family:ye,invocations:0,tokens_saved:0,bytes_saved:0};qn.invocations++,qn.tokens_saved+=be,qn.bytes_saved+=Zt,O.set(ye,qn),R.elided===!0&&Pe++,(R.store_open_count!=null||R.store_elapsed_ms!=null)&&(ct++,pe(R.store_open_count)>0&&re++),be>0&&(!te||be>te.tokens_saved||be===te.tokens_saved&&Zt>te.bytes_saved)&&(te={timestamp:T,command_family:ye,tokens_saved:be,bytes_saved:Zt})}let Br=p.map(R=>({timestamp:Wt(R),command_family:me(A(R.command)),reason:A(R.degradation_reason)||A(R.reason)||"unknown"})).sort((R,T)=>R.timestamp.localeCompare(T.timestamp)),S=new Map;for(let R of Br)S.set(R.reason,(S.get(R.reason)??0)+1);let I=H_(Br),qe=j_(l),xt=W_([...O.values()],qe,I),Qt=[...b.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:f,since:o,until:s,label:`window: ${n}d, data: ${f}d`,empty:c.length===0&&p.length===0,invocations:c.length,degradations:p.length},latency:{global:rp(_),by_command_family:[...g.entries()].sort((R,T)=>T[1].length-R[1].length||R[0].localeCompare(T[0])).map(([R,T])=>({command_family:R,count:T.length,...rp(T)}))},throughput:{requests_per_day:[...y.entries()].sort(([R],[T])=>R.localeCompare(T)).map(([R,T])=>({date:R,requests:T})),active_minute_avg:b.size===0?null:z([...b.values()].reduce((R,T)=>R+T,0)/b.size),peak_minute:Qt?{minute:Qt[0],requests:Qt[1]}:null,hour_weekday_heatmap:X_(w)},savings:{tokens:ai(F,he),measured_control_holdout:B_(c,u),weekly_tokens_saved:eR(x),elision_rate:c.length===0?0:z(Pe/c.length),top_commands_by_tokens_saved:[...O.values()].sort((R,T)=>T.tokens_saved-R.tokens_saved||T.bytes_saved-R.bytes_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((R,T)=>T.invocations-R.invocations||T.tokens_saved-R.tokens_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:te},health:{degradation_timeline:Br,degradations_by_reason:[...S.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0])).map(([R,T])=>({reason:R,count:T})),cold_boots:ct===0?null:re,warm_hits:ct===0?null:Math.max(0,ct-re)},mining:{recovery_usage_by_family:qe,degradation_clusters:I,threshold_tuning_suggestions:xt}}}async function np(e,t){let r=(await vn(e,se)).filter(i=>vr(i)>=t),n=r.some(i=>A(i.event_type)!=="show"||A(i.degradation_reason)!==""),s=(await vn(e,de)).filter(i=>vr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:A(i.event_type)||"invocation"})),o=(await vn(e,Fe)).filter(i=>vr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:A(i.reason)||"unknown"}));return[...r,...s,...o]}function Cr(e,t){let r=dt(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 B_(e,t){let r=J_(t.map(a=>dt(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(tp).filter(a=>a!=null),s=t.map(tp).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:z(U_(o));return{enabled:!0,holdout_share:z(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:F_(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function tp(e){let t=Cr(e,"raw").tokens;if(t<=0)return null;let r=Cr(e,"emitted").tokens;return Math.max(0,t-r)/t}function F_(e,t){if(e.length<=1)return{low:z(Math.max(0,t)),high:z(Math.min(1,t))};let r=e.reduce((s,o)=>s+(o-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:z(Math.max(0,t-n)),high:z(Math.min(1,t+n))}}function j_(e){let t=new Map;for(let r of e){let n=me(A(r.recovered_command)||A(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:z(r.show_hits/r.show_total)}))}function H_(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:G_(r)}))}function G_(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 W_(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 U_(e){return e.reduce((t,r)=>t+r,0)/e.length}function J_(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function q_(e){let t=K_();for(let r of e){if(A(r.event_type)==="show"||A(r.degradation_reason)!==""||r.elided!==!0)continue;let n=V_(r.storage_class)??it(A(r.command));t[n].records+=1;let s=pe(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function V_(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function K_(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}async function vn(e,t){return(await e.kv(t).list({limit:1e4}).catch(n=>{if(n instanceof Error&&/\bnot found\b/i.test(n.message))return{items:[]};throw n})).items.map(n=>z_(n.value)).filter(n=>br(n))}function z_(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function vr(e){let t=Date.parse(Wt(e));return Number.isFinite(t)?t:0}function Wt(e){return A(e.created_at)||A(e.ts)||""}function A(e){return typeof e=="string"?e:""}function xr(e,t){if(e.length===0)return null;let r=[...e].sort((s,o)=>s-o),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return z(r[n])}function rp(e){return{wrapper_ms_p50:xr(e,.5),wrapper_ms_p90:xr(e,.9),wrapper_ms_p95:xr(e,.95),wrapper_ms_p99:xr(e,.99)}}function z(e){return Math.round(e*100)/100}function Y_(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Q_(t.getUTCDay())}:${t.getUTCHours()}`:null}function X_(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 Q_(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Z_(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 eR(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:z((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function tR(){return 24*60*60*1e3}var sp=h(()=>{"use strict";dn();Hs();ci();_s();Gi()});var Ws={};j(Ws,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>se,RSP_DECISIONS_COLLECTION:()=>K,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Fe,RSP_TELEMETRY_INDEX_COLLECTION:()=>an,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>de,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>ji,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Hi,RSP_TELEMETRY_SPOOL_FILE:()=>Fi,appendTelemetryEvent:()=>ot,appendTelemetryEventSync:()=>pt,drainTelemetrySpool:()=>Ki,parseTelemetryEvent:()=>_r,readAccountingLaneStats:()=>Ta,readTelemetryGainsReport:()=>Aa,readTelemetryStats:()=>Gs,takeTelemetrySpool:()=>rw,telemetryLegacySpoolPath:()=>Ss,telemetrySpoolCorrectionsPath:()=>Vi,telemetrySpoolPath:()=>st});var je=h(()=>{"use strict";_s();fd();sp()});var cp={};j(cp,{readGhConditionalJson:()=>oe});import{spawn as rR}from"node:child_process";import{createHash as nR,randomUUID as sR}from"node:crypto";import{mkdir as oR,readFile as iR,rename as aR,writeFile as cR}from"node:fs/promises";import{dirname as uR,join as op}from"node:path";async function oe(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=pR(e.path,e.params),s=mR(n),o=await hR(r),i=o.entries[s],a=["api","--include","--method","GET",e.path];for(let[p,d]of ip(e.params))a.push("-f",`${p}=${String(d)}`);i?.etag&&a.push("-H",`If-None-Match: ${i.etag}`);let c=await fR(a,t,e.env,e.signal),u=gR(c.stdout);if(u.statusCode===304&&!!i)return await Oa(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 yR(r,o)),await Oa(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 Oa(r,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function ip(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function pR(e,t){return JSON.stringify({method:"GET",path:e,params:ip(t)})}function mR(e){return nR("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function fR(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=rR("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 gR(e){let t=e.replace(/\r\n/g,`
|
|
52
57
|
`),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
58
|
|
|
54
59
|
`,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
|
|
56
|
-
`,{encoding:"utf8",mode:384}),await
|
|
57
|
-
`),stdout:JSON.stringify({number:
|
|
58
|
-
`)}var ha=y(()=>{"use strict"});var qd=y(()=>{"use strict";D()});var Vd=y(()=>{"use strict"});function V_(e){return Object.keys(e)}function xr(e){return{...e,fields:V_(e.fields)}}var Kd,zd,Yd,K_,z_,Y_,Xd,ya=y(()=>{"use strict";Kd="red.castle.lane.v1",zd="red.castle.state.v1",Yd="red.castle.history.v1",K_="red.castle.validation.v2",z_="red.castle.envelope.v1",Y_="red.castle.hitl-card.v1",Xd=[xr({schemaId:Kd,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}}),xr({schemaId:zd,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}}),xr({schemaId:Yd,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}}),xr({schemaId:K_,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}}),xr({schemaId:z_,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}}),xr({schemaId:Y_,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 pA,$s=y(()=>{"use strict";D();ya();pA=new Map(Xd.map(e=>[e.schemaId,new Set(e.fields)]))});var Qd=y(()=>{"use strict";Vd();$s()});var Zd=y(()=>{"use strict"});var Ms=y(()=>{"use strict"});var ba=y(()=>{"use strict";Ms()});var Bs=y(()=>{"use strict"});import{appendFile as Z_,mkdir as ek,readFile as tk}from"node:fs/promises";import{dirname as rk,join as nk}from"node:path";function wa(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function em(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:wa(t.at,"at"),singleton:wa(t.singleton,"singleton"),kind:wa(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function sk(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function ok(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function ik(e){return nk(e.castleStateRoot,"singleton-events.toonl")}function _a(e,t={}){let r=t.fs??{appendFile:Z_,mkdir:ek,readFile:tk},n=t.clock??(()=>new Date().toISOString()),s=ik(e);return{path:s,async append(o){let i=em({at:o.at??n(),...o});return await r.mkdir(rk(s),{recursive:!0}),await r.appendFile(s,at().push(sk(i)),"utf8"),i},async read(o={}){ok(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=it(i).map(em);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var ka=y(()=>{"use strict";D()});var Fs=y(()=>{"use strict";D();Bs();ka()});var tm=y(()=>{"use strict";Ms();ba();Fs()});var rm=y(()=>{"use strict"});var QA,nm=y(()=>{"use strict";D();QA=24*60*60*1e3});var sm=y(()=>{"use strict";$s()});var rI,nI,om=y(()=>{"use strict";rI=15*6e4,nI=30*6e4});var im=y(()=>{"use strict"});var ck,uk,iI,aI,am=y(()=>{"use strict";ck=["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"],uk={pre_worktree:["cargo","gradle"]},iI=Object.values(uk).flat(),aI=new Set(ck)});var cm=y(()=>{"use strict"});var um=y(()=>{"use strict";Fs()});var lm=y(()=>{"use strict"});var dm=y(()=>{"use strict"});var mm=y(()=>{"use strict";D()});var Ra=y(()=>{"use strict"});var fm=y(()=>{"use strict";D();Ra()});var pm=y(()=>{"use strict";D()});var Sa=y(()=>{"use strict"});var Ea=y(()=>{"use strict"});import{resolve as J}from"node:path";function gm(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 hm=y(()=>{"use strict"});var ym=y(()=>{"use strict";Bs()});var bm=y(()=>{"use strict"});var wm=y(()=>{"use strict";Sa();Ea()});import{mkdir as lk,readFile as dk,rename as mk,rm as fk,writeFile as pk}from"node:fs/promises";import{dirname as gk,join as hk}from"node:path";function bk(e){if(!yk.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function wk(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function _k(e){return e.code==="ENOENT"}function kk(e){return e.code==="EEXIST"}function Rk(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 xa(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function js(e,t){return bk(t),hk(e.castleStateRoot,"singletons",t,"lease.toon")}function _m(e,t={}){let r=t.fs??{mkdir:lk,readFile:dk,rename:mk,rm:fk,writeFile:pk},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??wk;async function o(a){try{return Rk(N(await r.readFile(a,"utf8")))}catch(c){if(_k(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(js(e,a))},async acquire(a,c){let u=js(e,a);await r.mkdir(gk(u),{recursive:!0});let l=!1;for(;;){let m=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:m,renewed_at:m};try{return await r.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(p){if(!kk(p))throw p}let f=await o(u);if(f){if(xa(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=js(e,a),l=await o(u);if(!l||!xa(l,c))throw new Hs(a);let m={...l,renewed_at:n()};return await i(u,m),m},async release(a,c){let u=js(e,a),l=await o(u);if(!l)return!1;if(!xa(l,c))throw new Hs(a);return await r.rm(u,{force:!0}),!0}}}var Hs,yk,km=y(()=>{"use strict";D();Hs=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},yk=/^[a-z0-9][a-z0-9._-]{0,63}$/});var va=y(()=>{"use strict"});var Rm=y(()=>{"use strict"});var Sk,Ek,xk,JI,Sm=y(()=>{"use strict";Sk={refreshCadenceS:270,tolerance:3},Ek=270,xk=2700,JI={...Sk,claimGraceS:Ek,recentCommitProtectionS:xk}});var Em=y(()=>{"use strict"});import{execFile as Pk}from"node:child_process";import{promisify as Ok}from"node:util";var YI,xm=y(()=>{"use strict";va();YI=Ok(Pk)});var vm=y(()=>{"use strict";qd();Qd();Zd();Ms();tm();rm();nm();sm();$s();om();im();am();cm();ba();um();lm();dm();mm();Fs();fm();pm();ya();Sa();Ea();hm();ym();bm();wm();Bs();Ra();ka();km();va();Rm();Sm();Em();xm()});import{EventEmitter as Ak}from"node:events";import{spawn as Ik}from"node:child_process";function Ws(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 Us(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var xn,Ca,Lk,Dk,Nk,$k,Gs,Ta=y(()=>{xn="github-webhook",Ca="github.webhook.delivery";Lk="pull_request,pull_request_review,check_run,check_suite,workflow_run",Dk=3,Nk=1e3,$k=/no extension matched|unknown command|command not found/i,Gs=class extends Ak{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,Nk).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Ws(c,n):Us(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=Ik(r,["webhook","forward",`--events=${Lk}`],{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")
|
|
60
|
-
`),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function
|
|
60
|
+
`)){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 hR(e){for(let t of[ap(e),bR(e)])try{let r=wR(await iR(t,"utf8"));if(_R(r))return r}catch{}return{version:1,entries:{}}}async function yR(e,t){let r=ap(e);await oR(uR(r),{recursive:!0});let n=`${r}.${process.pid}.${Date.now()}.tmp`;await cR(n,`${C(t)}
|
|
61
|
+
`,{encoding:"utf8",mode:384}),await aR(n,r)}function ap(e){return op(X(e),lR)}function bR(e){return op(X(e),dR)}function wR(e){try{return JSON.parse(e)}catch{return N(e)}}async function Oa(e,t,r){await ot(e,{collection:K,id:sR(),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 _R(e){return Pa(e)&&e.version===1&&Pa(e.entries)&&Object.values(e.entries).every(RR)}function RR(e){return Pa(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Pa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var lR,dR,Us=h(()=>{"use strict";ke();L();je();lR="gh-etag-cache.toon",dR="gh-etag-cache.json"});import{spawn as kR}from"node:child_process";async function Cn(e,t){return await SR(t,async r=>{let n=await xR(e,t.cwd,r);return n||await ER(e,t.cwd,r)})}async function SR(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 ER(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=kR("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&as(l).then(p=>is(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 xR(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await vR(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:gr(s,"database_id")||gr(s,"id"),status:V(s,"status").toUpperCase(),conclusion:V(s,"conclusion").toUpperCase(),workflowName:V(s,"workflow_name")||V(s,"name"),headBranch:V(s,"head_branch"),url:V(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=ps(e,"--branch"),s=ps(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=Mt(Be(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:gr(a,"database_id")||gr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=ps(e,"--limit")??"20",s=await 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=Mt(JSON.parse(s.stdout)).map(i=>({tagName:V(i,"tag_name"),publishedAt:V(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function vR(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=V(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?Mt(Be(JSON.parse(i.stdout)).statuses):[],u=a.status===0?Mt(Be(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
|
|
62
|
+
`),stdout:JSON.stringify({number:gr(s,"number"),state:V(s,"state").toUpperCase(),mergeable:CR(s),statusCheckRollup:[...c.map(l=>({conclusion:V(l,"state").toUpperCase()})),...u.map(l=>({status:V(l,"status").toUpperCase(),conclusion:V(l,"conclusion").toUpperCase()}))],url:V(s,"html_url")})}}function CR(e){let t=V(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var up=h(()=>{"use strict";Us();ms();tt()});function dp(e,t,r){let n=Date.now();return()=>TR(e,t,r,n)}async function TR(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return q("missing PR number");let s=await Cn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return q(s.stderr||"gh pr view failed");let o=$i(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(AR),u=c.filter(p=>p==="failure").length,l=c.filter(p=>p==="pending").length;if(String(o.state)!=="OPEN")return et("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return et("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return et("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return ur(`PR #${e} has ${l} pending checks`);if(i.length===0){let p=Date.now()-n;return a==="UNKNOWN"||p<r.emptyChecksGraceMs?ur(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:p}):et("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?ur(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):et("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function pp(e,t){if(!e)return q("missing run id");let r=await Cn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return q(r.stderr||"gh run view failed");let n=$i(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?ur(`run ${e} is ${s||"pending"}`):o==="success"?et("success",`run ${e} succeeded`,lp(n)):et("failure",`run ${e} concluded ${o||"unknown"}`,lp(n))}async function mp(e,t){let r=await Cn(["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 fr(s)&&s.databaseId!=null?String(s.databaseId):""}async function fp(e,t,r){let n=await Cn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return q(n.stderr||"gh release list failed");let o=Mt(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||OR(e,a))&&c>=t});return o?et("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):ur("no matching release is published yet")}function AR(e){let t=fr(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 lp(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 OR(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var gp=h(()=>{"use strict";Nt();up();ms()});function Tn(){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(`
|
|
63
|
+
`)}var Ia=h(()=>{"use strict"});var hp=h(()=>{"use strict";L()});var yp=h(()=>{"use strict"});function PR(e){return Object.keys(e)}function Ut(e){return{...e,fields:PR(e.fields)}}var bp,wp,_p,La,IR,LR,DR,Js,qs=h(()=>{"use strict";bp="red.castle.lane.v1",wp="red.castle.state.v1",_p="red.castle.history.v1",La="red.castle.attempt.v1",IR="red.castle.validation.v2",LR="red.castle.envelope.v1",DR="red.castle.hitl-card.v1",Js=[Ut({schemaId:bp,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}}),Ut({schemaId:wp,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}}),Ut({schemaId:_p,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}}),Ut({schemaId:La,docPath:".red/contracts/red.castle.attempt.v1.md",typeNames:["CastleAttemptEntry","CastleAttemptRecord","CastleAttemptEvent","CastleAttemptWriter","CastleAttemptClaim","CastleAttemptRouting","CastleAttemptGateVerdict","CastleAttemptLandingStep","CastleAttemptOutcome","CastleAttemptOutcomeKind","CastleAttemptResources","CastleAttemptArtifact"],fields:{schema:!0,attempt_id:!0,worker_id:!0,issue:!0,try:!0,at:!0,event:!0,writer:!0,claim:!0,routing:!0,branch:!0,commit:!0,pr:!0,gate:!0,landing:!0,outcome:!0,resources:!0,artifact:!0,note:!0,payload:!0}}),Ut({schemaId:IR,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}}),Ut({schemaId:LR,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}}),Ut({schemaId:DR,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 dI,Vs=h(()=>{"use strict";L();qs();dI=new Map(Js.map(e=>[e.schemaId,new Set(e.fields)]))});var Rp=h(()=>{"use strict";yp();Vs()});var kp=h(()=>{"use strict"});var SI,Sp=h(()=>{"use strict";L();qs();SI=new Set(Js.find(e=>e.schemaId===La).fields)});var MR,BR,FR,xI,Ep=h(()=>{"use strict";MR=["worktree","workspace","node_modules","checkout","build-cache","sandbox"],BR=["log","diagnostic","envelope","transcript","patch","handoff","report"],FR=["branch","pr","commit","tag","issue"],xI=new Map([...MR.map(e=>[e,"workspace"]),...BR.map(e=>[e,"evidence"]),...FR.map(e=>[e,"pointer"])])});var Ks=h(()=>{"use strict"});var Da=h(()=>{"use strict";Ks()});var zs=h(()=>{"use strict"});import{appendFile as jR,mkdir as HR,readFile as GR}from"node:fs/promises";import{dirname as WR,join as UR}from"node:path";function Na(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function xp(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:Na(t.at,"at"),singleton:Na(t.singleton,"singleton"),kind:Na(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function JR(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function qR(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function VR(e){return UR(e.castleStateRoot,"singleton-events.toonl")}function $a(e,t={}){let r=t.fs??{appendFile:jR,mkdir:HR,readFile:GR},n=t.clock??(()=>new Date().toISOString()),s=VR(e);return{path:s,async append(o){let i=xp({at:o.at??n(),...o});return await r.mkdir(WR(s),{recursive:!0}),await r.appendFile(s,ze().push(JR(i)),"utf8"),i},async read(o={}){qR(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Ke(i).map(xp);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var Ma=h(()=>{"use strict";L()});var Ys=h(()=>{"use strict";L();zs();Ma()});var vp=h(()=>{"use strict";Ks();Da();Ys()});var Cp=h(()=>{"use strict"});var tL,Tp=h(()=>{"use strict";L();tL=24*60*60*1e3});var Ap=h(()=>{"use strict";Vs()});var oL,iL,Op=h(()=>{"use strict";oL=15*6e4,iL=30*6e4});var Pp=h(()=>{"use strict"});var zR,YR,uL,lL,Ip=h(()=>{"use strict";zR=["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"],YR={pre_worktree:["cargo","gradle"]},uL=Object.values(YR).flat(),lL=new Set(zR)});var Lp=h(()=>{"use strict"});var Dp=h(()=>{"use strict";Ys()});var Np=h(()=>{"use strict"});var $p=h(()=>{"use strict"});var Mp=h(()=>{"use strict";L()});var Ba=h(()=>{"use strict"});var Bp=h(()=>{"use strict";L();Ba()});var Fp=h(()=>{"use strict";L()});var Fa=h(()=>{"use strict"});var ja=h(()=>{"use strict"});import{resolve as W}from"node:path";function jp(e){let t=W(e),r=W(t,"state"),n=W(r,"castle"),s=W(t,"tmp"),o=W(s,"supervisors"),i=W(s,"workers"),a=W(s,"monitors"),c=W(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:W(n,"history.toonl"),castleAttempts:W(n,"attempts.toonl"),castleValidation:W(n,"validation.toonl"),castleFleets:W(n,"fleets.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>W(o,u),fleet:u=>W(o,u),workersRoot:i,worker:u=>W(i,u),workerSteerFile:u=>W(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>W(a,u),worktreesRoot:c,worktreeLane:u=>W(c,u)}}var Hp=h(()=>{"use strict"});var Gp=h(()=>{"use strict";zs()});var Wp=h(()=>{"use strict"});var Up=h(()=>{"use strict";Fa();ja()});import{mkdir as XR,readFile as QR,rename as ZR,rm as ek,writeFile as tk}from"node:fs/promises";import{dirname as rk,join as nk}from"node:path";function ok(e){if(!sk.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function ik(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function ak(e){return e.code==="ENOENT"}function ck(e){return e.code==="EEXIST"}function uk(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 Ha(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Xs(e,t){return ok(t),nk(e.castleStateRoot,"singletons",t,"lease.toon")}function Jp(e,t={}){let r=t.fs??{mkdir:XR,readFile:QR,rename:ZR,rm:ek,writeFile:tk},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??ik;async function o(a){try{return uk(N(await r.readFile(a,"utf8")))}catch(c){if(ak(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(Xs(e,a))},async acquire(a,c){let u=Xs(e,a);await r.mkdir(rk(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,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(f){if(!ck(f))throw f}let m=await o(u);if(m){if(Ha(m,c))return{acquired:!0,reaped:l,lease:m};if(await s(m.pid))return{acquired:!1,lease:m};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Xs(e,a),l=await o(u);if(!l||!Ha(l,c))throw new Qs(a);let p={...l,renewed_at:n()};return await i(u,p),p},async release(a,c){let u=Xs(e,a),l=await o(u);if(!l)return!1;if(!Ha(l,c))throw new Qs(a);return await r.rm(u,{force:!0}),!0}}}var Qs,sk,qp=h(()=>{"use strict";L();Qs=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},sk=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Ga=h(()=>{"use strict"});var Vp=h(()=>{"use strict"});var lk,dk,pk,KL,Kp=h(()=>{"use strict";lk={refreshCadenceS:270,tolerance:3},dk=270,pk=2700,KL={...lk,claimGraceS:dk,recentCommitProtectionS:pk}});var zp=h(()=>{"use strict"});import{execFile as hk}from"node:child_process";import{promisify as yk}from"node:util";var ZL,Yp=h(()=>{"use strict";Ga();ZL=yk(hk)});var Xp=h(()=>{"use strict";hp();Rp();kp();Sp();Ep();Ks();vp();Cp();Tp();Ap();Vs();Op();Pp();Ip();Lp();Da();Dp();Np();$p();Mp();Ys();Bp();Fp();qs();Fa();ja();Hp();Gp();Wp();Up();zs();Ba();Ma();qp();Ga();Vp();Kp();zp();Yp()});import{EventEmitter as bk}from"node:events";import{spawn as wk}from"node:child_process";function eo(e,t){let r=Number(t);return!Number.isSafeInteger(r)||r<=0?!1:!!(e.pull_request?.number===r||e.check_run?.pull_requests?.some(n=>n.number===r)||e.check_suite?.pull_requests?.some(n=>n.number===r))}function to(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var An,Wa,_k,Rk,kk,Sk,Zs,Ua=h(()=>{An="github-webhook",Wa="github.webhook.delivery";_k="pull_request,pull_request_review,check_run,check_suite,workflow_run",Rk=3,kk=1e3,Sk=/no extension matched|unknown command|command not found/i,Zs=class extends bk{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,kk).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?eo(c,n):to(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=wk(r,["webhook","forward",`--events=${_k}`],{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(`
|
|
64
|
+
`))>=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");Sk.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>=Rk)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var ro,Qp=h(()=>{"use strict";Ua();Ua();tt();ro=class extends Zs{constructor(t){super(t,lr)}}});import{EventEmitter as Ek}from"node:events";import{join as xk}from"node:path";function qa(e){let t=us(e.cwd),r=jp(xk(t,".red"));return new Ja({...e,leases:e.leases??Jp(r),lane:e.lane??$a(r),makeForwarder:e.makeForwarder??((n,s)=>new ro({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>dr(n.pid,n.start_time))})}var Ja,Zp=h(()=>{"use strict";Xp();Qp();tt();Pi();Ja=class extends Ek{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(An).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"?eo(a,n):to(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===An&&o.kind===Wa&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(An);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Va={};j(Va,{listWaits:()=>ds,renderWaitHelp:()=>Tn,runWait:()=>Tk});import{randomUUID as em}from"node:crypto";import{mkdir as vk,rm as Ck}from"node:fs/promises";async function Tk(e,t=process.cwd()){let r;try{r=await kl(e)}catch(n){return await Lk(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Tn()),0;if(r.kind==="ls"){let n={schema:fl,version:1,waits:await ds(t)};return process.stdout.write(hr(n,r.options.format)),0}return Ai(r.kind)?await Ak({...r,kind:r.kind},t):(process.stdout.write(Tn()),2)}async function Ak(e,t){let r=e.kind,n=Ni({id:em(),kind:r,target:Ik(e),reason:e.options.reason,pid:process.pid,pid_start_time:await Qr(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Ci[r],status:"running",attempts:0}),s=Al(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 vk(pr(t),{recursive:!0}),await mr(s,n);let l=await Ok(e,t,s,n,o.signal);i&&(l={...l,verdict:q(`wait interrupted by ${i}`,l.verdict.details)});let p=await Ll({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(hr(p.result,e.options.format)),p.exitCode}catch(l){let p=q(l instanceof Error?l.message:String(l)),d=sn(r,n,p,{status:"success"},new Date().toISOString());return await on(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(hr(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await Ck(s,{force:!0}).catch(()=>{})}}async function Ok(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Yl({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:vl(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:q("missing PR number")};n.webhook_mode="polling";let a=qa({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await ws({probe:dp(i,o,{emptyChecksGraceMs:en("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:en("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 Pk(e,o,r,n);if(!i.ok)return{verdict:q(i.reason)};n.webhook_mode="polling";let a=qa({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await ws({probe:()=>pp(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:en("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 ws({probe:()=>fp(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:en("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function Pk(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 mp(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await mr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function Ik(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 Lk(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=Ai(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=Ni({id:em(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Ci[o],status:"indeterminate",attempts:0}),c=sn(o,a,q(t instanceof Error?t.message:String(t)),{status:"success"},i);return await on(s,c,r).catch(()=>{}),process.stdout.write(hr(c,r)),2}var Ka=h(()=>{"use strict";Sl();Nl();Ql();Nt();Ii();gp();tt();nn();Ia();Zp();nn();Ia()});import{existsSync as Bk}from"node:fs";import{join as Fk}from"node:path";function jk(){for(let e of(process.env.PATH??"").split(":"))if(e&&Bk(Fk(e,"rsp")))return!0;return!1}function On(){return jk()?["rsp"]:[process.execPath,process.argv[1]]}var za=h(()=>{"use strict"});var no={};j(no,{parseProxyCommandLine:()=>om,rewriteProxyCommandLine:()=>sm,runProxy:()=>Wk});import{spawn as Hk}from"node:child_process";function Gk(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function Wk(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=om(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=sm(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await Uk(t.telemetryRoot,r,c),await nm(r);throw c}for(let c of s)await Jk(t.telemetryRoot,c);let i=await nm(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await ot(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 sm(e,t="lossless",r=On()){let n=Xk(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||Yk(n,a)==="|")return i.text;let c=qk(i.text,t,r);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function om(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 Uk(e,t,r){await ot(e,{collection:K,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:me(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function Jk(e,t){await ot(e,{collection:K,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 nm(e){let t=Hk(e,{shell:!0,stdio:"inherit"});return await new Promise(r=>{t.on("error",n=>{process.stderr.write(`${n instanceof Error?n.message:String(n)}
|
|
65
|
+
`),r(127)}),t.on("close",(n,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(n??0)})})}function qk(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=Zk(o);if(!i)return null;let a=zk(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(f=>f.value);if(Bt(u))return{text:e,match:{command:c.map(f=>f.raw).join(" "),commandFamily:me(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=Vk(c);if(!l)return null;let p=i.slice(0,a).map(f=>f.raw),d=t==="lossless"?[]:[`--${t}`],m=[...p,...r.map(Gk),...d,...l.wrapperWords].join(" ");return{text:`${n}${m}${s}`,match:{command:c.map(f=>f.raw).join(" "),commandFamily:me(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function Vk(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}:Kk(t,r)}function Kk(e,t){return e[0]==="cat"&&e.length===2&&Ya(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Ya(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])&&Ya(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Ya(e){return!!e&&!e.startsWith("-")}function zk(e){let t=0;for(;t<e.length&&Rr(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Rr(e[t].value);)t+=1;return t}function Yk(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function Xk(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 Zk(e){let t=[],r="",n="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:r,value:n}),r="",n="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){r+=u,n+=u,o=!1,i=!0;continue}if(u==="\\"){r+=u,o=!0,i=!0;continue}if(s){r+=u,u===s?s=void 0:n+=u,i=!0;continue}if(u==="'"||u==='"'){r+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;r+=u,n+=u,i=!0}return s||o?null:(a(),t)}var so=h(()=>{"use strict";dn();za();je()});function cm(e,t={}){let r=eS(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let d of r){s.set(d.signature,(s.get(d.signature)??0)+1);for(let m of new Set(d.tokens))n.set(m,(n.get(m)??0)+1)}let 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=Xa(o),u=Xa(i),l=Xa(a),p=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!p.some(m=>iS(d.start,d.end,m.start,m.end))).map(d=>({line:d,score:Qa(d.length,c)+Qa(d.tokens.length,u)+Qa(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+sS(d.tokens,n,r.length)+oS(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,m)=>m.score-d.score||d.line.index-m.line.index).slice(0,t.maxOutliers??3).sort((d,m)=>d.line.index-m.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function eS(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(im(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(im(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function im(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:tS(n),tokens:rS(n),numbers:nS(n),length:n.length}}function tS(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 rS(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function nS(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function sS(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 oS(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Xa(e){let t=am(e),r=am(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function Qa(e,t){return Math.abs(e-t.median)/t.mad}function am(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 iS(e,t,r,n){return e<n&&r<t}var um=h(()=>{"use strict"});var Za={};j(Za,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>nt,GIT_LOG_MACHINE_FIELDS:()=>dm,StructuredUsageError:()=>oo,cleanStatusPayload:()=>gm,recoveryInstruction:()=>Ae,renderGitContract:()=>pm,runGitWrapper:()=>cS});import{spawn as aS}from"node:child_process";async function cS(e,t){let r=mm(e),n=fm(r.argv),s=await pS(n,r.argv.slice(1));return pm(e,s,t)}async function pm(e,t,r){let n=mm(e);if((t.status??0)!==0||t.signal){let p=_e(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let s=fm(n.argv),o;try{o=mS(s,n.argv,t.stdout,n.query)}catch(p){if(p instanceof io)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=C(o);if(uS(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=PS(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 ${Ae(u)}
|
|
61
66
|
`;return{stdout:Buffer.from(`${C(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
|
|
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),
|
|
64
|
-
`).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,
|
|
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),
|
|
66
|
-
`).filter(Boolean).map(i=>{let[a,c,u,l,
|
|
67
|
-
`)){let
|
|
68
|
-
`).length:0,files:
|
|
69
|
-
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function
|
|
67
|
+
${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 Ae(e){return e.startsWith("el:")?`rsp show ${e}`:e}function mm(e){let t=Ot(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 oo(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:r,query:t.query,full:n}}function uS(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!lS(e)||n.level!=="lossless")return!0;let s=OS(n.heavyGitByteThreshold,nt);return Buffer.byteLength(t)<=s}function lS(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function fm(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 dS(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${dm.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 pS(e,t){let r=aS("git",dS(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 mS(e,t,r,n){switch(e){case"status":return fS(t,r,n);case"log":return kS(t,r,n);case"diff":return SS(t,r,n);case"commit":return ht(ES(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return ht(xS(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return vS(t,r,n);case"branch":return CS(t,r,n);case"show":return TS(t,r,n)}}function fS(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of gS(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=bS(u),o=!0;continue}let l=hS(u);if(l){o=!0,s.push(l);continue}let p=yS(u);p&&(o=!0,s.push(p))}if(s.length===0){if(!i||o)return gm(e.join(" "),n);throw new io("git-status-unparseable")}let a=Q(s,r),c=hm(a,"state");return ht({command:e.join(" "),branch:n,rows:a,summary:RS(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function gS(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function hS(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return Pn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return Pn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return Pn(t.slice(10).join(" "),r)}return e.startsWith("? ")?Pn(e.slice(2),"??"):null}function yS(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Pn(wS(e.slice(3),t),t):null}function Pn(e,t){let r=lm(t[0]??"."),n=lm(t[1]??".");return{path:_S(e),index:r,worktree:n,state:AS(`${r}${n}`)}}function lm(e){return e===" "?".":e}function bS(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function wS(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function _S(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function RS(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 gm(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 kS(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=Q(n,r);return ht({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 SS(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=Q(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 ht({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 ES(e,t){let r=t.split(`
|
|
68
|
+
`)[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 xS(e,t){let r=t.split(`
|
|
69
|
+
`).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,m]=(l??"").split(":");return{flag:u??"",from:d??"",to:m??"",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 vS(e,t,r){let n=t.split(`
|
|
70
|
+
`),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=Q(s,r),a=hm(i,"author");return ht({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 CS(e,t,r){let n=t.split(`
|
|
71
|
+
`).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=Q(n,r),o=s.find(i=>i.current)?.name??"";return ht({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 TS(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(""),m=[];for(let b of i.split(`
|
|
72
|
+
`)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(b);if(!w)continue;let x=w[3]??"";m.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...x].filter(O=>O==="+").length,deleted:[...x].filter(O=>O==="-").length,binary:x.startsWith("Bin")})}let f=Q(m,r),_=0,g=0,y=0;for(let b of f)_+=typeof b.changed=="number"?b.changed:0,g+=typeof b.added=="number"?b.added:0,y+=typeof b.deleted=="number"?b.deleted:0;return ht({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:p??"",body_lines:d.trim()?d.trim().split(`
|
|
73
|
+
`).length:0,files:f,summary:`${r?`${f.length}/${m.length}`:f.length} files, ${_} changed, +${g} -${y}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function ht(e,t,r){return t?Xe(e,r):e}function AS(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function hm(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function OS(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function PS(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 dm,oo,io,Jt=h(()=>{"use strict";L();Te();qr();Ne();Te();dm=["%h","%an","%as","%s"];oo=class extends Error{constructor(r,n,s){super(`unknown flag: ${n}`);this.command=r;this.flag=n;this.validFlags=s}render(){return Kn(this.command,this.flag,this.validFlags,`${this.command} --help`)}},io=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var nc={};j(nc,{NORMALIZATION_ALLOWLIST:()=>Sm,NORMALIZE_ANSI:()=>co,NORMALIZE_BLANK_LINES:()=>po,NORMALIZE_CR_PROGRESS:()=>uo,NORMALIZE_JSON_TOON:()=>km,NORMALIZE_TRAILING_WHITESPACE:()=>lo,crushJsonArrayItems:()=>In,formatCodexNormalizeDecision:()=>Tm,formatNormalizeDecision:()=>Cm,hookDecisionFromClaudePostExecJson:()=>Em,hookDecisionFromCodexPostExecJson:()=>xm,normalizeOutput:()=>mo,renderGenericJsonLane:()=>tc,runClaudePostExecHook:()=>DS,runCodexPostExecHook:()=>NS,transcodeJsonToToon:()=>Rm});import{readFileSync as ao}from"node:fs";function Rm(e,t){let r=t?.encode??C,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 ec(o,a)?i.trimEnd():e}async function tc(e,t={}){let r=FS(e);if(!r)return{output:e,detected:!1,lossy:!1};let n=r.value;if(!Array.isArray(n))return{output:C(n).trimEnd(),detected:!0,lossy:!1};let s=n.length,o=_m(t.minTokens,IS),i=_m(t.maxItems,LS);if(!(s>i&&US(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??In)(n,i)}catch(_){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:JS(_)}}}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 m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,f=C(l).trimEnd();return{output:[p,m,f].filter(Boolean).join(`
|
|
74
|
+
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function In(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=jS(e),s=new Set;n&&e.forEach((a,c)=>{rc(a)!==n&&s.add(c)});let o=HS(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 mo(e){let t=e;for(let r of Sm)t=r.apply(t);return t}async function Em(e,t){return await vm(e,t)}async function xm(e,t){return await vm(e,t)}async function vm(e,t){let r=BS(e),n=qS(r,["cwd"])||t.cwd;if(!await(t.isEnabled??MS)(n))return{kind:"passthrough",reason:"disabled"};let o=VS(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??mo)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Cm(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Tm(e){return{stdout:"",status:0}}async function DS(e){let t=e?ao(e,"utf8"):ao(0,"utf8"),r=await Em(t,{cwd:process.cwd()}),n=Cm(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function NS(e){let t=e?ao(e,"utf8"):ao(0,"utf8"),r=await xm(t,{cwd:process.cwd()}),n=Tm(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function $S(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&&ym(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&ym(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function ym(e){return e>=32&&e<=63}function MS(e){return Ce(e,process.env).enabled}function BS(e){try{let t=JSON.parse(e);return Tr(t)?t:{}}catch{return{}}}function FS(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Tr(n)||Array.isArray(n)?{value:n}:null}catch{}let r=[];for(let n of e.split(/\r?\n/))if(n.trim())try{r.push(JSON.parse(n))}catch{return null}return r.length>0?{value:r}:null}function jS(e){let t=new Map;for(let s of e){let o=rc(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 rc(e){return Array.isArray(e)?"array":Tr(e)?Object.keys(e).sort().map(t=>`${t}:${bm(e[t])}`).join("|"):bm(e)}function HS(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&rc(s)!==t))for(let[i,a]of Am(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 GS(s))r.add(o);for(let o of WS(s))r.add(o)}return r}function GS(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=wm(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=wm(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 WS(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 Am(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Tr(e)?Object.entries(e).flatMap(([r,n])=>Am(n,t?`${t}.${r}`:r)):[]}function bm(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function wm(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 US(e){return Math.ceil(e.length/4)}function _m(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function JS(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 qS(e,t){let r=e;for(let n of t){if(!Tr(r))return"";r=r[n]}return typeof r=="string"?r:""}function VS(e,t){let r=e[t];return Tr(r)?r:null}function Tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ec(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)=>ec(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)&&ec(r[i],n[i]))}var co,uo,lo,po,km,IS,LS,Sm,Ln=h(()=>{"use strict";L();Te();co={id:"ansi",apply:$S},uo={id:"cr-progress",apply:e=>e.split(`
|
|
70
75
|
`).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
|
-
`)},
|
|
76
|
+
`)},lo={id:"trailing-whitespace",apply:e=>e.split(`
|
|
72
77
|
`).map(t=>t.replace(/[ \t]+$/,"")).join(`
|
|
73
|
-
`)},
|
|
78
|
+
`)},po={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
|
|
74
79
|
|
|
75
|
-
`)};
|
|
76
|
-
`}function
|
|
77
|
-
`,status:0}}async function
|
|
80
|
+
`)};km={id:"json-to-toon",apply:e=>Rm(e)},IS=200,LS=15;Sm=[co,uo,lo,po,km]});var $n={};j($n,{parseExecCommandLine:()=>Nm,renderExecContract:()=>Dm,runExecWrapper:()=>QS});import{isUtf8 as KS}from"node:buffer";import{spawn as zS}from"node:child_process";async function QS(e,t){let r=Nm(e),n=await ZS(r);return await Dm(r,n,t)}async function Dm(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=_e(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=eE(n),i=o.kind==="text"?Buffer.from(o.text):n,a=_E(r.heavyByteThreshold,YS);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"?rE(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):nE(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 Nm(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 ZS(e){let t=zS(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 eE(e){return KS(e)?{kind:"text",text:tE(e.toString("utf8"))}:{kind:"bytes"}}function tE(e){let t=e;for(let r of[co,uo,lo,po])t=r.apply(t);return t}function rE(e,t,r,n,s,o=mE,i=In){let c=Math.max(1,Math.floor((n==="terse"?Lm:XS)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),p=pE(e,c,l,o),d=sE(e),m=oE(d,e,u,c,l,p.kind==="ok"?p.lines:[],i),f=$m(s,d,t,wE(u),r,m.summary),_=p.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Gm(p.error)}:m.degradation;return{text:Hm(f),degradation:_}}function nE(e,t,r,n){let s=Math.max(1,Math.floor(Lm/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Hm($m(n,"bytes",t,0,r,o))}}function $m(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:Ae(s)}}}function sE(e){let t=e.trim();return t?Bm(t)?"json":Fm(e)?"jsonl":fE(e)?"unified-diff":jm(e)?"tabular":gE(e)?"log-like":hE(e)?"prose":"untyped":"untyped"}function oE(e,t,r,n,s,o,i=In){switch(e){case"json":return iE(t,i);case"jsonl":return{summary:aE(t)};case"unified-diff":return{summary:cE(t)};case"tabular":return{summary:uE(t)};case"log-like":return{summary:lE(t,o)};case"prose":return{summary:dE(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Mm(r,n,s,o)}}}function iE(e,t){let r=Bm(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(yt),item_keys:oc(r)}}}catch(n){return{summary:Pm(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Gm(n)}}}return{summary:Pm(r)}}if(Nn(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,yt(o)]))}}}return{summary:{root_type:typeof r,value:yt(r)}}}function Pm(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(yt),item_keys:oc(e)}}function aE(e){let t=Fm(e)??[],r=yE(t,"level");return{records:t.length,keys:oc(t),levels:r,first:yt(t[0]),last:yt(t.at(-1))}}function cE(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 uE(e){let t=jm(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Mm(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function lE(e,t){let r=Dn(e);return{entries:r.length,levels:bE(r),first:qt(r[0]??""),last:qt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:qt(n.text)}))}}function dE(e){let t=e.trim().split(/\n\s*\n/).filter(n=>n.trim()),r=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:r.length,opening:qt(t[0]??""),closing:qt(t.at(-1)??"")}}function Mm(e,t,r,n){let s=Im(e.subarray(0,t)),o=Im(e.subarray(r));return{head:s,tail:o,outliers:n.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:qt(i.text)}))}}function pE(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function mE(e,t){return cm(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Bm(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Nn(r)||Array.isArray(r)?r:null}catch{return null}}function Fm(e){let t=Dn(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 fE(e){let t=Dn(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 jm(e){let t=Dn(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 gE(e){let t=Dn(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 hE(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 Dn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function oc(e){let t=new Map;for(let r of e)if(Nn(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 yE(e,t){let r=new Map;for(let n of e){if(!Nn(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 bE(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 yt(e){return typeof e=="string"?qt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(yt):Nn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,yt(r)])):String(e)}function qt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Om?t:`${t.slice(0,Om-1)}\u2026`}function Hm(e){let t=C(e).trimEnd(),r=N(t);if(!sc(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
|
|
81
|
+
`}function sc(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)=>sc(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)&&sc(r[i],n[i]))}function Nn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Gm(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 Im(e){return e.toString("utf8").replace(/�$/g,"")}function wE(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 _E(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var YS,XS,Lm,Om,Mn=h(()=>{"use strict";L();um();Jt();Ln();Ne();YS=8*1024,XS=2*1024,Lm=1024,Om=240});var Ro={};j(Ro,{RSP_WRAPPER_CAPABILITIES:()=>jn,_testOnlyResetBinaryState:()=>IE,formatCodexHookDecision:()=>ef,formatHookDecision:()=>Zm,hookDecisionFromClaudePreExecJson:()=>BE,hookDecisionFromCodexPreExecJson:()=>FE,rewriteCommand:()=>Xm,rewriteTableFromCapabilities:()=>Ym,runClaudePreExecHook:()=>jE,runCodexPreExecHook:()=>HE});import{accessSync as TE,constants as AE,existsSync as OE,readFileSync as wo}from"node:fs";import{fileURLToPath as PE}from"node:url";function IE(){bo=void 0,ac=!1}function LE(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return TE(`${t}/rsp`,AE.X_OK),!0}catch{}return!1}function DE(e){return bo===void 0&&(bo=e()),bo}function NE(){ac||(ac=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function Ym(e){let t=new Map;for(let r of e)t.set(ox(r.command),["rsp",...r.wrapper]);return t}function Xm(e,t=On()){let r=YE(e);if(r)return r;let n=KE(e);if(!n)return yo(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&Rr(s[0]))return yo(e,t);let o=ME(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return yo(e,t);let i=[...jn].sort((u,l)=>l.command.length-u.command.length).find(u=>zE(s,u.command));if(!i)return yo(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=of(n.redirectSuffix);return{kind:"rewrite",command:[...a.map(bt),...c].join(" "),capabilityId:i.id}}function ME(e,t){let r=e.tokens.map(i=>i.text),n=r[0],s=of(e.redirectSuffix),o=t.map(bt);return n==="cat"&&r.length===2&&ho(r[1])?{kind:"rewrite",command:[...o,"cat",bt(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&ho(r[1])?{kind:"rewrite",command:[...o,"cat",`--${n}`,"10",bt(r[1]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===4&&r[1]==="-n"&&/^[1-9][0-9]*$/.test(r[2])&&ho(r[3])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[2],bt(r[3]),...s].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&r.length===3&&/^-[1-9][0-9]*$/.test(r[1])&&ho(r[2])?{kind:"rewrite",command:[...o,"cat",`--${n}`,r[1].slice(1),bt(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function ho(e){return!!e&&!e.startsWith("-")}async function BE(e,t){return await Qm(e,t)}async function FE(e,t){return await Qm(e,t)}async function Qm(e,t){return(await uc(e,t,"pre-exec")).decision}async function uc(e,t,r){let n=lf(e);if(!n.ok){let f={kind:"passthrough",reason:n.reason};return{decision:f,telemetryRoot:t.cwd,event:Ar({hook:r,command:"",decision:f,reason:n.reason})}}let s=n.payload,o=Oe(s,["cwd"])||Oe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??GE)(o)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:o,event:Ar({hook:r,command:cc(s),decision:f,reason:"disabled"})}}let a=cc(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:o,event:Ar({hook:r,command:a,decision:f,reason:"missing-command"})}}if(!DE(t.resolveBinary??LE)){NE();let f={kind:"passthrough",reason:"binary-unresolved"};return{decision:f,telemetryRoot:o,event:Ar({hook:r,command:a,decision:f,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Ce(o,process.env),p=t.rspInvocationPrefix??On(),d=l.proxyEnabled?XE(a,p):(t.rewrite??(f=>Xm(f,p)))(a),m=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let f=d.reason?d:{...d,reason:"unsupported-command"};return{decision:f,telemetryRoot:o,event:Ar({hook:r,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:m})}}return await UE(o,t.wakeResident??WE),{decision:d,telemetryRoot:o,event:Ar({hook:r,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function Zm(e){return e.kind==="rewrite"?tf(e.command):{stdout:"",status:0}}function ef(e){return e.kind==="rewrite"?tf(e.command):{stdout:"",status:0}}function tf(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
|
|
82
|
+
`,status:0}}async function jE(e){let t="";try{t=e?wo(e,"utf8"):wo(0,"utf8");let r=await uc(t,{cwd:process.cwd()},"claude-pre-exec");_o(r.telemetryRoot,r.event);let n=r.decision;nf("claude-pre-exec",n);let s=Zm(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return _o(process.cwd(),rf("claude-pre-exec",t,r)),sf("claude-pre-exec",r),0}}async function HE(e){let t="";try{t=e?wo(e,"utf8"):wo(0,"utf8");let r=await uc(t,{cwd:process.cwd()},"codex-pre-exec");_o(r.telemetryRoot,r.event);let n=r.decision;nf("codex-pre-exec",n);let s=ef(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return _o(process.cwd(),rf("codex-pre-exec",t,r)),sf("codex-pre-exec",r),0}}function _o(e,t){ot(e,t).catch(()=>{})}function Ar(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:K,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:me(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function rf(e,t,r){let n=lf(t),s=n.ok?cc(n.payload):"";return{collection:K,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:me(s),decision:"failed-open",reason:"hook-exception",error:lc(r)}}function GE(e){return Ce(e,process.env).enabled}async function WE(e){let t=Ce(e,process.env);if(!t.enabled||!VE(t))return;let r=lt(e);await ts(r,qE(t))}async function UE(e,t){try{await Promise.resolve(t(e))}catch(r){JE(r)}}function nf(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
|
|
78
83
|
`);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
|
|
79
|
-
`)}}function
|
|
80
|
-
`)}function
|
|
81
|
-
`)}function
|
|
82
|
-
`)}function
|
|
83
|
-
`),u=o.map(({alias:d,number:
|
|
84
|
-
`)),l=i.map(({alias:d,name:
|
|
85
|
-
`);return{kind:e,query:
|
|
86
|
-
`)}}function
|
|
87
|
-
`)}}function
|
|
84
|
+
`)}}function sf(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${lc(t)}
|
|
85
|
+
`)}function JE(e){wi(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${lc(e)}
|
|
86
|
+
`)}function lc(e){return e instanceof Error?e.name||"Error":typeof e}function qE(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 VE(e){if(!e.storeUri.startsWith("file://"))return!0;try{return OE(PE(e.storeUri))}catch{return!1}}function cc(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 KE(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=dc(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Rr(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 dc(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 zE(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function YE(e){let t=dc(e.trim()).map(r=>r.text);return Bt(t)?{kind:"passthrough",reason:$E}:null}function of(e){return e.map(t=>t.text)}function bt(e){return/[^\w@%+=:,./-]/.test(e)?pc(e):e}function XE(e,t){let r=ZE(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(bt).join(" ")} proxy -- ${pc(e.trim())}`,capabilityId:"proxy:universal"}}function QE(e){if(!process.argv[1])return!1;let t=dc(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function ZE(e){let t=e.trim();if(!t)return"missing-command";if(cf(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=ln(un(t)[0]??"")[0];if(r==="rsp"||QE(t))return"opt-out";if(r&&af.has(r))return"interactive"}function yo(e,t){let r=e.trim();return ex(r)?{kind:"rewrite",command:`${t.map(bt).join(" ")} exec -- ${pc(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function ex(e){return!(!e||!tx(e)||!rx(e)||cf(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||nx(e,"rsp")||uf(e,af)||sx(e))}function tx(e){return/&&|[;|]/.test(e)}function cf(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 rx(e){return un(e).some(t=>{let r=ln(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 uf(e,t){return un(e).some(r=>{let n=ln(r)[0];return n?t.has(n):!1})}function nx(e,t){return uf(e,new Set([t]))}function sx(e){return un(e).some(t=>{let r=ln(t);return r[0]==="grep"&&r.includes("-q")})}function pc(e){return`'${e.replace(/'/g,"'\\''")}'`}function ox(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 bo,ac,jn,p$,$E,af,Hn=h(()=>{"use strict";dn();Te();Ze();Dt();za();je();ac=!1;jn=[{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"]}],p$=Ym(jn),$E="lossless-gh-json-jq";af=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var bf={};j(bf,{fastTelemetryRoot:()=>fc,isFastGitStatus:()=>ko,runFastGitStatus:()=>So});import{spawnSync as hf}from"node:child_process";import{existsSync as yf,readdirSync as mx}from"node:fs";function ko(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function So(){if(fx(process.cwd()))return{stdout:mc(),stderr:Buffer.alloc(0),status:0,signal:null};if(hf("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:mc(),stderr:Buffer.alloc(0),status:0,signal:null};let t=hf("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?mc():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function fc(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ze(),Lt));return t(e).rootDir}catch{return e}}function mc(){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"})}
|
|
87
|
+
`)}function fx(e){try{return!yf(`${e}/.git`)||yf(`${e}/.git/index`)?!1:mx(e).every(t=>t===".git")}catch{return!1}}var gc=h(()=>{"use strict";$e()});async function Ir(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 Rf(e,t,r,n={}){Ox(t);let s=e==="issue"?"i":"p",o=t.map((d,m)=>({alias:`${s}${m}`,number:d})),i=(n.labelNames??[]).map((d,m)=>({alias:`l${m}`,name:d})),c=Px(["id","number",...r]).map(d=>Ix(Ax[d],6)).join(`
|
|
88
|
+
`),u=o.map(({alias:d,number:m})=>[` ${d}: ${e}(number: ${m}) {`,c," }"].join(`
|
|
89
|
+
`)),l=i.map(({alias:d,name:m})=>` ${d}: label(name: ${JSON.stringify(m)}) { id name }`),p=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
|
|
90
|
+
`);return{kind:e,query:p,aliases:o,labelAliases:i}}function kf(e,t){let r=Pr(t),n=Pr(r.data),s=Pr(n.repository),o=Array.isArray(r.errors)?r.errors.map(Pr):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(xf(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:vf(u?.message)||"not found"}})}function Sf(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: ${_t(o.nodeId)}, labelIds: ${_f(t)}, clientMutationId: ${_t(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: ${_t(o.nodeId)}, labelIds: ${_f(r)}, clientMutationId: ${_t(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
|
|
91
|
+
`)}}function Ef(e,t){let r=t.map((s,o)=>({alias:`link${o}`,number:s.number})),n=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${_t(e.nodeId)}, subIssueId: ${_t(s.nodeId)}, clientMutationId: ${_t(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
|
|
92
|
+
`)}}function hc(e,t){let r=Pr(t),n=Array.isArray(r.errors)?r.errors.map(Pr):[],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,vf(i.message)||"mutation failed")}return s}function Ox(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 Px(e){return[...new Set(e)]}function Ix(e,t){let r=" ".repeat(t);return e.split(`
|
|
88
93
|
`).map(n=>`${r}${n}`).join(`
|
|
89
|
-
`)}function _t(e){return JSON.stringify(e)}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
|
|
93
|
-
${e.stdout}`)}function
|
|
94
|
-
`)[0]?.slice(0,240)??""}function
|
|
94
|
+
`)}function _t(e){return JSON.stringify(e)}function _f(e){return`[${e.map(_t).join(", ")}]`}function Pr(e){return xf(e)?e:{}}function xf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function vf(e){return typeof e=="string"?e:""}var Ax,Cf=h(()=>{Ax={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(`
|
|
95
|
+
`),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as Dx,spawnSync as Nx}from"node:child_process";function wc(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function Of(e,t={}){let r=zx(e),n=r.repo??t.repo??process.env.GH_REPO??Xx();if(!n||!n.includes("/"))return kc(e,"repository is required; pass --repo owner/repo");let s=t.exec??Qx,o=Math.max(1,Math.floor(t.restConcurrency??Af));return r.verb==="issues"||r.verb==="prs"?await Bx(r,n,s,o,e):r.verb==="edit-labels"?await jx(r,n,s,o,e):await Gx(r,n,s,o,e)}async function Bx(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=Pf(e),a=[],c=[];for(let l of Rc(e.numbers,100)){let p=Rf(o,l,i.query),d=await _c(r,t,p.query);if(Ec(d))return await Fx(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(m=>({number:m,value:{error:ge(d)||`failed to read ${m}`},failed:!0})));continue}a.push(...kf(p,Rt(d.stdout)).map(m=>({number:m.number,value:m.error?{error:m.error}:Ux(e.verb,m.value??{},i.output),failed:!!m.error})))}let u=a.filter(l=>l.failed).length;return xo({command:vo(s),transport:"graphql",order:e.numbers,[e.verb]:Gn(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
|
|
96
|
+
`))}async function Fx(e,t,r,n,s){let o=Pf(e),i=e.verb==="issues"?"issues":"pulls",a=await Ir(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:ge(l)||"REST fallback failed"}};let p=Ge(Rt(l.stdout));if(e.verb==="prs"&&o.output.some(If)){let d=G(Ge(p.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let m=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(m.code!==0)return{number:u,value:{error:ge(m)||"REST check-runs fallback failed"}};let f=await r(["api",`repos/${t}/commits/${d}/status`]);if(f.code!==0)return{number:u,value:{error:ge(f)||"REST commit-status fallback failed"}};p={...p,restCheckRollup:qx(Ge(Rt(m.stdout)),Ge(Rt(f.stdout)))}}return{number:u,value:Jx(e.verb,p,o.output)}}),c=a.filter(u=>"error"in u.value).length;return xo({command:vo(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:Gn(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function jx(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return kc(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Lf(e.numbers,t,r,n),Ir(o,n,async d=>{let m=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:G(Ge(Rt(m.stdout)).node_id),error:m.code===0?"":ge(m)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return Dr(s,e.numbers,Sc(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 Rc(p,100)){let m=Sf(d,e.add.map(g=>c.get(g)),e.remove.map(g=>c.get(g))),f=await _c(r,t,m.query);if(Ec(f))return await Hx(e,t,r,n,s);if(f.code!==0){for(let g of d)l.set(g.number,{error:ge(f)||"label mutation failed"});continue}let _=hc(m.aliases,Rt(f.stdout));for(let g of d){let b=m.aliases.filter(w=>w.number===g.number).map(w=>_.get(w.alias)).find(Boolean);l.set(g.number,b?{error:b}:{ok:!0})}}return Dr(s,e.numbers,Df(e.numbers,l),"graphql")}async function Hx(e,t,r,n,s){let o=await Ir(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:ge(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:ge(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return Dr(s,e.numbers,Gn(o),"rest-fallback",n)}async function Gx(e,t,r,n,s){if(e.numbers.length<2)return kc(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Lf(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return Dr(s,i,Sc(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 Rc(p,100)){let m=Ef({number:o,nodeId:u},d),f=await _c(r,t,m.query);if(Ec(f))return await Wx(o,i,t,r,n,s);if(f.code!==0){for(let g of d)l.set(g.number,{error:ge(f)||"sub-issue mutation failed"});continue}let _=hc(m.aliases,Rt(f.stdout));for(let g of m.aliases){let y=_.get(g.alias);l.set(g.number,y?{error:y}:{ok:!0})}}return Dr(s,i,Df(i,l),"graphql")}async function Wx(e,t,r,n,s,o){let i=await Ir(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:ge(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:ge(l)||"REST link failed"}}});return Dr(o,t,Gn(i),"rest-fallback",s)}function Dr(e,t,r,n,s){let o=Object.values(r).filter(i=>Nr(i)&&"error"in i).length;return xo({command:vo(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Af}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function Pf(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Tf(r,$x),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Tf(t,Mx),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Tf(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function Ux(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=yc(t.labels).map(o=>G(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=Kx(t.commits):s==="state"||s==="mergeable"?n[s]=G(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=Nf(t[s]));return"number"in n||(n.number=xc(t.number)),n}function Jx(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Nr):[];n.labels=o.map(i=>G(i.name)).filter(Boolean)}else if(If(s))n[s]=Ge(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]=Nf(t[s]);return"number"in n||(n.number=xc(t.number)),n}function qx(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Nr):[],n=Array.isArray(t.statuses)?t.statuses.filter(Nr):[],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()||Vx(s.map(o=>o.state)),contexts:s}}function Vx(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 If(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function Kx(e){let t=yc(e).at(-1),r=Ge(Ge(t?.commit).statusCheckRollup);return{state:G(r.state).toLowerCase(),contexts:yc(r.contexts).map(n=>({name:G(n.name)||G(n.context),state:(G(n.conclusion)||G(n.status)||G(n.state)).toLowerCase()}))}}async function _c(e,t,r){let[n,s]=Yx(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function Lf(e,t,r,n){return await Ir(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=Ge(Rt(o.stdout)),a=G(i.node_id),c=xc(i.id);return o.code!==0||!a?{number:s,error:ge(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function Rc(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function zx(e){if(!wc(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(...Lr(e[++a]??""));else if(c.startsWith("--json="))n.push(...Lr(c.slice(7)));else if(c==="--add")s.push(...Lr(e[++a]??""));else if(c.startsWith("--add="))s.push(...Lr(c.slice(6)));else if(c==="--remove")o.push(...Lr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...Lr(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 xo(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
|
|
97
|
+
`),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function kc(e,t){return xo({command:vo(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function Sc(e,t){return Gn(e.map(r=>({number:r,value:t(r)})))}function Gn(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Df(e,t){return Sc(e,r=>t.get(r)??{error:"mutation skipped"})}function Ec(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
|
|
98
|
+
${e.stdout}`)}function ge(e){return(e.stderr||e.stdout).trim().split(`
|
|
99
|
+
`)[0]?.slice(0,240)??""}function Rt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function yc(e){let t=Ge(e).nodes;return Array.isArray(t)?t.filter(Nr):[]}function Nf(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function xc(e){let t=Number(e);return Number.isFinite(t)?t:0}function Lr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function Yx(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function vo(e){return`rsp ${e.join(" ")}`}function Xx(){let e=Nx("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 Qx(e){let t=Dx("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 Ge(e){return Nr(e)?e:{}}function Nr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function G(e){return typeof e=="string"?e:""}var Af,$x,Mx,$f=h(()=>{"use strict";L();Cf();Af=4,$x=new Set(["number","title","state","labels","body"]),Mx=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var Lc={};j(Lc,{renderGhContract:()=>Gf,runGhWrapper:()=>sv});import{spawn as Zx}from"node:child_process";async function sv(e,t){if(wc(e))return await Of(e);let r=Wf(e),n=await iv(r);return Gf(e,n,t)}async function Gf(e,t,r){if((t.status??0)!==0||t.signal){let m=_e(e.join(" "),t.stdout,t.stderr);return{stdout:$(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let n=Wf(e),s=Wn(t.stdout),o=fv(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=kv(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let m=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=m}let a=i?.target.truncated.handle||void 0,c=C(o);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let u=Sv(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 ${Ae(p)}
|
|
95
100
|
`;return{stdout:Buffer.from(`${C(u.payload)}
|
|
96
|
-
${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:m,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function _p(e){let t=Ot(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 p=l[f]??"";p==="--full"?a=!0:p==="--wide"?c=!0:p==="--fields"?u=gp(l[++f]??""):p.startsWith("--fields=")?u=gp(p.slice(9)):i.push(p)}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 wx(d),d}function pp(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?gx[t]:px[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function gp(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function wx(e){if(e.fields.size===0)return;if(e.action!=="list")throw new ho(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=yx[t];for(let n of e.fields)if(!r.includes(n))throw new ho(e,`unknown field: ${n}`,r)}async function _x(e){if(e.action==="combined")return await kx(e);let t=Rx(e);if(!t)return await Cx(pp(e));let r=await oe({...t,command:["gh",...pp(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await Sx(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function kx(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=Rp(jn(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:ce(jn(s.stdout)).map(xx)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function Rx(e){let t=Sp(e.passthrough),r=vx(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 Sx(e,t){let r=jn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ce(r).map(kp);case"pr:view":return Rp(r);case"issue:list":return ce(r).filter(n=>!Ut(n.pull_request)).map(hp);case"issue:view":return hp(r);case"run:list":return{items:ce(M(r).workflow_runs).map(yp),total:ie(M(r),"total_count")};case"run:view":{let n=yp(r),s=Sp(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(jn(o.stdout)).jobs).map(Ex):[]}}default:return r}}function kp(e){let t=M(e);return{number:ie(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:gc(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 Rp(e){return kp(e)}function hp(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:gc(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function yp(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 xx(e){let t=M(e);return{author:gc(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function gc(e){let t=M(e);return{login:S(t,"login")}}function Sp(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 vx(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 Cx(e){let t=fx("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 Tx(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=lc(r,"prs"),o=s.rows.map(c=>Ep(c,e)),i=Q(o,e.query),a=dc(i.length,o.length,s.total,e.query);return i.length===0?mc(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Dr({...n,prs:i,aggregate:a,summary:`${fc(i.length,o.length,e.query)} ${bp(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Dr({...n,pr:xp(M(r),e),summary:`PR #${ie(M(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Px(e,t,M(r));case"issue:list":{let s=lc(r,"issues"),o=s.rows.map(c=>vp(c,e)),i=Q(o,e.query),a=dc(i.length,o.length,s.total,e.query);return i.length===0?mc(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Dr({...n,issues:i,aggregate:a,summary:`${fc(i.length,o.length,e.query)} ${bp(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Dr({...n,issue:Dx(M(r),e),summary:`issue #${ie(M(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=lc(r,"runs"),o=s.rows.map(c=>Cp(c,e)),i=Q(o,e.query),a=dc(i.length,o.length,s.total,e.query);return i.length===0?mc(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Dr({...n,runs:i,aggregate:a,summary:`${fc(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 Dr({...n,run:Nx(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 Px(e,t,r){let n=xp(M(r.view),{...e,action:"view",wide:!0}),s=Q(ce(r.checks).map(Ox),e.query),o=M(r.comments).comments,i=Q(ce(o).map(Ax).slice(-3),e.query);return Ke({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 Ox(e){return{name:S(e,"name"),state:Hn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function Ax(e){return{author:Pp(e.author),body:yo(e,"body",pc,!1),created:S(e,"createdAt")}}function lc(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 dc(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function mc(e,t,r,n,s){return Ke({...e,empty:!0,scope:Ix(t),[r]:[],aggregate:n,summary:`0 ${Lx(t)}`},s)}function Ix(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 o=Ge(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${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 Lx(e){let t=Ge(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Ep(e,t){let r={number:ie(e,"number"),title:S(e,"title"),state:Hn(e),draft:!!e.isDraft};return hc(r,e,t,["author","labels","url","updated"]),r}function xp(e,t){let r=Ep(e,t);return r.body=yo(e,"body",pc,t.full),t.wide&&(r.base=S(e,"baseRefName"),r.head=S(e,"headRefName")),r}function vp(e,t){let r={number:ie(e,"number"),title:S(e,"title"),state:Hn(e),labels:Tp(e.labels)};return hc(r,e,t,["author","url","updated"]),r}function Dx(e,t){let r=vp(e,t);return r.body=yo(e,"body",pc,t.full),r}function Cp(e,t){let r={id:ie(e,"databaseId"),name:S(e,"name"),status:Hn(e),conclusion:S(e,"conclusion")};return hc(r,e,t,["event","branch","workflow","created"]),r}function Nx(e,t){let r=Cp(e,t),n=ce(e.jobs).map(s=>({name:S(s,"name"),status:Hn(s),conclusion:S(s,"conclusion"),log:yo(s,"log",hx,t.full)}));return r.jobs=n,r}function yo(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 $x(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(Ut(r)){if(Ut(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 Mx(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 bp(e,t){return e.every(r=>r.state===t)?t:"returned"}function fc(e,t,r){return r?`${e}/${t}`:String(e)}function Dr(e,t,r){return t.query?Ke(e,r):e}function Hn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function hc(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=Pp(t.author):s==="labels"?e.labels=Tp(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 Tp(e){return Array.isArray(e)?e.map(t=>Ut(t)?S(t,"name"):String(t)).filter(Boolean):[]}function Pp(e){return Ut(e)?S(e,"login"):""}function jn(e){return e.trim()?JSON.parse(e):null}function ce(e){return Array.isArray(e)?e.filter(Ut):[]}function M(e){return Ut(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 Ut(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var px,gx,pc,hx,yx,ho,bc=y(()=>{"use strict";D();Ns();fp();jt();Ur();Ne();px={"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"]},gx={"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"]},pc=160,hx=160,yx={"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"]};ho=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 kc={};j(kc,{renderTestContract:()=>Op,runTestWrapper:()=>Gx});import{spawn as Bx}from"node:child_process";async function Gx(e,t){let r=Ot(e),n=await Vx(r.argv);return await Op(e,n,t)}async function Op(e,t,r){let n=Ot(e),o=Ap(n.argv)==="vitest"?Kx(t.stdout):zx(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let p=we(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${Qx(o.durationSeconds)}`,c=Q(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,m=0;for(let p of c){let g=await Yx(p.excerpt,n.argv.join(" "),r.store);u.push({suite:p.suite,name:p.name,excerpt:g.text}),l??=g.handle,m+=g.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?Ke(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(f)),stderr:Buffer.from(t.stderr),status:_c(t.status),signal:t.signal,payload:f,mintedHandle:l,bytesElided:m>0?m: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=Ux(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?Ke(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),m=Math.max(0,r.failures.length-a.length),d=a.some((E,v)=>E.excerpt!==r.failures[v].excerpt);if(m===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:_c(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 p=C(f),g=Buffer.byteLength(p),h=await o.store?.mint(Buffer.from(p),{command:e.join(" "),loss:{level:"terse",bytes_elided:g}});if(!h)throw new Error("terse test output requires an elision store");let w=`\u2026 elided ${m>0?`${m} failures`:"full detail"} (+${g}) \u2014 ${Pe(h)}`;return{stdout:Buffer.from(`${l}
|
|
97
|
-
${
|
|
101
|
+
${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 Wf(e){let t=Ot(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 m=0;m<l.length;m+=1){let f=l[m]??"";f==="--full"?a=!0:f==="--wide"?c=!0:f==="--fields"?u=Bf(l[++m]??""):f.startsWith("--fields=")?u=Bf(f.slice(9)):i.push(f)}let d={kind:o,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:i,query:t.query};return ov(d),d}function Mf(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?tv[t]:ev[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Bf(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function ov(e){if(e.fields.size===0)return;if(e.action!=="list")throw new Co(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=nv[t];for(let n of e.fields)if(!r.includes(n))throw new Co(e,`unknown field: ${n}`,r)}async function iv(e){if(e.action==="combined")return await av(e);let t=cv(e);if(!t)return await mv(Mf(e));let r=await oe({...t,command:["gh",...Mf(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await uv(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function av(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=Jf(Wn(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:ce(Wn(s.stdout)).map(dv)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function cv(e){let t=qf(e.passthrough),r=pv(e.passthrough,"--limit")??30,n=We(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:We(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 uv(e,t){let r=Wn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return ce(r).map(Uf);case"pr:view":return Jf(r);case"issue:list":return ce(r).filter(n=>!Kt(n.pull_request)).map(Ff);case"issue:view":return Ff(r);case"run:list":return{items:ce(M(r).workflow_runs).map(jf),total:ie(M(r),"total_count")};case"run:view":{let n=jf(r),s=qf(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(Wn(o.stdout)).jobs).map(lv):[]}}default:return r}}function Uf(e){let t=M(e);return{number:ie(t,"number"),title:E(t,"title"),state:E(t,"state").toUpperCase(),isDraft:!!t.draft,author:Pc(t.user),labels:ce(t.labels).map(r=>({name:E(r,"name")})),url:E(t,"html_url"),updatedAt:E(t,"updated_at"),body:E(t,"body"),baseRefName:E(M(t.base),"ref"),headRefName:E(M(t.head),"ref")}}function Jf(e){return Uf(e)}function Ff(e){let t=M(e);return{number:ie(t,"number"),title:E(t,"title"),state:E(t,"state").toUpperCase(),labels:ce(t.labels).map(r=>({name:E(r,"name")})),author:Pc(t.user),url:E(t,"html_url"),updatedAt:E(t,"updated_at"),body:E(t,"body")}}function jf(e){let t=M(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 lv(e){let t=M(e);return{name:E(t,"name"),status:E(t,"status").toUpperCase(),conclusion:E(t,"conclusion").toUpperCase(),log:""}}function dv(e){let t=M(e);return{author:Pc(t.user),body:E(t,"body"),createdAt:E(t,"created_at")}}function Pc(e){let t=M(e);return{login:E(t,"login")}}function qf(e){return e.find(t=>!t.startsWith("-"))}function We(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function pv(e,t){let r=We(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function mv(e){let t=Zx("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 fv(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=vc(r,"prs"),o=s.rows.map(c=>Vf(c,e)),i=Q(o,e.query),a=Cc(i.length,o.length,s.total,e.query);return i.length===0?Tc(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):$r({...n,prs:i,aggregate:a,summary:`${Ac(i.length,o.length,e.query)} ${Hf(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return $r({...n,pr:Kf(M(r),e),summary:`PR #${ie(M(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return gv(e,t,M(r));case"issue:list":{let s=vc(r,"issues"),o=s.rows.map(c=>zf(c,e)),i=Q(o,e.query),a=Cc(i.length,o.length,s.total,e.query);return i.length===0?Tc(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):$r({...n,issues:i,aggregate:a,summary:`${Ac(i.length,o.length,e.query)} ${Hf(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return $r({...n,issue:_v(M(r),e),summary:`issue #${ie(M(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=vc(r,"runs"),o=s.rows.map(c=>Yf(c,e)),i=Q(o,e.query),a=Cc(i.length,o.length,s.total,e.query);return i.length===0?Tc(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):$r({...n,runs:i,aggregate:a,summary:`${Ac(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 $r({...n,run:Rv(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 gv(e,t,r){let n=Kf(M(r.view),{...e,action:"view",wide:!0}),s=Q(ce(r.checks).map(hv),e.query),o=M(r.comments).comments,i=Q(ce(o).map(yv).slice(-3),e.query);return Xe({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 hv(e){return{name:E(e,"name"),state:Un(e),bucket:E(e,"bucket"),conclusion:E(e,"conclusion"),workflow:E(e,"workflow"),link:E(e,"link")}}function yv(e){return{author:Qf(e.author),body:To(e,"body",Oc,!1),created:E(e,"createdAt")}}function vc(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 Cc(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function Tc(e,t,r,n,s){return Xe({...e,empty:!0,scope:bv(t),[r]:[],aggregate:n,summary:`0 ${wv(t)}`},s)}function bv(e){let t=We(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=We(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=We(e.passthrough,"--branch")??We(e.passthrough,"-b"),s=We(e.passthrough,"--workflow")??We(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function wv(e){let t=We(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Vf(e,t){let r={number:ie(e,"number"),title:E(e,"title"),state:Un(e),draft:!!e.isDraft};return Ic(r,e,t,["author","labels","url","updated"]),r}function Kf(e,t){let r=Vf(e,t);return r.body=To(e,"body",Oc,t.full),t.wide&&(r.base=E(e,"baseRefName"),r.head=E(e,"headRefName")),r}function zf(e,t){let r={number:ie(e,"number"),title:E(e,"title"),state:Un(e),labels:Xf(e.labels)};return Ic(r,e,t,["author","url","updated"]),r}function _v(e,t){let r=zf(e,t);return r.body=To(e,"body",Oc,t.full),r}function Yf(e,t){let r={id:ie(e,"databaseId"),name:E(e,"name"),status:Un(e),conclusion:E(e,"conclusion")};return Ic(r,e,t,["event","branch","workflow","created"]),r}function Rv(e,t){let r=Yf(e,t),n=ce(e.jobs).map(s=>({name:E(s,"name"),status:Un(s),conclusion:E(s,"conclusion"),log:To(s,"log",rv,t.full)}));return r.jobs=n,r}function To(e,t,r,n){let s=E(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 kv(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(Kt(r)){if(Kt(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 Sv(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 Hf(e,t){return e.every(r=>r.state===t)?t:"returned"}function Ac(e,t,r){return r?`${e}/${t}`:String(e)}function $r(e,t,r){return t.query?Xe(e,r):e}function Un(e){return(E(e,"state")||E(e,"status")).toLowerCase()}function Ic(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=Qf(t.author):s==="labels"?e.labels=Xf(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 Xf(e){return Array.isArray(e)?e.map(t=>Kt(t)?E(t,"name"):String(t)).filter(Boolean):[]}function Qf(e){return Kt(e)?E(e,"login"):""}function Wn(e){return e.trim()?JSON.parse(e):null}function ce(e){return Array.isArray(e)?e.filter(Kt):[]}function M(e){return Kt(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 Kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ev,tv,Oc,rv,nv,Co,Dc=h(()=>{"use strict";L();Us();$f();Jt();qr();Ne();ev={"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"]},tv={"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"]},Oc=160,rv=160,nv={"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"]};Co=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={};j(Mc,{renderTestContract:()=>Zf,runTestWrapper:()=>Tv});import{spawn as Ev}from"node:child_process";async function Tv(e,t){let r=Ot(e),n=await Lv(r.argv);return await Zf(e,n,t)}async function Zf(e,t,r){let n=Ot(e),o=eg(n.argv)==="vitest"?Dv(t.stdout):Nv(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let f=_e(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${Bv(o.durationSeconds)}`,c=Q(o.failures,n.query);if(r.level==="terse")return await Av(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,p=0;for(let f of c){let _=await $v(f.excerpt,n.argv.join(" "),r.store);u.push({suite:f.suite,name:f.name,excerpt:_.text}),l??=_.handle,p+=_.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 m=n.query?Xe(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(m)),stderr:Buffer.from(t.stderr),status:$c(t.status),signal:t.signal,payload:m,mintedHandle:l,bytesElided:p>0?p:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function Av(e,t,r,n,s,o,i){let a=Ov(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?Xe(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),p=Math.max(0,r.failures.length-a.length),d=a.some((w,x)=>w.excerpt!==r.failures[x].excerpt);if(p===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:$c(t.status),signal:t.signal,payload:u};let m={exit_code:n,summary:s};r.failures.length>0&&(m.failures=r.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let f=C(m),_=Buffer.byteLength(f),g=await o.store?.mint(Buffer.from(f),{command:e.join(" "),loss:{level:"terse",bytes_elided:_}});if(!g)throw new Error("terse test output requires an elision store");let b=`\u2026 elided ${p>0?`${p} failures`:"full detail"} (+${_}) \u2014 ${Ae(g)}`;return{stdout:Buffer.from(`${l}
|
|
102
|
+
${b}`),stderr:Buffer.from(t.stderr),status:$c(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:_,rowsElided:p,rawOutput:Buffer.from(f)}}function $c(e){return e===0||e===null?0:1}function Ov(e){let t=[],r=vv;for(let n of e.slice(0,Cv)){let s=Pv(n.excerpt,Math.min(xv,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function Pv(e,t){if(t<=0)return"";let r=e.split(`
|
|
98
103
|
`),n=r.length<=2?e:`${r[0]}
|
|
99
104
|
\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(c=>
|
|
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
|
|
103
|
-
\u2026 elided ${i} bytes (+${n.length}) \u2014 ${
|
|
104
|
-
`):""}function
|
|
105
|
-
`),status:1,signal:null}}return
|
|
106
|
-
`;if(!i&&Buffer.byteLength(c)<=
|
|
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
|
|
108
|
-
`),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??
|
|
105
|
+
${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function eg(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 Iv(e){if(eg(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 Lv(e){let t=Iv(e),r=Ev(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 Dv(e){let t=tg(e);if(!kt(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=St(t.numTotalTests),o=St(t.numFailedTests),i=Fv(St(t.startTime),St(t.endTime));for(let a of r){if(!kt(a))continue;let c=Ue(a.name)||Ue(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)kt(l)&&l.status==="failed"&&n.push({suite:c,name:Ue(l.fullName)||Ue(l.title)||Ue(l.name),excerpt:Mv(l.failureMessages)||Ue(l.failureMessage)})}return s||=r.reduce((a,c)=>!kt(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>kt(c)?a+St(c.perfStats&&kt(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function Nv(e){let t=e.split(`
|
|
106
|
+
`).filter(Boolean).map(c=>tg(c)).filter(kt);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+=St(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=St(c.failed),i+=St(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Ue(c.name).split("::").slice(0,-1).join("::"),name:Ue(c.name),excerpt:Ue(c.stdout)});continue}if(c.reason==="compiler-message"&&kt(c.message)){let u=Ue(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(`
|
|
107
|
+
`)}),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 $v(e,t,r){let n=Buffer.from(e);if(n.length<=Nc)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,Nc).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
|
|
108
|
+
\u2026 elided ${i} bytes (+${n.length}) \u2014 ${Ae(s)}`,handle:s,bytesElided:n.length}}function tg(e){try{return JSON.parse(e)}catch{return null}}function Mv(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
|
|
109
|
+
`):""}function Bv(e){return`${Number(e.toFixed(1))}s`}function Fv(e,t){return e>0&&t>e?(t-e)/1e3:0}function St(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ue(e){return typeof e=="string"?e:""}function kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Nc,xv,vv,Cv,Bc=h(()=>{"use strict";L();Jt();qr();Ne();Nc=320,xv=160,vv=Nc,Cv=3});var Hc={};j(Hc,{parseCatCommand:()=>jc,renderCatContract:()=>Vv,runCatWrapper:()=>qv});import{isUtf8 as jv}from"node:buffer";import{readFile as Hv}from"node:fs/promises";import{extname as Gv}from"node:path";async function qv(e,t){let r=jc(e),n;try{n=await Hv(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=_e(e.join(" "),"",o);return{stdout:$({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
|
|
110
|
+
`),status:1,signal:null}}return ag(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await ig(e,r,n,t)}async function Vv(e,t,r){if((t.status??0)!==0||t.signal){let i=_e(e.join(" "),t.stdout,t.stderr);return{stdout:$(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=jc(e),s=Buffer.from(t.stdout,"utf8");return ag(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await ig(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function jc(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=og(t[++i],Fc);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=og(u,Fc);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 ig(e,t,r,n){let s=r.toString("utf8"),o=Yv(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>sg(n.heavyByteThreshold,rg)||o.truncated;if(!ng(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=ng(t.file)?Kv(e,t.file,r,s,n.level,o):zv(e,t.file,r,s,o),c=`${C(a)}
|
|
111
|
+
`;if(!i&&Buffer.byteLength(c)<=sg(n.heavyByteThreshold,rg))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 ${Ae(u)}
|
|
112
|
+
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function Kv(e,t,r,n,s,o){let i=Ao(n),a=s==="terse"?Uv:Wv,c=Ao(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:Xv(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function zv(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:Ao(n).length,content:Ao(s.text),truncated:s.truncated}}function Yv(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
|
|
113
|
+
`),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??Fc,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
|
|
109
114
|
`)}${n&&i.length>0?`
|
|
110
|
-
`:""}`,truncated:i.length<s.length}}function
|
|
111
|
-
`);return t.at(-1)===""?t.slice(0,-1):t}function
|
|
112
|
-
`),s=
|
|
115
|
+
`:""}`,truncated:i.length<s.length}}function Xv(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&&!Qv(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function Ao(e){let t=e.split(`
|
|
116
|
+
`);return t.at(-1)===""?t.slice(0,-1):t}function ag(e){return e.includes(0)||!jv(e)}function ng(e){return Jv.has(Gv(e).toLowerCase())}function Qv(e){return["for","if","switch","while"].includes(e)}function sg(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function og(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var rg,Fc,Wv,Uv,Jv,Gc=h(()=>{"use strict";L();Jt();Ne();rg=8*1024,Fc=10,Wv=8,Uv=2,Jv=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var gg={};j(gg,{REPO_STORE_PATH:()=>Jc,mergeRspBlock:()=>pg,provisionRspRepoStore:()=>cC});import{constants as Zv}from"node:fs";import{access as eC,copyFile as tC,mkdir as ug,readFile as rC,rename as nC,writeFile as lg}from"node:fs/promises";import{dirname as sC,join as Jn,resolve as oC}from"node:path";async function cC(e,t={}){let r=oC(e),n=Jn(r,".red"),s=Jn(n,"config.yaml"),o=Jn(r,Jc);await ug(n,{recursive:!0}),await ug(sC(o),{recursive:!0});let i="";try{i=await rC(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=pg(i,{enabled:!0,ttlDays:t.ttlDays??Ee,ephemeralTtlHours:t.ephemeralTtlHours??xe,byteBudget:t.byteBudget??ve,heavyGitByteThreshold:t.heavyGitByteThreshold??nt}),c=a!==i;c&&await lg(s,a,"utf8");let u=!await Uc(o),l=!1,p=!1;if(u){let m=Jn(r,iC),f=Jn(r,aC);if(await Uc(m))await nC(m,o),p=!0;else if(await Uc(f))await tC(f,o),l=!0;else{let{provisionElisionStore:_}=await Promise.resolve().then(()=>(Hs(),ep)),g=process.env.REDDB_BIN;try{await _({uri:`file://${o}`,ttlDays:t.ttlDays??Ee,ephemeralTtlHours:t.ephemeralTtlHours??xe,byteBudget:t.byteBudget??ve})}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=uC(a,Jc);return d!==a&&await lg(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:p}}function pg(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Oo(t.ttlDays,Ee)}`,` ephemeralTtlHours: ${Oo(t.ephemeralTtlHours,xe)}`,` byteBudget: ${Oo(t.byteBudget,ve)}`,` heavyGitByteThreshold: ${Oo(t.heavyGitByteThreshold,nt)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
117
|
+
`),s=mg(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
118
|
`)}
|
|
114
|
-
`}let o=
|
|
119
|
+
`}let o=qc(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
|
|
115
120
|
`)}
|
|
116
|
-
`}function
|
|
117
|
-
`),n=
|
|
121
|
+
`}function mg(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Kc(n)&&Vc(n)===0&&fg(n)===t)return r}return-1}function qc(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Kc(e[s])&&Vc(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Vc(e){return(e.match(/^ */)?.[0]??"").length}function Kc(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function fg(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Oo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function uC(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
122
|
+
`),n=mg(r,"plugins");if(n===-1)return e;let s=qc(r,n,0),o=dg(r,"memory",n+1,s,2);if(o===-1)return e;let i=qc(r,o,2),a=[...r],c=dg(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
|
|
118
123
|
`)}
|
|
119
|
-
`}function
|
|
120
|
-
`}function
|
|
124
|
+
`}function dg(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(Kc(i)&&Vc(i)===s&&fg(i)===t)return o}return-1}async function Uc(e){try{return await eC(e,Zv.F_OK),!0}catch{return!1}}var Jc,iC,aC,hg=h(()=>{"use strict";ke();Te();Jc=Mi,iC=$u,aC=".red/memory/graph.rdb"});var kg={};j(kg,{runRspMcpServer:()=>dC});import{createInterface as lC}from"node:readline";async function dC(){let e=Ce(process.cwd(),process.env),t=lC({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 pC(n,e);wg({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){wg({jsonrpc:"2.0",id:typeof _g(r)?.id>"u"?null:_g(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function pC(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:bg(t)}]};if(!t.enabled)return{content:[{type:"text",text:bg(t)}],isError:!0};let n=_C(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:zt({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:zt({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:zt({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:zt(mC(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await fC(r.arguments,n)}]}}return{}}function zt(e){return`${H(e)}
|
|
125
|
+
`}function mC(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function fC(e,t){let r=hC(e?.payload);try{return await gC(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return Rg(r)}}async function gC(e,t,r){let n=yC(t?.level),s=await tc(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return Rg(s.output);let o=mo(e);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return zt({tool:"rsp_compress",level:n,detected:"text",bytes:Buffer.byteLength(e),text:o});let i=Buffer.from(e),a=await r.mint(i,{command:"rsp mcp compress",loss:{level:n,bytes_elided:i.length}});return bC(o,i.length,a,n)}function hC(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function yC(e){return e==="terse"?"terse":"brief"}function bC(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=yg(o.subarray(0,i)),c=yg(o.subarray(Math.max(0,o.length-i)));return zt({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:wC(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function Rg(e){return e.endsWith(`
|
|
121
126
|
`)?e:`${e}
|
|
122
|
-
`}function
|
|
123
|
-
`)}function
|
|
124
|
-
`)}function
|
|
125
|
-
`)}function _o(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(ko),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ko)),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=>tg(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of Bv(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${jv(u)}' ]`).join(" && ")).join(" || ");s.push(` ${tg(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Bv(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 Fv(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ko(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ko(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function tg(e){return e.replace(/[\\|)&;]/g,"\\$&")}function jv(e){return e.replace(/'/g,"'\\''")}function Hv(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var ng=y(()=>{"use strict";Bn()});function Lc(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"&&Gv(t.chosenOption)&&Wv(t.outcome)&&Uv(t.cost)}function Gv(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 Uv(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 sg=y(()=>{});import{createHash as Jv}from"node:crypto";function hg(e,t){return new Nc(e,t)}function og(e){let t=Number(e.red_entity_id??e.rid),r=$c(e.properties??e.PROPERTIES),n=yg(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 ig(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=bg(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:$c(e.properties??e.PROPERTIES)}}function Kv(e){let t=Number(e.red_entity_id??e.rid),r=$c(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Lc(r)?null:{rid:t,event:r}}function $c(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Ro(e)?e:{}}function yg(e){let t=e==="contact"?"person":e;if(qv.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function bg(e){if(Vv.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function zv(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function ag(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Vt(e){return Ro(e)?e:{}}function cg(e,t){return Vt(e)[t]}function ug(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function lg(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function dg(e){let t=Vt(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 Ro(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Dc(e){return e!=null}function Yv(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Xv(e){return Jv("sha256").update(JSON.stringify(e)).digest("hex")}function Qv(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function mg(e){return`artifact-hash:${e}`}function fg(e,t,r){return`connection:${e}:${t}:${r}`}function pg(){return"model-tier-bandit:v1"}function Zv(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function gg(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function wg(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+gg(r,a)*3+gg(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 e0(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=_g({...wg(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return qt(s)}function _g(e){return{...e,lexical:qt(e.lexical),tags:qt(e.tags),kind:qt(e.kind),connections:qt(e.connections),vector:qt(e.vector),total:qt(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function qt(e){return Math.round(e*1e3)/1e3}function t0(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 r0(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 n0(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Ue,qv,Vv,Nc,kg=y(()=>{"use strict";sg();Ue={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},qv=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Vv=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Nc=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(Vt(r));if(t==="getArtifact")return await this.getArtifact(cg(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Vt(r);return await this.search(ug(n,"query"),lg(n,"limit")??10,dg(n.options))}if(t==="think"){let n=Vt(r);return await this.think(ug(n,"query"),lg(n,"limit")??8,dg(n.options))}if(t==="link")return await this.link(Vt(r));if(t==="backlinks")return await this.backlinks(cg(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Vt(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 ${Ue.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ue.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Ue.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:n0(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=yg(ae(t.kind)||"note"),o=Yv(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=Xv([s,r,n,o,ae(t.sourcePath),ae(t.sourceSession)]),c=await this.kv().get(mg(a));if(c!=null){let p=await this.getArtifact(Number(c));if(p)return p}let u=`${Qv(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:Ro(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${Ue.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=og(d);if(!f)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(mg(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 ${Ue.artifacts}`)).rows.map(og).filter(Dc)}async search(t,r,n={}){let s=Zv(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=wg(u,s),m=_g({...l,connections:e0(u,s,a,c),vector:0});return{artifact:u,score:m.total,score_breakdown:m,excerpt:t0(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 r0(t,s)}async link(t){let r=await this.getArtifact(ag(t.from)),n=await this.getArtifact(ag(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=bg(ae(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(m=>m.rid===o);if(l)return l}let i={reason:ae(t.reason),confidence:ae(t.confidence)||"explicit",created_at:Date.now(),metadata:Ro(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${Ue.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=ig(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(fg(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 ${Ue.connections}`)).rows.map(ig).filter(Dc)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=zv(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(!Lc(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Ue.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 ${Ue.outcomeEvents}`)).rows.map(Kv).filter(Dc).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(pg());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(pg(),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(fg(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Ue.kv)}}});var Dg={};j(Dg,{runResidentServer:()=>d0});import{randomUUID as Nr}from"node:crypto";import{execFileSync as s0,spawn as o0}from"node:child_process";import{existsSync as i0}from"node:fs";import{mkdir as Tg,rename as a0,rm as Rg,writeFile as Pg}from"node:fs/promises";import{createServer as c0}from"node:net";import{dirname as jc,join as So}from"node:path";import{fileURLToPath as u0,pathToFileURL as l0}from"node:url";async function d0(e){await Tg(jc(e.socketPath),{recursive:!0});let t=E0();S0();let r=e.telemetryDrainTimeoutMs??Og,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??as,a,c,u=!1,l=new Set,m=e.telemetryDrainIntervalMs??3e4,d=c0(v=>{l.add(v),v.once("close",()=>l.delete(v)),p(),A0(v,async O=>{p();let F=await I0(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),ge={id:O.id,ok:!0,value:F,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};Lg(v,ge),O.op==="handover"&&setImmediate(()=>f())})});function f(){o=!0,u=!0,c=R0(c),d.close();for(let v of l)v.destroy()}function p(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{f()},i),a.unref())}let h=["SIGINT","SIGTERM"].map(v=>{let O=()=>{Eo(),d.close();for(let F of l)F.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 F=await ft.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),ge=Number(process.hrtime.bigint()-v)/1e6,Ae=new Fc(F,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??os,byteBudget:e.telemetryByteBudget??e.byteBudget??is});if(o){await F.close();return}if(await Mc(Ae,r),o){await F.close();return}n={kind:"ready",store:F,telemetry:Ae,storeOpenCount:1,storeElapsedMs:ge},s=setInterval(()=>{let te=n.kind==="ready"?n:void 0;te&&Mc(te.telemetry,r)},m),s.unref(),p()})().catch(v=>{n={kind:"failed",error:v instanceof Error?v:new Error(String(v))},p()}),e.pidPath&&await Pg(e.pidPath,`${process.pid}
|
|
126
|
-
`,{encoding:"utf8",mode:384});let
|
|
127
|
-
`,{encoding:"utf8",mode:384}),await
|
|
128
|
-
`)}}async function
|
|
127
|
+
`}function yg(e){return e.toString("utf8").replace(/�$/g,"")}function wC(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 _C(e){return bi(process.cwd(),e)}function bg(e){return zt({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 wg(e){process.stdout.write(`${JSON.stringify(e)}
|
|
128
|
+
`)}function _g(e){try{return JSON.parse(e)}catch{return null}}var Sg=h(()=>{"use strict";$e();Te();Ln();Dt()});var xg={};j(xg,{renderShellInit:()=>RC});function RC(e,t=jn){if(e==="fish")return kC(t);if(e==="bash"||e==="zsh")return SC(e,t);throw new Error(`unsupported shell: ${e}`)}function kC(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(Io))].map(r=>` abbr --add --position command -- ${r} '${CC(`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(`
|
|
129
|
+
`)}function SC(e,t){let r=xC(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Po("git",r.get("git")??[]),...Po("gh",r.get("gh")??[]),...Po("vitest",r.get("vitest")??[]),...Po("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(`
|
|
130
|
+
`)}function Po(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(Io),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(Io)),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=>Eg(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of EC(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${vC(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Eg(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function EC(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 xC(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!Io(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function Io(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Eg(e){return e.replace(/[\\|)&;]/g,"\\$&")}function vC(e){return e.replace(/'/g,"'\\''")}function CC(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var vg=h(()=>{"use strict";Hn()});function zc(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"&&TC(t.chosenOption)&&AC(t.outcome)&&OC(t.cost)}function TC(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function AC(e){return e==="success"||e==="failure"||e==="escalated"}function OC(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 Cg=h(()=>{});import{createHash as PC}from"node:crypto";function Fg(e,t){return new Xc(e,t)}function Tg(e){let t=Number(e.red_entity_id??e.rid),r=Qc(e.properties??e.PROPERTIES),n=jg(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 Ag(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=Hg(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:Qc(e.properties??e.PROPERTIES)}}function DC(e){let t=Number(e.red_entity_id??e.rid),r=Qc(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!zc(r)?null:{rid:t,event:r}}function Qc(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Lo(e)?e:{}}function jg(e){let t=e==="contact"?"person":e;if(IC.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Hg(e){if(LC.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function NC(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Og(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Xt(e){return Lo(e)?e:{}}function Pg(e,t){return Xt(e)[t]}function Ig(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Lg(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Dg(e){let t=Xt(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 Lo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Yc(e){return e!=null}function $C(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function MC(e){return PC("sha256").update(JSON.stringify(e)).digest("hex")}function BC(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Ng(e){return`artifact-hash:${e}`}function $g(e,t,r){return`connection:${e}:${t}:${r}`}function Mg(){return"model-tier-bandit:v1"}function FC(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Bg(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function Gg(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+Bg(r,a)*3+Bg(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 jC(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=Wg({...Gg(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Yt(s)}function Wg(e){return{...e,lexical:Yt(e.lexical),tags:Yt(e.tags),kind:Yt(e.kind),connections:Yt(e.connections),vector:Yt(e.vector),total:Yt(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Yt(e){return Math.round(e*1e3)/1e3}function HC(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 GC(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 WC(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Je,IC,LC,Xc,Ug=h(()=>{"use strict";Cg();Je={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},IC=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),LC=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Xc=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(Xt(r));if(t==="getArtifact")return await this.getArtifact(Pg(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=Xt(r);return await this.search(Ig(n,"query"),Lg(n,"limit")??10,Dg(n.options))}if(t==="think"){let n=Xt(r);return await this.think(Ig(n,"query"),Lg(n,"limit")??8,Dg(n.options))}if(t==="link")return await this.link(Xt(r));if(t==="backlinks")return await this.backlinks(Pg(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Xt(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:WC(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=jg(ae(t.kind)||"note"),o=$C(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=MC([s,r,n,o,ae(t.sourcePath),ae(t.sourceSession)]),c=await this.kv().get(Ng(a));if(c!=null){let f=await this.getArtifact(Number(c));if(f)return f}let u=`${BC(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:Lo(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 *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let m=Tg(d);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Ng(a),m.rid),await this.materializeTagConnections(m),m}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${Je.artifacts}`)).rows.map(Tg).filter(Yc)}async search(t,r,n={}){let s=FC(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=Gg(u,s),p=Wg({...l,connections:jC(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:HC(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 GC(t,s)}async link(t){let r=await this.getArtifact(Og(t.from)),n=await this.getArtifact(Og(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=Hg(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:Lo(t.metadata)?t.metadata:void 0},c=(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,i)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Ag(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put($g(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 ${Je.connections}`)).rows.map(Ag).filter(Yc)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=NC(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(!zc(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(DC).filter(Yc).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Mg());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Mg(),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($g(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Je.kv)}}});var nh={};j(nh,{runResidentServer:()=>XC});import{randomUUID as Mr}from"node:crypto";import{execFileSync as UC,spawn as JC}from"node:child_process";import{existsSync as qC}from"node:fs";import{mkdir as Xg,rename as VC,rm as Jg,writeFile as Qg}from"node:fs/promises";import{createServer as KC}from"node:net";import{dirname as ru,join as Do}from"node:path";import{fileURLToPath as zC,pathToFileURL as YC}from"node:url";async function XC(e){await Xg(ru(e.socketPath),{recursive:!0});let t=l0();u0();let r=e.telemetryDrainTimeoutMs??Zg,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??bs,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=KC(x=>{l.add(x),x.once("close",()=>l.delete(x)),f(),y0(x,async O=>{f();let F=await b0(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),he={id:O.id,ok:!0,value:F,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};rh(x,he),O.op==="handover"&&setImmediate(()=>m())})});function m(){o=!0,u=!0,c=c0(c),d.close();for(let x of l)x.destroy()}function f(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{m()},i),a.unref())}let g=["SIGINT","SIGTERM"].map(x=>{let O=()=>{No(),d.close();for(let F of l)F.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,O),{signal:x,handler:O}});await new Promise((x,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise(te=>setTimeout(te,O));let F=await Gt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),he=Number(process.hrtime.bigint()-x)/1e6,Pe=new tu(F,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??hs,byteBudget:e.telemetryByteBudget??e.byteBudget??ys});if(o){await F.close();return}if(await Zc(Pe,r),o){await F.close();return}n={kind:"ready",store:F,telemetry:Pe,storeOpenCount:1,storeElapsedMs:he},s=setInterval(()=>{let te=n.kind==="ready"?n:void 0;te&&Zc(te.telemetry,r)},p),s.unref(),f()})().catch(x=>{n={kind:"failed",error:x instanceof Error?x:new Error(String(x))},f()}),e.pidPath&&await Qg(e.pidPath,`${process.pid}
|
|
131
|
+
`,{encoding:"utf8",mode:384});let y=e.residentVersion??"0.0.0-dev",b=e.registryPath??Do(X(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await rs(b,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:y})}catch{}await new Promise(x=>d.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await Jg(e.socketPath,{force:!0});let w=n;w.kind==="ready"&&(await Zc(w.telemetry,r,u),await w.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:O}of g)process.off(x,O);t?.kill("SIGTERM"),No(),e.pidPath&&await Jg(e.pidPath,{force:!0}),await ns(b)}async function n0(e,t,r=new Date){let n=await Gs(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=Do(X(t),t0),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 Xg(ru(a),{recursive:!0}),await Qg(c,`${H(u)}
|
|
132
|
+
`,{encoding:"utf8",mode:384}),await VC(c,a)}async function Zc(e,t=Zg,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await th(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
|
|
133
|
+
`)}}async function s0(e){let t=[];for(let r of r0){let n=await o0(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await i0(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${eh(r)}`))}return t}async function o0(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 i0(e,t,r){let n=a0(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${eh(t)}`)}function a0(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 eh(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function c0(e){return e&&clearTimeout(e),setTimeout(()=>{No(),process.exit(0)},e0)}function u0(){qg||(qg=!0,process.on("exit",()=>No()))}function l0(){if(process.platform==="win32")return;let t=JC(process.execPath,["-e",`
|
|
129
134
|
const { execFileSync } = require("node:child_process");
|
|
130
135
|
const parentPid = Number(process.argv[1]);
|
|
131
136
|
const known = new Set();
|
|
@@ -166,24 +171,23 @@ const timer = setInterval(() => {
|
|
|
166
171
|
clearInterval(timer);
|
|
167
172
|
process.exit(0);
|
|
168
173
|
}, 500);
|
|
169
|
-
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function
|
|
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??
|
|
171
|
-
`)}catch{}}async function
|
|
172
|
-
`}function
|
|
173
|
-
`}function
|
|
174
|
-
`)}function
|
|
175
|
-
`}async function
|
|
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
|
|
177
|
-
`);let s=await
|
|
178
|
-
`),await
|
|
179
|
-
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function
|
|
180
|
-
`),2}let r=
|
|
181
|
-
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function
|
|
182
|
-
`}async function
|
|
174
|
+
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function No(){for(let e of d0())try{process.kill(e,"SIGTERM")}catch{}}function d0(){if(process.platform==="win32")return[];let e="";try{e=UC("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 p0(e){if(e.collection!==de)return e;let t=await Vg(e.raw_text,zg(e.raw_bytes)),r=await Vg(e.emitted_text,zg(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 Vg(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=QC)try{return await th((async()=>({tokens:(await m0())("cl100k_base").encode(e).length,estimated:!1}))(),ZC,"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 m0(){return Kg??=import(YC(f0()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Kg}function f0(){let e=ru(zC(import.meta.url)),r=[Do(e,"..","node_modules","js-tiktoken","dist","index.js"),Do(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>qC(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function zg(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function Y(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function eu(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function th(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 g0(e){try{return JSON.parse(e)}catch{return e}}function h0(e){return Yg(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Yg(t)&&(t.collection===se||t.collection===K||t.collection===de||t.collection===Fe)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Yg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function y0(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
|
|
175
|
+
`);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??Mr(),ok:!1,error:a instanceof Error?a.message:String(a)};rh(e,u)}finally{e.end()}})()})}function rh(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
|
|
176
|
+
`)}catch{}}async function b0(e,t,r,n){if(t.op==="handover")return{handover:!0,version:n,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:n};if(t.op==="stats")return await s.stats();if(t.op==="recovery-handles")return await s.recoveryHandles(t.limit);if(t.op==="accounting-stats"){let o=s.redDb();if(!o)throw new Error("rsp accounting stats require the shared RedDB store");return await Ta(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 Gs(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 Aa(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return _0(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await w0(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function w0(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await Fg(s,t).request(r,n)}function _0(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var QC,ZC,Zg,e0,t0,r0,tu,qg,Kg,sh=h(()=>{"use strict";ke();ss();$e();Hs();Ug();je();Te();QC=256*1024,ZC=500,Zg=2e3,e0=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),t0="rsp-status-summary.json",r0=[se,K,de,Fe,an],tu=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 s0(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 Ki(this.opts.rootDir,async a=>{let c=_r(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:Y(c.command)||"unknown",source_id:Y(c.id),source_collection:Y(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 n0(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:Mr(),a={...await p0(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:${Y(r.id)||Mr()}`,created_at:Y(r.created_at)||Y(r.ts)||new Date().toISOString(),event_type:"invocation",command:Y(r.command)||"unknown",command_class:eu(Y(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===Fe?await this.writeEvent(t,{collection:se,id:`mirror:${Y(r.id)||Mr()}`,created_at:Y(r.created_at)||Y(r.ts)||new Date().toISOString(),event_type:"invocation",command:Y(r.command)||"unknown",command_class:eu(Y(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:Y(r.reason)||"unknown",wrapper_family:Y(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:Y(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:Fe,id:Mr(),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:${Mr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:eu(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(an).get("index:v1"),n=typeof r=="string"?g0(r):r;return h0(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(an).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})}};qg=!1});Ne();function Re(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function U(e,t){let r=Re(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function Cu(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function Tu(e){let t={level:"lossless",positional:[]},r=[];for(let n=0;n<e.length;n++){let s=e[n];if(s==="--store-uri")t.storeUri=e[++n];else if(s==="--brief")t.level="brief";else if(s==="--terse")t.level="terse";else if(s==="--query")t.query=e[++n];else if(s.startsWith("--query="))t.query=s.slice(8);else{if(r.length===0&&s.startsWith("--"))throw new ei(s);r.push(s)}}return t.query&&r[0]!=="show"&&!r.some(n=>n==="--query"||n.startsWith("--query="))&&r.push("--query",t.query),t.command=r[0],t.handle=r[1],t.positional=r,t}var ei=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return Kn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function nr(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function Au(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 zn(e,t){let r=Re(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 Ou(e){return e.includes("--full")}$e();ni();Ne();import{existsSync as R0}from"node:fs";import{fileURLToPath as k0}from"node:url";$e();qr();import{existsSync as Dk}from"node:fs";import{fileURLToPath as Nk}from"node:url";$e();ci();import{existsSync as Hy}from"node:fs";import{fileURLToPath as Gy}from"node:url";async function cr(e,t){let r={stats:Wy(e.telemetryByteBudget),telemetry:ki(t)};if(!e.storeUri.startsWith("file://"))return r;let n=Gy(e.storeUri);if(!Hy(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Dt(),Xr)),o=s(process.cwd(),e);try{return n.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:ki(t)}}catch{return r}finally{await o.close()}}function Si(e,t=ki(30),r=!1){return`${H(Ei(e,t,r))}
|
|
177
|
+
`}function Ei(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??os(),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:Uy(t.savings),dollars_saved_estimate_usd_display:Jy(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:Ri(t.health.degradation_rate),show_hit_rate_display:Ri(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:Ri(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),by_command_family:r?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:r?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:_i(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:_i(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:_i(t.latency.store_elapsed_ms_avg)}}}function dl(e){return`${H(e)}
|
|
178
|
+
`}function ki(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[],by_command_family:[]}}}function Wy(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:os()}}function os(){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 xi(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
|
|
179
|
+
`)}function Uy(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 Jy(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Vr(e.dollars_saved_estimate_usd):`${Vr(e.dollars_saved_low_usd)}-${Vr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Vr(e.dollars_saved_estimate_usd)})`}function _i(e){return e==null?"none":String(e)}function Ri(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function tm(e){let{stats:t,telemetry:r}=await cr(e,30),[n,s]=await Promise.all([$k(e),Promise.resolve().then(()=>(Ka(),Va)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s}}function rm(e){let t=Ei(e.stats,e.telemetry,!1),r=oi({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??os()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},Mk(e));return`${H(r)}
|
|
180
|
+
`}async function $k(e){if(!e.storeUri.startsWith("file://"))return[];let t=Nk(e.storeUri);if(!Dk(t))return[];let{residentElisionStore:r}=await Promise.resolve().then(()=>(Dt(),Xr)),n=r(process.cwd(),e);try{return await n.recoveryHandles(5)}catch{return[]}finally{await n.close()}}function Mk(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"]}$e();Ne();import{existsSync as ix}from"node:fs";import{fileURLToPath as ax}from"node:url";je();import{spawn as fo}from"node:child_process";async function Jm(e,t,r){let n=process.hrtime.bigint(),s=await RE(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return kE(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function RE(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(()=>(so(),no)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(Mn(),$n)).then(i=>i.parseExecCommandLine(e));r=fo(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=fo(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)}
|
|
181
|
+
`;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 qm(e){return e>0&&Math.random()<e}async function Fn(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
|
|
182
|
+
`);let s=await zm(t);if(n){let o=SE(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(je(),Ws));Um(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:ic(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})),Um(i(n,{collection:c,ts:new Date().toISOString(),command:ic(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Vm(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${go()}, passing through
|
|
183
|
+
`),await zm(e)}function go(){return"rsp is not enabled in this directory; run /red-setup"}function Km(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function He(e){return ic(e.positional)}function ic(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 Bn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function kE(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:He(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};pt(e,{collection:"rsp_accounting_events_v1",...i}),pt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function SE(e,t,r){let n=t[0]??"unknown",s=EE(r)||e;return{reason:Wm(r)==="ENOENT"||Wm(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:vE(r)??1,stderrHead:xE(s,240)}}function EE(e){return e instanceof Error?Bn(e.message):Bn(String(e??""))}function xE(e,t){let r=Bn(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Wm(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function vE(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 Um(e){e.catch(()=>{})}async function zm(e){if(e[0]==="exec"||e[0]==="proxy")return await CE(e);let t=e[0];if(!t)return 2;let r=fo(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)}
|
|
184
|
+
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function CE(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(so(),no));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(Mn(),$n));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
|
|
185
|
+
`),2}let r=fo(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
186
|
+
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function mf(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")),pf("disabled",n,r);n.push(await cx(e)),n.push(e.proxyEnabled?Z("proxy_mode","proxy routing enabled for pre-exec rewrites"):Or("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(Ze(),Lt));if(n.push(ux(await o(t))),n.push(lx(e)),gf(e)){let{telemetry:i}=await cr(e,r);n.push(dx(i,r))}else n.push(Z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return pf(n.some(i=>!i.pass)?"fail":"pass",n,r)}function ff(e){let{exitCode:t,...r}=e;return`${H({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
|
|
187
|
+
`}async function cx(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(()=>(Hn(),Ro)),r=t("git status");return r.kind==="rewrite"?Z("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):Or("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Or("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?Bn(t.message):"unknown error"}`,"rsp setup")}}function ux(e){return e.state==="registered-alive-socket-healthy"?Z("resident_liveness","resident registry points at a healthy socket"):Or("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function lx(e){return e.storeUri.startsWith("file://")?gf(e)?Z("store_provisioning","rsp store exists for this directory"):Or("store_provisioning","rsp store is not provisioned","rsp setup"):Z("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function dx(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 Or("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,px(s,t))}function px(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 gf(e){if(!e.storeUri.startsWith("file://"))return!0;try{return ix(ax(e.storeUri))}catch{return!1}}function Z(e,t){return{name:e,pass:!0,finding:t}}function Or(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Zo({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function pf(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)}}gc();function wf(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${gx(t).join(`
|
|
183
188
|
`)}
|
|
184
|
-
`}function PE(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}`)]}ke();Te();import{spawn as OE}from"node:child_process";import{createHash as AE}from"node:crypto";import{existsSync as IE,readFileSync as LE,statSync as DE}from"node:fs";import{tmpdir as NE}from"node:os";import{dirname as $E,join as wt}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?(Wt(HE(s,e,t,i,n.lastResponseMetrics())),o&&ME(s,o)):GE(s,e,t,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Wt(e){e.catch(()=>{})}async function fo(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Te(),pn));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 ME(e,t){try{let r=et(e),n=DE(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!jE(r,Date.now()-s))return;let o=BE(e),i=FE(o),a=wt(i,"rsp.sock"),c=wt(i,"rsp.pid"),u=wt(X(o),"rsp-resident.pid.json"),l=wt(o,".red","tmp","rsp","wake.lock");OE(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 BE(e){let t=e;for(;;){if(IE(wt(t,".git")))return t;let r=$E(t);if(r===t)return e;t=r}}function FE(e){let t=AE("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=wt(r,"red-skills",t);if(wt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return wt(NE(),`red-skills-${n}`,t)}function jE(e,t){try{let r=LE(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 HE(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(),pn));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 GE(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);gt(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}),gt(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 Et=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}},Cc=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function Fp(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Cc,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(Za(),zf));if(i(e.positional))return await ee(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(jt(),Ma)),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(()=>(bc(),yc)),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(()=>(Rc(),kc)),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(()=>(vc(),xc)),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(()=>(Ln(),In)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await ee(e,a,o,s)}}catch(i){return Zt(i)?(process.stdout.write(i.render()),2):await Nn("wrapper failed",e.positional,i,r)}finally{await s.close()}return await Nn("wrapper failed",e.positional,n,r)}async function $g(e=process.argv.slice(2)){let t=Eu("rsp");if(du(e))return process.stdout.write(Yf(e)),0;let r=mu(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(Bn(),uo));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(Bn(),uo));return await g()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Pn(),Ha));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Pn(),Ha));return await g()}if(r.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(Vp(),qp)),h=await g(process.cwd());return process.stdout.write(ta(h)),0}if(r.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(eg(),Zp));return await g(),0}if(r.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Ia(),Aa));return await g(r.positional)}if(r.command==="shell-init"){let g=r.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write($({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:h}=await Promise.resolve().then(()=>(ng(),rg));return process.stdout.write(h(g)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Ce(),yl)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(st(),Gt)),h=g(process.cwd()),b=await Uf(s,h,qn(r.positional,1));return process.stdout.write(Jf(b)),b.exitCode}let o=Ef(r.command);if(!s.enabled)return o?await Sf(r.positional):(process.stdout.write(`${no()}
|
|
185
|
-
`),0);if(r.command==="git"&&
|
|
186
|
-
`),0)}if(r.command==="warm-resident"){let g=i(process.cwd()),
|
|
187
|
-
`),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(
|
|
188
|
-
`),b.status}if(!r.command){let g=await
|
|
189
|
-
`),1;let h=await g.telemetryGains(qn(r.positional,28));return process.stdout.write(td(h)),0}if(r.command==="git"){if(Wt(m()),lo(r.positional)){let E=process.hrtime.bigint();return await ee(r,await mo(),E,void 0,u.rootDir)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(jt(),Ma)),h=new Et(()=>l(!1));p=()=>h.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:h,heavyGitByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,h,u.rootDir)}if(r.command==="gh"){Wt(m());let{runGhWrapper:g}=await Promise.resolve().then(()=>(bc(),yc)),h=new Et(()=>l(!1));p=()=>h.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:h});return await ee(r,w,b,h,u.rootDir)}if(r.command==="vitest"||r.command==="cargo"){Wt(m());let{runTestWrapper:g}=await Promise.resolve().then(()=>(Rc(),kc)),h=new Et(()=>l(!1));p=()=>h.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:h});return await ee(r,w,b,h,u.rootDir)}if(r.command==="cat"){Wt(m());let{runCatWrapper:g}=await Promise.resolve().then(()=>(vc(),xc)),h=new Et(()=>l(!1));p=()=>h.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:h,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,h,u.rootDir)}if(r.command==="exec"){Wt(m());let{runExecWrapper:g}=await Promise.resolve().then(()=>(Ln(),In)),h=new Et(()=>l(!1));p=()=>h.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:h,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,h,u.rootDir)}if(r.command==="show"&&r.handle){let g=await f();p=()=>g.close();let h=await g.get(r.handle);if(h&&"original"in h&&h.original)return process.stdout.write(h.original),await fo(u.rootDir,r.handle,!0,h.original.length),0;if(h?.status==="expired"){let w=$({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${h.expired_at}`,help:h.command});return process.stdout.write(w),await fo(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 fo(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(g){if(Zt(g))return process.stdout.write(g.render()),2;if(o)return await Nn("wrapper failed",r.positional,g,u.rootDir);throw g}finally{await p?.()}}function M0(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}Ne();import.meta.url===`file://${process.argv[1]}`&&$g().then(e=>process.exit(e),e=>{Zt(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{$g as main,ta as renderSetupResult,Zi as renderStats};
|
|
189
|
+
`}function gx(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}`)]}ke();je();import{spawn as hx}from"node:child_process";import{createHash as yx}from"node:crypto";import{existsSync as bx,readFileSync as wx,statSync as _x}from"node:fs";import{tmpdir as Rx}from"node:os";import{dirname as kx,join as wt}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?(Vt(Cx(s,e,t,i,n.lastResponseMetrics())),o&&Sx(s,o)):Tx(s,e,t,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Vt(e){e.catch(()=>{})}async function Eo(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(je(),Ws));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 Sx(e,t){try{let r=st(e),n=_x(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!vx(r,Date.now()-s))return;let o=Ex(e),i=xx(o),a=wt(i,"rsp.sock"),c=wt(i,"rsp.pid"),u=wt(X(o),"rsp-resident.pid.json"),l=wt(o,".red","tmp","rsp","wake.lock");hx(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 Ex(e){let t=e;for(;;){if(bx(wt(t,".git")))return t;let r=kx(t);if(r===t)return e;t=r}}function xx(e){let t=yx("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=wt(r,"red-skills",t);if(wt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return wt(Rx(),`red-skills-${n}`,t)}function vx(e,t){try{let r=wx(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 Cx(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(()=>(je(),Ws));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:He(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:He(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:He(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:He(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function Tx(e,t,r,n){try{let s=Buffer.concat([r.stdout,r.stderr]),o=Buffer.concat([r.rawOutput??r.stdout,r.stderr]);pt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:He(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}),pt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:He(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 Et=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}},Wc=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function cg(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Wc,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(gc(),bf));if(i(e.positional))return await ee(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Jt(),Za)),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(()=>(Bc(),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(()=>(Gc(),Hc)),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(()=>(Mn(),$n)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await ee(e,a,o,s)}}catch(i){return nr(i)?(process.stdout.write(i.render()),2):await Fn("wrapper failed",e.positional,i,r)}finally{await s.close()}return await Fn("wrapper failed",e.positional,n,r)}async function oh(e=process.argv.slice(2)){let t=Yn("rsp");if(Cu(e))return process.stdout.write(wf(e)),0;let r=Tu(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(Hn(),Ro));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(Hn(),Ro));return await g()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Ln(),nc));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Ln(),nc));return await g()}if(r.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(hg(),gg)),y=await g(process.cwd());return process.stdout.write(xi(y)),0}if(r.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(Sg(),kg));return await g(),0}if(r.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Ka(),Va));return await g(r.positional)}if(r.command==="shell-init"){let g=r.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write($({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:y}=await Promise.resolve().then(()=>(vg(),xg));return process.stdout.write(y(g)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Te(),ql)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(Ze(),Lt)),y=g(process.cwd()),b=await mf(s,y,zn(r.positional,1));return process.stdout.write(ff(b)),b.exitCode}let o=Km(r.command);if(!s.enabled)return o?await Vm(r.positional):(process.stdout.write(`${go()}
|
|
190
|
+
`),0);if(r.command==="git"&&ko(r.positional)){let g=process.hrtime.bigint();return await ee(r,await So(),g,void 0,await fc(process.cwd()))}let{resolveResidentPaths:i,ensureResidentServer:a}=await Promise.resolve().then(()=>(Ze(),Lt)),c=i(process.cwd());if(o&&qm(s.measurementHoldoutShare))return await Jm(r,c.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(sh(),nh)),y=i(process.cwd()),b=Re(r.positional,"--socket")??y.socketPath,w=n(process.cwd(),process.env,r.storeUri??Re(r.positional,"--store-uri"));return w.enabled?(await g({socketPath:b,pidPath:Re(r.positional,"--pid-file")??i(process.cwd()).pidPath,rootDir:y.rootDir,storeUri:w.storeUri,ttlDays:U(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:U(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:U(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:U(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:U(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:U(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:U(r.positional,"--idle-ms")??w.idleMs,residentVersion:Re(r.positional,"--resident-version")??t.version,registryPath:Re(r.positional,"--registry")??y.registryPath}),0):(process.stdout.write(`${go()}
|
|
191
|
+
`),0)}if(r.command==="warm-resident"){let g=i(process.cwd()),y=Re(r.positional,"--socket")??g.socketPath,b=Re(r.positional,"--wake-lock")??g.wakeLockPath,w=n(process.cwd(),process.env,r.storeUri??Re(r.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:x}=await Promise.resolve().then(()=>(Ze(),Lt));return await x({...g,socketPath:y,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:U(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:U(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:U(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:U(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:U(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:U(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:U(r.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:g}=await Promise.resolve().then(()=>(so(),no));return await g(r.positional,{telemetryRoot:c.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:g,sweepResidentRegistry:y}=await Promise.resolve().then(()=>(Ze(),Lt)),b=r.command==="sweep"?await y(c):await g(c);return process.stdout.write(`${H(b)}
|
|
192
|
+
`),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(Us(),cp)),y=Au(r.positional);if(!y)return process.stdout.write($({command:r.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let b=await g({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:c.rootDir,command:`rsp ${r.positional.join(" ")}`});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
|
|
193
|
+
`),b.status}if(!r.command){let g=await tm(s);return process.stdout.write(rm(g)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!R0(k0(s.storeUri)))return o?await cg(r,s,c.rootDir):(process.stdout.write($({command:He(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:u,residentElisionStore:l,reportResidentEntryDiagnostic:p}=await Promise.resolve().then(()=>(Dt(),Xr)),d=(g=!0)=>Promise.resolve(l(process.cwd(),s,{ensureResident:g,paths:c})),m=()=>a(c,u(s,t.version)).catch(g=>void p(g)),f=()=>d(),_;try{if(r.command==="stats"){let{stats:g,telemetry:y}=await cr(s,zn(r.positional,30));return process.stdout.write(Si(g,y,Ou(r.positional))),0}if(r.command==="gains"){let g=await f();_=()=>g.close();let y;try{y=await g.telemetryGains(zn(r.positional,28))}catch(b){return process.stdout.write($({command:`rsp ${r.positional.join(" ")}`.trim(),category:"real-error",error:b instanceof Error?b.message:"rsp gains unavailable",help:"rsp gains requires the shared RedDB store"})),1}return process.stdout.write(dl(y)),0}if(r.command==="git"){if(Vt(m()),ko(r.positional)){let x=process.hrtime.bigint();return await ee(r,await So(),x,void 0,c.rootDir)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(Jt(),Za)),y=new Et(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyGitByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,y,c.rootDir)}if(r.command==="gh"){Vt(m());let{runGhWrapper:g}=await Promise.resolve().then(()=>(Dc(),Lc)),y=new Et(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y});return await ee(r,w,b,y,c.rootDir)}if(r.command==="vitest"||r.command==="cargo"){Vt(m());let{runTestWrapper:g}=await Promise.resolve().then(()=>(Bc(),Mc)),y=new Et(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y});return await ee(r,w,b,y,c.rootDir)}if(r.command==="cat"){Vt(m());let{runCatWrapper:g}=await Promise.resolve().then(()=>(Gc(),Hc)),y=new Et(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,y,c.rootDir)}if(r.command==="exec"){Vt(m());let{runExecWrapper:g}=await Promise.resolve().then(()=>(Mn(),$n)),y=new Et(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyByteThreshold:s.heavyGitByteThreshold});return await ee(r,w,b,y,c.rootDir)}if(r.command==="show"&&r.handle){let g=await f();_=()=>g.close();let y=await g.get(r.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await Eo(c.rootDir,r.handle,!0,y.original.length),0;if(y?.status==="expired"){let w=$({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${y.expired_at}`,help:y.command});return process.stdout.write(w),await Eo(c.rootDir,r.handle,!1,w.length),1}let b=$({command:`rsp show ${r.handle}`,category:"real-error",error:"expired unknown",help:r.handle});return process.stdout.write(b),await Eo(c.rootDir,r.handle,!1,b.length),1}return process.stdout.write($({command:r.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(g){if(nr(g))return process.stdout.write(g.render()),2;if(o)return await Fn("wrapper failed",r.positional,g,c.rootDir);throw g}finally{await _?.()}}Ne();import.meta.url===`file://${process.argv[1]}`&&oh().then(e=>process.exit(e),e=>{nr(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{oh as main,xi as renderSetupResult,Si as renderStats};
|