@reddb-io/red-skills 2.87.6 → 2.87.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/castle-mcp.bundle.min.mjs +352 -352
- package/dist/code-nav.bundle.min.mjs +1 -1
- package/dist/dev.bundle.min.mjs +618 -618
- package/dist/memory.bundle.min.mjs +1 -1
- package/dist/rsp.bundle.min.mjs +121 -120
- package/package.json +1 -1
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -1,136 +1,137 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
3
|
-
var
|
|
4
|
-
`);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(r=>r.endsWith("\r")?r.slice(0,-1):r)}function
|
|
5
|
-
`;break;case"r":r+="\r";break;case"t":r+=" ";break;case"u":{let i=e.slice(n,n+4);if(!/^[0-9a-fA-F]{4}$/.test(i))throw
|
|
6
|
-
`:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:r<" "?t+=`\\u${r.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=r}return`${t}"`}function
|
|
7
|
-
`);for(let[i,a]of Object.entries(r))
|
|
8
|
-
`);return}e.push(
|
|
9
|
-
`),
|
|
10
|
-
`)}function
|
|
3
|
+
var dy=Object.defineProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var r in t)dy(e,r,{get:t[r],enumerable:!0})};function k(e,t){return new Jr(e,t)}function P(e,t){return new Lt(e,t)}function ir(e){return e instanceof Lt?e:e instanceof Jr?new Lt(e.line,e.reason):new Lt(0,String(e&&e.message?e.message:e))}var Jr,Lt,qr=h(()=>{Jr=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonError",this.line=t,this.reason=r}},Lt=class extends Error{constructor(t,r){super(t===0?r:`line ${t}: ${r}`),this.name="ToonlError",this.line=t,this.reason=r}}});function os(e){let t=e.split(`
|
|
4
|
+
`);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(r=>r.endsWith("\r")?r.slice(0,-1):r)}function Me(e){return k(e,"invalid quoted string")}function Be(e,t){if(e==="")return"";if(e.startsWith('"'))return Wu(e,t);if(e.includes('"'))throw Me(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:my(e)?Number(e):e}function Ze(e,t){let r=e.trim();if(r.startsWith('"'))return[Wu(r,t),!0];if(r.includes('"')||/\s/.test(r))throw k(t,"expected non-empty field name");return[r,!1]}function Wu(e,t){if(e[0]!=='"')throw Me(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 Me(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 Me(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw Me(t);r+=String.fromCharCode(a),n+=4;break}default:throw Me(t)}continue}if(s<" "&&s!==" ")throw Me(t);r+=s}throw Me(t)}function Dt(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 Me(r);return n.push(e.slice(s).trim()),n}function ae(e,t,r){let n=!1,s=!1;for(let o=0;o<e.length;o+=1){let i=e[o];if(s){s=!1;continue}if(i==="\\"&&n)s=!0;else if(i==='"')n=!n;else if(i===t&&!n)return o}if(n||s)throw Me(r);return-1}function my(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function py(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function fy(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw k(0,"number is not representable in TOON");return String(e)}function Vr(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Fe(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return fy(e);if(typeof e=="string")return hy(e,t);throw k(0,"not a primitive")}function gy(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function Ee(e){return gy(e)?e:Uu(e)}function hy(e,t){return yy(e,t)?Uu(e):e}function yy(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||py(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Uu(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 ar(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}var N,li=h(()=>{qr();N=","});function by(e={}){return{indent:Math.max(1,e.indent??yi),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function wy(e,t){let r=[],n=!1;return os(e).forEach((s,o)=>{let i=o+1;if(s.trim()===""){n=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw k(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw k(i,"invalid indentation");r.push({number:i,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:n}),n=!1}),r}function D(e,t){let r=by(t),n=wy(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=_i(s.content,ae(s.content,":",s.number))}catch(l){if(r.strict)throw gi(l,s.number);u=void 0}if(u!==void 0)return ky(u,n,r)}if(o&&ae(s.content,":",s.number)===-1)return Be(s.content.trim(),s.number);let i={index:0},a=bi(n,i,0,r),c=n[i.index];if(c!==void 0)throw k(c.number,"expected end of document");return a}function bi(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}=_y(e,t,r,n);Vu(s,i,a,c,n,o.number)}return s}function _y(e,t,r,n){let s=e[t.index],o=s.content,i=ae(o,":",s.number);if(i===-1)throw k(s.number,"expected `key: value`");let a=o.slice(0,i),c=o.slice(i+1),u=ae(a,"[",s.number),l=ae(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let f;try{f=vy(a)}catch(g){if(n.strict)throw gi(g,s.number);t.index+=1;let y=di(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 _=Ry(f,e,t,r+1,n);return{key:f.key,quoted:f.keyQuoted,value:_}}if(u!==-1){let f;try{f=_i(a,i)}catch(g){if(n.strict)throw gi(g,s.number);t.index+=1;let y=di(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 _=wi(f,c,e,t,r,n);return{key:f.key,quoted:f.keyQuoted,value:_}}let[m,d]=Ze(a,s.number);if(m===""&&!d)throw k(s.number,"expected non-empty field name");t.index+=1;let p=di(e,t,r,c,s.number,n);return{key:m,quoted:d,value:p}}function di(e,t,r,n,s,o){let i=n.trim();if(i==="[]")return[];if(i!=="")return Be(i,s);let a=e[t.index];return a!==void 0&&a.depth>r?bi(e,t,r+1,o):{}}function Ry(e,t,r,n,s){let o={};for(r.index+=1;r.index<t.length;){let i=t[r.index];if(i.depth<n)break;if(i.depth>n)throw k(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw k(i.number,"blank line inside keyed map");let a=ae(i.content,":",i.number);if(a===-1)throw k(i.number,"expected `key: value`");let[c,u]=Ze(i.content.slice(0,a),i.number);if(c===""&&!u)throw k(i.number,"expected non-empty field name");let l=Dt(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw k(i.number,"keyed map row length mismatch");let m={};e.fields.forEach((d,p)=>{Kr(m,d,Be(l[p],i.number),s,i.number)}),Vu(o,c,u,m,s,i.number),r.index+=1}return o}function ky(e,t,r){let n=t[0],s=ae(n.content,":",n.number);if(s===-1)throw k(n.number,"expected `key: value`");let o=n.content.slice(s+1),i={index:0},a=wi(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 wi(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 Sy(e,e.fields,r,n,s+1,o)}if(a!==""){let c=Dt(a,e.delimiter,i).map(u=>Be(u,i));if(c.length!==e.len)throw k(i,"array length mismatch");return c}return Ey(e,r,n,s+1,o)}function Sy(e,t,r,n,s,o){let i=[];for(;i.length<e.len;){let c=r[n.index];if(c===void 0)throw pi(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(!Ju(c.content,e.delimiter,c.number))break;let u=Dt(c.content,e.delimiter,c.number);if(u.length!==t.length)throw k(c.number,"array row length mismatch");let l={};t.forEach((m,d)=>{Kr(l,m,Be(u[d],c.number),o,c.number)}),i.push(l),n.index+=1}if(i.length!==e.len)throw pi(r,n.index);let a=r[n.index];if(a!==void 0&&a.depth>=s&&Ju(a.content,e.delimiter,a.number))throw k(a.number,"array length mismatch");return i}function Ju(e,t,r){let n=ae(e,":",r);if(n===-1)return!0;let s=ae(e,t,r);return s===-1?!1:s<n}function Ey(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 pi(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(xy(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 xy(e,t,r,n){let s=e[t.index];if(!s.content.startsWith("-"))throw k(s.number,"expected array item");let o=s.content.slice(1).replace(/^\s+/,"");if(o==="")return t.index+=1,{};if(o.startsWith("[")){let i=ae(o,":",s.number),a;try{a=_i(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return wi(a,c,e,t,r,n)}}if(ae(o,":",s.number)!==-1){let i=[{number:s.number,depth:r+1,content:o,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=r)break;i.push(a),t.index+=1}return bi(i,{index:0},r+1,n)}return t.index+=1,Be(o,s.number)}function pi(e,t){let r=e[t]??e[e.length-1];return k(r===void 0?1:r.number,"array length mismatch")}function _i(e,t){if(t===-1)throw k(0,"array header missing colon");let r=e.slice(0,t),n=ae(r,"[",0);if(n===-1)throw k(0,"invalid array header");let s,o;try{[s,o]=Ze(r.slice(0,n),0)}catch{throw k(0,"invalid array header")}let i=r.slice(n+1),a=i.indexOf("]");if(a===-1)throw k(0,"invalid array header");let c=i.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw k(0,"invalid array header");let l=Number.parseInt(u,10),m;switch(c.slice(u.length)){case"":m=",";break;case" ":m=" ";break;case"|":m="|";break;default:throw k(0,"invalid array header")}let d=i.slice(a+1),p;if(d==="")p=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{p=qu(d.slice(1,-1),m)}catch(f){throw k(0,f.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw k(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:m,fields:p}}function vy(e){let t=ae(e,"{",0);if(t===-1||!e.endsWith("}"))throw k(0,"invalid keyed map header");let r,n;try{[r,n]=Ze(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=qu(e.slice(t+1,-1),N)}catch(o){throw k(0,o.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:r,keyQuoted:n,delimiter:N,fields:s}}function qu(e,t){let r=[],n=0;function s(a,c){let u=0;for(;n<e.length&&!(c&&e[n]==="}");){if(e[n]===t||e[n]==="}")throw k(0,"invalid array header");let l=n;for(;n<e.length;){let d=e[n];if(d==='"'){o();continue}if(d===t||d==="{"||d==="}")break;n+=1}let[m]=Ze(e.slice(l,n),0);if(m==="")throw k(0,"invalid array header");if(u+=1,e[n]==="{"){n+=1;let d=r.length;if(s([...a,m],!0),e[n]!=="}"||r.length===d)throw k(0,"invalid array header");n+=1}else r.push([...a,m]);if(e[n]===t){if(n+=1,n>=e.length||e[n]==="}")throw k(0,"invalid array header");continue}if(c?e[n]==="}":n===e.length)break;throw k(0,"invalid array header")}if(u===0)throw k(0,"invalid array header")}function o(){for(n+=1;n<e.length;){let a=e[n];if(n+=1,a==="\\")n+=1;else if(a==='"')return}}if(s([],!1),n!==e.length)throw k(0,"invalid array header");let i=new Set;for(let a=0;a<r.length;a+=1)for(let c=a+1;c<r.length;c+=1)if(Cy(r[a],r[c])||fi(r[a],r[c])||fi(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 Cy(e,t){return e.length===t.length&&fi(e,t)}function fi(e,t){return t.every((r,n)=>e[n]===r)}function gi(e,t){return k(t,e.reason??String(e.message))}function Vu(e,t,r,n,s,o){if(s.expandPaths&&!r&&t.includes(".")){let i=t.split(".");if(i.every(Ty)){Kr(e,i,n,s,o);return}}Kr(e,[t],n,s,o)}function Kr(e,t,r,n,s){let o=t[0],i=Object.prototype.hasOwnProperty.call(e,o);if(t.length===1){if(i&&n.strict)throw k(s,"duplicate key");ar(e,o,r);return}if(i&&!cr(e[o])){if(n.strict)throw k(s,"path expansion conflict");ar(e,o,{})}else i||ar(e,o,{});Kr(e[o],t.slice(1),r,n,s)}function Ty(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function cr(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)?Ri(n,void 0,e,0,!1,r):cr(e)?Ku(n,e,0,r):n.push(Fe(e,N)),n.join("")}function zr(e,t){e.push(" ".repeat(t*yi))}function Ku(e,t,r,n){for(let[s,o]of Object.entries(t))zr(e,r),hi(e,s,o,r,n)}function hi(e,t,r,n,s){if(Array.isArray(r)){Ri(e,t,r,n,!1,s);return}if(cr(r)){let o=s.keyedMapCollapse?Ay(r,s):void 0;if(o!==void 0){e.push(Ee(t),"{",o.fields.map(ki).join(N),`}:
|
|
7
|
+
`);for(let[i,a]of Object.entries(r))zr(e,n+1),e.push(Ee(i),": ",o.paths.map(c=>Fe(Qu(a,c),N)).join(N),`
|
|
8
|
+
`);return}e.push(Ee(t),`:
|
|
9
|
+
`),Ku(e,r,n+1,s);return}e.push(Ee(t),": ",Fe(r,N),`
|
|
10
|
+
`)}function Ri(e,t,r,n,s,o){if(r.length===0){t!==void 0?e.push(Ee(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
|
-
`,f=()
|
|
23
|
-
`;return b+=
|
|
24
|
-
`},end(){return
|
|
25
|
-
`)}function
|
|
26
|
-
`).trim()}var
|
|
27
|
-
|
|
28
|
-
`)
|
|
13
|
+
`);return}if(r.every(Vr)){mi(e,t,r.length,void 0),e.push(" "),e.push(r.map(a=>Fe(a,N)).join(N)),e.push(`
|
|
14
|
+
`);return}let i=s?void 0:zu(r,o);if(i!==void 0){mi(e,t,r.length,i.fields),e.push(`
|
|
15
|
+
`);for(let a of r)zr(e,n+1),e.push(i.paths.map(c=>Fe(Qu(a,c),N)).join(N)),e.push(`
|
|
16
|
+
`);return}mi(e,t,r.length,void 0),e.push(`
|
|
17
|
+
`);for(let a of r)zr(e,n+1),Oy(e,a,n+1,o)}function Oy(e,t,r,n){if(Array.isArray(t)){e.push("- "),Ri(e,void 0,t,r,!0,n);return}if(cr(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
|
|
18
|
+
`);return}e.push("- "),hi(e,s[0][0],s[0][1],r+1,n);for(let[o,i]of s.slice(1))zr(e,r+1),hi(e,o,i,r+1,n);return}e.push("- ",Fe(t,N),`
|
|
19
|
+
`)}function mi(e,t,r,n){t!==void 0&&e.push(Ee(t)),e.push("[",String(r),"]"),n!==void 0&&e.push("{",n.map(ki).join(N),"}"),e.push(":")}function zu(e,t){let r=Yu(e.map(n=>({value:n})),t);return r===void 0?void 0:{fields:r,paths:Xu(r)}}function Ay(e,t){let r=Object.values(e);if(!(r.length<2))return zu(r,t)}function Yu(e,t){let r=e[0]?.value;if(!cr(r))return;let n=Object.keys(r).map(s=>({key:s}));if(n.length!==0){for(let{value:s}of e)if(!cr(s)||Object.keys(s).length!==n.length||n.some(i=>!Object.prototype.hasOwnProperty.call(s,i.key)))return;for(let s of n){let o=e.map(({value:a})=>({value:a[s.key]}));if(o.every(({value:a})=>Vr(a)))continue;if(!t.nestedTabularHeaders)return;let i=Yu(o,t);if(i===void 0)return;s.children=i}return n}}function Xu(e,t=[]){return e.flatMap(r=>{let n=[...t,r.key];return r.children===void 0?[n]:Xu(r.children,n)})}function Qu(e,t){let r=e;for(let n of t)r=r[n];return r}function ki(e){return e.children===void 0?Ee(e.key):`${Ee(e.key)}{${e.children.map(ki).join(N)}}`}var yi,Yr=h(()=>{qr();li();yi=2});var Zu=h(()=>{Yr()});function Iy(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 ll(e,t){if(!ul.test(e))throw P(t,"invalid tag")}function Ly(e,t){let r=e.indexOf(":");if(r<=0)return null;let n=e.slice(0,r);if(!ul.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 Dy(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(!al.includes(i)&&i!=="")throw P(t,"invalid header delimiter");let a=i===""?N:i,c=r.slice(n+1),u=null;if(!o&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw P(t,"invalid tag");if(u=c.slice(1,d),ll(u,t),i!=="")throw P(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw P(t,"invalid header");let l=c.slice(1,-2),m;try{m=Dt(l,a,t).map(d=>Ze(d,t)[0])}catch(d){throw ir(d)}if(m.length===0||m.some(d=>d===""))throw P(t,"invalid header fields");return{delimiter:a,fields:m,fieldText:l,continuation:o,tag:u}}function Ny(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 el(e,t,r,n){let s;try{s=Dt(e,t,n)}catch(o){throw ir(o)}if(s.length!==r)throw P(n,"row arity mismatch");for(let o of s)try{Be(o,n)}catch(i){throw ir(i)}return s}function $y(e,t,r){let n={};return e.forEach((s,o)=>{try{ar(n,s,Be(t[o],r))}catch(i){throw ir(i)}}),n}function My(e,t,r){if(e.startsWith("- "))throw P(t,"reserved line prefix");let n=Iy(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=Dy(e,t);if(s!==null)return s.continuation?(Ny(r,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=Ly(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:el(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:el(e,r.delimiter,r.fields.length,t)}}function By(e,t={}){let r=[],n=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(p,f){let _=o.at(-1);if(_!==void 0&&_.lane===p.lane&&_.delimiter===p.delimiter&&_.fieldText===p.fieldText){_.rows.push(f);return}o.push({lane:p.lane,delimiter:p.delimiter,fields:p.fields,fieldText:p.fieldText,rows:[f]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function m(p,f,_){let g=n.get(p);if(g===void 0){if(n.size>=cl)throw P(_,"too many tagged lanes");g={segments:[],current:null},n.set(p,g),r.push(p)}else g.current!==null&&g.segments.push(g.current);g.current={lane:p,delimiter:f.delimiter,fields:f.fields,fieldText:f.fieldText,rows:[]},g.delimiter=f.delimiter,g.fields=f.fields,g.fieldText=f.fieldText}if(os(e).forEach((p,f)=>{let _=f+1;if(p==="")return;let g=i===null?{taggedLanes:n}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:n},y=My(p,_,g);if(y.kind==="trailer"){l(),i=null;return}if(y.kind!=="continuation"){if(y.kind==="tag-header"){c=!0,m(y.header.tag,y.header,_);return}if(y.kind==="header"){l(),a||(r.push(null),a=!0),i={lane:null,delimiter:y.header.delimiter,fields:y.header.fields,fieldText:y.header.fieldText,rows:[]};return}if(y.kind==="tagged-row"){c=!0;let b=n.get(y.tag).current;b.rows.push(y.cells),u(b,y.cells);return}if(i===null)throw P(_,"row before header");i.rows.push(y.cells),u(i,y.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let p of r){if(p===null){d.push(...s);continue}let f=n.get(p);d.push(...f.segments),f.current!==null&&d.push(f.current)}return t.preserveInterleaving===!0?o:d}function et(e){return By(e).flatMap(t=>t.rows.map(r=>$y(t.fields,r,0)))}function Fy(e){if(!al.includes(e))throw P(0,"invalid header delimiter")}function tl(e,t,r=!1){return`[${`${r?"~":""}${e===N?"":e}`}]{${t}}:
|
|
20
|
+
`}function rl(e,t){return`[]<${e}>{${t}}:
|
|
21
|
+
`}function Si(e,t){return t.map(Ee).join(e)}function jy(e){if(!Array.isArray(e)||e.length===0)throw P(0,"TOONL header requires fields");return e.map(t=>{let r;try{[r]=Ze(String(t),0)}catch(n){throw ir(n)}if(r==="")throw P(0,"TOONL header requires fields");return r})}function nl(e,t){return e!==null&&e.length===t.length&&e.every((r,n)=>r===t[n])}function sl(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw P(0,"TOONL continuation cadence must be positive")}function Hy(e,t,r){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&r>=e.continuationEveryBytes}function ol(e){if(e===null||typeof e!="object"||Array.isArray(e))throw P(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw P(0,"TOONL output requires object rows");if(t.some(r=>!Vr(e[r])))throw P(0,"TOONL rows must be flat objects");return t}function Gy(e){return JSON.stringify([...e].sort())}function il(e,t){let r=Gy(e),n=t.get(r);return n!==void 0?n:(t.set(r,e),e)}function tt({delimiter:e=N,trailer:t=!0,continuationEveryRows:r,continuationEveryBytes:n}={}){Fy(e),sl(r),sl(n);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,m=!1,d={continuationEveryRows:r,continuationEveryBytes:n},p=()=>s===null||!t?"":`[=${a}]
|
|
22
|
+
`,f=()=>Hy(d,c,u)?(c=0,u=0,tl(e,o,!0)):"",_=g=>{ll(g,0);let y=l.get(g);if(y===void 0){if(l.size>=cl)throw P(0,"too many tagged lanes");y={fields:null,fieldsByShape:new Map},l.set(g,y)}return y};return{push(g){if(m)throw P(0,"TOONL encoder is closed");let y=il(ol(g),i),b="";(s===null||s.length!==y.length||s.some((O,j)=>O!==y[j]))&&(b+=p(),s=y,o=Si(e,s),a=0,c=0,u=0,b+=tl(e,o));let w=s.map(O=>Fe(g[O],e));b+=f();let S=`${w.join(e)}
|
|
23
|
+
`;return b+=S,a+=1,c+=1,u+=S.length,b},declareLane(g,y){if(m)throw P(0,"TOONL encoder is closed");let b=jy(y),w=Si(N,b),S=_(g);return nl(S.fields,b)?"":(S.fields=b,rl(g,w))},pushTagged(g,y){if(m)throw P(0,"TOONL encoder is closed");let b=_(g),w=il(ol(y),b.fieldsByShape),S=Si(N,w),O=w.map(Re=>Fe(y[Re],N)),j="";return nl(b.fields,w)||(b.fields=w,j+=rl(g,S)),`${j}${g}:${O.join(N)}
|
|
24
|
+
`},end(){return m?"":(m=!0,p())}}}var al,cl,ul,rO,nO,dl=h(()=>{qr();Yr();li();al=[N,"|"," "],cl=8,ul=/^[A-Za-z0-9_-]+$/,rO=new TextEncoder,nO=new TextDecoder});var L=h(()=>{qr();Yr();Yr();Zu();dl()});function Uy(e){return e==="no-op"?0:e==="usage"?2:1}function $(e){return Buffer.from(`${C(Ei(e))}
|
|
25
|
+
`)}function Ei(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??Uy(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=Jy(e.diagnostics,3)),t}function xe(e,t,r){let s=([r,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:Xr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&o.includes("rate limit")?{command:e,category:"real-error",error:Xr(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:Xr(s)||"not a git repository",help:"git status",diagnostics:s}:o.includes("repository not found")||o.includes("could not resolve host")?{command:e,category:"real-error",error:Xr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Xr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function is(e,t,r,n){return $({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Xr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Jy(e,t){return e.split(/\r?\n/).slice(0,t).join(`
|
|
26
|
+
`).trim()}var je=h(()=>{"use strict";L()});function cs(e){let t={app:e,version:qy(lr("__RED_BUILD_VERSION__",()=>"2.87.7")??"0.0.0-dev"),gitSha:lr("__RED_BUILD_GIT_SHA__",()=>"5b4f35b7513e6bfd5ef2269f9b7f5276704148d8")??"unknown",buildTime:lr("__RED_BUILD_TIME__",()=>"2026-07-29T00:50:06-03:00")??"unknown",bundleAsset:lr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=lr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=lr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function qy(e){return e.startsWith("v")?e.slice(1):e}function lr(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var vi=h(()=>{});import{isAbsolute as Vy,join as rt,resolve as Ci}from"node:path";function Yy(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function yl(e){return rt(Yy(e),hl)}function bl(e){return rt(yl(e),"state")}function wl(e){return rt(yl(e),"tmp")}function G(e){return rt(bl(e),"rsp")}function Xy(e){return rt(bl(e),"red-skills.rdb")}function Qy(e){return rt(wl(e),"red-skills.rdb")}function kl(e,t){let r=Xy(e);if(t(r))return r;let n=Qy(e);if(t(n))throw Zy();return r}function Zy(){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 Sl(e){return rt(wl(e),"waits")}function El(e){let t=e.overrideEnvVars??Ti;for(let n of t){let s=e.env[n];if(s)return Vy(s)?s:Ci(e.startDir,s)}let r=Ci(e.startDir);for(;;){if(e.exists(rt(r,hl)))return r;let n=rt(r,".."),s=Ci(n);if(s===r)break;r=s}return e.startDir}var hl,Ky,zy,Ti,_l,Rl,pe=h(()=>{hl=".red",Ky="MEMORY_ROOT",zy="RED_BRAIN_ROOT",Ti=[Ky,zy];_l=".red/state/red-skills.rdb";Rl=".red/tmp/red-skills.rdb"});function W(e){return C(e,{keyedMapCollapse:!0})}var eb,tb,$O,nt=h(()=>{L();pe();eb=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],tb=[{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"}],$O=[...eb,...tb]});function Nt(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 rb(e,t){if(!t)return!0;let r=Oi(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function te(e,t){return t?e.filter(r=>rb(r,t)):[...e]}function st(e,t){return Ai(e,t,{includeLegacyHelp:!0})}function Ai(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function Oi(e){return Array.isArray(e)?e.map(Oi).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Oi).join(" "):String(e??"")}var Qr=h(()=>{"use strict"});var hs={};M(hs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>us,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>ls,DEFAULT_RSP_OVERHEAD_CEILING:()=>Ce,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>ms,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>ps,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>ds,RSP_OVERHEAD_FAMILIES:()=>ub,RSP_OVERHEAD_LEDGER_FILE:()=>Cl,RSP_OVERHEAD_SCHEMA_VERSION:()=>Tl,classifyOverheadSample:()=>Li,noteChildProcessMs:()=>Al,noteSelfStateBytesRead:()=>tn,overheadCounters:()=>rn,overheadFamilyDisabled:()=>Ni,overheadHealth:()=>ft,overheadLedgerPath:()=>Di,overheadMsOf:()=>Ol,overheadTelemetryFields:()=>fs,readOverheadLedger:()=>Zr,readSelfStateFile:()=>gs,readSelfStateFileSync:()=>mb,recordOverheadSample:()=>en,resetOverheadCounters:()=>db,resetOverheadLedger:()=>lb,startChildProcessTimer:()=>re});import{existsSync as nb,mkdirSync as sb,readFileSync as xl,renameSync as ob,writeFileSync as ib}from"node:fs";import{readFile as ab}from"node:fs/promises";import{dirname as cb,join as vl}from"node:path";function Ol(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,Ii(t)):0}function Li(e,t=Ce){let r=Ol(e),n=[];return r>t.maxOverheadMs&&n.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&n.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&n.push("overhead-exceeds-savings"),{overhead_ms:r,breached:n.length>0,reasons:n}}function fs(e,t=Ce){let r=Li(e,t);return{wrapper_ms:Ii(e.wrapperMs),overhead_ms:r.overhead_ms,child_ms:Ii(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:r.breached,overhead_breach_reasons:r.reasons.join(",")}}function Di(e){return vl(G(e),Cl)}function Zr(e){try{let t=xl(Di(e),"utf8"),r=hb(t);if(yb(r))return r}catch{}return{version:1,families:{}}}function en(e,t,r=Ce,n=Date.now()){let s=Zr(e),o=Li(t,r),i=s.families[t.family]??gb(t.family,n),a=Bi(i,n)?Pl(i):i,c=o.breached?a.consecutive_breaches+1:0,u={...a,family:t.family,invocations:a.invocations+1,breaches:a.breaches+(o.breached?1:0),consecutive_breaches:c,breached:o.breached,reasons:o.reasons,last_overhead_ms:o.overhead_ms,last_self_state_bytes_read:Math.max(0,Math.trunc(t.selfStateBytesRead)),last_bytes_saved:Math.max(0,Math.trunc(t.bytesSaved)),updated_at:new Date(n).toISOString()};return o.breached?c>=r.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(n).toISOString(),u.disabled_until=new Date(n+r.cooldownMs).toISOString(),u.disabled_reason=pb(t.family,c,o,r)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,Il(e,s),u}function Ni(e,t,r=Date.now()){let n=Zr(e).families[t];return!n?.disabled||Bi(n,r)?null:n}function lb(e,t){let r=Zr(e);return t?delete r.families[t]:r.families={},Il(e,r),r}function ft(e,t=Ce,r=Date.now()){let n=Object.values(Zr(e).families).map(a=>Bi(a,r)?Pl(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=n.filter(a=>a.disabled),o=n.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:Tl,verdict:i,summary:fb(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:n}}function tn(e){Number.isFinite(e)&&e>0&&($i+=e)}function Al(e){Number.isFinite(e)&&e>0&&(Mi+=e)}function rn(){return{selfStateBytesRead:$i,childMs:Mi}}function db(){$i=0,Mi=0}function re(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,Al(Number(process.hrtime.bigint()-e)/1e6))}}async function gs(e){let t=await ab(e,"utf8");return tn(Buffer.byteLength(t)),t}function mb(e){let t=xl(e,"utf8");return tn(Buffer.byteLength(t)),t}function pb(e,t,r,n){let s=r.reasons.map(o=>o==="wall-clock-ceiling"?`added ${r.overhead_ms}ms > ${n.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${n.maxSelfStateBytes}B`:"self-state read exceeded bytes saved").join("; ");return`rsp ${e} exceeded its overhead ceiling on ${t} consecutive invocations (${s}); wrapper self-disabled, commands pass through raw`}function fb(e,t,r){if(e==="green")return"every wrapper family is inside its overhead ceiling";let n=[];return t.length>0&&n.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),r.length>0&&n.push(`breaching: ${r.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),n.join("; ")}function Bi(e,t){if(!e.disabled||!e.disabled_until)return!1;let r=Date.parse(e.disabled_until);return Number.isFinite(r)&&r<=t}function Pl(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function gb(e,t){return{family:e,invocations:0,breaches:0,consecutive_breaches:0,breached:!1,reasons:[],disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,last_overhead_ms:0,last_self_state_bytes_read:0,last_bytes_saved:0,updated_at:new Date(t).toISOString()}}function Il(e,t){try{let r=Di(e);if(!nb(vl(e,".red")))return;sb(cb(r),{recursive:!0});let n=`${r}.${process.pid}.tmp`;ib(n,`${C(t)}
|
|
27
|
+
`,{encoding:"utf8",mode:384}),ob(n,r)}catch{}}function hb(e){try{return JSON.parse(e)}catch{return D(e)}}function yb(e){return!Pi(e)||e.version!==1||!Pi(e.families)?!1:Object.values(e.families).every(bb)}function bb(e){return Pi(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function Pi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ii(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var Cl,Tl,us,ls,ds,ms,ps,ub,Ce,$i,Mi,U=h(()=>{"use strict";pe();L();Cl="overhead-budget.toon",Tl="red.rsp.overhead.v1",us=250,ls=1024*1024,ds=64*1024,ms=3,ps=6*60*60*1e3,ub=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],Ce={maxOverheadMs:us,maxSelfStateBytes:ls,netLossFloorBytes:ds,consecutiveBreaches:ms,cooldownMs:ps};$i=0,Mi=0});import{createConnection as wb}from"node:net";async function dr(e,t){let r=e.timeoutMs??1e3;return await new Promise((n,s)=>{let o=wb(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)}
|
|
28
|
+
`)}),o.on("data",l=>{a+=l.toString("utf8");let m=a.indexOf(`
|
|
29
|
+
`);if(m<0)return;let d=a.slice(0,m);u(()=>{try{n(JSON.parse(d))}catch(p){s(p)}}),o.end()}),o.on("error",l=>u(()=>s(l))),o.on("close",()=>{i||u(()=>s(new Error("resident rsp server closed without response")))})})}var Fi=h(()=>{});var Ll=h(()=>{"use strict";Fi()});import{existsSync as _b,readdirSync as Rb}from"node:fs";import{homedir as kb}from"node:os";import{basename as Hi,dirname as ji,join as fe,resolve as ys}from"node:path";function Sb(e){return"command"in e}function bs(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let r=t.env??process.env,n=t.exists??_b,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&&vb(i))return a(ys(i),"caller-entry");let c=[];for(let[u,l]of Tb(i,t.rootDir,r,t.listDir??Ib))if(c.push(u),n(u))return a(u,l);return{diagnostic:ot,searched:c,...i?{callerEntry:ys(i)}:{}}}function Nl(e={},t={}){let r=bs(e,t);if(Sb(r))return r;throw new mr(r)}function vb(e){let t=Hi(e);return t===$t||Gi.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:Cb(ys(e))}function Cb(e){let t=ji(e);for(let r=0;r<4;r++){if(Hi(t)==="rsp")return!0;let n=ji(t);if(n===t)return!1;t=n}return!1}function*Tb(e,t,r,n){if(e){let o=ji(ys(e));yield[fe(o,$t),"caller-sibling-bundle"];let i=Eb.exec(Hi(e));i&&(yield[fe(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[fe(o,"..","dist",$t),"caller-sibling-bundle"]}for(let o of xb){let i=r[o];i&&(yield[fe(i,"dist",$t),"plugin-root-bundle"],yield[fe(i,"..","..","dist",$t),"plugin-root-bundle"])}t&&(yield[fe(t,"dist",$t),"repo-bundle"],yield[fe(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[fe(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=Ob(r);yield[fe(s,$t),"bundle-cache"];for(let o of Ab(s,n))yield[fe(s,o),"bundle-cache"]}function Ob(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||fe(e.HOME||kb(),".cache");return fe(t,"red-skills","bundles")}function Ab(e,t){return t(e).filter(r=>Gi.test(r)).sort((r,n)=>Pb(Dl(n),Dl(r)))}function Dl(e){return Gi.exec(e)?.[1]??""}function Pb(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 Ib(e){try{return Rb(e)}catch{return[]}}var ot,mr,$t,Eb,Gi,xb,Wi=h(()=>{ot="rsp-resident-entry-unresolved";mr=class extends Error{code=ot;searched;callerEntry;constructor(t){super(`${ot}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
|
|
29
30
|
searched:
|
|
30
31
|
${t.searched.map(r=>` ${r}`).join(`
|
|
31
|
-
`)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}}
|
|
32
|
-
`,{encoding:"utf8",mode:384}),await
|
|
32
|
+
`)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},$t="rsp.bundle.min.mjs",Eb=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,Gi=/^rsp-(.+)\.bundle\.min\.mjs$/,xb=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{createHash as Lb,randomUUID as jl}from"node:crypto";import{spawn as Hl}from"node:child_process";import{constants as Ui}from"node:fs";import{readFileSync as Db}from"node:fs";import{mkdir as ws,open as Nb,readFile as Gl,rename as $b,rm as He,stat as Mb,writeFile as Bb}from"node:fs/promises";import{tmpdir as Fb}from"node:os";import{dirname as gt,join as ge,resolve as Vi}from"node:path";import{fileURLToPath as jb}from"node:url";function Ge(e){let t=Qb(e)??Vi(e),r=Xb(t),n=G(t);return{rootDir:t,socketPath:ge(r,"rsp.sock"),pidPath:ge(r,"rsp.pid"),lockPath:ge(r,"rsp.lock"),wakeLockPath:ge(t,".red","tmp","rsp","wake.lock"),summaryPath:ge(n,"rsp-status-summary.json"),registryPath:ge(n,"rsp-resident.pid.json")}}async function _s(e,t){if(await ws(gt(e.socketPath),{recursive:!0,mode:448}),await Bl(e.socketPath,t))return;await Ml(e,t);let r=await Vl(e.lockPath);if(r)try{if(await Bl(e.socketPath,t))return;await Ml(e,t),await Ub(e.socketPath);let n=Jb(e,t);await $l(e.socketPath,n);return}finally{await r.close(),await He(e.lockPath,{force:!0})}await $l(e.socketPath)}async function Mt(e,t=200){try{return await Ul(e,t)!=null}catch{return!1}}async function Ul(e,t=200){let r=await dr({socketPath:e,timeoutMs:t},{id:jl(),op:"ping"});return r.ok?Xl(r.value)?{version:rw(r.value.version)}:{}:null}async function Rs(e,t){if(await ws(gt(e.socketPath),{recursive:!0,mode:448}),await Mt(e.socketPath,50))return!1;let r=await Vl(e.wakeLockPath);if(!r)return!1;await r.close();let[n,s]=zl(e,t);return Hl(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 Jl(e,t){try{await _s(e,t)}finally{await He(e.wakeLockPath,{force:!0})}}async function sn(e){try{let t=Kb(await Gl(e,"utf8"));return nw(t)?t:null}catch{return null}}async function ks(e,t){let r={version:Wl,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 ws(gt(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;await Bb(n,`${C(r)}
|
|
33
|
+
`,{encoding:"utf8",mode:384}),await $b(n,e)}async function Ss(e,t=process.pid){try{let r=await sn(e);if(r&&r.pid!==t)return;await He(e,{force:!0})}catch{}}async function nn(e){let t=await sn(e.registryPath);if(!t)try{return await Gl(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!pr(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let r=await Mt(t.socket_path,100);return r&&await Yb(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:r?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function ql(e){let t=await nn(e);return t.state==="registered-dead"||t.state==="invalid"?(await He(e.registryPath,{force:!0}),await nn(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Kl(t.entry.pid),await He(e.registryPath,{force:!0}),await He(t.entry.socket_path,{force:!0}),await nn(e)):t}async function $l(e,t){let r=Date.now()+Wb(),n;for(;Date.now()<r;){if(await Mt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Ji("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Ji("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw n instanceof Error?n:new Error(t?Ji("resident rsp server did not start",t):"resident rsp server did not start")}function Wb(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Gb}async function Ub(e){await He(e,{force:!0})}async function Vl(e){await ws(gt(e),{recursive:!0,mode:448});try{return await Nb(e,Ui.O_CREAT|Ui.O_EXCL|Ui.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Jb(e,t){let[r,n]=zl(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Hl(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=Vb(`${i}${c}`,qb)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function Ji(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
34
|
${s}`),n.join(`
|
|
34
|
-
`)}function
|
|
35
|
+
`)}function Vb(e,t){let r=Buffer.byteLength(e,"utf8");return r<=t?e:Buffer.from(e,"utf8").subarray(r-t).toString("utf8").replace(/^\uFFFD+/,"")}function Kb(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return D(t)}}async function Ml(e,t){try{let r=await sn(e.registryPath);if(!r||r.socket_path!==e.socketPath||r.store_uri!==t.storeUri)return;if(!pr(r.pid)){await He(e.registryPath,{force:!0});return}if(await Mt(r.socket_path,100))return;if(Yl(t.clientVersion,r.resident_version)&&(await zb(r.pid,1500),!pr(r.pid))){await He(e.registryPath,{force:!0});return}await Kl(r.pid),await He(e.registryPath,{force:!0})}catch{}}function pr(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Kl(e){if(!pr(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!pr(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}async function zb(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(!pr(e))return;await new Promise(n=>setTimeout(n,50))}}async function Yb(e){if(!e.startsWith("file://"))return!1;try{return await Mb(jb(e)),!1}catch(t){return t.code==="ENOENT"}}function zl(e,t){let r=Nl(t,{rootDir:e.rootDir});return[r.command,r.args]}function Xb(e){let t=Lb("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=ge(r,"red-skills",t);if(ge(s,"rsp.sock").length<Hb)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return ge(Fb(),`red-skills-${n}`,t)}function Qb(e){let t=Vi(e);for(let r=0;r<32;r++){try{let s=qi(ge(t,".git"));if(s!=null)return Zb(t,s)??t;if(qi(ge(t,".git","HEAD"))!=null||qi(ge(t,".red","config.yaml"))!=null)return t}catch{}let n=gt(t);if(n===t)return null;t=n}return null}function Zb(e,t){let r=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!r)return null;let n=Vi(e,r[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(n)?gt(gt(gt(n))):null}function qi(e){try{return Db(e,"utf8")}catch{return null}}async function Bl(e,t){let r=await Ul(e).catch(()=>null);return r?Yl(t.clientVersion,r.version)?(await ew(e,t.clientVersion),await sw(e),!1):!0:!1}async function ew(e,t){try{await dr({socketPath:e,timeoutMs:200},{id:jl(),op:"handover",clientVersion:t})}catch{}}function Yl(e,t){return!e||!t?!1:tw(e,t)>0}function tw(e,t){let r=Fl(e),n=Fl(t);return!r||!n?0:r.major-n.major||r.minor-n.minor||r.patch-n.patch}function Fl(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 Xl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function rw(e){return typeof e=="string"&&e.length>0?e:void 0}function nw(e){return Xl(e)&&e.version===Wl&&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 sw(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Mt(e,50))return;await new Promise(r=>setTimeout(r,50))}}var Hb,Wl,Gb,qb,Es=h(()=>{L();pe();Fi();Wi();Wi();Hb=108,Wl=1,Gb=5e3;qb=8*1024});var Bt={};M(Bt,{RSP_ENTRY_UNRESOLVED:()=>ot,ResidentRspElisionStore:()=>on,RspResidentEntryError:()=>mr,ensureResidentServer:()=>_s,kickResidentServer:()=>Rs,pingResident:()=>Mt,readResidentRegistry:()=>sn,removeResidentRegistry:()=>Ss,residentRegistryStatus:()=>nn,resolveResidentPaths:()=>Ge,resolveRspEntry:()=>bs,sweepResidentRegistry:()=>ql,warmResidentServer:()=>Jl,writeResidentRegistry:()=>ks});import{randomUUID as ow}from"node:crypto";function Ql(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var on,We=h(()=>{"use strict";Ll();Es();on=class{constructor(t,r,n={}){this.paths=t;this.config=r;this.opts=n}metrics;lastResponseMetrics(){return this.metrics}async mint(t,r){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:r})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let r=await this.request({op:"get",handle:t});return r?Ql(r)&&r.status==="expired"?r:!Ql(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 _s(this.paths,this.config);let r=await dr(this.paths,{...t,id:ow()});if(!r.ok)throw new Error(r.error);return this.metrics={storeOpenCount:r.storeOpenCount,storeElapsedMs:r.storeElapsedMs},r.value}}});function zi(e,t,r=Zl){let n=Math.max(0,Math.floor(e)),s=r in ed?r:Zl,o=ed[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:Ki(n,o),dollars_saved_low_usd:i==null?null:Ki(i,o),dollars_saved_high_usd:a==null?null:Ki(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:iw}}function Ki(e,t){return aw(Math.max(0,e)/1e6*t)}function an(e){return`$${e.toFixed(6)}`}function aw(e){return Math.round(e*1e6)/1e6}var Zl,ed,iw,Yi=h(()=>{"use strict";Zl="gpt-5",ed={"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},iw="estimate derived from byte-based token estimate when token counts are estimated"});var cn={};M(cn,{isResidentEntryUnresolved:()=>nd,reportResidentEntryDiagnostic:()=>Qi,residentConfigFor:()=>rd,residentElisionStore:()=>Xi});function rd(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 Xi(e,t,r={}){let n=r.paths??Ge(e);return new on(n,rd(t,cs("rsp").version),{ensureResident:r.ensureResident})}function Qi(e){return nd(e)?(td||(td=!0,process.stderr.write(`rsp: ${ot} \u2014 elision is off until an rsp entry is installed
|
|
35
36
|
`),process.env.RSP_DEBUG==="1"&&e instanceof Error&&process.stderr.write(`${e.message}
|
|
36
|
-
`)),!0):!1}function
|
|
37
|
-
`)}async function
|
|
38
|
-
`:`${
|
|
39
|
-
`}var
|
|
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}
|
|
37
|
+
`)),!0):!1}function nd(e){return typeof e=="object"&&e!==null&&e.code===ot}var td,Ft=h(()=>{"use strict";vi();We();td=!1});function aa(e){return e==="success"?0:e==="failure"?1:2}function ca(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function it(e,t,r){return{status:e,exitCode:aa(e),summary:t,...r?{details:r}:{}}}function Y(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function gr(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var cd,ud,ld,oa,dd,md,pd,fd,ia,jt=h(()=>{"use strict";cd="rsp.wait.result",ud="rsp.wait.registry",ld="rsp.wait.list",oa={cmd:18e5,pr:27e5,run:27e5,release:72e5},dd=16*1024,md=1e4,pd=2e3,fd=6e4,ia={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 pw,readFile as fw}from"node:fs/promises";async function hr(e,t){let r=e.pid;if(!r)return{cleaned:!0,escalation:"none",survivors:[]};let n=await Cs(r),s=[r,...n];if(s.every(c=>!Ht(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(gd(e,"SIGTERM"),vs(n,"SIGTERM"),await hd(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await Cs(r)])];gd(e,"SIGKILL"),vs(o,"SIGKILL");let i=Math.max(1e3,t);await gw(e,i);let a=await hd(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(Ht)}}function gd(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 vs(e,t){for(let r of e)try{process.kill(r,t)}catch{}}async function gw(e,t){return e.exitCode!==null||e.signalCode!==null?!0:await new Promise(r=>{let n=setTimeout(()=>r(!1),t);e.once("close",()=>{clearTimeout(n),r(!0)})})}async function hd(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.every(n=>!Ht(n)))return!0;await hw(Math.min(25,Math.max(1,r-Date.now())))}return e.every(n=>!Ht(n))}async function Cs(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await pw("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await yd(o);if(!i)continue;let a=Number(i[1]);if(!Number.isSafeInteger(a))continue;let c=t.get(a)??[];c.push(o),t.set(a,c)}let r=[],n=[...t.get(e)??[]];for(;n.length>0;){let s=n.shift();r.push(s),n.push(...t.get(s)??[])}return r.reverse()}async function un(e){return(await yd(e))?.[19]}async function yr(e,t){if(!Ht(e))return!1;if(!t)return!0;let r=await un(e);return r===void 0?process.platform!=="linux":r===t}function Ht(e){try{return process.kill(e,0),!0}catch{return!1}}async function yd(e){if(process.platform!=="linux")return null;try{let t=await fw(`/proc/${e}/stat`,"utf8"),r=t.lastIndexOf(")");return r<0?null:t.slice(r+2).trim().split(/\s+/)}catch{return null}}async function hw(e){await new Promise(t=>setTimeout(t,e))}var at=h(()=>{"use strict"});import{constants as yw}from"node:os";async function bd(e){let t=e[1],r={timeoutMs:oa.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:md,terminateGraceMs:pd,probeTimeoutMs:fd,format:"toon",captureBytes:dd},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=oa[t]);let s=e.indexOf("--"),o=s>=0?s:e.length;for(let i=2;i<o;i++){let a=e[i];a==="--timeout"?r.timeoutMs=ln(e[++i]??""):a==="--reason"?r.reason=e[++i]??"":a==="--signal-pid"?r.signalPid=Number(e[++i]):a==="--signal"?r.signal=_w(e[++i]??""):a==="--notify-cmd"?r.notifyCmd=e[++i]??"":a==="--notify-timeout"?r.notifyTimeoutMs=ln(e[++i]??""):a==="--terminate-grace"?r.terminateGraceMs=ln(e[++i]??""):a==="--probe-timeout"?r.probeTimeoutMs=ln(e[++i]??""):a==="--result-file"?r.resultFile=e[++i]??"":a==="--json"?r.format="json":a==="--capture-bytes"?r.captureBytes=ww(e[++i]??"","capture bytes"):t==="run"&&a==="--branch"?n.branch=e[++i]??"":t==="run"&&a==="--latest"?n.latest=!0:t==="release"&&a==="--tag"?n.tagGlob=e[++i]??"":!a.startsWith("--")&&!n.target&&(n.target=a)}return await bw(r),t==="cmd"&&(n.commandLine=s>=0?e.slice(s+1).join(" "):""),n}async function bw(e){if(!(e.signal in yw.signals))throw new Error(`invalid signal: ${e.signal}`);if(e.signalPid!==void 0){if(!Number.isSafeInteger(e.signalPid)||e.signalPid<=0)throw new Error(`invalid signal pid: ${e.signalPid}`);if(!Ht(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await un(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function ln(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let r=Number(t[1]),n=t[2]??"ms";return n==="ms"?r:n==="s"?r*1e3:n==="m"?r*6e4:r*60*6e4}function dn(e,t,r=process.env){let n=r[e];if(!n)return t;try{return ln(n)}catch{return t}}function ww(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function _w(e){return e.startsWith("SIG")?e:`SIG${e}`}var wd=h(()=>{"use strict";jt();at()});import{existsSync as ua,readFileSync as Rw,statSync as kw}from"node:fs";import{basename as _d,dirname as Ts,isAbsolute as Sw,join as Rd,resolve as mn}from"node:path";function Os(e,t=process.env){let r=mn(e);if(Ti.map(i=>t[i]).find(Boolean))return El({startDir:r,env:t,exists:ua});let s=xw(r),o=Ew(r,s);return o||(s??r)}function Ew(e,t){let r=e;for(;;){if(ua(Rd(r,".red")))return r;if(t&&r===t)return null;let n=mn(r,"..");if(n===r)return null;r=n}}function xw(e){let t=e;for(;;){let r=Rd(t,".git");if(ua(r))return Tw(r)?t:vw(r)??t;let n=mn(t,"..");if(n===t)return null;t=n}}function vw(e){let t=Cw(e);if(!t)return null;let r=Ts(t),n=Ts(r);return _d(r)!=="worktrees"||_d(n)!==".git"?null:Ts(n)}function Cw(e){let t;try{t=Rw(e,"utf8")}catch{return null}let r=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!r)return null;let n=r[1].trim();return Sw(n)?mn(n):mn(Ts(e),n)}function Tw(e){try{return kw(e).isDirectory()}catch{return!1}}var la=h(()=>{pe()});import{join as Ow}from"node:path";function Pw(e,t=process.env){return Os(e,t)}function br(e,t=process.env){return Sl(Pw(e,t))}function kd(e,t=process.env){return Ow(br(e,t),Aw)}var Aw,da=h(()=>{"use strict";pe();la();Aw="spool"});import{randomUUID as Iw}from"node:crypto";import{existsSync as Lw}from"node:fs";import{mkdir as Dw,readdir as Nw,readFile as $w,rename as Mw,rm as ma,writeFile as Bw}from"node:fs/promises";import{dirname as Fw,join as Ed}from"node:path";function xd(e,t,r=process.env){return Ed(br(e,r),`${t}${jw}`)}async function wr(e,t){await pa(e,`${W(t)}
|
|
38
|
+
`)}async function As(e,t,r){t.status=r,await wr(e,t)}async function Ps(e,t=process.env){let r=br(e,t);if(!Lw(r))return[];let n=await Nw(r).catch(()=>[]),s=[];for(let o of n.filter(i=>Hw.some(a=>i.endsWith(a)))){let i=Ed(r,o),a=await Gw(i);if(!a){await ma(i,{force:!0});continue}if(!await Ww(a)){await ma(i,{force:!0});continue}s.push(a)}return s}async function Gw(e){let t;try{t=await $w(e,"utf8")}catch{return null}let r=t.trim();if(!r)return null;let n=Uw(r);return n&&Object.keys(n).length>0?n:null}async function Ww(e){let t=typeof e.pid=="number"?e.pid:0;if(!t||!Number.isSafeInteger(t)||t<=0)return!1;let r=typeof e.pid_start_time=="string"?e.pid_start_time:void 0;return await yr(t,r)}function Uw(e){try{let t=D(e);if(Sd(t))return t}catch{}try{let t=JSON.parse(e);if(Sd(t))return t}catch{}return null}async function pa(e,t){await Dw(Fw(e),{recursive:!0});let r=`${e}.tmp-${process.pid}-${Iw()}`;try{await Bw(r,t,"utf8"),await Mw(r,e)}finally{await ma(r,{force:!0})}}function fa(e){return{schema:ud,version:1,...e}}function Sd(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var jw,Hw,fn=h(()=>{"use strict";L();nt();jt();da();at();jw=".toon",Hw=[".toon",".json"]});function _r(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ue(e){return _r(e)?e:{}}function Gt(e){return Array.isArray(e)?e.filter(_r):[]}function X(e,t){let r=e[t];return typeof r=="string"?r:""}function Rr(e,t){let r=e[t];return typeof r=="number"?r:0}function ga(e){let t=JSON.parse(e);if(!_r(t))throw new Error("expected JSON object");return t}function Is(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}var Ls=h(()=>{"use strict"});import{spawn as Jw}from"node:child_process";import{resolve as qw}from"node:path";async function vd(e,t,r){let n=[];if(e.signalPid){let s=await Vw(e);s&&n.push(s)}if(e.notifyCmd?.trim()){let s=await Kw(e,t,r);s&&n.push({hook:"notify-cmd",...s})}return n.length===0?{status:"success"}:{status:"failure",errors:n}}async function Vw(e){let t=e.signalPid;if(!await yr(t,e.signalPidStartTime))return{hook:"signal-pid",error:"target process is no longer the process the wait was asked to signal",pid:t,signal:e.signal};try{return process.kill(t,e.signal),null}catch(r){return{hook:"signal-pid",error:Cd(r),pid:t,signal:e.signal}}}async function Kw(e,t,r){let n=Ue(t.wait),s=Ue(t.verdict);return await zw(e.notifyCmd,r,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?qw(r,e.resultFile):"",RSP_WAIT_STATUS:String(n.status??"indeterminate"),RSP_WAIT_EXIT_CODE:String(s.target_exit_code??2),RSP_WAIT_TARGET:String(n.target??""),RSP_WAIT_RESULT_SCHEMA:"rsp.wait.result@1"})}async function zw(e,t,r,n,s){return await new Promise(o=>{let i=!1,a=!1,c=m=>{i||(i=!0,o(m))},u=Jw(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,hr(u,n).then(m=>c({error:`timed out after ${r}ms`,...m.cleaned?{}:{survivors:m.survivors}}))},r);u.once("error",m=>{clearTimeout(l),c({error:Cd(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 Cd(e){return e instanceof Error?e.message:String(e)}var Td=h(()=>{"use strict";Ls();at()});import{resolve as Yw}from"node:path";async function Od(e){let{kind:t,entry:r,options:n,cwd:s}=e,o=Xw(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=gn(t,r,o,{status:"pending"},i);await hn(n.resultFile,a,n.format);let c=await vd(n,a,s),u=gn(t,r,o,c,i);return await hn(n.resultFile,u,n.format),{result:u,exitCode:Ad(o,c)}}function Ad(e,t){return t.status!=="success"||e.status==="running"?2:aa(e.status)}function Xw(e,t,r=[]){return t!==!1?e:{status:"indeterminate",exitCode:2,summary:`${e.summary}; could not verify process cleanup`,details:{...e.details??{},cleanup:{verified:!1,survivors:r}}}}function gn(e,t,r,n,s){return{schema:cd,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:Ad(r,n),target_exit_code:r.exitCode,summary:r.summary,delivery:n,...r.details?{details:r.details}:{}}}}async function hn(e,t,r){e&&await pa(Yw(e),kr(t,r))}function kr(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
|
|
39
|
+
`:`${W(e)}
|
|
40
|
+
`}var Pd=h(()=>{"use strict";nt();jt();fn();Td()});import{createWriteStream as Qw,mkdirSync as Zw}from"node:fs";import{readFile as e_,rm as t_}from"node:fs/promises";import{dirname as r_}from"node:path";import{join as Id}from"node:path";function Ld(e,t,r){return{stdout:new Ds(r,Id(e,`${t}.stdout.bin`)),stderr:new Ds(r,Id(e,`${t}.stderr.bin`))}}function n_(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!s_(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function s_(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var Ds,Dd=h(()=>{"use strict";Ds=class{constructor(t,r){this.limit=t;this.spoolPath=r}head=[];headBytes=0;total=0;spool=null;spoolReady=Promise.resolve();spoolError=null;closed=!1;write(t){if(this.closed)return;this.total+=t.length;let r=this.limit-this.headBytes;if(r>0){let n=t.subarray(0,r);this.head.push(n),this.headBytes+=n.length}if(this.total>this.limit){let n=r>0?t.subarray(r):t;this.openSpool(),n.length>0&&this.appendSpool(n)}}async finish(t,r){this.closed=!0;let n=Buffer.concat(this.head),s=this.total>this.headBytes,o={bytes:this.total,...n_(n),truncated:s};if(!s)return await this.discardSpool(),o;if(await this.closeSpool(),this.spoolError)return o.recovery_error=this.spoolError,o;try{let i=await e_(this.spoolPath);o.handle=await t.mint(Buffer.concat([n,i]),{command:r,loss:{level:"terse",bytes_elided:this.total-this.headBytes}}),await this.discardSpool()}catch(i){o.recovery_error=i instanceof Error?i.message:String(i),o.spool_path=this.spoolPath}return o}async discard(){this.closed=!0,await this.closeSpool(),await this.discardSpool()}openSpool(){if(this.spool||this.spoolError)return;let t;try{Zw(r_(this.spoolPath),{recursive:!0}),t=Qw(this.spoolPath,{flags:"w"})}catch(r){this.spoolError=r instanceof Error?r.message:String(r);return}t.on("error",r=>{this.spoolError=r instanceof Error?r.message:String(r)}),this.spool=t}appendSpool(t){let r=this.spool;r&&(this.spoolReady=this.spoolReady.then(()=>new Promise(n=>{r.write(t)?n():r.once("drain",()=>n())})))}async closeSpool(){let t=this.spool;t&&(this.spool=null,await this.spoolReady.catch(()=>{}),await new Promise(r=>t.end(()=>r())))}async discardSpool(){await t_(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as o_,readFileSync as pP}from"node:fs";import{dirname as i_,join as a_}from"node:path";function Nd(e,t){let r=e;for(let n=0;n<16;n++){let s=a_(r,t);if(o_(s))return s;let o=i_(r);if(o===r)break;r=o}return null}function c_(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Ns(e,t){let r=[];for(let n of e.split(`
|
|
41
|
+
`)){let s=n.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let i=s.indexOf(":");if(i<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,i).trim();if(!c)continue;let u=s.slice(i+1).trim();for(;r.length&&r[r.length-1].indent>=a;)r.pop();if(r.push({indent:a,key:c}),u&&r.map(m=>m.key).join(".")===t)return c_(u)}}var $d=h(()=>{});var qd={};M(qd,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>Er,GH_ETAG_CACHE_DIR_NAME:()=>jd,LEGACY_GH_ETAG_CACHE_FILE:()=>Hd,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>Gd,enforceGhEtagCacheCeiling:()=>Ra,ghEtagCacheDir:()=>$s,ghEtagEntryPath:()=>Ms,isCacheEntry:()=>Fs,legacyGhEtagCachePaths:()=>ba,migrateLegacyGhEtagCache:()=>Sa,readGhEtagCache:()=>Bs,readGhEtagEntry:()=>wa,resetGhEtagCacheMigrationMemo:()=>g_,sweepGhEtagCache:()=>ka,writeGhEtagEntry:()=>_a});import{existsSync as u_}from"node:fs";import{mkdir as l_,readdir as d_,rename as m_,rm as Md,stat as Bd,unlink as Fd,writeFile as p_}from"node:fs/promises";import{dirname as f_,join as Sr}from"node:path";function $s(e){return Sr(G(e),jd)}function Ms(e,t){return Sr($s(e),`${w_(t)}.toon`)}function ba(e){let t=G(e);return[Sr(t,Hd),Sr(t,Gd)]}async function wa(e,t){await Sa(e);try{let r=Jd(await gs(Ms(e,t)));return Fs(r)?r:void 0}catch{return}}async function _a(e,t,r={}){return await Ud(Ms(e,t.key),t),await Ra(e,r.maxBytes??Er)}async function Ra(e,t=Er){let r=await y_(e),n=r.reduce((o,i)=>o+i.bytes,0);if(n<=t)return{evictedEntries:0,bytes:n};r.sort((o,i)=>o.mtimeMs-i.mtimeMs||o.path.localeCompare(i.path));let s=0;for(let o of r){if(n<=t)break;try{await Fd(o.path),n-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:n}}async function ka(e,t={}){let r=await Sa(e,{force:!0}),n=await h_(e);return{...await Ra(e,t.maxBytes??Er),reclaimedTmp:n,migratedEntries:r}}async function Bs(e){for(let t of ba(e))try{let r=Jd(await gs(t));if(__(r))return r}catch{}return{version:1,entries:{}}}async function Sa(e,t={}){if(!t.force&&ha.has(e))return 0;ha.add(e);let r=ba(e).filter(o=>u_(o));if(r.length===0)return 0;let n=await Bs(e),s=0;for(let[o,i]of Object.entries(n.entries)){if(!Fs(i))continue;let a=Ms(e,o);await b_(a)||(await Ud(a,{...i,key:o}),s+=1)}for(let o of r)await Md(o,{force:!0});return s}function g_(){ha.clear()}async function h_(e){let t=0;for(let r of[G(e),$s(e)])for(let n of await Wd(r))if(n.endsWith(".tmp"))try{await Fd(Sr(r,n)),t+=1}catch{}return t}async function y_(e){let t=$s(e),r=[];for(let n of await Wd(t)){if(!n.endsWith(".toon"))continue;let s=Sr(t,n);try{let o=await Bd(s);o.isFile()&&r.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return r}async function Wd(e){try{return await d_(e)}catch{return[]}}async function b_(e){try{return await Bd(e),!0}catch{return!1}}async function Ud(e,t){await l_(f_(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;try{await p_(r,`${C(t)}
|
|
42
|
+
`,{encoding:"utf8",mode:384}),await m_(r,e)}catch(n){throw await Md(r,{force:!0}),n}}function w_(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Jd(e){try{return JSON.parse(e)}catch{return D(e)}}function __(e){return ya(e)&&e.version===1&&ya(e.entries)&&Object.values(e.entries).every(Fs)}function Fs(e){return ya(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function ya(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var jd,Hd,Gd,Er,ha,yn=h(()=>{"use strict";pe();L();U();jd="gh-etag",Hd="gh-etag-cache.toon",Gd="gh-etag-cache.json",Er=4*1024*1024;ha=new Set});var Qd={};M(Qd,{DEFAULT_RSP_BYTE_BUDGET:()=>Ae,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Oe,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ct,DEFAULT_RSP_IDLE_MS:()=>Gs,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Xd,DEFAULT_RSP_STORE_PATH:()=>Ea,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Hs,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Kd,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>zd,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>js,DEFAULT_RSP_TTL_DAYS:()=>Te,MIN_RSP_IDLE_MS:()=>Yd,resolveRspConfig:()=>Pe});import{existsSync as R_,readFileSync as k_}from"node:fs";import{join as S_,resolve as Vd}from"node:path";function Pe(e,t,r){let n=Nd(Vd(e),S_(".red","config.yaml")),s=n?k_(n,"utf8"):"",o=Ns(s,"rsp.enabled")==="true",i=Ns(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ne(V(s,"rsp.ttlDays"),Te),u=ne(Je(t.RSP_EPHEMERAL_TTL_HOURS)??V(s,"rsp.ephemeralTtlHours"),Oe),l=ne(V(s,"rsp.byteBudget"),Ae),m=ne(V(s,"rsp.telemetryTtlDays"),js),d=ne(V(s,"rsp.telemetryByteBudget")??V(s,"rsp.byteBudget"),Hs),p=ne(Je(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??V(s,"rsp.telemetryDrainIntervalMs"),Kd),f=ne(Je(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??V(s,"rsp.telemetryDrainTimeoutMs"),zd),_=E_(Je(t.RSP_IDLE_MS)??V(s,"rsp.idleMs"),Gs,Yd),g=ne(Je(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??V(s,"rsp.heavyGitByteThreshold"),ct),y=x_(Je(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??V(s,"rsp.measurement.holdoutShare"),Xd),b=ne(Je(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??V(s,"rsp.ghEtagCacheMaxBytes"),Er),w={maxOverheadMs:ne(Je(t.RSP_MAX_OVERHEAD_MS)??V(s,"rsp.overhead.maxOverheadMs"),us),maxSelfStateBytes:ne(Je(t.RSP_MAX_SELF_STATE_BYTES)??V(s,"rsp.overhead.maxSelfStateBytes"),ls),netLossFloorBytes:ne(V(s,"rsp.overhead.netLossFloorBytes"),ds),consecutiveBreaches:ne(Je(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??V(s,"rsp.overhead.consecutiveBreaches"),ms),cooldownMs:ne(V(s,"rsp.overhead.cooldownMs"),ps)},S=Ge(e).rootDir,O=r??t.RSP_STORE_URI??`file://${kl(Vd(S),R_)}`;return{enabled:o,proxyEnabled:a,storeUri:O,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:m,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:f,idleMs:_,heavyGitByteThreshold:g,measurementHoldoutShare:y,ghEtagCacheMaxBytes:b,overhead:w}}function V(e,t){let r=Ns(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)?n:void 0}function ne(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function E_(e,t,r){let n=ne(e,t);return Math.max(n,r)}function x_(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function Je(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ct,Ea,Te,Oe,Ae,js,Hs,Kd,zd,Gs,Yd,Xd,Ie=h(()=>{"use strict";$d();pe();Es();U();yn();ct=8*1024,Ea=_l,Te=7,Oe=6,Ae=64*1024*1024,js=90,Hs=4*1024*1024,Kd=3e4,zd=2e3,Gs=5*6e4,Yd=5e3,Xd=0});function Zd(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Ft(),cn)),o=s(e,Pe(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var em=h(()=>{"use strict";Ie()});import{spawn as v_}from"node:child_process";async function rm(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:Y("missing command line")};let a=e.store??Zd(n),c=Ld(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,m=!1,d=async y=>{l||(l=!0,i.removeEventListener("abort",_),await As(s,o,y.verdict.status).catch(()=>{}),u(y))},p=v_(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});p.stdout?.on("data",y=>c.stdout.write(Buffer.from(y))),p.stderr?.on("data",y=>c.stderr.write(Buffer.from(y)));let f=async(y,b)=>{if(l||m)return;m=!0,clearTimeout(g);let w=await hr(p,r.terminateGraceMs),S=await tm(null,null,c,a,t);await d({verdict:{status:y,exitCode:2,summary:b,details:S},cleanupProven:w.cleaned,survivors:w.survivors})},_=()=>void f("indeterminate","command interrupted");i.addEventListener("abort",_,{once:!0});let g=setTimeout(()=>{f("timeout",`command timed out after ${nm(r.timeoutMs)}`)},r.timeoutMs);p.once("error",y=>{clearTimeout(g),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:y.message}})}),p.once("close",(y,b)=>{if(clearTimeout(g),l||m)return;let w=y===0;tm(y,b,c,a,t).then(S=>d({verdict:{status:w?"success":"failure",exitCode:w?0:1,summary:w?"command exited successfully":`command exited with ${b??y??"unknown"}`,details:S}}))}),i.aborted&&_()})}async function Ws(e){let{probe:t,timeoutMs:r,baseSleepMs:n,registryPath:s,entry:o,signal:i}=e,a=Date.now()+r,c=0,u;for(;Date.now()<a;){if(i.aborted)return{verdict:C_(u,c,o.last_poll_at)};let l;try{l=await t()}catch(_){l=Y(_ instanceof Error?_.message:String(_))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=xa(l),await wr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await As(s,o,l.status).catch(()=>{}),{verdict:l};let m=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),p=Math.min(m+d,Math.max(0,a-Date.now())),f=e.makeWakeSignal?.();await T_(p,i,f)}return await As(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${nm(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:xa(u)}:{attempts:c}}}}async function tm(e,t,r,n,s){let[o,i]=await Promise.all([r.stdout.finish(n,`${s} # stdout`),r.stderr.finish(n,`${s} # stderr`)]);return{status:e??null,signal:t??null,stdout:o,stderr:i}}function xa(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function C_(e,t,r){return Y("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:xa(e)}:{}})}async function T_(e,t,r){t.aborted||e<=0||r?.aborted||await new Promise(n=>{let s=setTimeout(o,e);function o(){clearTimeout(s),t.removeEventListener("abort",i),r?.removeEventListener("abort",a),n()}let i=()=>o(),a=()=>o();t.addEventListener("abort",i,{once:!0}),r?.addEventListener("abort",a,{once:!0})})}function nm(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var sm=h(()=>{"use strict";Dd();em();jt();at();fn()});var va,Ca,Ta,ce,Q,he,qe,bn,Us=h(()=>{"use strict";va="rsp-telemetry.spool.toonl",Ca="rsp-telemetry.spool.jsonl",Ta="rsp-telemetry.spool.corrections.toonl",ce="rsp_accounting_events_v1",Q="rsp_decisions_v1",he="rsp_telemetry_invocations_v1",qe="rsp_telemetry_degradations_v1",bn="rsp_telemetry_index_v1"});function xr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ye(e){return ht(e)??0}function ht(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var Oa=h(()=>{"use strict"});import{randomUUID as Pa,createHash as O_}from"node:crypto";import{appendFileSync as um,existsSync as A_,mkdirSync as lm}from"node:fs";import{mkdir as dm,readdir as P_,readFile as mm,rename as I_,rm as pm,writeFile as Ia}from"node:fs/promises";import{basename as Aa,dirname as wn,join as vr,resolve as om}from"node:path";function qs(e){if(!e)return null;let t=om(e);for(;;){if(A_(vr(t,".red")))return t;let r=om(vr(t,".."));if(r===t)break;t=r}return null}function ut(e){return vr(G(e),va)}function Vs(e){return vr(G(e),Ca)}function Da(e){return vr(G(e),Ta)}async function lt(e,t){yt(e,t)}function yt(e,t){try{let r=qs(e);if(!r)return;let n=ut(r);lm(wn(n),{recursive:!0}),um(n,B_({spool_id:Pa(),event:D_(t)}),{encoding:"utf8",mode:384})}catch{}}function D_(e){return im(im(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function im(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=L_)return e;let o={...e};return delete o[t],ye(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function N_(e){let t=qs(e);if(!t)return[];let r=ut(t);await dm(wn(r),{recursive:!0}).catch(()=>{});let n=await hm(t),s=[...await ym(t),...await j_(n)];return await Promise.all(n.map(o=>pm(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Na(e,t){let r=qs(e);if(!r)return;let n=ut(r);await dm(wn(n),{recursive:!0}).catch(()=>{}),await F_(r);for(let s of await $_(r))await am(r,s,t);for(let s of await ym(r))await fm(r,s,t,!0);for(let s of await hm(r))await am(r,s,t)}async function $_(e){let t=[ut(e),Vs(e)],r=wn(t[0]);return(await P_(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Aa(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Aa(c)}.`));if(!o)return!1;let i=`${Aa(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&M_(a))}).sort().map(s=>vr(r,s))}function M_(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function am(e,t,r){try{let n=await gm(t);for(let s of bm(n))await fm(e,s,r,!1)}finally{await pm(t,{force:!0})}}async function fm(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&cm(e,{correction_id:Pa(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}cm(e,{correction_id:Pa(),target_spool_id:t.spool_id,action:"retry",created_at:new Date().toISOString(),event_json:t.event?JSON.stringify(t.event):void 0})}async function gm(e){let t="";for(let r=0;r<5;r++){let n=await mm(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Cr(e){try{let t=JSON.parse(e);return!xr(t)||t.collection!==ce&&t.collection!==Q&&t.collection!==he&&t.collection!==qe?null:t}catch{return null}}function B_(e){return tt().push(W_(e))}function cm(e,t){try{let r=qs(e);if(!r)return;let n=Da(r);lm(wn(n),{recursive:!0});let s=tt();um(n,s.push({correction_id:t.correction_id,target_spool_id:t.target_spool_id,action:t.action,created_at:t.created_at,event_json:t.event_json??null}),{encoding:"utf8",mode:384})}catch{}}async function hm(e){let t=[ut(e),Vs(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await I_(n,s),await Ia(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function F_(e){await Promise.all([Ia(ut(e),"",{flag:"a"}),Ia(Vs(e),"",{flag:"a"})]).catch(()=>{})}async function j_(e){let t=[];for(let r of e)t.push(...bm(await gm(r)));return t}async function ym(e){let t=await mm(Da(e),"utf8").catch(()=>""),r=new Map;for(let n of H_(t))r.set(n.target_spool_id,n);return[...r.values()].filter(n=>n.action==="retry"&&n.event_json).map(n=>({spool_id:n.target_spool_id,event:Cr(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function bm(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s){try{let o=JSON.parse(s);if(xr(o)){let i=Cr(JSON.stringify(o));t.push(i?{spool_id:Js(JSON.stringify(o)),event:i}:{spool_id:Js(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:Js(s),raw_line:s});continue}try{for(let o of et(`${r}
|
|
41
43
|
${s}
|
|
42
|
-
`))
|
|
44
|
+
`))La(o)&&U_(o)&&t.push({spool_id:o.spool_id,event:wm(o)})}catch{s.startsWith("{")&&t.push({spool_id:Js(s),raw_line:s})}}}return t}function H_(e){return G_(e).map(J_).filter(t=>t!==null)}function G_(e){let t=[],r="";for(let n of e.split(/\r?\n/)){let s=n.trim();if(s)try{let o=JSON.parse(s);La(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r)continue;try{for(let o of et(`${r}
|
|
43
45
|
${s}
|
|
44
|
-
`))
|
|
45
|
-
`,"utf8"),t]):null}function
|
|
46
|
-
`,"utf8"),await
|
|
46
|
+
`))La(o)&&t.push(o)}catch{}}}return t}function Js(e){return`legacy:${O_("sha256").update(e).digest("hex").slice(0,24)}`}function W_(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 wm(e){let{spool_id:t,...r}=e;return Cr(JSON.stringify(r))}function U_(e){return typeof e.spool_id=="string"&&wm(e)!==null}function J_(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 La(e){return xr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var L_,_m=h(()=>{"use strict";pe();L();Us();Oa();L_=64*1024});function Ks(e){return e.trim().split(/\s+/).filter(Boolean)}function _n(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Rn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function be(e){let t=Ks(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Wt(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Wt(t)&&t[1]?`gh ${t[1]} json-jq`:Wt(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 Wt(e){return e[0]==="gh"&&e.some(q_)}function q_(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Tr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var kn=h(()=>{"use strict"});var K,zs=h(()=>{"use strict";Ie();K="rsp_elisions_v1"});import{spawnSync as xn}from"node:child_process";import{createHash as Ba}from"node:crypto";import{existsSync as V_}from"node:fs";import{mkdir as K_,readFile as z_,readdir as Rm,rename as Y_,writeFile as X_}from"node:fs/promises";import{homedir as Q_}from"node:os";import{basename as Z_,dirname as eR,join as Sn}from"node:path";import{fileURLToPath as tR}from"node:url";import{gunzipSync as rR,gzipSync as nR}from"node:zlib";function vn(e,t){return`el:${Ba("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 bt(e){return`record:${e.slice(3)}`}function Jt(e){return`expired:${e.slice(3)}`}function Qs(){return"index:v1"}function sR(e){return`blob:${e}`}function km(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function dt(e){let t=Ks(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":Zs(t)?"re-executable":"ephemeral"}return"ephemeral"}function Cn(e){return no(e.storage_class)?e.storage_class:dt(e.command)}function Sm(e){return no(e.storage_class)?e.storage_class:dt(e.command)}function Fa(e){let t=aR(),r={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let n of e){let s=Sm(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 ja(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:oR(o),storage_class:Sm(s),recover:`rsp show ${s.handle}`}})}function oR(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 Ha(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 qt(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 Ga(e,t){let r=process.cwd(),n=xn("git",["rev-parse","--is-inside-work-tree"],{cwd:r,encoding:"utf8"});if(n.status!==0||n.stdout.trim()!=="true")return null;let s=xn("git",["hash-object","-w","--stdin"],{cwd:r,input:e,encoding:"buffer"});if(s.status!==0)return null;let o=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(o)?{kind:"git-blob",command:t,cwd:r,object_ids:[o],working_tree_fingerprint:iR(r),original_bytes:e.length}:null}function iR(e){let t=$a(e,["rev-parse","HEAD"])||"unborn",r=$a(e,["write-tree"])||"no-index",n=$a(e,["status","--porcelain=v1","-z"])||"";return Ba("sha256").update(t).update("\0").update(r).update("\0").update(n).digest("hex")}function $a(e,t){let r=xn("git",t,{cwd:e,encoding:"utf8"});return r.status===0?r.stdout.trim():null}function Wa(e,t){let r=Ks(t);if(!Zs(r))return null;let n=Cm(process.cwd(),r,e.length);return!n||Ut(n)!==Ut(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:r,original_bytes:e.length,content_hash:Ut(e)}}function Zs(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 Ut(e){return Ba("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function Ua(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 Ja(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 qa(e,t,r){let n=nR(e);return{key:sR(t),content_hash:t,encoding:"gzip+base64",bytes:n.toString("base64"),original_bytes:e.length,stored_bytes:n.length,created_at:r}}function Em(e){try{let t=rR(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function xm(e){let t=e.object_ids[0];if(!t)return null;let r=xn("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return r.status!==0||r.stdout.length!==e.original_bytes?null:r.stdout}function vm(e){if(!Zs(e.argv))return null;let t=Cm(e.cwd,e.argv,e.original_bytes);return t?Ut(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
|
|
47
|
+
`,"utf8"),t]):null}function Cm(e,t,r){let n=t[0];if(!n)return null;let s=xn(n,t.slice(1),{cwd:e,encoding:"buffer",maxBuffer:Math.max(r+1024,1024*1024)});return s.status!==0||s.signal?null:s.stdout}function aR(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function Tn(e){return/^el:[a-f0-9]{12}$/.test(e)}function Xs(e){return/^blob:[a-f0-9]{64}$/.test(e)}function Tm(e){if(!En(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let r=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:r,options:{includeSuperseded:e.includeSuperseded===!0,scope:En(e.scope)?e.scope:void 0,ranking:En(e.ranking)?e.ranking:void 0}}}function Om(e){if(!En(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let r=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,n=Array.isArray(e.ignore)?e.ignore.filter(s=>typeof s=="string"):void 0;return{cwd:t,maxFiles:r,ignore:n}}function En(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Am(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 Rm(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(n.length>=t)return;if(s.has(c.name))continue;let u=Sn(i,c.name);c.isDirectory()?await o(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&n.push(u)}}return await o(e),n}function Pm(e,t){let r=Number(e.red_entity_id??e.rid);if(!Number.isFinite(r))return null;let n=e.properties??e.PROPERTIES,s=En(n)?n:{},o=String(e.label??e.LABEL??s.title??`memory-${r}`),i=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??o),c=`${o} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(r),rid:r,label:o,node_type:i,score:u.length||1,excerpt:a.slice(0,500)}}function eo(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function On(e){if(!we(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",r=uR(e.derivation_recipe),n=lR(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&Xs(s);return e.collection===K&&typeof e.handle=="string"&&Tn(e.handle)&&(t||r||n||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Ka(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&Xs(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&cR(e.loss)&&(e.storage_class===void 0||no(e.storage_class))}function Va(e){return!we(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!we(t))return!1;let r=t.blob_key;return typeof t.handle=="string"&&Tn(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&(t.raw_bytes===void 0||typeof t.raw_bytes=="number")&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&(t.storage_class===void 0||no(t.storage_class))&&(r===void 0||typeof r=="string"&&Xs(r))})}function to(e){return we(e)&&typeof e.key=="string"&&Xs(e.key)&&Ka(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 ro(e){return we(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function cR(e){return we(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function no(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function uR(e){return we(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 lR(e){return we(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&Zs(e.argv)&&typeof e.original_bytes=="number"&&Ka(e.content_hash)}function Ka(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function we(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Im(e){try{let n=(await z_(e,"utf8")).trim();if(n==="")return Ys();let s;try{s=JSON.parse(n)}catch{s=D(n)}if(dR(s))return{...s,blobs:s.blobs??{}}}catch(r){if(r.code==="ENOENT"){let s=Ys();return await Or(e,s),s}let n=Ys();return await Or(e,n),n}let t=Ys();return await Or(e,t),t}async function Lm(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Dm(e){return Z_(e)==="red-skills.rdb"}async function so(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Sn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Sn(Q_(),".cache","red-skills","bundles")),t=Sn(e,"reddb"),r;try{r=await Rm(t)}catch{return}r.sort().reverse();for(let n of r){let s=Sn(t,n,process.platform==="win32"?"red.exe":"red");if(V_(s)){process.env.REDDB_BIN=s;return}}}async function Or(e,t){await K_(eR(e),{recursive:!0});let r=`${e}.${process.pid}.tmp`;await X_(r,`${C(Ma(t))}
|
|
48
|
+
`,"utf8"),await Y_(r,e)}function Ma(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=>Ma(t));if(typeof e=="object"){let t={};for(let[r,n]of Object.entries(e))n!==void 0&&(t[r]=Ma(n));return t}return String(e)}function Ys(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function dR(e){return we(e)&&e.version===1&&we(e.records)&&Object.values(e.records).every(On)&&(e.blobs===void 0||we(e.blobs)&&Object.values(e.blobs).every(to))&&we(e.tombstones)&&Object.values(e.tombstones).every(ro)&&Va(e.index)}function Nm(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return tR(e)}var oo=h(()=>{"use strict";L();kn();zs()});async function $m(e,t){return mR?gR(e,t):pR?yR(e,t):fR(e,t)}async function fR(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 gR(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:hR(r.stdout),kill(){r.kill()},wait(){return r.exited}}}async function*hR(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 yR(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:bR(n.stdout),kill(){try{n.kill("SIGTERM")}catch{}},async wait(){return(await n.status).code??0}}}async function*bR(e){let t=e.getReader();try{for(;;){let{value:r,done:n}=await t.read();if(n)return;yield r}}finally{t.releaseLock()}}var mR,pR,Mm=h(()=>{mR=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",pR=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as wR}from"node:fs";import{join as _R}from"node:path";function Bm(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=_R(r,"bin",t);if(wR(o))return o;throw new Error(`reddb: binary "${t}" not found.
|
|
47
49
|
expected at: ${o}
|
|
48
50
|
override: set ${n}=/path/to/${t}
|
|
49
51
|
fix: re-run \`pnpm install\` (the postinstall script downloads it),
|
|
50
|
-
or check the postinstall log for a download error.`)}var
|
|
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(
|
|
52
|
+
or check the postinstall log for a download error.`)}var Fm=h(()=>{});import{fileURLToPath as RR}from"node:url";import{dirname as kR,resolve as SR,join as yI}from"node:path";function vR(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function jm(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Bm({name:vR(),packageRoot:xR,envVar:"REDDB_BIN"})}var ER,xR,Hm=h(()=>{Fm();ER=kR(RR(import.meta.url)),xR=SR(ER,"..")});var CR,TR,v,io,wt=h(()=>{CR=new TextEncoder,TR=new TextDecoder("utf-8"),v=class extends Error{constructor(t,r,n){super(r),this.name="RedDBError",this.code=t,this.data=n??null}},io=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(CR.encode(s+`
|
|
53
|
+
`)).catch(a=>{this.pending.delete(n),i(a)})})}async close(){if(!this.closed){try{await this.call("close",{})}catch{}this.#e("close requested");try{this.child.stdin.end()}catch{}await this.child.wait()}}async#t(){let t=new Uint8Array(0);try{for await(let r of this.child.stdout){let n=new Uint8Array(t.length+r.length);n.set(t,0),n.set(r,t.length),t=n;let s=0;for(let o=0;o<t.length;o++)if(t[o]===10){let i=t.subarray(s,o);this.#r(TR.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 Ya(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:/"?OR(e):AR(e)}function OR(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=PR(s),a=r.port?Number(r.port):za(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 AR(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):za(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):za(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 PR(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 za(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 Xa=h(()=>{wt()});function LR(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Gm(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Gm(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Gm(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 DR(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 IR,An,Qa=h(()=>{wt();IR=new Set(["embedded"]),An=class{constructor(t,r){this._client=t,this._transport=r??null}_guard(t){if(this._transport&&IR.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:DR(n.value)}async put(t,r,n,s={}){this._guard("put");let o=LR(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 Za(e,t){return`${ec(e)}.${NR(t)}`}function ec(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 NR(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function $R(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 Wm(e){return`'${String(e).replace(/'/g,"''")}'`}var Ar,tc=h(()=>{wt();Ar=class{constructor(t,r="kv_default"){this.client=t,this.collection=r}put(t,r,n={}){let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Wm).join(", ")}]`:"",i=n.expireMs!=null?` EXPIRE ${Number(n.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Za(s,t)} = ${$R(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 ${Za(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 ${Za(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 ${ec(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(Wm).join(", ")}] FROM ${ec(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(`
|
|
52
54
|
|
|
53
55
|
`)){let l=u.split(`
|
|
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
|
|
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,`
|
|
56
|
+
`).find(m=>m.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function MR(e,t,r){let{waitMs:n,group:s=null,count:o=null}=r??{};if(!Number.isInteger(n)||n<0)throw new v("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=mt(e),a=mt(t),c=s!=null?` GROUP ${mt(s)}`:"",u=o!=null?nc(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function mt(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function nc(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new v("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function BR(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function FR(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new v("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${BR(e.priority)}`),e.key!=null&&(t+=` KEY ${sc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${sc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function jR(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?sc(e):JSON.stringify(e)}function sc(e){return`'${String(e).replace(/'/g,"''")}'`}function rc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Pn,oc=h(()=>{wt();Pn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${mt(t)}`})}push(t,r,n={}){let s=FR(n);return this.client.call("query",{sql:`QUEUE PUSH ${mt(t)} ${jR(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${mt(t)}${nc(r)}`});return rc(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${mt(t)}${nc(r)}`});return rc(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${mt(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${mt(t)}`})}async readWait(t,r,n={}){let s=MR(t,r,n),o=await this.client.call("query",{sql:s});return rc(o)}}});function Um(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function HR(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new v("INVALID_ARGUMENT","limit must be a positive integer");return e}function ao(e){return String(e).split(".").map(Jm).join(".")}function Jm(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function GR(e){return qm(JSON.stringify(e))}function WR(e){return JSON.stringify(e)}function UR(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?GR(e):qm(e)}function qm(e){return`'${String(e).replace(/'/g,"''")}'`}var In,ic=h(()=>{wt();In=class{constructor(t){this.db=t}async insert(t,r){Um(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${ao(t)} DOCUMENT VALUES (${WR(r)}) RETURNING *`),s=n.rows?.[0];if(!s||s.rid==null)throw new v("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:n.affected??1,rid:s.rid,item:s}}async get(t,r){let n=await this.db.get(t,r);if(!n.entity)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return n.entity}async list(t,r={}){let n=HR(r.limit),s=r.orderBy??r.order_by??"rid ASC",o=r.filter?` WHERE ${String(r.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${ao(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Um(n,"documents.patch patch");let s=Object.entries(n);if(s.length===0)throw new v("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new v("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let o=s.map(([c,u])=>`${Jm(c)} = ${UR(u)}`).join(", "),a=(await this.db.query(`UPDATE ${ao(t)} SET ${o} WHERE rid = $1 RETURNING *`,r)).rows?.[0];if(!a)throw new v("NOT_FOUND",`document ${String(r)} was not found`);return a}async delete(t,r){let s=(await this.db.delete(t,r)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${ao(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function JR(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${_t(r)}.${_t(n)})`}return VR(e)}function qR(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function _t(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function VR(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Vm(e)}function Vm(e){return`'${String(e).replace(/'/g,"''")}'`}var Ln,ac=h(()=>{Ln=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){qR(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Vm).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${_t(s)} ${_t(t)} = ${JR(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${_t(n)} ${_t(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${_t(n)} ${_t(t)}`})}}});function KR(e,t){for(let r of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[r]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Pr(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function zR(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Km(e)}function Km(e){return`'${String(e).replace(/'/g,"''")}'`}var Dn,cc=h(()=>{Dn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){KR(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Km).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Pr(s)}.${Pr(t)} = ${zR(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Pr(n)}.${Pr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Pr(n)}.${Pr(t)}`})}}});async function Ym(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(YR)}async function Xm(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${QR(t)}`)).rows??[]).some(n=>n.name===String(t))}function YR(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function zm(e){return String(e).split(".").map(XR).join(".")}function XR(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new v("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function QR(e){return`'${String(e).replace(/'/g,"''")}'`}var Nn,uc=h(()=>{wt();Nn=class e{constructor(t,r,n=null,s=[],o=[]){this.db=t,this.collection=r,this.columns=n,this.whereClauses=s,this.params=o}select(...t){let r=t.length===1&&Array.isArray(t[0])?t[0]:t,n=r.length===1&&r[0]==="*"?null:r;return new e(this.db,this.collection,n!=null&&n.length>0?n:null,this.whereClauses,this.params)}where(t,...r){if(typeof t!="string"||t.trim().length===0)throw new v("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let n=r.length===1&&Array.isArray(r[0])?r[0]:r;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...n])}async run(){let t=this.columns==null?"*":this.columns.map(zm).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${zm(this.collection)}${r}`,o=(this.params.length>0?await this.db.query(n,this.params):await this.db.query(n)).rows??[];return this.columns==null?o:o.map(i=>{let a={};for(let c of this.columns)a[c]=i[c];return a})}}});async function lo(e,t={}){let r=Ya(e);if(ck(r),r.kind==="embedded"){let n=ak(r,t.auth);if(n.token||n.username)throw new v("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=ik(r),o=t.binary??jm(),i=await $m(o,s),a=new io(i);return await a.call("version",{}),new dc(a,{transport:"embedded"})}}function Zm(e){return tk(e),e instanceof Float32Array||e instanceof Float64Array?Array.from(e):e instanceof Date?{$ts:String(BigInt(e.getTime())*1000000n)}:e instanceof Uint8Array||typeof Buffer<"u"&&e instanceof Buffer?{$bytes:nk(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&ok(e)?{$uuid:e}:e}function tk(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new v("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new v("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new v("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function rk(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Zm):e.map(Zm)}function nk(e){let t=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(typeof Buffer<"u")return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64");let r="";for(let n of t)r+=String.fromCharCode(n);return btoa(r)}function sk(e){if(typeof Buffer<"u"){let n=Buffer.from(e,"base64");return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function ok(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function co(e){if(Array.isArray(e))return e.map(co);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return sk(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let n=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(n/1000000n))}}let r={};for(let[n,s]of Object.entries(e))r[n]=co(s);return r}return e}function ik(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function ak(e,t){let r={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return r;if(typeof t!="object")throw new TypeError("options.auth must be an object");if(t.token!=null){if(typeof t.token!="string"||t.token.length===0)throw new TypeError("options.auth.token must be a non-empty string");r.token=t.token}if(t.apiKey!=null){if(typeof t.apiKey!="string"||t.apiKey.length===0)throw new TypeError("options.auth.apiKey must be a non-empty string");r.token=t.apiKey}if(t.username!=null){if(typeof t.username!="string"||t.username.length===0)throw new TypeError("options.auth.username must be a non-empty string");r.username=t.username}if(t.password!=null){if(typeof t.password!="string"||t.password.length===0)throw new TypeError("options.auth.password must be a non-empty string");r.password=t.password}return t.loginUrl!=null&&(r.loginUrl=t.loginUrl),r}function ck(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",ZR)}function mc(){return new v(Qm,`${Qm}: nested transactions are not supported on one connection`)}function tp(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function uk(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${ep} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function lk(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new v("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${ep} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new v("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var ZR,ek,ep,Qm,uo,lc,dc,rp=h(()=>{Mm();Hm();wt();Xa();Qa();tc();oc();ic();ac();cc();uc();Qa();tc();oc();ic();ac();cc();uc();Xa();ZR="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",ek="1.0",ep="1.0.9",Qm="NESTED_TX_NOT_SUPPORTED";uo=class{constructor(t){this.db=t}query(t,...r){return this.db.query(t,...r)}execute(t,...r){return this.db.execute(t,...r)}insert(t,r){return this.db.insert(t,r)}bulkInsert(t,r){return this.db.bulkInsert(t,r)}async transaction(){throw mc()}},lc=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw mc();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new v("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new v("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let r=await t(new uo(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){tp(r,n)}throw r}}},dc=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=ek,this.cache=new An(t,this.transport),this.queue=new Pn(t),this.queues=this.queue,this.documents=new In(this);let n=new Ar(t);this.kv=Object.assign((s="kv_default")=>new Ar(t,s),{put:n.put.bind(n),invalidateTags:n.invalidateTags.bind(n),watch:n.watch.bind(n),watchPrefix:n.watchPrefix.bind(n)}),this.config=(s="red.config")=>new Ln(t,s),this.vault=(s="red.vault")=>new Dn(t,s),this.inTransaction=!1}query(t,...r){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new v("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let n=rk(r);return n==null?this.client.call("query",{sql:t}).then(co):this.client.call("query",{sql:t,params:n}).then(co)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return uk(n,"insert")}async bulkInsert(t,r){if(Array.isArray(r)&&r.length===0)return{affected:0,rids:[],ids:[]};let n=await this.client.call("bulk_insert",{collection:t,payloads:r});return lk(n,r.length)}tx(){return new lc(this)}async transaction(t){if(this.inTransaction)throw mc();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let r=!1;try{await this.query("BEGIN"),r=!0;let n=await t(new uo(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){tp(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Xm(this,t)}list(){return Ym(this)}from(t){return new Nn(this,t)}get(t,r){return this.client.call("get",{collection:t,id:String(r)})}delete(t,r){return this.client.call("delete",{collection:t,id:String(r)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,r){return this.client.call("auth.login",{username:t,password:r})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,r){return this.client.call("auth.change_password",{current_password:t,new_password:r})}createApiKey({username:t,role:r}={}){return this.client.call("auth.create_api_key",{username:t,role:r})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});import{createHash as dk}from"node:crypto";import{existsSync as np}from"node:fs";import{mkdir as mk,readFile as pk,rename as pc,rm as $n,stat as fc}from"node:fs/promises";import{basename as fk,dirname as gk}from"node:path";async function sp(e){await(await Vt.open({...e,allowResidentOpen:!0})).close()}var Vt,op=h(()=>{"use strict";rp();zs();oo();Vt=class e{constructor(t,r){this.opts=r;this.path=t}document;db;path;dirty=!1;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1"&&!t.allowResidentOpen)throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let r=Nm(t.uri),n=await Lm(r),s=new e(n,{uri:t.uri,ttlDays:eo(t.ttlDays,Te),ephemeralTtlHours:eo(t.ephemeralTtlHours,Oe),byteBudget:eo(t.byteBudget,Ae),now:t.now??(()=>new Date)});return Dm(n)?(await so(),await mk(gk(n),{recursive:!0}),s.db=await lo(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Im(s.path),s}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,r){if(this.db)return await this.mintRedDb(t,r);let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=vn(n,r),a=bt(i),c=dt(r.command),u=c==="derivable"?Ga(n,r.command):null,l=c==="re-executable"?Wa(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ha(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ut(n),f=m==="ephemeral"?qa(n,p,o):null,_=Ua(n,u,l,f);f&&!this.document.blobs[f.key]&&(this.document.blobs[f.key]=f,this.dirty=!0);let g={collection:K,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};return delete this.document.tombstones[Jt(i)],this.document.records[a]=g,this.upsertIndex({handle:i,key:a,bytes:_,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:m,blob_key:f?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!Tn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[bt(t)];if(!On(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return this.expireEntry({handle:n.handle,key:bt(n.handle),bytes:Ja(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Cn(n),blob_key:n.blob_key},n.expires_at),await this.flush(),o}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:K,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Cn(n)}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let r=this.readIndex().records;return{records:r.length,bytes:qt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Fa(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),ja(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let n=this.readIndex().records.filter(s=>s.handle!==t.handle);n.push(t),this.writeIndex({version:1,records:n}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),r=new Date(t).toISOString(),n=this.readIndex(),s=[];for(let i of n.records)Date.parse(i.expires_at)<=t?this.expireEntry(i,i.expires_at):s.push(i);let o=qt(s);for(s.sort((i,a)=>i.created_at.localeCompare(a.created_at));o>this.opts.byteBudget&&s.length>0;){let i=s.shift();this.expireEntry(i,r),o=qt(s)}s.length<n.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,r){delete this.document.records[t.key],this.document.tombstones[Jt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[Jt(t)];return ro(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return xm(t.derivation_recipe);if(t.reexecution_recipe)return vm(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return to(r)?Em(r):null}return null}deleteUnreferencedLocalBlobs(t){let r=new Set(t.map(n=>n.blob_key).filter(n=>typeof n=="string"));for(let n of Object.keys(this.document.blobs))r.has(n)||(delete this.document.blobs[n],this.dirty=!0)}async flush(){this.dirty&&(await Or(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await fc(this.path).then(a=>a.size,()=>0);if(t<=this.opts.byteBudget)return;let r=this.readIndex().records,n=new Set(r.map(a=>a.key)),s=new Set(r.map(a=>a.blob_key).filter(a=>typeof a=="string")),o={version:1,records:Object.fromEntries(Object.entries(this.document.records).filter(([a])=>n.has(a))),blobs:Object.fromEntries(Object.entries(this.document.blobs).filter(([a])=>s.has(a))),tombstones:{},index:{version:1,records:r}},i=Buffer.byteLength(`${JSON.stringify(o)}
|
|
57
|
+
`,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await Or(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(K)}async kvGet(t){let r=await this.kv().get(t);if(typeof r!="string")return r;try{return JSON.parse(r)}catch{return r}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(r=>r.name===K);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${K}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${K}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${K}`),await this.db.query(`CREATE KV IF NOT EXISTS ${K}`)}}async mintRedDb(t,r){let n=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=vn(n,r),a=bt(i),c=dt(r.command),u=c==="derivable"?Ga(n,r.command):null,l=c==="re-executable"?Wa(n,r.command):null,m=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ha(s,m,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ut(n),f=m==="ephemeral"?qa(n,p,o):null,_=Ua(n,u,l,f);f&&!to(await this.kvGet(f.key))&&await this.kv().put(f.key,f);let g={collection:K,handle:i,original_bytes:n.length,stored_bytes:_,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:m,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:f?.key}};await this.kv().delete(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:m,blob_key:f?.key}),await this.pruneRedDb({version:1,records:b},!0),await this.assertRedDbMintPersisted(i,_),i}async getRedDb(t){if(!Tn(t))return null;let r=await this.kvGet(Jt(t));if(ro(r))return r;let n=await this.kvGet(bt(t));if(!On(n))return null;if(Date.parse(n.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:n.expires_at,command:n.command};return await this.expireRedDbEntry({handle:n.handle,key:bt(n.handle),bytes:Ja(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:Cn(n),blob_key:n.blob_key},n.expires_at),o}let s=await this.readOriginal(n);return!s&&(n.derivation_recipe||n.reexecution_recipe)?{status:"expired",expired_at:n.expires_at,command:n.command}:s?{collection:K,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:Cn(n)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:qt(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:Fa(t.records)}}async recoveryHandlesRedDb(t){let r=await this.pruneRedDb(await this.readRedDbIndex());return ja(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=Tm(r);return await this.memoryRecallRedDb(n.query,n.limit)}if(t==="ingest"){let n=Om(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 Am(t.cwd,t.maxFiles??200,t.ignore??[]),n=0;for(let s of r){let i=(await pk(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=fk(s),c=dk("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=>Pm(i,s)).filter(i=>i!=null).sort((i,a)=>a.score-i.score).slice(0,Math.max(1,Math.min(100,r)));return{hits:o,context_md:o.map(i=>`- memory_nodes:${i.rid} ${i.label}: ${i.excerpt}`).join(`
|
|
58
|
+
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Qs());return Va(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Qs(),t)}async pruneRedDb(t,r=!1){let n=this.opts.now().getTime(),s=new Date(n).toISOString(),o=[];for(let c of t.records)Date.parse(c.expires_at)<=n?await this.expireRedDbEntry(c,c.expires_at):o.push(c);let i=qt(o);for(o.sort((c,u)=>c.created_at.localeCompare(u.created_at));i>this.opts.byteBudget&&o.length>0;){let c=o.shift();await this.expireRedDbEntry(c,s),i=qt(o)}let a={version:1,records:o};return(r||o.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(o),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await fc(this.path).then(u=>u.size,()=>0);if(r<=this.opts.byteBudget)return;let n=await this.snapshotRedDbKvCollections(t);if(!n)return;let s=`${process.pid}.${Date.now()}`,o=`${this.path}.${s}.compact`,i=`${this.path}.${s}.old`;await $n(o,{force:!0}),await $n(i,{force:!0});let a=await lo(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${km(u.name)}`);let l=a.kv(u.name);for(let m of u.items)await l.put(m.key,m.value)}}finally{await a.close()}let c=await fc(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await $n(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await pc(this.path,i),await pc(o,this.path),await $n(i,{force:!0})}catch(u){throw!np(this.path)&&np(i)&&await pc(i,this.path),await $n(o,{force:!0}),u}finally{this.db=await lo(`file://${this.path}`)}}async snapshotRedDbKvCollections(t){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.list();if(r.some(o=>o.model!=="kv"))return null;let n=[],s=!1;for(let o of r){let i=String(o.name??"").trim();if(i===K){n.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(i).list({limit:1e4});if(a.items.length>=1e4)return null;n.push({name:i,items:a.items})}return s||n.push(await this.snapshotRedDbElisions(t)),n}async snapshotRedDbElisions(t){let r=[{key:Qs(),value:t}],n=new Set;for(let s of t.records)n.add(s.key),s.blob_key&&n.add(s.blob_key);for(let s of n){let o=await this.kvGet(s);o!=null&&r.push({key:s,value:o})}return{name:K,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(Jt(t.handle),{status:"expired",expired_at:r,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let r=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),n=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of n.items)s.key.startsWith("blob:")&&!r.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,r){let n=await this.kvGet(bt(t));if(!On(n))throw new Error(`rsp resident failed to persist elision record ${t}`);let o=(await this.readRedDbIndex()).records.find(i=>i.handle===t);if(!o||o.bytes!==r)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var ip={};M(ip,{DEFAULT_RSP_BYTE_BUDGET:()=>Ae,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Oe,DEFAULT_RSP_TTL_DAYS:()=>Te,RSP_ELISION_COLLECTION:()=>K,RspElisionStore:()=>Vt,contentHandle:()=>vn,ensureReddbBinaryFromWarmCache:()=>so,provisionElisionStore:()=>sp,storageClassForCommand:()=>dt});var mo=h(()=>{"use strict";zs();oo();oo();op()});async function po(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await up(e,s),i=(await Mn(e,Q)).filter(E=>Lr(E)>=s),a=o.filter(E=>A(E.event_type)!=="show"&&A(E.degradation_reason)===""),c=o.filter(E=>A(E.event_type)==="show"),u=o.filter(E=>A(E.degradation_reason)!==""),l=0,m=0,d=0,p=0,f=!1,_=new Map,g=new Map,y=[],b=0,w=0,S=0;for(let E of a){E.elided===!0&&l++;let I=ye(E.raw_bytes),Qe=ye(E.emitted_bytes),At=Math.max(0,I-Qe),sr=Dr(E,"raw"),R=Dr(E,"emitted"),T=Math.max(0,sr.tokens-R.tokens);f||=(E.estimated===!0||sr.estimated||R.estimated)&&T>0,m+=I,d+=Qe,p+=T;let Pt=Kt(E).slice(0,10);Pt&&_.set(Pt,(_.get(Pt)??0)+T);let It=A(E.command)||"unknown",ke=g.get(It)??{command:It,invocations:0,bytes_saved:0,tokens_saved:0};ke.invocations++,ke.bytes_saved+=At,ke.tokens_saved+=T,g.set(It,ke);let Se=ht(E.wrapper_ms);Se!=null&&y.push(Se),b+=ye(E.store_open_count);let or=ht(E.store_elapsed_ms);or!=null&&(w+=or,S++)}let O=new Map,j=new Map,Re=[],$e=null;for(let E of u){let I=A(E.degradation_reason)||A(E.reason)||"unknown",Qe=A(E.wrapper_family)||be(A(E.command));O.set(I,(O.get(I)??0)+1),j.set(Qe,(j.get(Qe)??0)+1);let At=Kt(E);Re.push({timestamp:At,family:Qe,command:A(E.command)||"unknown",reason:I,exit_code:ht(E.wrapper_exit_code),stderr_head:A(E.stderr_head)||null}),(!$e||At>$e.timestamp)&&($e={timestamp:At,reason:I,command:A(E.command)||"unknown"})}let oe=a.length+u.length,pt=c.filter(E=>E.hit===!0).length,ie=zi(p,f),Ur=hk(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:m,emitted_bytes:d,bytes_saved:Math.max(0,m-d),tokens_saved:p,tokens_saved_estimated:ie.tokens_saved_estimated,token_estimate_range_pct:ie.token_estimate_range_pct,tokens_saved_low:ie.tokens_saved_low,tokens_saved_high:ie.tokens_saved_high,dollars_saved_estimate_usd:ie.dollars_saved_estimate_usd,dollars_saved_low_usd:ie.dollars_saved_low_usd,dollars_saved_high_usd:ie.dollars_saved_high_usd,pricing_model_family:ie.pricing_model_family,pricing_input_usd_per_million_tokens:ie.pricing_input_usd_per_million_tokens,pricing_note:ie.pricing_note,daily_tokens_saved:[..._.entries()].sort(([E],[I])=>E.localeCompare(I)).map(([E,I])=>({date:E,tokens_saved:I})),top_commands:[...g.values()].sort((E,I)=>I.bytes_saved-E.bytes_saved||I.tokens_saved-E.tokens_saved||E.command.localeCompare(I.command))},health:{degradations:u.length,degradation_rate:oe===0?0:u.length/oe,show_total:c.length,show_hits:pt,show_misses:Math.max(0,c.length-pt),show_hit_rate:c.length===0?0:Z(pt/c.length),by_reason:[...O.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({reason:E,count:I})),by_family:[...j.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({family:E,count:I})),recent_failures:Re.sort((E,I)=>I.timestamp.localeCompare(E.timestamp)).slice(0,20),most_recent:$e},latency:{wrapper_ms_p50:Ir(y,.5),wrapper_ms_p95:Ir(y,.95),store_open_count_sum:b,store_elapsed_ms_sum:Z(w),store_elapsed_ms_avg:S===0?null:Z(w/S)},decisions:Ur}}function hk(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=A(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,ye(a.saved_units))),c!=="contributed"){let m=A(a.reason)||"unknown";o.set(m,(o.get(m)??0)+1)}let u=A(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0:Z(t/e.length),top_pass_reasons:[...o.entries()].sort((a,c)=>c[1]-a[1]||a[0].localeCompare(c[0])).map(([a,c])=>({reason:a,count:c})),by_command_family:[...i.entries()].sort((a,c)=>{let u=a[1].contributed+a[1].passed+a[1].failed_open;return c[1].contributed+c[1].passed+c[1].failed_open-u||a[0].localeCompare(c[0])}).map(([a,c])=>{let u=c.contributed+c.passed+c.failed_open;return{command_family:a,contributed:c.contributed,passed:c.passed,failed_open:c.failed_open,contribution_rate:u===0?0:Z(c.contributed/u)}})}}async function gc(e,t,r=new Date){let s=(await Mn(e,ce)).filter(o=>Lr(o)<=r.getTime()||Kt(o)==="");return{records:s.length,bytes:s.reduce((o,i)=>o+Buffer.byteLength(JSON.stringify(i),"utf8"),0),oldest:s.reduce((o,i)=>{let a=Kt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:xk(s)}}async function hc(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:28,s=r.toISOString(),o=new Date(r.getTime()-n*24*60*60*1e3).toISOString(),i=Date.parse(o),a=await up(e,i),c=a.filter(R=>A(R.event_type)!=="show"&&A(R.event_type)!=="control_holdout"&&R.control_holdout!==!0&&A(R.degradation_reason)===""),u=a.filter(R=>A(R.event_type)==="control_holdout"||R.control_holdout===!0),l=a.filter(R=>A(R.event_type)==="show"),m=a.filter(R=>A(R.degradation_reason)!==""),d=[...c,...m].map(Lr).filter(R=>Number.isFinite(R)&&R>0),p=d.length===0?null:Math.min(...d),f=p==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-p)/Dk()))),_=[],g=new Map,y=new Map,b=new Map,w=new Map,S=new Map,O=new Map,j=0,Re=!1,$e=0,oe=null,pt=0,ie=0;for(let R of c){let T=Kt(R),Pt=T.slice(0,10),It=T.slice(0,16),ke=be(A(R.command)),Se=Math.max(0,Dr(R,"raw").tokens-Dr(R,"emitted").tokens);j+=Se,Re||=R.estimated===!0&&Se>0;let or=Math.max(0,ye(R.raw_bytes)-ye(R.emitted_bytes)),ai=ht(R.wrapper_ms);if(ai!=null){_.push(ai);let Gu=g.get(ke)??[];Gu.push(ai),g.set(ke,Gu)}Pt&&y.set(Pt,(y.get(Pt)??0)+1),It&&b.set(It,(b.get(It)??0)+1);let ci=Ok(T);ci&&w.set(ci,(w.get(ci)??0)+1);let ui=Ik(T);ui&&S.set(ui,(S.get(ui)??0)+Se);let ss=O.get(ke)??{command_family:ke,invocations:0,tokens_saved:0,bytes_saved:0};ss.invocations++,ss.tokens_saved+=Se,ss.bytes_saved+=or,O.set(ke,ss),R.elided===!0&&$e++,(R.store_open_count!=null||R.store_elapsed_ms!=null)&&(pt++,ye(R.store_open_count)>0&&ie++),Se>0&&(!oe||Se>oe.tokens_saved||Se===oe.tokens_saved&&or>oe.bytes_saved)&&(oe={timestamp:T,command_family:ke,tokens_saved:Se,bytes_saved:or})}let Ur=m.map(R=>({timestamp:Kt(R),command_family:be(A(R.command)),reason:A(R.degradation_reason)||A(R.reason)||"unknown"})).sort((R,T)=>R.timestamp.localeCompare(T.timestamp)),E=new Map;for(let R of Ur)E.set(R.reason,(E.get(R.reason)??0)+1);let I=_k(Ur),Qe=wk(l),At=kk([...O.values()],Qe,I),sr=[...b.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:f,since:o,until:s,label:`window: ${n}d, data: ${f}d`,empty:c.length===0&&m.length===0,invocations:c.length,degradations:m.length},latency:{global:cp(_),by_command_family:[...g.entries()].sort((R,T)=>T[1].length-R[1].length||R[0].localeCompare(T[0])).map(([R,T])=>({command_family:R,count:T.length,...cp(T)}))},throughput:{requests_per_day:[...y.entries()].sort(([R],[T])=>R.localeCompare(T)).map(([R,T])=>({date:R,requests:T})),active_minute_avg:b.size===0?null:Z([...b.values()].reduce((R,T)=>R+T,0)/b.size),peak_minute:sr?{minute:sr[0],requests:sr[1]}:null,hour_weekday_heatmap:Ak(w)},savings:{tokens:zi(j,Re),measured_control_holdout:yk(c,u),weekly_tokens_saved:Lk(S),elision_rate:c.length===0?0:Z($e/c.length),top_commands_by_tokens_saved:[...O.values()].sort((R,T)=>T.tokens_saved-R.tokens_saved||T.bytes_saved-R.bytes_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((R,T)=>T.invocations-R.invocations||T.tokens_saved-R.tokens_saved||R.command_family.localeCompare(T.command_family)).slice(0,10),single_biggest_elision:oe},health:{degradation_timeline:Ur,degradations_by_reason:[...E.entries()].sort((R,T)=>T[1]-R[1]||R[0].localeCompare(T[0])).map(([R,T])=>({reason:R,count:T})),cold_boots:pt===0?null:ie,warm_hits:pt===0?null:Math.max(0,pt-ie)},mining:{recovery_usage_by_family:Qe,degradation_clusters:I,threshold_tuning_suggestions:At}}}async function up(e,t){let r=(await Mn(e,ce)).filter(i=>Lr(i)>=t),n=r.some(i=>A(i.event_type)!=="show"||A(i.degradation_reason)!==""),s=(await Mn(e,he)).filter(i=>Lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:A(i.event_type)||"invocation"})),o=(await Mn(e,qe)).filter(i=>Lr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:A(i.reason)||"unknown"}));return[...r,...s,...o]}function Dr(e,t){let r=ht(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(r!=null)return{tokens:r,estimated:!1};let n=ye(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(n/4),estimated:n>0}}function yk(e,t){let r=Ek(t.map(a=>ht(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:r,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let n=e.map(ap).filter(a=>a!=null),s=t.map(ap).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Z(Sk(o));return{enabled:!0,holdout_share:Z(r),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:bk(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function ap(e){let t=Dr(e,"raw").tokens;if(t<=0)return null;let r=Dr(e,"emitted").tokens;return Math.max(0,t-r)/t}function bk(e,t){if(e.length<=1)return{low:Z(Math.max(0,t)),high:Z(Math.min(1,t))};let r=e.reduce((s,o)=>s+(o-t)**2,0)/(e.length-1),n=1.96*Math.sqrt(r/e.length);return{low:Z(Math.max(0,t-n)),high:Z(Math.min(1,t+n))}}function wk(e){let t=new Map;for(let r of e){let n=be(A(r.recovered_command)||A(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:Z(r.show_hits/r.show_total)}))}function _k(e){let t=new Map;for(let r of e){let n=`${r.command_family}\0${r.reason}`,s=t.get(n)??{command_family:r.command_family,reason:r.reason,count:0};s.count++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.count-r.count||r.command_family.localeCompare(n.command_family)||r.reason.localeCompare(n.reason)).map(r=>({...r,suggestion:Rk(r)}))}function Rk(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function kk(e,t,r){let n=[];for(let s of t.filter(o=>o.show_total>0))n.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of r.filter(o=>o.count>1))n.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(o=>o.invocations>0&&o.tokens_saved===0))n.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return n.slice(0,10)}function Sk(e){return e.reduce((t,r)=>t+r,0)/e.length}function Ek(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function xk(e){let t=Ck();for(let r of e){if(A(r.event_type)==="show"||A(r.degradation_reason)!==""||r.elided!==!0)continue;let n=vk(r.storage_class)??dt(A(r.command));t[n].records+=1;let s=ye(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function vk(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Ck(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}async function Mn(e,t){return(await e.kv(t).list({limit:1e4}).catch(n=>{if(n instanceof Error&&/\bnot found\b/i.test(n.message))return{items:[]};throw n})).items.map(n=>Tk(n.value)).filter(n=>xr(n))}function Tk(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Lr(e){let t=Date.parse(Kt(e));return Number.isFinite(t)?t:0}function Kt(e){return A(e.created_at)||A(e.ts)||""}function A(e){return typeof e=="string"?e:""}function Ir(e,t){if(e.length===0)return null;let r=[...e].sort((s,o)=>s-o),n=Math.min(r.length-1,Math.max(0,Math.ceil(r.length*t)-1));return Z(r[n])}function cp(e){return{wrapper_ms_p50:Ir(e,.5),wrapper_ms_p90:Ir(e,.9),wrapper_ms_p95:Ir(e,.95),wrapper_ms_p99:Ir(e,.99)}}function Z(e){return Math.round(e*100)/100}function Ok(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Pk(t.getUTCDay())}:${t.getUTCHours()}`:null}function Ak(e){let t=[];for(let r of["sun","mon","tue","wed","thu","fri","sat"])for(let n=0;n<24;n++){let s=e.get(`${r}:${n}`)??0;s>0&&t.push({weekday:r,hour:n,requests:s})}return t}function Pk(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Ik(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let r=t.getUTCDay(),n=r===0?-6:1-r;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+n)).toISOString().slice(0,10)}function Lk(e){let t=null;return[...e.entries()].sort(([r],[n])=>r.localeCompare(n)).map(([r,n])=>{let s=t==null||t===0?null:Z((n-t)/t*100);return t=n,{week_start:r,tokens_saved:n,wow_delta_pct:s}})}function Dk(){return 24*60*60*1e3}var lp=h(()=>{"use strict";kn();mo();Yi();Us();Oa()});var Bn={};M(Bn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ce,RSP_DECISIONS_COLLECTION:()=>Q,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>qe,RSP_TELEMETRY_INDEX_COLLECTION:()=>bn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>he,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Ca,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ta,RSP_TELEMETRY_SPOOL_FILE:()=>va,appendTelemetryEvent:()=>lt,appendTelemetryEventSync:()=>yt,drainTelemetrySpool:()=>Na,parseTelemetryEvent:()=>Cr,readAccountingLaneStats:()=>gc,readTelemetryGainsReport:()=>hc,readTelemetryStats:()=>po,takeTelemetrySpool:()=>N_,telemetryLegacySpoolPath:()=>Vs,telemetrySpoolCorrectionsPath:()=>Da,telemetrySpoolPath:()=>ut});var Le=h(()=>{"use strict";Us();_m();lp()});var mp={};M(mp,{readGhConditionalJson:()=>ue,readGhEtagCache:()=>Bs,sweepGhEtagCache:()=>ka});import{spawn as Nk}from"node:child_process";import{createHash as $k,randomUUID as Mk}from"node:crypto";async function ue(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=process.hrtime.bigint(),s=e.overheadCeiling??Ce,o=Bk(e.path,e.params),i=Fk(o),c=Ni(r,"gh-api-json")?void 0:await wa(r,i),u=["api","--include","--method","GET",e.path];for(let[f,_]of dp(e.params))u.push("-f",`${f}=${String(_)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await jk(u,t,e.env,e.signal),m=f=>{let _=rn();en(r,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-n)/1e6,childMs:_.childMs,selfStateBytesRead:_.selfStateBytesRead,bytesSaved:f},s)},d=Hk(l.stdout);if(d.statusCode===304&&!!c)return m(Buffer.byteLength(c.body)),await yc(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:c.body,stderr:l.stderr,etag:c.etag,quotaFree:!0};if(d.statusCode>=200&&d.statusCode<300){let f=d.headers.get("etag");return f&&await _a(r,{key:i,request:o,etag:f,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),m(0),await yc(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:f??void 0,quotaFree:!1}}return m(0),await yc(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function dp(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function Bk(e,t){return JSON.stringify({method:"GET",path:e,params:dp(t)})}function Fk(e){return $k("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function jk(e,t,r,n){return n?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=d=>{o||(o=!0,n?.removeEventListener("abort",c),s(d))},a=Nk("gh",e,{cwd:t,env:r?{...process.env,...r}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}n?.addEventListener("abort",c,{once:!0});let u=re();a.once("close",u),a.once("error",u);let l=[],m=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>m.push(Buffer.from(d))),a.once("error",d=>i({status:1,stdout:"",stderr:d.message})),a.once("close",d=>{i({status:d??1,stdout:Buffer.concat(l).toString("utf8"),stderr:Buffer.concat(m).toString("utf8").trim()})})})}function Hk(e){let t=e.replace(/\r\n/g,`
|
|
57
59
|
`),r=[...t.matchAll(/^HTTP\/\S+\s+(\d{3})[^\n]*\n/gm)];if(r.length===0)return{statusCode:0,headers:new Map,body:e};let n=r[r.length-1],s=Number(n[1]),o=n.index+n[0].length,i=t.indexOf(`
|
|
58
60
|
|
|
59
61
|
`,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
|
|
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
|
|
61
|
-
|
|
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
|
-
`)
|
|
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)}
|
|
62
|
+
`)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:i>=0?t.slice(i+2):""}}async function yc(e,t,r){await lt(e,{collection:Q,id:Mk(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:r?"gh-conditional-304":"gh-conditional-fetch",quota_free:r,saved_units:r?1:0})}var fo=h(()=>{"use strict";yn();yn();U();Le()});import{spawn as Gk}from"node:child_process";async function Fn(e,t){return await Wk(t,async r=>{let n=await Jk(e,t.cwd,r);return n||await Uk(e,t.cwd,r)})}async function Wk(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 Uk(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=Gk("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&Cs(l).then(m=>vs(m,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}r.addEventListener("abort",a,{once:!0});let c=[],u=[];i.stdout.on("data",l=>c.push(Buffer.from(l))),i.stderr.on("data",l=>u.push(Buffer.from(l))),i.once("error",l=>o({status:1,stdout:"",stderr:l.message})),i.once("close",l=>{o({status:l??1,stdout:Buffer.concat(c).toString("utf8"),stderr:Buffer.concat(u).toString("utf8").trim()})})})}async function Jk(e,t,r){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await qk(e[2],t,r);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ue({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let s=Ue(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Rr(s,"database_id")||Rr(s,"id"),status:X(s,"status").toUpperCase(),conclusion:X(s,"conclusion").toUpperCase(),workflowName:X(s,"workflow_name")||X(s,"name"),headBranch:X(s,"head_branch"),url:X(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Is(e,"--branch"),s=Is(e,"--limit")??"20",o=await ue({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:s},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=Gt(Ue(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Rr(a,"database_id")||Rr(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=Is(e,"--limit")??"20",s=await ue({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,signal:r,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=Gt(JSON.parse(s.stdout)).map(i=>({tagName:X(i,"tag_name"),publishedAt:X(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function qk(e,t,r){let n=await ue({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:r,command:`gh pr view ${e}`});if(n.status!==0)return n;let s=Ue(JSON.parse(n.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let o=X(Ue(s.head),"sha"),[i,a]=o?await Promise.all([ue({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:r,command:`gh pr view ${e} status`}),ue({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:r,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?Gt(Ue(JSON.parse(i.stdout)).statuses):[],u=a.status===0?Gt(Ue(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,a.stderr].filter(Boolean).join(`
|
|
63
|
+
`),stdout:JSON.stringify({number:Rr(s,"number"),state:X(s,"state").toUpperCase(),mergeable:Vk(s),statusCheckRollup:[...c.map(l=>({conclusion:X(l,"state").toUpperCase()})),...u.map(l=>({status:X(l,"status").toUpperCase(),conclusion:X(l,"conclusion").toUpperCase()}))],url:X(s,"html_url")})}}function Vk(e){let t=X(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var pp=h(()=>{"use strict";fo();Ls();at()});function gp(e,t,r){let n=Date.now();return()=>Kk(e,t,r,n)}async function Kk(e,t,r,n){if(!/^[1-9][0-9]*$/.test(e))return Y("missing PR number");let s=await Fn(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return Y(s.stderr||"gh pr view failed");let o=ga(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(zk),u=c.filter(m=>m==="failure").length,l=c.filter(m=>m==="pending").length;if(String(o.state)!=="OPEN")return it("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return it("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return it("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return gr(`PR #${e} has ${l} pending checks`);if(i.length===0){let m=Date.now()-n;return a==="UNKNOWN"||a==="BLOCKED"||m<r.emptyChecksGraceMs?gr(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:m}):it("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?gr(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):it("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function hp(e,t){if(!e)return Y("missing run id");let r=await Fn(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return Y(r.stderr||"gh run view failed");let n=ga(r.stdout),s=String(n.status??"").toLowerCase(),o=String(n.conclusion??"").toLowerCase();return s!=="completed"?gr(`run ${e} is ${s||"pending"}`):o==="success"?it("success",`run ${e} succeeded`,fp(n)):it("failure",`run ${e} concluded ${o||"unknown"}`,fp(n))}async function yp(e,t){let r=await Fn(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(r.status!==0)return"";let n=JSON.parse(r.stdout),s=Array.isArray(n)?n[0]:void 0;return _r(s)&&s.databaseId!=null?String(s.databaseId):""}async function bp(e,t,r){let n=await Fn(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],r);if(n.status!==0)return Y(n.stderr||"gh release list failed");let o=Gt(JSON.parse(n.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||Yk(e,a))&&c>=t});return o?it("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):gr("no matching release is published yet")}function zk(e){let t=_r(e)?e:{},r=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(r)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(r)?"failure":"pending"}function fp(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 Yk(e,t){let r=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${r}$`).test(t)}var wp=h(()=>{"use strict";jt();pp();Ls()});function jn(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.","Result: TOON by default; --json selects JSON; --result-file <path> is written atomically before any wake.","Command capture: --capture-bytes <n> (default 16384); elision handles recover larger stdout/stderr.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after the result is durable.',"Hook timeout: --notify-timeout 10s. Process termination: TERM, --terminate-grace 2s, then KILL.","GitHub bounds: --probe-timeout 60s caps one probe, so a hung gh call cannot outlive --timeout.",""].join(`
|
|
64
|
+
`)}var bc=h(()=>{"use strict"});var _p=h(()=>{"use strict";L()});var Rp=h(()=>{"use strict"});function Xk(e){return Object.keys(e)}function zt(e){return{...e,fields:Xk(e.fields)}}var kp,Sp,Ep,wc,Qk,Zk,eS,go,ho=h(()=>{"use strict";kp="red.castle.lane.v1",Sp="red.castle.state.v1",Ep="red.castle.history.v1",wc="red.castle.attempt.v1",Qk="red.castle.validation.v2",Zk="red.castle.envelope.v1",eS="red.castle.hitl-card.v1",go=[zt({schemaId:kp,docPath:".red/contracts/red.castle.lane.v1.md",typeNames:["CastleLaneRecord","CastleLaneKind"],fields:{at:!0,kind:!0,worker_id:!0,supervisor_id:!0,issue:!0,attempt:!0,payload:!0}}),zt({schemaId:Sp,docPath:".red/contracts/red.castle.state.v1.md",typeNames:["CastleStateSnapshot","CastleStateKind"],fields:{kind:!0,id:!0,version:!0,updated_at:!0,worker_id:!0,supervisor_id:!0,runner:!0,bundle_version:!0,pid:!0,started_at:!0,current:!0,queue:!0,completed:!0,envelope:!0}}),zt({schemaId:Ep,docPath:".red/contracts/red.castle.history.v1.md",typeNames:["CastleHistoryRecord","CastleHistoryEvent"],fields:{ts:!0,epoch:!0,worker:!0,issue:!0,event:!0,duration_s:!0,runner:!0,merge_sha:!0,reason:!0}}),zt({schemaId:wc,docPath:".red/contracts/red.castle.attempt.v1.md",typeNames:["CastleAttemptEntry","CastleAttemptRecord","CastleAttemptEvent","CastleAttemptWriter","CastleAttemptClaim","CastleAttemptRouting","CastleAttemptGateVerdict","CastleAttemptLandingStep","CastleAttemptOutcome","CastleAttemptOutcomeKind","CastleAttemptResources","CastleAttemptArtifact"],fields:{schema:!0,attempt_id:!0,worker_id:!0,issue:!0,try:!0,at:!0,event:!0,writer:!0,claim:!0,routing:!0,branch:!0,commit:!0,pr:!0,gate:!0,landing:!0,outcome:!0,resources:!0,artifact:!0,note:!0,payload:!0}}),zt({schemaId:Qk,docPath:".red/contracts/red.castle.validation.v2.md",typeNames:["CastleValidationRecord","CastleValidationStatus"],fields:{schema:!0,name:!0,status:!0,command:!0,exitCode:!0,durationMs:!0,summary:!0}}),zt({schemaId:Zk,docPath:".red/contracts/red.castle.envelope.v1.md",typeNames:["CastleEnvelope","CastleEnvelopeSection","CastleAttemptStatus"],fields:{status:!0,worker:!0,duration:!0,diff:!0,attempt:!0,mergeSha:!0,sections:!0}}),zt({schemaId:eS,docPath:".red/contracts/red.castle.hitl-card.v1.md",typeNames:["CastleHitlCard","CastleHitlCardPrStatus","CastleHitlCardAction"],fields:{issueNumber:!0,issueTitle:!0,issueUrl:!0,pendingDecision:!0,prStatus:!0,updatedAt:!0}})]});var JL,yo=h(()=>{"use strict";L();ho();JL=new Map(go.map(e=>[e.schemaId,new Set(e.fields)]))});var xp=h(()=>{"use strict";Rp();yo()});var vp=h(()=>{"use strict"});var nD,Cp=h(()=>{"use strict";L();ho();nD=new Set(go.find(e=>e.schemaId===wc).fields)});var nS,sS,oS,oD,Tp=h(()=>{"use strict";nS=["worktree","workspace","node_modules","checkout","build-cache","sandbox"],sS=["log","diagnostic","envelope","transcript","patch","handoff","report"],oS=["branch","pr","commit","tag","issue"],oD=new Map([...nS.map(e=>[e,"workspace"]),...sS.map(e=>[e,"evidence"]),...oS.map(e=>[e,"pointer"])])});var bo=h(()=>{"use strict"});var _c=h(()=>{"use strict";bo()});var wo=h(()=>{"use strict"});import{appendFile as iS,mkdir as aS,readFile as cS}from"node:fs/promises";import{dirname as uS,join as lS}from"node:path";function Rc(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function Op(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},r=t.payload;if(typeof r=="string")try{t.payload=JSON.parse(r)}catch{throw new Error("singleton event payload is not valid JSON")}if(t.payload!==void 0&&(t.payload===null||typeof t.payload!="object"||Array.isArray(t.payload)))throw new Error("singleton event payload must be a record");return{at:Rc(t.at,"at"),singleton:Rc(t.singleton,"singleton"),kind:Rc(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function dS(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function mS(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function pS(e){return lS(e.castleStateRoot,"singleton-events.toonl")}function kc(e,t={}){let r=t.fs??{appendFile:iS,mkdir:aS,readFile:cS},n=t.clock??(()=>new Date().toISOString()),s=pS(e);return{path:s,async append(o){let i=Op({at:o.at??n(),...o});return await r.mkdir(uS(s),{recursive:!0}),await r.appendFile(s,tt().push(dS(i)),"utf8"),i},async read(o={}){mS(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=et(i).map(Op);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var Sc=h(()=>{"use strict";L()});var _o=h(()=>{"use strict";L();wo();Sc()});var Ap=h(()=>{"use strict";bo();_c();_o()});var Pp=h(()=>{"use strict"});var ND,Ip=h(()=>{"use strict";L();ND=24*60*60*1e3});var Lp=h(()=>{"use strict";yo()});var FD,jD,Dp=h(()=>{"use strict";FD=15*6e4,jD=30*6e4});var Np=h(()=>{"use strict"});var gS,hS,WD,UD,$p=h(()=>{"use strict";gS=["supervisor_start","supervisor_exit","fleet_scaled","worker_start","worker_exit","worker_steered","worker_escalated","post_claim","pre_worktree","post_issue","pre_requeue","pre_merge","post_merge"],hS={pre_worktree:["cargo","gradle"]},WD=Object.values(hS).flat(),UD=new Set(gS)});var Mp=h(()=>{"use strict"});var Bp=h(()=>{"use strict";_o()});var Fp=h(()=>{"use strict"});var jp=h(()=>{"use strict"});var Hp=h(()=>{"use strict";L()});var Ec=h(()=>{"use strict"});var Gp=h(()=>{"use strict";L();Ec()});var Wp=h(()=>{"use strict";L()});var xc=h(()=>{"use strict"});var vc=h(()=>{"use strict"});import{resolve as J}from"node:path";function Up(e){let t=J(e),r=J(t,"state"),n=J(r,"castle"),s=J(t,"tmp"),o=J(s,"supervisors"),i=J(s,"workers"),a=J(s,"monitors"),c=J(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:J(n,"history.toonl"),castleAttempts:J(n,"attempts.toonl"),castleValidation:J(n,"validation.toonl"),castleFleets:J(n,"fleets.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>J(o,u),fleet:u=>J(o,u),workersRoot:i,worker:u=>J(i,u),workerSteerFile:u=>J(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>J(a,u),worktreesRoot:c,worktreeLane:u=>J(c,u)}}var Jp=h(()=>{"use strict"});var qp=h(()=>{"use strict";wo()});var Vp=h(()=>{"use strict"});var Kp=h(()=>{"use strict";xc();vc()});import{mkdir as yS,readFile as bS,rename as wS,rm as _S,writeFile as RS}from"node:fs/promises";import{dirname as kS,join as SS}from"node:path";function xS(e){if(!ES.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function vS(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function CS(e){return e.code==="ENOENT"}function TS(e){return e.code==="EEXIST"}function OS(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton lease must be a record");let t=e;if(!Number.isInteger(t.pid)||t.pid<=0)throw new Error("singleton lease pid must be a positive integer");for(let r of["start_time","acquired_at","renewed_at"])if(typeof t[r]!="string"||t[r].length===0)throw new Error(`singleton lease ${r} must be a non-empty string`);return t}function Cc(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Ro(e,t){return xS(t),SS(e.castleStateRoot,"singletons",t,"lease.toon")}function zp(e,t={}){let r=t.fs??{mkdir:yS,readFile:bS,rename:wS,rm:_S,writeFile:RS},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??vS;async function o(a){try{return OS(D(await r.readFile(a,"utf8")))}catch(c){if(CS(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await r.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await r.rename(u,a)}return{read(a){return o(Ro(e,a))},async acquire(a,c){let u=Ro(e,a);await r.mkdir(kS(u),{recursive:!0});let l=!1;for(;;){let m=n(),d={pid:c.pid,start_time:c.startTime,acquired_at:m,renewed_at:m};try{return await r.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(f){if(!TS(f))throw f}let p=await o(u);if(p){if(Cc(p,c))return{acquired:!0,reaped:l,lease:p};if(await s(p.pid))return{acquired:!1,lease:p};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Ro(e,a),l=await o(u);if(!l||!Cc(l,c))throw new ko(a);let m={...l,renewed_at:n()};return await i(u,m),m},async release(a,c){let u=Ro(e,a),l=await o(u);if(!l)return!1;if(!Cc(l,c))throw new ko(a);return await r.rm(u,{force:!0}),!0}}}var ko,ES,Yp=h(()=>{"use strict";L();ko=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},ES=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Tc=h(()=>{"use strict"});var Xp=h(()=>{"use strict"});var AS,PS,IS,ON,Qp=h(()=>{"use strict";AS={refreshCadenceS:270,tolerance:3},PS=270,IS=2700,ON={...AS,claimGraceS:PS,recentCommitProtectionS:IS}});var Zp=h(()=>{"use strict"});import{execFile as $S}from"node:child_process";import{promisify as MS}from"node:util";var DN,ef=h(()=>{"use strict";Tc();DN=MS($S)});var tf=h(()=>{"use strict";_p();xp();vp();Cp();Tp();bo();Ap();Pp();Ip();Lp();yo();Dp();Np();$p();Mp();_c();Bp();Fp();jp();Hp();_o();Gp();Wp();ho();xc();vc();Jp();qp();Vp();Kp();wo();Ec();Sc();Yp();Tc();Xp();Qp();Zp();ef()});import{EventEmitter as BS}from"node:events";import{spawn as FS}from"node:child_process";function Eo(e,t){let r=Number(t);return!Number.isSafeInteger(r)||r<=0?!1:!!(e.pull_request?.number===r||e.check_run?.pull_requests?.some(n=>n.number===r)||e.check_suite?.pull_requests?.some(n=>n.number===r))}function xo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Hn,Oc,jS,HS,GS,WS,So,Ac=h(()=>{Hn="github-webhook",Oc="github.webhook.delivery";jS="pull_request,pull_request_review,check_run,check_suite,workflow_run",HS=3,GS=1e3,WS=/no extension matched|unknown command|command not found/i,So=class extends BS{constructor(r,n){super();this.opts=r;this.terminate=n}child;_dead=!1;restarts=0;_mode="polling";stopping;get mode(){return this._mode}get dead(){return this._dead}start(){this._dead||this.opts.cancelSignal.aborted||(this.opts.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0}),this.spawnChild())}async stop(){if(this.stopping)return await this.stopping;this._dead=!0,this.emit("stopped");let r=this.child;this.child=void 0,r&&(this.stopping=this.terminate(r,GS).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Eo(c,n):xo(c,n))&&(a(),s.abort())},i=()=>{a()},a=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}spawnChild(){if(this._dead)return;let r=this.opts.ghBin??"gh",n;try{n=FS(r,["webhook","forward",`--events=${jS}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=n;let s="";n.stdout?.setEncoding("utf8"),n.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
|
|
65
|
+
`))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];n.stderr?.on("data",i=>{o.push(Buffer.from(i))}),n.once("error",()=>{this.child===n&&(this.child=void 0),this.scheduleRestart()}),n.once("close",i=>{if(this.child===n&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");WS.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>=HS)return;let r=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),r).unref()}}});var vo,rf=h(()=>{"use strict";Ac();Ac();at();vo=class extends So{constructor(t){super(t,hr)}}});import{EventEmitter as US}from"node:events";import{join as JS}from"node:path";function Ic(e){let t=Os(e.cwd),r=Up(JS(t,".red"));return new Pc({...e,leases:e.leases??zp(r),lane:e.lane??kc(r),makeForwarder:e.makeForwarder??((n,s)=>new vo({cwd:n,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(n=>yr(n.pid,n.start_time))})}var Pc,nf=h(()=>{"use strict";tf();rf();at();la();Pc=class extends US{constructor(r){super();this.options=r}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let r=await this.options.leases.read(Hn).catch(()=>{});if(!r||!await this.options.isLeaseHolderLive(r)){this.startFallback();return}let n=await this.options.lane.read().catch(()=>{});if(!n){this.degradeToFallback();return}this.cursor=n.length,this._mode="webhook",this.emit("mode-changed","webhook"),this.timer=setInterval(()=>void this.sync().catch(()=>this.degradeToFallback()),this.options.pollIntervalMs??100),this.timer.unref(),this.options.cancelSignal.addEventListener("abort",()=>void this.stop(),{once:!0})}async stop(){this.stopped||(this.stopped=!0,this.timer&&clearInterval(this.timer),await this.fallback?.stop(),this.emit("stopped"))}makeWakeSignalFor(r,n){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(r,n)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(r==="pr"?Eo(a,n):xo(a,n))&&(i(),s.abort())},i=()=>{this.off("delivery",o),this.off("stopped",i)};return this.on("delivery",o),this.once("stopped",i),s.signal}}startFallback(){this.fallback||this.stopped||(this.fallback=this.options.makeForwarder(this.options.cwd,this.options.cancelSignal),this.fallback.on("mode-changed",r=>{this.emit("mode-changed",r)}),this.fallback.on("delivery",r=>{this.emit("delivery",r)}),this.fallback.start())}degradeToFallback(){this.timer&&clearInterval(this.timer),this.timer=void 0,this._mode="polling",this.startFallback()}async sync(){if(!(this.syncing||this.stopped)){this.syncing=!0;try{let r=await this.options.lane.read();r.length<this.cursor&&(this.cursor=0);let n=r.slice(this.cursor);this.cursor=r.length;for(let o of n)o.singleton===Hn&&o.kind===Oc&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(Hn);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Lc={};M(Lc,{listWaits:()=>Ps,renderWaitHelp:()=>jn,runWait:()=>KS});import{randomUUID as sf}from"node:crypto";import{mkdir as qS,rm as VS}from"node:fs/promises";async function KS(e,t=process.cwd()){let r;try{r=await bd(e)}catch(n){return await ZS(e,n)}if(r.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(jn()),0;if(r.kind==="ls"){let n={schema:ld,version:1,waits:await Ps(t)};return process.stdout.write(kr(n,r.options.format)),0}return ca(r.kind)?await zS({...r,kind:r.kind},t):(process.stdout.write(jn()),2)}async function zS(e,t){let r=e.kind,n=fa({id:sf(),kind:r,target:QS(e),reason:e.options.reason,pid:process.pid,pid_start_time:await un(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:ia[r],status:"running",attempts:0}),s=xd(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 qS(br(t),{recursive:!0}),await wr(s,n);let l=await YS(e,t,s,n,o.signal);i&&(l={...l,verdict:Y(`wait interrupted by ${i}`,l.verdict.details)});let m=await Od({kind:r,entry:n,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(kr(m.result,e.options.format)),m.exitCode}catch(l){let m=Y(l instanceof Error?l.message:String(l)),d=gn(r,n,m,{status:"success"},new Date().toISOString());return await hn(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(kr(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await VS(s,{force:!0}).catch(()=>{})}}async function YS(e,t,r,n,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await rm({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:kd(t),registryPath:r,entry:n,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:Y("missing PR number")};n.webhook_mode="polling";let a=Ic({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Ws({probe:gp(i,o,{emptyChecksGraceMs:dn("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:dn("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"run":{let i=await XS(e,o,r,n);if(!i.ok)return{verdict:Y(i.reason)};n.webhook_mode="polling";let a=Ic({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{n.webhook_mode="webhook"}),await a.start();try{return await Ws({probe:()=>hp(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:dn("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:r,entry:n,signal:s})}finally{await a.stop()}}case"release":return await Ws({probe:()=>bp(e.tagGlob,new Date(n.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:dn("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:r,entry:n,signal:s})}}async function XS(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 yp(e.branch,t);return s?(e.target=s,n.target=`run:${s}`,await wr(r,n),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function QS(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 ZS(e,t){let r=e.includes("--json")?"json":"toon",n=e.indexOf("--result-file"),s=n>=0?e[n+1]:void 0,o=ca(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=fa({id:sf(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:ia[o],status:"indeterminate",attempts:0}),c=gn(o,a,Y(t instanceof Error?t.message:String(t)),{status:"success"},i);return await hn(s,c,r).catch(()=>{}),process.stdout.write(kr(c,r)),2}var Dc=h(()=>{"use strict";wd();Pd();sm();jt();da();wp();at();fn();bc();nf();fn();bc()});import{existsSync as sE}from"node:fs";import{join as oE}from"node:path";function iE(){for(let e of(process.env.PATH??"").split(":"))if(e&&sE(oE(e,"rsp")))return!0;return!1}function Gn(){return iE()?["rsp"]:[process.execPath,process.argv[1]]}var Nc=h(()=>{"use strict"});var Co={};M(Co,{parseProxyCommandLine:()=>lf,rewriteProxyCommandLine:()=>uf,runProxy:()=>uE});import{spawn as aE}from"node:child_process";function cE(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function uE(e,t){let r="",n="",s=[],o=process.hrtime.bigint();try{if(r=lf(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=uf(r,t.level??"lossless");n=c.commandLine,s=c.matches}catch(c){if(r)return await lE(t.telemetryRoot,r,c),await cf(r);throw c}for(let c of s)await dE(t.telemetryRoot,c);let i=await cf(n||r),a=Number(process.hrtime.bigint()-o)/1e6;return await lt(t.telemetryRoot,{collection:he,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 uf(e,t="lossless",r=Gn()){let n=yE(e),s=[];return{commandLine:n.map((i,a)=>{if(i.kind==="operator"||hE(n,a)==="|")return i.text;let c=mE(i.text,t,r);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function lf(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 lE(e,t,r){await lt(e,{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:be(t),decision:"failed-open",reason:"proxy-internal-error",error:r instanceof Error?r.name:typeof r})}async function dE(e,t){await lt(e,{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function cf(e){let t=aE(e,{shell:!0,stdio:"inherit"}),r=re();return t.once("close",r),t.once("error",r),await new Promise(n=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
66
|
+
`),n(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}function mE(e,t,r){let n=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=wE(o);if(!i)return null;let a=gE(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(f=>f.value);if(Wt(u))return{text:e,match:{command:c.map(f=>f.raw).join(" "),commandFamily:be(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=pE(c);if(!l)return null;let m=i.slice(0,a).map(f=>f.raw),d=t==="lossless"?[]:[`--${t}`],p=[...m,...r.map(cE),...d,...l.wrapperWords].join(" ");return{text:`${n}${p}${s}`,match:{command:c.map(f=>f.raw).join(" "),commandFamily:be(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function pE(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}:fE(t,r)}function fE(e,t){return e[0]==="cat"&&e.length===2&&$c(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&$c(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])&&$c(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function $c(e){return!!e&&!e.startsWith("-")}function gE(e){let t=0;for(;t<e.length&&Tr(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Tr(e[t].value);)t+=1;return t}function hE(e,t){for(let r=t+1;r<e.length;r+=1)if(e[r].kind==="operator")return e[r].text}function yE(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=bE(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 bE(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 wE(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 To=h(()=>{"use strict";U();kn();Nc();Le()});function pf(e,t={}){let r=_E(e);if(r.length<12)return[];let n=new Map,s=new Map;for(let d of r){s.set(d.signature,(s.get(d.signature)??0)+1);for(let p of new Set(d.tokens))n.set(p,(n.get(p)??0)+1)}let o=r.map(d=>d.length),i=r.map(d=>d.tokens.length),a=r.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=Mc(o),u=Mc(i),l=Mc(a),m=t.excludedByteRanges??[];return r.filter(d=>d.text.trim().length>0).filter(d=>!m.some(p=>vE(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:Bc(d.length,c)+Bc(d.tokens.length,u)+Bc(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+EE(d.tokens,n,r.length)+xE(d.signature,s,r.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,p)=>p.score-d.score||d.line.index-p.line.index).slice(0,t.maxOutliers??3).sort((d,p)=>d.line.index-p.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function _E(e){let t=[],r=0,n=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(df(n++,r,o,e.slice(r,o).replace(/\r$/,""))),r=o+1}return(r<e.length||e.length===0)&&t.push(df(n,r,e.length,e.slice(r).replace(/\r$/,""))),t}function df(e,t,r,n){return{index:e,start:t,end:r,text:n,signature:RE(n),tokens:kE(n),numbers:SE(n),length:n.length}}function RE(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 kE(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function SE(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function EE(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 xE(e,t,r){return Math.log2(r/Math.max(1,t.get(e)??r))}function Mc(e){let t=mf(e),r=mf(e.map(n=>Math.abs(n-t)))||1;return{median:t,mad:r}}function Bc(e,t){return Math.abs(e-t.median)/t.mad}function mf(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 vE(e,t,r,n){return e<n&&r<t}var ff=h(()=>{"use strict"});var Fc={};M(Fc,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ct,GIT_LOG_MACHINE_FIELDS:()=>hf,StructuredUsageError:()=>Oo,cleanStatusPayload:()=>_f,recoveryInstruction:()=>De,renderGitContract:()=>yf,runGitWrapper:()=>TE});import{spawn as CE}from"node:child_process";async function TE(e,t){let r=bf(e),n=wf(r.argv),s=await IE(n,r.argv.slice(1));return yf(e,s,t)}async function yf(e,t,r){let n=bf(e);if((t.status??0)!==0||t.signal){let m=xe(e.join(" "),t.stdout,t.stderr);return{stdout:$(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let s=wf(n.argv),o;try{o=LE(s,n.argv,t.stdout,n.query)}catch(m){if(m instanceof Ao)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:m.reason,family:"git status",stderrHead:m.message}};throw m}let i=C(o);if(OE(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=XE(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 ${De(u)}
|
|
66
67
|
`;return{stdout:Buffer.from(`${C(a.payload)}
|
|
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
|
|
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),
|
|
69
|
-
`).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,
|
|
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),
|
|
71
|
-
`).filter(Boolean).map(i=>{let[a,c,u,l,
|
|
72
|
-
`)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(b);if(!w)continue;let
|
|
73
|
-
`).length:0,files:f,summary:`${r?`${f.length}/${
|
|
74
|
-
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function
|
|
68
|
+
${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(i)}}function De(e){return e.startsWith("el:")?`rsp show ${e}`:e}function bf(e){let t=Nt(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 OE(e,t,r,n){if(n.level==="terse")return!1;if(r||n.level==="full"||!AE(e)||n.level!=="lossless")return!0;let s=YE(n.heavyGitByteThreshold,ct);return Buffer.byteLength(t)<=s}function AE(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function wf(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 PE(e,t){let r=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...r];case"log":return["log",`--format=%x1e${hf.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 IE(e,t){let r=CE("git",PE(e,t),{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function LE(e,t,r,n){switch(e){case"status":return DE(t,r,n);case"log":return GE(t,r,n);case"diff":return WE(t,r,n);case"commit":return Rt(UE(t,r),n,["rsp git status --query <path-or-state>"]);case"push":return Rt(JE(t,r),n,["rsp gh pr list --query <branch>"]);case"blame":return qE(t,r,n);case"branch":return VE(t,r,n);case"show":return KE(t,r,n)}}function DE(e,t,r){let n="",s=[],o=!1,i=!1;for(let u of NE(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=BE(u),o=!0;continue}let l=$E(u);if(l){o=!0,s.push(l);continue}let m=ME(u);m&&(o=!0,s.push(m))}if(s.length===0){if(!i||o)return _f(e.join(" "),n);throw new Ao("git-status-unparseable")}let a=te(s,r),c=Rf(a,"state");return Rt({command:e.join(" "),branch:n,rows:a,summary:HE(a.length,s.length,c,r)},r,["rsp git diff --query <path>","rsp git log --query <subject>"])}function NE(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function $E(e){if(e.startsWith("1 ")){let t=e.split(" "),r=t[1]??"..",n=t.slice(8).join(" ");return Wn(n,r)}if(e.startsWith("2 ")){let t=e.split(" "),r=t[1]??"..";return Wn(t.slice(9).join(" "),r)}if(e.startsWith("u ")){let t=e.split(" "),r=t[1]??"..";return Wn(t.slice(10).join(" "),r)}return e.startsWith("? ")?Wn(e.slice(2),"??"):null}function ME(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Wn(FE(e.slice(3),t),t):null}function Wn(e,t){let r=gf(t[0]??"."),n=gf(t[1]??".");return{path:jE(e),index:r,worktree:n,state:zE(`${r}${n}`)}}function gf(e){return e===" "?".":e}function BE(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function FE(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let r=e.lastIndexOf(" -> ");return r>=0?e.slice(r+4):e}function jE(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function HE(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 _f(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 GE(e,t,r){let n=t.split("\0").filter(Boolean).map(o=>{let i=o.replace(/^\x1e/,"").split("");return{short:i[0]??"",author:i[1]??"",date:i[2]??"",subject:i[3]??""}}),s=te(n,r);return Rt({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 WE(e,t,r){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),o=te(s,r),i=o.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return Rt({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 UE(e,t){let r=t.split(`
|
|
69
|
+
`)[0]??"",n=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(r),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=n?.[1]??"",c=n?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),m=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:n?.[3]??"",files_changed:u,insertions:l,deletions:m,summary:`commit ${c} on ${a}: ${u} files, +${l} -${m}`}}function JE(e,t){let r=t.split(`
|
|
70
|
+
`).filter(Boolean),n=r.find(c=>c.startsWith("To "))?.slice(3)??"",s=r.filter(c=>c.includes(" ")).map(c=>{let[u,l,m=""]=c.split(" "),[d,p]=(l??"").split(":");return{flag:u??"",from:d??"",to:p??"",summary:m}}),o=s.find(c=>c.flag!=="=")??s[0],i=o?.to.startsWith("refs/heads/")?o.to.slice(11):o?.to??"",a=o?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:n,refs:s,summary:`push already satisfied for ${i} -> ${n}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:n,refs:s,summary:`pushed ${i} -> ${n} +${a} commits`}}function qE(e,t,r){let n=t.split(`
|
|
71
|
+
`),s=[],o=null;for(let c of n){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){o={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!o)continue;if(c.startsWith("author ")){o.author=c.slice(7);continue}if(c.startsWith("filename ")){o.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),m=o.commit.slice(0,12);l&&l.commit===m&&l.author===o.author&&l.path===o.path&&l.line_end+1===o.finalLine?l.line_end=o.finalLine:s.push({line_start:o.finalLine,line_end:o.finalLine,author:o.author,commit:m,path:o.path}),o=null}let i=te(s,r),a=Rf(i,"author");return Rt({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 VE(e,t,r){let n=t.split(`
|
|
72
|
+
`).filter(Boolean).map(i=>{let[a,c,u,l,m,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:m||null,subject:d??""}}),s=te(n,r),o=s.find(i=>i.current)?.name??"";return Rt({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 KE(e,t,r){let n=t.indexOf(""),s=n>=0?t.indexOf("",n+1):-1,o=n>=0&&s>=0?t.slice(n+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,m,d=""]=o.split(""),p=[];for(let b of i.split(`
|
|
73
|
+
`)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(b);if(!w)continue;let S=w[3]??"";p.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...S].filter(O=>O==="+").length,deleted:[...S].filter(O=>O==="-").length,binary:S.startsWith("Bin")})}let f=te(p,r),_=0,g=0,y=0;for(let b of f)_+=typeof b.changed=="number"?b.changed:0,g+=typeof b.added=="number"?b.added:0,y+=typeof b.deleted=="number"?b.deleted:0;return Rt({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:m??"",body_lines:d.trim()?d.trim().split(`
|
|
74
|
+
`).length:0,files:f,summary:`${r?`${f.length}/${p.length}`:f.length} files, ${_} changed, +${g} -${y}`},r,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Rt(e,t,r){return t?st(e,r):e}function zE(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Rf(e,t){let r={};for(let n of e){let s=String(n[t]??"");r[s]=(r[s]??0)+1}return r}function YE(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function XE(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 hf,Oo,Ao,Yt=h(()=>{"use strict";U();L();Ie();Qr();je();Ie();hf=["%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 is(this.command,this.flag,this.validFlags,`${this.command} --help`)}},Ao=class extends Error{constructor(r){super("git status output was not recognized; passing raw stdout through");this.reason=r}}});var Wc={};M(Wc,{NORMALIZATION_ALLOWLIST:()=>Tf,NORMALIZE_ANSI:()=>Io,NORMALIZE_BLANK_LINES:()=>No,NORMALIZE_CR_PROGRESS:()=>Lo,NORMALIZE_JSON_TOON:()=>Cf,NORMALIZE_TRAILING_WHITESPACE:()=>Do,crushJsonArrayItems:()=>Un,formatCodexNormalizeDecision:()=>Lf,formatNormalizeDecision:()=>If,hookDecisionFromClaudePostExecJson:()=>Of,hookDecisionFromCodexPostExecJson:()=>Af,normalizeOutput:()=>$o,renderGenericJsonLane:()=>Hc,runClaudePostExecHook:()=>ex,runCodexPostExecHook:()=>tx,transcodeJsonToToon:()=>vf});import{readFileSync as Po}from"node:fs";function vf(e,t){let r=t?.encode??C,n=t?.decode??D,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=r(o)}catch{return e}let a;try{a=n(i)}catch{return e}return jc(o,a)?i.trimEnd():e}async function Hc(e,t={}){let r=ox(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=xf(t.minTokens,QE),i=xf(t.maxItems,ZE);if(!(s>i&&lx(e)>=o))return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Un)(n,i)}catch(_){return{output:C(n).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:dx(_)}}}let u=c.items,l={items:u},m=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let p=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,f=C(l).trimEnd();return{output:[m,p,f].filter(Boolean).join(`
|
|
75
|
+
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Un(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let r=new Set([0,e.length-1]),n=ix(e),s=new Set;n&&e.forEach((a,c)=>{Gc(a)!==n&&s.add(c)});let o=ax(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 $o(e){let t=e;for(let r of Tf)t=r.apply(t);return t}async function Of(e,t){return await Pf(e,t)}async function Af(e,t){return await Pf(e,t)}async function Pf(e,t){let r=sx(e),n=mx(r,["cwd"])||t.cwd;if(!await(t.isEnabled??nx)(n))return{kind:"passthrough",reason:"disabled"};let o=px(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??$o)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function If(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Lf(e){return{stdout:"",status:0}}async function ex(e){let t=e?Po(e,"utf8"):Po(0,"utf8"),r=await Of(t,{cwd:process.cwd()}),n=If(r);return n.stdout&&process.stdout.write(n.stdout),n.status}async function tx(e){let t=e?Po(e,"utf8"):Po(0,"utf8"),r=await Af(t,{cwd:process.cwd()}),n=Lf(r);return n.stdout&&process.stdout.write(n.stdout),n.status}function rx(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&&kf(e.charCodeAt(r));)r++;r<e.length&&r++;continue}r+=s>=32?2:1;continue}if(n===155){for(r++;r<e.length&&kf(e.charCodeAt(r));)r++;r<e.length&&r++;continue}t+=e[r++]}return t}function kf(e){return e>=32&&e<=63}function nx(e){return Pe(e,process.env).enabled}function sx(e){try{let t=JSON.parse(e);return Nr(t)?t:{}}catch{return{}}}function ox(e){let t=e.trim();if(!t)return null;try{let n=JSON.parse(t);return Nr(n)||Array.isArray(n)?{value:n}:null}catch{}let r=[];for(let n of e.split(/\r?\n/))if(n.trim())try{r.push(JSON.parse(n))}catch{return null}return r.length>0?{value:r}:null}function ix(e){let t=new Map;for(let s of e){let o=Gc(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 Gc(e){return Array.isArray(e)?"array":Nr(e)?Object.keys(e).sort().map(t=>`${t}:${Sf(e[t])}`).join("|"):Sf(e)}function ax(e,t){let r=new Set,n=new Map;e.forEach((s,o)=>{if(!(t&&Gc(s)!==t))for(let[i,a]of Df(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 cx(s))r.add(o);for(let o of ux(s))r.add(o)}return r}function cx(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=Ef(r),s=r.map(a=>Math.abs(a-n)).sort((a,c)=>a-c),o=Ef(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 ux(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 Df(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Nr(e)?Object.entries(e).flatMap(([r,n])=>Df(n,t?`${t}.${r}`:r)):[]}function Sf(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Ef(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 lx(e){return Math.ceil(e.length/4)}function xf(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function dx(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 mx(e,t){let r=e;for(let n of t){if(!Nr(r))return"";r=r[n]}return typeof r=="string"?r:""}function px(e,t){let r=e[t];return Nr(r)?r:null}function Nr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function jc(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)=>jc(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)&&jc(r[i],n[i]))}var Io,Lo,Do,No,Cf,QE,ZE,Tf,Jn=h(()=>{"use strict";L();Ie();Io={id:"ansi",apply:rx},Lo={id:"cr-progress",apply:e=>e.split(`
|
|
75
76
|
`).map(t=>{let r=t.endsWith("\r")?t.slice(0,-1):t,n=r.lastIndexOf("\r");return n>=0?r.slice(n+1):r}).join(`
|
|
76
|
-
`)},
|
|
77
|
+
`)},Do={id:"trailing-whitespace",apply:e=>e.split(`
|
|
77
78
|
`).map(t=>t.replace(/[ \t]+$/,"")).join(`
|
|
78
|
-
`)},
|
|
79
|
+
`)},No={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
|
|
79
80
|
|
|
80
|
-
`)};
|
|
81
|
-
`}function
|
|
82
|
-
`,status:0}}async function
|
|
81
|
+
`)};Cf={id:"json-to-toon",apply:e=>vf(e)},QE=200,ZE=15;Tf=[Io,Lo,Do,No,Cf]});var Kn={};M(Kn,{parseExecCommandLine:()=>jf,renderExecContract:()=>Ff,runExecWrapper:()=>bx});import{isUtf8 as fx}from"node:buffer";import{spawn as gx}from"node:child_process";async function bx(e,t){let r=jf(e),n=await wx(r);return await Ff(r,n,t)}async function Ff(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=xe(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=_x(n),i=o.kind==="text"?Buffer.from(o.text):n,a=jx(r.heavyByteThreshold,hx);if(i.length<=a&&r.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:n};let c=n.length,u=r.level==="lossless"?"terse":r.level,l=await r.store?.mint(n,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let m=o.kind==="text"?kx(o.text,n.length,l,r.level,e,r.anomalyScorer,r.jsonArrayCrusher):Sx(n,n.length,l,e);return{stdout:Buffer.from(m.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:n,degradation:m.degradation}}function jf(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1),n=r.length===1?r[0]:r.join(" ");if(!n.trim())throw new Error("usage: rsp exec -- <command line>");return n}async function wx(e){let t=gx(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function _x(e){return fx(e)?{kind:"text",text:Rx(e.toString("utf8"))}:{kind:"bytes"}}function Rx(e){let t=e;for(let r of[Io,Lo,Do,No])t=r.apply(t);return t}function kx(e,t,r,n,s,o=Lx,i=Un){let c=Math.max(1,Math.floor((n==="terse"?Bf:yx)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),m=Ix(e,c,l,o),d=Ex(e),p=xx(d,e,u,c,l,m.kind==="ok"?m.lines:[],i),f=Hf(s,d,t,Fx(u),r,p.summary),_=m.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Vf(m.error)}:p.degradation;return{text:qf(f),degradation:_}}function Sx(e,t,r,n){let s=Math.max(1,Math.floor(Bf/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:qf(Hf(n,"bytes",t,0,r,o))}}function Hf(e,t,r,n,s,o){return{family:"exec",command:e,content:t,bytes:r,lines:n,summary:o,recovery:{original:De(s)}}}function Ex(e){let t=e.trim();return t?Wf(t)?"json":Uf(e)?"jsonl":Dx(e)?"unified-diff":Jf(e)?"tabular":Nx(e)?"log-like":$x(e)?"prose":"untyped":"untyped"}function xx(e,t,r,n,s,o,i=Un){switch(e){case"json":return vx(t,i);case"jsonl":return{summary:Cx(t)};case"unified-diff":return{summary:Tx(t)};case"tabular":return{summary:Ox(t)};case"log-like":return{summary:Ax(t,o)};case"prose":return{summary:Px(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Gf(r,n,s,o)}}}function vx(e,t){let r=Wf(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(kt),item_keys:Jc(r)}}}catch(n){return{summary:$f(r),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Vf(n)}}}return{summary:$f(r)}}if(Vn(r)){let n=Object.entries(r);return{summary:{root_type:"object",keys:n.map(([s])=>s).slice(0,20),key_count:n.length,sample:Object.fromEntries(n.slice(0,8).map(([s,o])=>[s,kt(o)]))}}}return{summary:{root_type:typeof r,value:kt(r)}}}function $f(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(kt),item_keys:Jc(e)}}function Cx(e){let t=Uf(e)??[],r=Mx(t,"level");return{records:t.length,keys:Jc(t),levels:r,first:kt(t[0]),last:kt(t.at(-1))}}function Tx(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 Ox(e){let t=Jf(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Gf(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function Ax(e,t){let r=qn(e);return{entries:r.length,levels:Bx(r),first:Xt(r[0]??""),last:Xt(r.at(-1)??""),outliers:t.map(n=>({line:n.lineNumber,score:Number(n.score.toFixed(2)),text:Xt(n.text)}))}}function Px(e){let t=e.trim().split(/\n\s*\n/).filter(n=>n.trim()),r=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:r.length,opening:Xt(t[0]??""),closing:Xt(t.at(-1)??"")}}function Gf(e,t,r,n){let s=Mf(e.subarray(0,t)),o=Mf(e.subarray(r));return{head:s,tail:o,outliers:n.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:Xt(i.text)}))}}function Ix(e,t,r,n){try{return{kind:"ok",lines:n(e,{headBytes:t,tailStart:r})}}catch(s){return{kind:"failed",error:s}}}function Lx(e,t){return pf(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Wf(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let r=JSON.parse(t);return Vn(r)||Array.isArray(r)?r:null}catch{return null}}function Uf(e){let t=qn(e);if(t.length<2||!t.every(n=>/^[\[{]/.test(n.trim())))return null;let r=[];for(let n of t)try{r.push(JSON.parse(n))}catch{return null}return r}function Dx(e){let t=qn(e),r=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(r)&&!/^--- /.test(r))return!1;let n=t.some(i=>/^diff --git a\/.+ b\/.+/.test(i))||t.some(i=>/^--- /.test(i))&&t.some(i=>/^\+\+\+ /.test(i)),s=t.some(i=>/^@@ /.test(i)),o=t.some(i=>/^[+-]/.test(i)&&!/^(---|\+\+\+) /.test(i));return n&&s&&o}function Jf(e){let t=qn(e);if(t.length<3)return null;let r=t[0]??"";if(/[=:{}/]/.test(r)||/^\d{4}-\d{2}-\d{2}/.test(r))return null;let n=r.includes(" ")?/\t+/:/\s{2,}/,s=r.split(n).map(i=>i.trim()).filter(Boolean);if(s.length<2||s.some(i=>!/^[A-Za-z0-9_.-]+$/.test(i)))return null;let o=[];for(let i of t.slice(1)){let a=i.split(n).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;o.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return o.length>0?{columns:s,rows:o}:null}function Nx(e){let t=qn(e);return t.length<3?!1:t.filter(n=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(n)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(n)||(n.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(n)).length/t.length>=.6}function $x(e){let t=e.trim();if(!t)return!1;let r=t.split(/\s+/).filter(Boolean),n=t.match(/[.!?](?:\s|$)/g)?.length??0;return r.length>=20&&n>=2}function qn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Jc(e){let t=new Map;for(let r of e)if(Vn(r))for(let n of Object.keys(r))t.set(n,(t.get(n)??0)+1);return[...t.entries()].sort((r,n)=>n[1]-r[1]||r[0].localeCompare(n[0])).slice(0,20).map(([r])=>r)}function Mx(e,t){let r=new Map;for(let n of e){if(!Vn(n))continue;let s=n[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();r.set(o,(r.get(o)??0)+1)}}return Object.fromEntries([...r.entries()].sort((n,s)=>n[0].localeCompare(s[0])))}function Bx(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 kt(e){return typeof e=="string"?Xt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(kt):Vn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,r])=>[t,kt(r)])):String(e)}function Xt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Nf?t:`${t.slice(0,Nf-1)}\u2026`}function qf(e){let t=C(e).trimEnd(),r=D(t);if(!Uc(e,r))throw new Error("exec TOON round-trip guard failed");return`${t}
|
|
82
|
+
`}function Uc(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)=>Uc(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)&&Uc(r[i],n[i]))}function Vn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Vf(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 Mf(e){return e.toString("utf8").replace(/�$/g,"")}function Fx(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 jx(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var hx,yx,Bf,Nf,zn=h(()=>{"use strict";U();L();ff();Yt();Jn();je();hx=8*1024,yx=2*1024,Bf=1024,Nf=240});var qo={};M(qo,{RSP_WRAPPER_CAPABILITIES:()=>Qn,_testOnlyResetBinaryState:()=>Xx,formatCodexHookDecision:()=>ig,formatHookDecision:()=>og,hookDecisionFromClaudePreExecJson:()=>nv,hookDecisionFromCodexPreExecJson:()=>sv,rewriteCommand:()=>ng,rewriteTableFromCapabilities:()=>rg,runClaudePreExecHook:()=>ov,runCodexPreExecHook:()=>iv});import{accessSync as Vx,constants as Kx,existsSync as zx,readFileSync as Uo}from"node:fs";import{fileURLToPath as Yx}from"node:url";function Xx(){Wo=void 0,qc=!1}function Qx(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return Vx(`${t}/rsp`,Kx.X_OK),!0}catch{}return!1}function Zx(e){return Wo===void 0&&(Wo=e()),Wo}function ev(){qc||(qc=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function rg(e){let t=new Map;for(let r of e)t.set(Ev(r.command),["rsp",...r.wrapper]);return t}function ng(e,t=Gn()){let r=gv(e);if(r)return r;let n=pv(e);if(!n)return Go(e,t);let s=n.tokens.map(u=>u.text);if(s.length>0&&Tr(s[0]))return Go(e,t);let o=rv(n,t);if(o)return o;if(n.tokens.some(u=>u.quoted))return Go(e,t);let i=[...Qn].sort((u,l)=>l.command.length-u.command.length).find(u=>fv(s,u.command));if(!i)return Go(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=dg(n.redirectSuffix);return{kind:"rewrite",command:[...a.map(St),...c].join(" "),capabilityId:i.id}}function rv(e,t){let r=e.tokens.map(i=>i.text),n=r[0],s=dg(e.redirectSuffix),o=t.map(St);return n==="cat"&&r.length===2&&Ho(r[1])?{kind:"rewrite",command:[...o,"cat",St(r[1]),...s].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&r.length===2&&Ho(r[1])?{kind:"rewrite",command:[...o,"cat",`--${n}`,"10",St(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],St(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),St(r[2]),...s].join(" "),capabilityId:`cat:${n}`}:null}function Ho(e){return!!e&&!e.startsWith("-")}async function nv(e,t){return await sg(e,t)}async function sv(e,t){return await sg(e,t)}async function sg(e,t){return(await Kc(e,t,"pre-exec")).decision}async function Kc(e,t,r){let n=gg(e);if(!n.ok){let f={kind:"passthrough",reason:n.reason};return{decision:f,telemetryRoot:t.cwd,event:$r({hook:r,command:"",decision:f,reason:n.reason})}}let s=n.payload,o=Ne(s,["cwd"])||Ne(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??av)(o)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:Vc(s),decision:f,reason:"disabled"})}}let a=Vc(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:a,decision:f,reason:"missing-command"})}}if(!Zx(t.resolveBinary??Qx)){ev();let f={kind:"passthrough",reason:"binary-unresolved"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:a,decision:f,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Pe(o,process.env),m=t.rspInvocationPrefix??Gn(),d=l.proxyEnabled?hv(a,m):(t.rewrite??(f=>ng(f,m)))(a),p=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let f=d.reason?d:{...d,reason:"unsupported-command"};return{decision:f,telemetryRoot:o,event:$r({hook:r,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:p})}}return await uv(o,t.wakeResident??cv),{decision:d,telemetryRoot:o,event:$r({hook:r,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:p})}}function og(e){return e.kind==="rewrite"?ag(e.command):{stdout:"",status:0}}function ig(e){return e.kind==="rewrite"?ag(e.command):{stdout:"",status:0}}function ag(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
|
|
83
|
+
`,status:0}}async function ov(e){let t="";try{t=e?Uo(e,"utf8"):Uo(0,"utf8");let r=await Kc(t,{cwd:process.cwd()},"claude-pre-exec");Jo(r.telemetryRoot,r.event);let n=r.decision;ug("claude-pre-exec",n);let s=og(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Jo(process.cwd(),cg("claude-pre-exec",t,r)),lg("claude-pre-exec",r),0}}async function iv(e){let t="";try{t=e?Uo(e,"utf8"):Uo(0,"utf8");let r=await Kc(t,{cwd:process.cwd()},"codex-pre-exec");Jo(r.telemetryRoot,r.event);let n=r.decision;ug("codex-pre-exec",n);let s=ig(n);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(r){return Jo(process.cwd(),cg("codex-pre-exec",t,r)),lg("codex-pre-exec",r),0}}function Jo(e,t){lt(e,t).catch(()=>{})}function $r(e){let t=e.command.trim(),r=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:be(t),decision:r?"contributed":"passed",reason:e.reason,capability_id:r,decision_ms:e.decisionMs}}function cg(e,t,r){let n=gg(t),s=n.ok?Vc(n.payload):"";return{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:be(s),decision:"failed-open",reason:"hook-exception",error:zc(r)}}function av(e){return Pe(e,process.env).enabled}async function cv(e){let t=Pe(e,process.env);if(!t.enabled||!mv(t))return;let r=Ge(e);await Rs(r,dv(t))}async function uv(e,t){try{await Promise.resolve(t(e))}catch(r){lv(r)}}function ug(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
|
|
83
84
|
`);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
|
|
84
|
-
`)}}function
|
|
85
|
-
`)}function
|
|
86
|
-
`)}function
|
|
87
|
-
`)}function
|
|
88
|
-
`),u=o.map(({alias:d,number:
|
|
89
|
-
`)),l=i.map(({alias:d,name:
|
|
90
|
-
`);return{kind:e,query:
|
|
91
|
-
`)}}function
|
|
92
|
-
`)}}function
|
|
85
|
+
`)}}function lg(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${zc(t)}
|
|
86
|
+
`)}function lv(e){Qi(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${zc(e)}
|
|
87
|
+
`)}function zc(e){return e instanceof Error?e.name||"Error":typeof e}function dv(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 mv(e){if(!e.storeUri.startsWith("file://"))return!0;try{return zx(Yx(e.storeUri))}catch{return!1}}function Vc(e){return Ne(e,["tool_input","command"])||Ne(e,["tool_input","cmd"])||Ne(e,["tool_input","args","command"])||Ne(e,["input","command"])||Ne(e,["input","cmd"])||Ne(e,["arguments","command"])||Ne(e,["arguments","cmd"])||Ne(e,["command"])||Ne(e,["cmd"])}function pv(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let r=Yc(t);if(r.length===0||r[0]?.quoted||r.some(o=>/[()$`]/.test(o.text))||r.some(o=>o.text.includes("=")&&Tr(o.text)))return null;let n=[],s=[];for(let o of r){if(o.text.includes(">")||o.text.includes("<")){if(o.quoted||o.text!=="2>/dev/null"&&o.text!=="2>&1")return null;s.push(o);continue}n.push(o)}return n.length===0?null:{tokens:n,redirectSuffix:s}}function Yc(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 fv(e,t){return e.length<t.length?!1:t.every((r,n)=>e[n]===r)}function gv(e){let t=Yc(e.trim()).map(r=>r.text);return Wt(t)?{kind:"passthrough",reason:tv}:null}function dg(e){return e.map(t=>t.text)}function St(e){return/[^\w@%+=:,./-]/.test(e)?Xc(e):e}function hv(e,t){let r=bv(e);return r?{kind:"passthrough",reason:r}:{kind:"rewrite",command:`${t.map(St).join(" ")} proxy -- ${Xc(e.trim())}`,capabilityId:"proxy:universal"}}function yv(e){if(!process.argv[1])return!1;let t=Yc(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function bv(e){let t=e.trim();if(!t)return"missing-command";if(pg(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let r=Rn(_n(t)[0]??"")[0];if(r==="rsp"||yv(t))return"opt-out";if(r&&mg.has(r))return"interactive"}function Go(e,t){let r=e.trim();return wv(r)?{kind:"rewrite",command:`${t.map(St).join(" ")} exec -- ${Xc(r)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function wv(e){return!(!e||!_v(e)||!Rv(e)||pg(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||kv(e,"rsp")||fg(e,mg)||Sv(e))}function _v(e){return/&&|[;|]/.test(e)}function pg(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 Rv(e){return _n(e).some(t=>{let r=Rn(t);return r.length===0?!1:r[0]==="git"?["log","diff","show","blame"].includes(r[1]??""):r[0]==="gh"?r.some((n,s)=>s>0&&(n==="list"||n==="view")):r[0]==="vitest"?!0:r[0]==="cargo"&&r[1]==="test"})}function fg(e,t){return _n(e).some(r=>{let n=Rn(r)[0];return n?t.has(n):!1})}function kv(e,t){return fg(e,new Set([t]))}function Sv(e){return _n(e).some(t=>{let r=Rn(t);return r[0]==="grep"&&r.includes("-q")})}function Xc(e){return`'${e.replace(/'/g,"'\\''")}'`}function Ev(e){return e.join("\0")}function gg(e){try{let t=JSON.parse(e);return hg(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Ne(e,t){let r=e;for(let n of t){if(!hg(r))return"";r=r[n]}return typeof r=="string"?r:""}function hg(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Wo,qc,Qn,QM,tv,mg,Zn=h(()=>{"use strict";kn();Ie();We();Ft();Nc();Le();qc=!1;Qn=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"gh:issues:batch",command:["gh","issues"],wrapper:["gh","issues"]},{id:"gh:prs:batch",command:["gh","prs"],wrapper:["gh","prs"]},{id:"gh:edit-labels:batch",command:["gh","edit-labels"],wrapper:["gh","edit-labels"]},{id:"gh:link-sub-issues:batch",command:["gh","link-sub-issues"],wrapper:["gh","link-sub-issues"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],QM=rg(Qn),tv="lossless-gh-json-jq";mg=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Sg={};M(Sg,{fastTelemetryRoot:()=>Zc,isFastGitStatus:()=>Vo,runFastGitStatus:()=>Ko});import{spawnSync as Rg}from"node:child_process";import{existsSync as kg,readdirSync as Lv}from"node:fs";function Vo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Ko(){if(Dv(process.cwd()))return{stdout:Qc(),stderr:Buffer.alloc(0),status:0,signal:null};if(Rg("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Qc(),stderr:Buffer.alloc(0),status:0,signal:null};let t=Rg("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?Qc():t.stdout;return{stdout:r,stderr:t.stderr,status:0,signal:t.signal,rawOutput:r}}async function Zc(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(We(),Bt));return t(e).rootDir}catch{return e}}function Qc(){return Buffer.from(`${W({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
|
|
88
|
+
`)}function Dv(e){try{return!kg(`${e}/.git`)||kg(`${e}/.git/index`)?!1:Lv(e).every(t=>t===".git")}catch{return!1}}var eu=h(()=>{"use strict";nt()});async function Br(e,t,r){let n=new Array(e.length),s=0,o=Math.min(Math.max(1,Math.floor(t)),e.length),i=Array.from({length:o},async()=>{for(;s<e.length;){let a=s++;n[a]=await r(e[a])}});return await Promise.all(i),n}function vg(e,t,r,n={}){Xv(t);let s=e==="issue"?"i":"p",o=t.map((d,p)=>({alias:`${s}${p}`,number:d})),i=(n.labelNames??[]).map((d,p)=>({alias:`l${p}`,name:d})),c=Qv(["id","number",...r]).map(d=>Zv(Yv[d],6)).join(`
|
|
89
|
+
`),u=o.map(({alias:d,number:p})=>[` ${d}: ${e}(number: ${p}) {`,c," }"].join(`
|
|
90
|
+
`)),l=i.map(({alias:d,name:p})=>` ${d}: label(name: ${JSON.stringify(p)}) { id name }`),m=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
|
|
91
|
+
`);return{kind:e,query:m,aliases:o,labelAliases:i}}function Cg(e,t){let r=Mr(t),n=Mr(r.data),s=Mr(n.repository),o=Array.isArray(r.errors)?r.errors.map(Mr):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(Ag(c))return{number:a,value:c};let u=o.find(l=>{let m=l.path;return Array.isArray(m)&&m.includes(i)});return{number:a,error:Pg(u?.message)||"not found"}})}function Tg(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: ${xt(o.nodeId)}, labelIds: ${xg(t)}, clientMutationId: ${xt(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: ${xt(o.nodeId)}, labelIds: ${xg(r)}, clientMutationId: ${xt(String(o.number))} }) { clientMutationId }`)}}),{aliases:n,query:["mutation RspEditLabels {",...s,"}"].join(`
|
|
92
|
+
`)}}function Og(e,t){let r=t.map((s,o)=>({alias:`link${o}`,number:s.number})),n=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${xt(e.nodeId)}, subIssueId: ${xt(s.nodeId)}, clientMutationId: ${xt(String(s.number))} }) { clientMutationId }`);return{aliases:r,query:["mutation RspLinkSubIssues {",...n,"}"].join(`
|
|
93
|
+
`)}}function tu(e,t){let r=Mr(t),n=Array.isArray(r.errors)?r.errors.map(Mr):[],s=new Map;for(let{alias:o}of e){let i=n.find(a=>Array.isArray(a.path)&&a.path.includes(o));i&&s.set(o,Pg(i.message)||"mutation failed")}return s}function Xv(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 Qv(e){return[...new Set(e)]}function Zv(e,t){let r=" ".repeat(t);return e.split(`
|
|
93
94
|
`).map(n=>`${r}${n}`).join(`
|
|
94
|
-
`)}function
|
|
95
|
-
`),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as
|
|
96
|
-
`))}async function
|
|
97
|
-
`),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function
|
|
98
|
-
${e.stdout}`)}function
|
|
99
|
-
`)[0]?.slice(0,240)??""}function
|
|
95
|
+
`)}function xt(e){return JSON.stringify(e)}function xg(e){return`[${e.map(xt).join(", ")}]`}function Mr(e){return Ag(e)?e:{}}function Ag(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pg(e){return typeof e=="string"?e:""}var Yv,Ig=h(()=>{Yv={id:"id",number:"number",title:"title",state:"state",labels:"labels(first: 100) { nodes { id name } }",body:"body",mergeable:"mergeable",checks:["commits(last: 1) {"," nodes { commit { statusCheckRollup {"," state"," contexts(first: 100) { nodes {"," __typename"," ... on CheckRun { name status conclusion detailsUrl }"," ... on StatusContext { context state targetUrl }"," } }"," } } }","}"].join(`
|
|
96
|
+
`),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as tC,spawnSync as rC}from"node:child_process";function su(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function Ng(e,t={}){let r=hC(e),n=r.repo??t.repo??process.env.GH_REPO??bC();if(!n||!n.includes("/"))return au(e,"repository is required; pass --repo owner/repo");let s=t.exec??wC,o=Math.max(1,Math.floor(t.restConcurrency??Dg));return r.verb==="issues"||r.verb==="prs"?await oC(r,n,s,o,e):r.verb==="edit-labels"?await aC(r,n,s,o,e):await uC(r,n,s,o,e)}async function oC(e,t,r,n,s){let o=e.verb==="issues"?"issue":"pullRequest",i=$g(e),a=[],c=[];for(let l of iu(e.numbers,100)){let m=vg(o,l,i.query),d=await ou(r,t,m.query);if(uu(d))return await iC(e,t,r,n,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(p=>({number:p,value:{error:_e(d)||`failed to read ${p}`},failed:!0})));continue}a.push(...Cg(m,vt(d.stdout)).map(p=>({number:p.number,value:p.error?{error:p.error}:dC(e.verb,p.value??{},i.output),failed:!!p.error})))}let u=a.filter(l=>l.failed).length;return Yo({command:Xo(s),transport:"graphql",order:e.numbers,[e.verb]:es(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
|
|
97
|
+
`))}async function iC(e,t,r,n,s){let o=$g(e),i=e.verb==="issues"?"issues":"pulls",a=await Br(e.numbers,n,async u=>{let l=await r(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:_e(l)||"REST fallback failed"}};let m=Ke(vt(l.stdout));if(e.verb==="prs"&&o.output.some(Mg)){let d=H(Ke(m.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let p=await r(["api",`repos/${t}/commits/${d}/check-runs`]);if(p.code!==0)return{number:u,value:{error:_e(p)||"REST check-runs fallback failed"}};let f=await r(["api",`repos/${t}/commits/${d}/status`]);if(f.code!==0)return{number:u,value:{error:_e(f)||"REST commit-status fallback failed"}};m={...m,restCheckRollup:pC(Ke(vt(p.stdout)),Ke(vt(f.stdout)))}}return{number:u,value:mC(e.verb,m,o.output)}}),c=a.filter(u=>"error"in u.value).length;return Yo({command:Xo(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:n,order:e.numbers,[e.verb]:es(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function aC(e,t,r,n,s){if(e.add.length===0&&e.remove.length===0)return au(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Bg(e.numbers,t,r,n),Br(o,n,async d=>{let p=await r(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:H(Ke(vt(p.stdout)).node_id),error:p.code===0?"":_e(p)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return jr(s,e.numbers,cu(e.numbers,()=>({error:`label not found: ${u.join(", ")}`})),"graphql");let l=new Map(i.filter(d=>d.error).map(d=>[d.number,{error:d.error}])),m=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of iu(m,100)){let p=Tg(d,e.add.map(g=>c.get(g)),e.remove.map(g=>c.get(g))),f=await ou(r,t,p.query);if(uu(f))return await cC(e,t,r,n,s);if(f.code!==0){for(let g of d)l.set(g.number,{error:_e(f)||"label mutation failed"});continue}let _=tu(p.aliases,vt(f.stdout));for(let g of d){let b=p.aliases.filter(w=>w.number===g.number).map(w=>_.get(w.alias)).find(Boolean);l.set(g.number,b?{error:b}:{ok:!0})}}return jr(s,e.numbers,Fg(e.numbers,l),"graphql")}async function cC(e,t,r,n,s){let o=await Br(e.numbers,n,async i=>{for(let a of e.remove){let c=await r(["api","-X","DELETE",`repos/${t}/issues/${i}/labels/${encodeURIComponent(a)}`]);if(c.code!==0)return{number:i,value:{error:_e(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:_e(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return jr(s,e.numbers,es(o),"rest-fallback",n)}async function uC(e,t,r,n,s){if(e.numbers.length<2)return au(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Bg(e.numbers,t,r,n),c=a[0],u=c?.nodeId;if(!u)return jr(s,i,cu(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,m=a.slice(1).flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:(l.set(d.number,{error:d.error??"child not found"}),[]));for(let d of iu(m,100)){let p=Og({number:o,nodeId:u},d),f=await ou(r,t,p.query);if(uu(f))return await lC(o,i,t,r,n,s);if(f.code!==0){for(let g of d)l.set(g.number,{error:_e(f)||"sub-issue mutation failed"});continue}let _=tu(p.aliases,vt(f.stdout));for(let g of p.aliases){let y=_.get(g.alias);l.set(g.number,y?{error:y}:{ok:!0})}}return jr(s,i,Fg(i,l),"graphql")}async function lC(e,t,r,n,s,o){let i=await Br(t,s,async a=>{let c=await n(["api",`repos/${r}/issues/${a}`,"--jq",".id"]),u=Number(c.stdout.trim());if(c.code!==0||!Number.isSafeInteger(u)||u<=0)return{number:a,value:{error:_e(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:_e(l)||"REST link failed"}}});return jr(o,t,es(i),"rest-fallback",s)}function jr(e,t,r,n,s){let o=Object.values(r).filter(i=>Hr(i)&&"error"in i).length;return Yo({command:Xo(e),transport:n,...n==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??Dg}:{},order:[...t],issues:r,summary:`${t.length-o}/${t.length} mutated`})}function $g(e){if(e.verb==="issues"){let r=e.fields.length>0?e.fields:["title","state","labels","body"];return Lg(r,nC),{output:r,query:r}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Lg(t,sC),{output:t,query:t.map(r=>["checkRollup","statusCheckRollup"].includes(r)?"checks":r)}}function Lg(e,t){let r=e.find(n=>!t.has(n));if(r)throw new Error(`unknown GitHub batch field: ${r}`)}function dC(e,t,r){let n={};for(let s of r)s==="labels"?n.labels=ru(t.labels).map(o=>H(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?n[s]=gC(t.commits):s==="state"||s==="mergeable"?n[s]=H(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(n[s]=jg(t[s]));return"number"in n||(n.number=lu(t.number)),n}function mC(e,t,r){let n={};for(let s of r)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(Hr):[];n.labels=o.map(i=>H(i.name)).filter(Boolean)}else if(Mg(s))n[s]=Ke(t.restCheckRollup);else if(s==="state")n.state=H(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;n.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else n[s]=jg(t[s]);return"number"in n||(n.number=lu(t.number)),n}function pC(e,t){let r=Array.isArray(e.check_runs)?e.check_runs.filter(Hr):[],n=Array.isArray(t.statuses)?t.statuses.filter(Hr):[],s=[...r.map(o=>({name:H(o.name),state:(H(o.conclusion)||H(o.status)).toLowerCase()})),...n.map(o=>({name:H(o.context),state:H(o.state).toLowerCase()}))];return{state:H(t.state).toLowerCase()||fC(s.map(o=>o.state)),contexts:s}}function fC(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 Mg(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function gC(e){let t=ru(e).at(-1),r=Ke(Ke(t?.commit).statusCheckRollup);return{state:H(r.state).toLowerCase(),contexts:ru(r.contexts).map(n=>({name:H(n.name)||H(n.context),state:(H(n.conclusion)||H(n.status)||H(n.state)).toLowerCase()}))}}async function ou(e,t,r){let[n,s]=yC(t);return await e(["api","graphql","-f",`query=${r}`,"-F",`owner=${n}`,"-F",`repo=${s}`])}async function Bg(e,t,r,n){return await Br(e,n,async s=>{let o=await r(["api",`repos/${t}/issues/${s}`]),i=Ke(vt(o.stdout)),a=H(i.node_id),c=lu(i.id);return o.code!==0||!a?{number:s,error:_e(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function iu(e,t){let r=[];for(let n=0;n<e.length;n+=t)r.push(e.slice(n,n+t));return r}function hC(e){if(!su(e))throw new Error("unsupported rsp gh batch command");let t=e[1],r=[],n=[],s=[],o=[],i;for(let a=2;a<e.length;a++){let c=e[a];if(c==="--repo")i=e[++a];else if(c==="--json")n.push(...Fr(e[++a]??""));else if(c.startsWith("--json="))n.push(...Fr(c.slice(7)));else if(c==="--add")s.push(...Fr(e[++a]??""));else if(c.startsWith("--add="))s.push(...Fr(c.slice(6)));else if(c==="--remove")o.push(...Fr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...Fr(c.slice(9)));else{let u=Number(c);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`invalid GitHub number: ${c}`);r.push(u)}}if(r.length===0)throw new Error("at least one GitHub number is required");return{verb:t,numbers:r,repo:i,fields:n,add:s,remove:o}}function Yo(e,t=0,r=""){return{stdout:Buffer.from(`${C(e)}
|
|
98
|
+
`),stderr:Buffer.from(r),status:t,signal:null,payload:e}}function au(e,t){return Yo({command:Xo(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function cu(e,t){return es(e.map(r=>({number:r,value:t(r)})))}function es(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Fg(e,t){return cu(e,r=>t.get(r)??{error:"mutation skipped"})}function uu(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
|
|
99
|
+
${e.stdout}`)}function _e(e){return(e.stderr||e.stdout).trim().split(`
|
|
100
|
+
`)[0]?.slice(0,240)??""}function vt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function ru(e){let t=Ke(e).nodes;return Array.isArray(t)?t.filter(Hr):[]}function jg(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function lu(e){let t=Number(e);return Number.isFinite(t)?t:0}function Fr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function yC(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function Xo(e){return`rsp ${e.join(" ")}`}function bC(){let e=rC("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 wC(e){let t=tC("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",a=>o({code:a??1,stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8")}))})}function Ke(e){return Hr(e)?e:{}}function Hr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function H(e){return typeof e=="string"?e:""}var Dg,nC,sC,Hg=h(()=>{"use strict";U();L();Ig();Dg=4,nC=new Set(["number","title","state","labels","body"]),sC=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var bu={};M(bu,{renderGhContract:()=>Vg,runGhWrapper:()=>xC});import{spawn as _C}from"node:child_process";async function xC(e,t){if(su(e))return await Ng(e);let r=Kg(e),n=await CC(r);return Vg(e,n,t)}async function Vg(e,t,r){if((t.status??0)!==0||t.signal){let p=xe(e.join(" "),t.stdout,t.stderr);return{stdout:$(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let n=Kg(e),s=ts(t.stdout),o=NC(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=WC(o);if(i){if(!r.store)throw new Error("truncated gh output requires an elision store");let p=await r.store.mint(Buffer.from(i.original),{command:e.join(" "),loss:{level:n.full?"brief":r.level,bytes_elided:i.bytes}});i.target.truncated.handle=p}let a=i?.target.truncated.handle||void 0,c=C(o);if(r.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let u=UC(o);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:a,bytesElided:i?.bytes};let l=Buffer.byteLength(c),m=await r.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!m)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${De(m)}
|
|
100
101
|
`;return{stdout:Buffer.from(`${C(u.payload)}
|
|
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
|
|
102
|
+
${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:m,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Kg(e){let t=Nt(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let r=t.argv[1],n=t.argv[2];if(!(r==="pr"||r==="issue"||r==="run"))throw new Error(`unsupported gh surface: ${r??""}`);let s=r==="pr"&&n&&n!=="list"&&n!=="view";if(!(n==="list"||n==="view"||s))throw new Error(`unsupported gh subcommand: ${n??""}`);let o=r,i=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let p=0;p<l.length;p+=1){let f=l[p]??"";f==="--full"?a=!0:f==="--wide"?c=!0:f==="--fields"?u=Wg(l[++p]??""):f.startsWith("--fields=")?u=Wg(f.slice(9)):i.push(f)}let d={kind:o,action:s?"combined":n==="list"?"list":"view",target:s?n:void 0,full:a,wide:c,fields:u,passthrough:i,query:t.query};return vC(d),d}function Gg(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,r=e.wide||e.fields.size>0?kC[t]:RC[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Wg(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function vC(e){if(e.fields.size===0)return;if(e.action!=="list")throw new Qo(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=EC[t];for(let n of e.fields)if(!r.includes(n))throw new Qo(e,`unknown field: ${n}`,r)}async function CC(e){if(e.action==="combined")return await TC(e);let t=OC(e);if(!t)return await DC(Gg(e));let r=await ue({...t,command:["gh",...Gg(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await AC(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function TC(e){let t=e.target??"",[r,n,s]=await Promise.all([ue({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ue({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ue({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),o=[r,n,s].find(a=>(a.status??0)!==0);if(o)return{stdout:o.stdout,stderr:o.stderr,status:o.status,signal:null};let i=Yg(ts(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:me(ts(s.stdout)).map(IC)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function OC(e){let t=Xg(e.passthrough),r=LC(e.passthrough,"--limit")??30,n=ze(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:n,per_page:r}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:n,labels:ze(e.passthrough,"--label"),per_page:r}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:r}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function AC(e,t){let r=ts(t);switch(`${e.kind}:${e.action}`){case"pr:list":return me(r).map(zg);case"pr:view":return Yg(r);case"issue:list":return me(r).filter(n=>!er(n.pull_request)).map(Ug);case"issue:view":return Ug(r);case"run:list":return{items:me(B(r).workflow_runs).map(Jg),total:le(B(r),"total_count")};case"run:view":{let n=Jg(r),s=Xg(e.passthrough);if(!s)return n;let o=await ue({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...n,jobs:o.status===0?me(B(ts(o.stdout)).jobs).map(PC):[]}}default:return r}}function zg(e){let t=B(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:hu(t.user),labels:me(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(B(t.base),"ref"),headRefName:x(B(t.head),"ref")}}function Yg(e){return zg(e)}function Ug(e){let t=B(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:me(t.labels).map(r=>({name:x(r,"name")})),author:hu(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Jg(e){let t=B(e);return{databaseId:le(t,"database_id")||le(t,"id"),name:x(t,"name")||x(t,"display_title"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),event:x(t,"event"),headBranch:x(t,"head_branch"),workflowName:x(t,"workflow_name"),createdAt:x(t,"created_at"),url:x(t,"html_url"),jobs:[]}}function PC(e){let t=B(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function IC(e){let t=B(e);return{author:hu(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function hu(e){let t=B(e);return{login:x(t,"login")}}function Xg(e){return e.find(t=>!t.startsWith("-"))}function ze(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function LC(e,t){let r=ze(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function DC(e){let t=_C("gh",e,{stdio:["ignore","pipe","pipe"]}),r=re();t.once("close",r),t.once("error",r);let n=[],s=[];return t.stdout.on("data",o=>n.push(o)),t.stderr.on("data",o=>s.push(o)),await new Promise((o,i)=>{t.on("error",i),t.on("close",(a,c)=>{o({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function NC(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=du(r,"prs"),o=s.rows.map(c=>Qg(c,e)),i=te(o,e.query),a=mu(i.length,o.length,s.total,e.query);return i.length===0?pu(n,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Gr({...n,prs:i,aggregate:a,summary:`${fu(i.length,o.length,e.query)} ${qg(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Gr({...n,pr:Zg(B(r),e),summary:`PR #${le(B(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return $C(e,t,B(r));case"issue:list":{let s=du(r,"issues"),o=s.rows.map(c=>eh(c,e)),i=te(o,e.query),a=mu(i.length,o.length,s.total,e.query);return i.length===0?pu(n,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Gr({...n,issues:i,aggregate:a,summary:`${fu(i.length,o.length,e.query)} ${qg(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Gr({...n,issue:HC(B(r),e),summary:`issue #${le(B(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=du(r,"runs"),o=s.rows.map(c=>th(c,e)),i=te(o,e.query),a=mu(i.length,o.length,s.total,e.query);return i.length===0?pu(n,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Gr({...n,runs:i,aggregate:a,summary:`${fu(i.length,o.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Gr({...n,run:GC(B(r),e),summary:`run ${le(B(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function $C(e,t,r){let n=Zg(B(r.view),{...e,action:"view",wide:!0}),s=te(me(r.checks).map(MC),e.query),o=B(r.comments).comments,i=te(me(o).map(BC).slice(-3),e.query);return st({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${le(B(r.view),"number")}: ${s.length} checks, ${i.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function MC(e){return{name:x(e,"name"),state:rs(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function BC(e){return{author:nh(e.author),body:Zo(e,"body",gu,!1),created:x(e,"createdAt")}}function du(e,t){if(Array.isArray(e))return{rows:me(e)};let r=B(e),n=le(r,"total")||le(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:me(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:me(r.workflow_runs),total:n}:{rows:[]}}function mu(e,t,r,n){let s={returned:e};return typeof r=="number"&&r>0&&(s.total=r),n&&(s.unfiltered=t),s}function pu(e,t,r,n,s){return st({...e,empty:!0,scope:FC(t),[r]:[],aggregate:n,summary:`0 ${jC(t)}`},s)}function FC(e){let t=ze(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=ze(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=ze(e.passthrough,"--branch")??ze(e.passthrough,"-b"),s=ze(e.passthrough,"--workflow")??ze(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function jC(e){let t=ze(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Qg(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:rs(e),draft:!!e.isDraft};return yu(r,e,t,["author","labels","url","updated"]),r}function Zg(e,t){let r=Qg(e,t);return r.body=Zo(e,"body",gu,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function eh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:rs(e),labels:rh(e.labels)};return yu(r,e,t,["author","url","updated"]),r}function HC(e,t){let r=eh(e,t);return r.body=Zo(e,"body",gu,t.full),r}function th(e,t){let r={id:le(e,"databaseId"),name:x(e,"name"),status:rs(e),conclusion:x(e,"conclusion")};return yu(r,e,t,["event","branch","workflow","created"]),r}function GC(e,t){let r=th(e,t),n=me(e.jobs).map(s=>({name:x(s,"name"),status:rs(s),conclusion:x(s,"conclusion"),log:Zo(s,"log",SC,t.full)}));return r.jobs=n,r}function Zo(e,t,r,n){let s=x(e,t);if(n||Buffer.byteLength(s)<=r)return s;let o=s.slice(0,r),i={preview:o,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(o),hint:"--full",handle:""}};return Object.defineProperty(i,"__rsp_original",{value:s,enumerable:!1}),i}function WC(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(er(r)){if(er(r.truncated)&&r.truncated.handle===""&&typeof r.preview=="string"){let n=typeof r.__rsp_original=="string"?r.__rsp_original:r.preview;return{target:r,original:n,bytes:Number(r.truncated.bytes??0)}}t.push(...Object.values(r))}}return null}function UC(e){for(let t of["prs","issues","runs","jobs"]){let r=e[t];if(Array.isArray(r)&&r.length>1)return{payload:{...e,[t]:r.slice(0,1)},rowsElided:r.length-1}}return null}function qg(e,t){return e.every(r=>r.state===t)?t:"returned"}function fu(e,t,r){return r?`${e}/${t}`:String(e)}function Gr(e,t,r){return t.query?st(e,r):e}function rs(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function yu(e,t,r,n){if(!(!r.wide&&r.fields.size===0))for(let s of n)!r.wide&&!r.fields.has(s)||(s==="author"?e.author=nh(t.author):s==="labels"?e.labels=rh(t.labels):s==="url"?e.url=x(t,"url"):s==="updated"?e.updated=x(t,"updatedAt"):s==="event"?e.event=x(t,"event"):s==="branch"?e.branch=x(t,"headBranch"):s==="workflow"?e.workflow=x(t,"workflowName"):s==="created"&&(e.created=x(t,"createdAt")))}function rh(e){return Array.isArray(e)?e.map(t=>er(t)?x(t,"name"):String(t)).filter(Boolean):[]}function nh(e){return er(e)?x(e,"login"):""}function ts(e){return e.trim()?JSON.parse(e):null}function me(e){return Array.isArray(e)?e.filter(er):[]}function B(e){return er(e)?e:{}}function x(e,t){let r=e[t];return typeof r=="string"?r:""}function le(e,t){let r=e[t];return typeof r=="number"?r:0}function er(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var RC,kC,gu,SC,EC,Qo,wu=h(()=>{"use strict";U();L();fo();Hg();Yt();Qr();je();RC={"pr:list":["number","title","state","isDraft"],"pr:view":["number","title","state","body"],"issue:list":["number","title","state","labels"],"issue:view":["number","title","state","body"],"run:list":["databaseId","name","status","conclusion"],"run:view":["databaseId","name","status","conclusion","jobs"]},kC={"pr:list":["number","title","state","isDraft","author","labels","url","updatedAt"],"pr:view":["number","title","state","body","author","labels","url","baseRefName","headRefName"],"issue:list":["number","title","state","labels","author","url","updatedAt"],"issue:view":["number","title","state","body","author","labels","url","updatedAt"],"run:list":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt"],"run:view":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt","jobs","url"]},gu=160,SC=160,EC={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};Qo=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return $({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var ku={};M(ku,{renderTestContract:()=>sh,runTestWrapper:()=>zC});import{spawn as JC}from"node:child_process";async function zC(e,t){let r=Nt(e),n=await e0(r.argv);return await sh(e,n,t)}async function sh(e,t,r){let n=Nt(e),o=oh(n.argv)==="vitest"?t0(t.stdout):r0(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let f=xe(e.join(" "),t.stdout,t.stderr);return{stdout:$(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${o0(o.durationSeconds)}`,c=te(o.failures,n.query);if(r.level==="terse")return await YC(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,m=0;for(let f of c){let _=await n0(f.excerpt,n.argv.join(" "),r.store);u.push({suite:f.suite,name:f.name,excerpt:_.text}),l??=_.handle,m+=_.bytesElided}let d={exit_code:i,summary:n.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let p=n.query?st(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(p)),stderr:Buffer.from(t.stderr),status:Ru(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:m>0?m:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function YC(e,t,r,n,s,o,i){let a=XC(r.failures),c={exit_code:n,summary:i?`${s} \xB7 ${r.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=i?st(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),m=Math.max(0,r.failures.length-a.length),d=a.some((w,S)=>w.excerpt!==r.failures[S].excerpt);if(m===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Ru(t.status),signal:t.signal,payload:u};let p={exit_code:n,summary:s};r.failures.length>0&&(p.failures=r.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let f=C(p),_=Buffer.byteLength(f),g=await o.store?.mint(Buffer.from(f),{command:e.join(" "),loss:{level:"terse",bytes_elided:_}});if(!g)throw new Error("terse test output requires an elision store");let b=`\u2026 elided ${m>0?`${m} failures`:"full detail"} (+${_}) \u2014 ${De(g)}`;return{stdout:Buffer.from(`${l}
|
|
103
|
+
${b}`),stderr:Buffer.from(t.stderr),status:Ru(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:_,rowsElided:m,rawOutput:Buffer.from(f)}}function Ru(e){return e===0||e===null?0:1}function XC(e){let t=[],r=VC;for(let n of e.slice(0,KC)){let s=QC(n.excerpt,Math.min(qC,r));r=Math.max(0,r-Buffer.byteLength(s)),t.push({suite:n.suite,name:n.name,excerpt:s})}return t}function QC(e,t){if(t<=0)return"";let r=e.split(`
|
|
103
104
|
`),n=r.length<=2?e:`${r[0]}
|
|
104
105
|
\u2026
|
|
105
|
-
${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function
|
|
106
|
-
`).filter(Boolean).map(c=>
|
|
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
|
|
108
|
-
\u2026 elided ${i} bytes (+${n.length}) \u2014 ${
|
|
109
|
-
`):""}function
|
|
110
|
-
`),status:1,signal:null}}return
|
|
111
|
-
`;if(!i&&Buffer.byteLength(c)<=
|
|
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
|
|
113
|
-
`),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??
|
|
106
|
+
${r[r.length-1]}`,s=Buffer.from(n);return s.length<=t?n:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function oh(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 ZC(e){if(oh(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 e0(e){let t=ZC(e),r=JC(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),n=re();r.once("close",n),r.once("error",n);let s=[],o=[];return r.stdout.on("data",i=>s.push(i)),r.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{r.on("error",a),r.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function t0(e){let t=ih(e);if(!Ct(t))return null;let r=Array.isArray(t.testResults)?t.testResults:[],n=[],s=Tt(t.numTotalTests),o=Tt(t.numFailedTests),i=i0(Tt(t.startTime),Tt(t.endTime));for(let a of r){if(!Ct(a))continue;let c=Ye(a.name)||Ye(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Ct(l)&&l.status==="failed"&&n.push({suite:c,name:Ye(l.fullName)||Ye(l.title)||Ye(l.name),excerpt:s0(l.failureMessages)||Ye(l.failureMessage)})}return s||=r.reduce((a,c)=>!Ct(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=n.length,i||=r.reduce((a,c)=>Ct(c)?a+Tt(c.perfStats&&Ct(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:r.length||1,durationSeconds:i,failures:n}}function r0(e){let t=e.split(`
|
|
107
|
+
`).filter(Boolean).map(c=>ih(c)).filter(Ct);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+=Tt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Tt(c.failed),i+=Tt(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){r.push({suite:Ye(c.name).split("::").slice(0,-1).join("::"),name:Ye(c.name),excerpt:Ye(c.stdout)});continue}if(c.reason==="compiler-message"&&Ct(c.message)){let u=Ye(c.message.rendered);u&&a.push(u)}}return r.length===0&&a.length>0&&(r.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
|
|
108
|
+
`)}),o||=1,n||=1,s||=1),s||=r.length,o||=1,n||=Math.max(s,r.length),{failed:s,total:n,suites:o,durationSeconds:i,failures:r}}async function n0(e,t,r){let n=Buffer.from(e);if(n.length<=_u)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,_u).toString("utf8").replace(/\uFFFD$/,""),i=n.length-Buffer.byteLength(o);return{text:`${o}
|
|
109
|
+
\u2026 elided ${i} bytes (+${n.length}) \u2014 ${De(s)}`,handle:s,bytesElided:n.length}}function ih(e){try{return JSON.parse(e)}catch{return null}}function s0(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
|
|
110
|
+
`):""}function o0(e){return`${Number(e.toFixed(1))}s`}function i0(e,t){return e>0&&t>e?(t-e)/1e3:0}function Tt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Ye(e){return typeof e=="string"?e:""}function Ct(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var _u,qC,VC,KC,Su=h(()=>{"use strict";U();L();Yt();Qr();je();_u=320,qC=160,VC=_u,KC=3});var vu={};M(vu,{parseCatCommand:()=>xu,renderCatContract:()=>f0,runCatWrapper:()=>p0});import{isUtf8 as a0}from"node:buffer";import{readFile as c0}from"node:fs/promises";import{extname as u0}from"node:path";async function p0(e,t){let r=xu(e),n;try{n=await c0(r.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=xe(e.join(" "),"",o);return{stdout:$({...i,help:`ls ${r.file}`}),stderr:Buffer.from(`${o}
|
|
111
|
+
`),status:1,signal:null}}return mh(n)?{stdout:n,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n}:await dh(e,r,n,t)}async function f0(e,t,r){if((t.status??0)!==0||t.signal){let i=xe(e.join(" "),t.stdout,t.stderr);return{stdout:$(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let n=xu(e),s=Buffer.from(t.stdout,"utf8");return mh(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await dh(e,n,s,r),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function xu(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=lh(t[++i],Eu);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);r=c.slice(2),n=lh(u,Eu);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 dh(e,t,r,n){let s=r.toString("utf8"),o=y0(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>uh(n.heavyByteThreshold,ah)||o.truncated;if(!ch(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r};let a=ch(t.file)?g0(e,t.file,r,s,n.level,o):h0(e,t.file,r,s,o),c=`${C(a)}
|
|
112
|
+
`;if(!i&&Buffer.byteLength(c)<=uh(n.heavyByteThreshold,ah))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 ${De(u)}
|
|
113
|
+
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:r.length,rawOutput:r}}function g0(e,t,r,n,s,o){let i=ei(n),a=s==="terse"?d0:l0,c=ei(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:b0(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function h0(e,t,r,n,s){return{command:e.join(" "),file:t,kind:"text",bytes:r.length,lines:ei(n).length,content:ei(s.text),truncated:s.truncated}}function y0(e,t){if(t.mode==="full")return{text:e,truncated:!1};let r=e.split(`
|
|
114
|
+
`),n=r.at(-1)==="",s=n?r.slice(0,-1):r,o=t.limit??Eu,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
|
|
114
115
|
`)}${n&&i.length>0?`
|
|
115
|
-
`:""}`,truncated:i.length<s.length}}function
|
|
116
|
-
`);return t.at(-1)===""?t.slice(0,-1):t}function
|
|
117
|
-
`),s=
|
|
116
|
+
`:""}`,truncated:i.length<s.length}}function b0(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&&!w0(a[1])&&t.push({kind:"method",name:a[1],line:r+1,signature:s})}return t}function ei(e){let t=e.split(`
|
|
117
|
+
`);return t.at(-1)===""?t.slice(0,-1):t}function mh(e){return e.includes(0)||!a0(e)}function ch(e){return m0.has(u0(e).toLowerCase())}function w0(e){return["for","if","switch","while"].includes(e)}function uh(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function lh(e,t){let r=Number(e);return Number.isInteger(r)&&r>0?r:t}var ah,Eu,l0,d0,m0,Cu=h(()=>{"use strict";L();Yt();je();ah=8*1024,Eu=10,l0=8,d0=2,m0=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var _h={};M(_h,{REPO_STORE_PATH:()=>Au,mergeRspBlock:()=>yh,provisionRspRepoStore:()=>O0});import{constants as _0}from"node:fs";import{access as R0,copyFile as k0,mkdir as fh,readFile as S0,rename as E0,writeFile as gh}from"node:fs/promises";import{dirname as x0,join as ns,resolve as v0}from"node:path";async function O0(e,t={}){let r=v0(e),n=ns(r,".red"),s=ns(n,"config.yaml"),o=ns(r,Au);await fh(n,{recursive:!0}),await fh(x0(o),{recursive:!0});let i="";try{i=await S0(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=yh(i,{enabled:!0,ttlDays:t.ttlDays??Te,ephemeralTtlHours:t.ephemeralTtlHours??Oe,byteBudget:t.byteBudget??Ae,heavyGitByteThreshold:t.heavyGitByteThreshold??ct}),c=a!==i;c&&await gh(s,a,"utf8");let u=!await Ou(o),l=!1,m=!1;if(u){let p=ns(r,C0),f=ns(r,T0);if(await Ou(p))await E0(p,o),m=!0;else if(await Ou(f))await k0(f,o),l=!0;else{let{provisionElisionStore:_}=await Promise.resolve().then(()=>(mo(),ip)),g=process.env.REDDB_BIN;try{await _({uri:`file://${o}`,ttlDays:t.ttlDays??Te,ephemeralTtlHours:t.ephemeralTtlHours??Oe,byteBudget:t.byteBudget??Ae})}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=A0(a,Au);return d!==a&&await gh(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:m}}function yh(e,t){let r=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${ti(t.ttlDays,Te)}`,` ephemeralTtlHours: ${ti(t.ephemeralTtlHours,Oe)}`,` byteBudget: ${ti(t.byteBudget,Ae)}`,` heavyGitByteThreshold: ${ti(t.heavyGitByteThreshold,ct)}`],n=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
118
|
+
`),s=bh(n,"rsp");if(s===-1){let a=[...n];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...r),`${a.join(`
|
|
118
119
|
`)}
|
|
119
|
-
`}let o=
|
|
120
|
+
`}let o=Pu(n,s,0);return`${[...n.slice(0,s),...r,...n.slice(o)].join(`
|
|
120
121
|
`)}
|
|
121
|
-
`}function
|
|
122
|
-
`),n=
|
|
122
|
+
`}function bh(e,t){for(let r=0;r<e.length;r++){let n=e[r];if(Lu(n)&&Iu(n)===0&&wh(n)===t)return r}return-1}function Pu(e,t,r){let n=e.length;for(let s=t+1;s<e.length;s++)if(Lu(e[s])&&Iu(e[s])<=r){n=s;break}for(;n-1>t&&e[n-1].trim()==="";)n--;return n}function Iu(e){return(e.match(/^ */)?.[0]??"").length}function Lu(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function wh(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function ti(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function A0(e,t){let r=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
123
|
+
`),n=bh(r,"plugins");if(n===-1)return e;let s=Pu(r,n,0),o=hh(r,"memory",n+1,s,2);if(o===-1)return e;let i=Pu(r,o,2),a=[...r],c=hh(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
|
|
123
124
|
`)}
|
|
124
|
-
`}function
|
|
125
|
-
`}function
|
|
125
|
+
`}function hh(e,t,r,n,s){for(let o=r;o<n;o++){let i=e[o];if(Lu(i)&&Iu(i)===s&&wh(i)===t)return o}return-1}async function Ou(e){try{return await R0(e,_0.F_OK),!0}catch{return!1}}var Au,C0,T0,Rh=h(()=>{"use strict";pe();Ie();Au=Ea,C0=Rl,T0=".red/memory/graph.rdb"});var Ch={};M(Ch,{runRspMcpServer:()=>I0});import{createInterface as P0}from"node:readline";async function I0(){let e=Pe(process.cwd(),process.env),t=P0({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 L0(n,e);Eh({jsonrpc:"2.0",id:n.id??null,result:s})}catch(s){Eh({jsonrpc:"2.0",id:typeof xh(r)?.id>"u"?null:xh(r)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function L0(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:Sh(t)}]};if(!t.enabled)return{content:[{type:"text",text:Sh(t)}],isError:!0};let n=H0(t);if(r?.name==="rsp_stats")return{content:[{type:"text",text:tr({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:tr({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:tr({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:tr(D0(s,"not found"))}],isError:!0}}if(r?.name==="rsp_compress")return{content:[{type:"text",text:await N0(r.arguments,n)}]}}return{}}function tr(e){return`${W(e)}
|
|
126
|
+
`}function D0(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function N0(e,t){let r=M0(e?.payload);try{return await $0(r,e,t)}catch(n){if(process.env.RSP_DEBUG==="1")throw n;return vh(r)}}async function $0(e,t,r){let n=B0(t?.level),s=await Hc(e,{level:n,command:"rsp mcp compress",store:r});if(s.detected)return vh(s.output);let o=$o(e);if(n==="brief"&&Buffer.byteLength(o)<=2*1024)return tr({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 F0(o,i.length,a,n)}function M0(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function B0(e){return e==="terse"?"terse":"brief"}function F0(e,t,r,n){let s=n==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=kh(o.subarray(0,i)),c=kh(o.subarray(Math.max(0,o.length-i)));return tr({tool:"rsp_compress",level:n,detected:"text",bytes:t,lines:j0(o),head:a,tail:c&&c!==a?c:null,handle:r,help:[`rsp show ${r}`]})}function vh(e){return e.endsWith(`
|
|
126
127
|
`)?e:`${e}
|
|
127
|
-
`}function
|
|
128
|
-
`)}function
|
|
129
|
-
`)}function
|
|
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??
|
|
132
|
-
`,{encoding:"utf8",mode:384}),await
|
|
133
|
-
`)}}async function
|
|
128
|
+
`}function kh(e){return e.toString("utf8").replace(/�$/g,"")}function j0(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 H0(e){return Xi(process.cwd(),e)}function Sh(e){let t=e.enabled?ft(process.cwd(),e.overhead):null;return tr({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",overhead_verdict:t?.verdict??"unknown",overhead_summary:t?.summary??"rsp is not enabled in this directory",overhead_disabled_families:t?.disabled_families.map(r=>r.family)??[],help:e.enabled?[]:["/red-setup"]})}function Eh(e){process.stdout.write(`${JSON.stringify(e)}
|
|
129
|
+
`)}function xh(e){try{return JSON.parse(e)}catch{return null}}var Th=h(()=>{"use strict";nt();Ie();U();Jn();Ft()});var Ah={};M(Ah,{renderShellInit:()=>G0});function G0(e,t=Qn){if(e==="fish")return W0(t);if(e==="bash"||e==="zsh")return U0(e,t);throw new Error(`unsupported shell: ${e}`)}function W0(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(ni))].map(r=>` abbr --add --position command -- ${r} '${K0(`rsp ${r}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
|
|
130
|
+
`)}function U0(e,t){let r=q0(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...ri("git",r.get("git")??[]),...ri("gh",r.get("gh")??[]),...ri("vitest",r.get("vitest")??[]),...ri("cargo",r.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
|
|
131
|
+
`)}function ri(e,t){if(t.length===0)return[];if(t.some(o=>o.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let r=t.map(o=>o.command.slice(1)).filter(o=>o.length===1).map(o=>o[0]).filter(ni),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(ni)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(r.length>0){let o=r.map(i=>Oh(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of J0(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${V0(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Oh(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function J0(e){let t=new Map;for(let[r,...n]of e){if(!r)continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function q0(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!ni(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ni(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Oh(e){return e.replace(/[\\|)&;]/g,"\\$&")}function V0(e){return e.replace(/'/g,"'\\''")}function K0(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ph=h(()=>{"use strict";Zn()});function Du(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.schemaVersion===1&&typeof t.id=="string"&&t.id.length>0&&typeof t.emitter=="string"&&t.emitter.length>0&&typeof t.occurredAt=="string"&&typeof t.taskClass=="string"&&z0(t.chosenOption)&&Y0(t.outcome)&&X0(t.cost)}function z0(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Y0(e){return e==="success"||e==="failure"||e==="escalated"}function X0(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var Ih=h(()=>{});import{createHash as Q0}from"node:crypto";function Uh(e,t){return new $u(e,t)}function Lh(e){let t=Number(e.red_entity_id??e.rid),r=Mu(e.properties??e.PROPERTIES),n=Jh(String(e.node_type??e.NODE_TYPE??r.kind??"note"));if(!Number.isFinite(t))return null;let s=String(r.id??e.label??e.LABEL??t),o=String(r.title??e.label??e.LABEL??s),i=String(r.content??""),a=Array.isArray(r.tags)?r.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:n,properties:{...r,id:s,title:o,content:i,tags:a,created_at:Number(r.created_at??c),updated_at:Number(r.updated_at??r.created_at??c),hash:String(r.hash??"")}}}function Dh(e){let t=Number(e.red_entity_id??e.rid),r=Number(e.from??e.FROM??e.from_rid??e.source),n=Number(e.to??e.TO??e.to_rid??e.target),s=qh(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(n)?null:{rid:t,kind:s,from_rid:r,to_rid:n,weight:Number(e.weight??1),properties:Mu(e.properties??e.PROPERTIES)}}function tT(e){let t=Number(e.red_entity_id??e.rid),r=Mu(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Du(r)?null:{rid:t,event:r}}function Mu(e){return e==null?{}:typeof e=="string"?JSON.parse(e):si(e)?e:{}}function Jh(e){let t=e==="contact"?"person":e;if(Z0.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function qh(e){if(eT.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function rT(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Nh(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function nr(e){return si(e)?e:{}}function $h(e,t){return nr(e)[t]}function Mh(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Bh(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Fh(e){let t=nr(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function de(e){return typeof e=="string"&&e.length>0?e:void 0}function si(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Nu(e){return e!=null}function nT(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function sT(e){return Q0("sha256").update(JSON.stringify(e)).digest("hex")}function oT(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function jh(e){return`artifact-hash:${e}`}function Hh(e,t,r){return`connection:${e}:${t}:${r}`}function Gh(){return"model-tier-bandit:v1"}function iT(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Wh(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function Vh(e,t){let r=e.properties.title.toLowerCase(),n=e.properties.content.toLowerCase(),s=e.properties.tags.map(i=>i.toLowerCase()),o=e.kind.toLowerCase();return{lexical:t.reduce((i,a)=>i+Wh(r,a)*3+Wh(n,a),0),tags:t.reduce((i,a)=>i+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((i,a)=>i+(o===a?3:o.includes(a)||a.includes(o)?1:0),0)}}function aT(e,t,r,n){let s=0;for(let o of r){let i=o.from_rid===e.rid?o.to_rid:o.to_rid===e.rid?o.from_rid:null;if(i==null)continue;let a=n.get(i);if(!a)continue;let c=Kh({...Vh(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return rr(s)}function Kh(e){return{...e,lexical:rr(e.lexical),tags:rr(e.tags),kind:rr(e.kind),connections:rr(e.connections),vector:rr(e.vector),total:rr(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function rr(e){return Math.round(e*1e3)/1e3}function cT(e,t){if(e.length<=220)return e;let r=e.toLowerCase(),n=t.map(o=>r.indexOf(o)).filter(o=>o>=0).sort((o,i)=>o-i)[0]??0,s=Math.max(0,n-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function uT(e,t){let r=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",n=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,o)=>({ref:`B${o+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:r,missing_evidence:n}}function lT(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var Xe,Z0,eT,$u,zh=h(()=>{"use strict";Ih();Xe={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Z0=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),eT=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),$u=class{constructor(t,r){this.db=t;this.uri=r}async request(t,r){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(nr(r));if(t==="getArtifact")return await this.getArtifact($h(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=nr(r);return await this.search(Mh(n,"query"),Bh(n,"limit")??10,Fh(n.options))}if(t==="think"){let n=nr(r);return await this.think(Mh(n,"query"),Bh(n,"limit")??8,Fh(n.options))}if(t==="link")return await this.link(nr(r));if(t==="backlinks")return await this.backlinks($h(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(nr(r));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(r);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(r);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Xe.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Xe.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${Xe.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:lT(t.map(n=>n.kind))}}async capture(t){let r=de(t.title)||"Untitled artifact",n=de(t.content);if(!n)throw new Error("brain capture requires content");let s=Jh(de(t.kind)||"note"),o=nT(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=sT([s,r,n,o,de(t.sourcePath),de(t.sourceSession)]),c=await this.kv().get(jh(a));if(c!=null){let f=await this.getArtifact(Number(c));if(f)return f}let u=`${oT(r)}-${a.slice(0,8)}`,l={id:u,title:r,content:n,tags:o,source_agent:de(t.sourceAgent),source_runner:de(t.sourceRunner),source_session:de(t.sourceSession),source_path:de(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:si(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${Xe.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let p=Lh(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(jh(a),p.rid),await this.materializeTagConnections(p),p}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${Xe.artifacts}`)).rows.map(Lh).filter(Nu)}async search(t,r,n={}){let s=iT(t),o=new Set(n.excludeRids??[]),i=await this.listArtifacts(),a=await this.listConnections(),c=new Map(i.map(u=>[u.rid,u]));return i.filter(u=>!o.has(u.rid)).map(u=>{let l=Vh(u,s),m=Kh({...l,connections:aT(u,s,a,c),vector:0});return{artifact:u,score:m.total,score_breakdown:m,excerpt:cT(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,r)))}async think(t,r,n={}){let s=(await this.search(t,Math.max(r*2,r+5),n)).slice(0,r);return uT(t,s)}async link(t){let r=await this.getArtifact(Nh(t.from)),n=await this.getArtifact(Nh(t.to));if(!r)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!n)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=qh(de(t.kind)||"related_to"),o=await this.findConnection(r.rid,n.rid,s);if(o!=null){let l=(await this.listConnections()).find(m=>m.rid===o);if(l)return l}let i={reason:de(t.reason),confidence:de(t.confidence)||"explicit",created_at:Date.now(),metadata:si(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${Xe.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,r.rid,n.rid,1,i)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Dh(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Hh(r.rid,n.rid,s),u.rid),u}async backlinks(t){let r=await this.getArtifact(t);if(!r)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(n=>n.to_rid===r.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${Xe.connections}`)).rows.map(Dh).filter(Nu)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=rT(de(t.interval)||"day"),s=de(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:n,timeField:s,range:{from:null,to:null},total:r.length,series:[{group:null,total:r.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Du(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${Xe.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${Xe.outcomeEvents}`)).rows.map(tT).filter(Nu).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Gh());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Gh(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let r={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(r),r}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let r of t.properties.tags){let n=await this.capture({title:r,content:`Tag: ${r}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:n.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,r,n){let s=await this.kv().get(Hh(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(Xe.kv)}}});var cy={};M(cy,{runResidentServer:()=>bT});import{randomUUID as Wr}from"node:crypto";import{execFileSync as dT,spawn as mT}from"node:child_process";import{existsSync as pT}from"node:fs";import{mkdir as ry,rename as fT,rm as Yh,writeFile as ny}from"node:fs/promises";import{createServer as gT}from"node:net";import{dirname as Hu,join as oi}from"node:path";import{fileURLToPath as hT,pathToFileURL as yT}from"node:url";async function bT(e){await ry(Hu(e.socketPath),{recursive:!0});let t=PT();AT();let r=e.telemetryDrainTimeoutMs??sy,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??Gs,a,c,u=!1,l=new Set,m=e.telemetryDrainIntervalMs??3e4,d=gT(S=>{l.add(S),S.once("close",()=>l.delete(S)),f(),BT(S,async O=>{f();let j=await FT(n,O,e.storeUri,e.residentVersion??"0.0.0-dev"),Re={id:O.id,ok:!0,value:j,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};ay(S,Re),O.op==="handover"&&setImmediate(()=>p())})});function p(){o=!0,u=!0,c=OT(c),d.close();for(let S of l)S.destroy()}function f(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},i),a.unref())}let g=["SIGINT","SIGTERM"].map(S=>{let O=()=>{ii(),d.close();for(let j of l)j.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(S,O),{signal:S,handler:O}});await new Promise((S,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),S()})}),(async()=>{let S=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise(oe=>setTimeout(oe,O));let j=await Vt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),Re=Number(process.hrtime.bigint()-S)/1e6,$e=new ju(j,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??js,byteBudget:e.telemetryByteBudget??e.byteBudget??Hs});if(o){await j.close();return}if(await Bu($e,r),o){await j.close();return}n={kind:"ready",store:j,telemetry:$e,storeOpenCount:1,storeElapsedMs:Re},s=setInterval(()=>{let oe=n.kind==="ready"?n:void 0;oe&&Bu(oe.telemetry,r)},m),s.unref(),f()})().catch(S=>{n={kind:"failed",error:S instanceof Error?S:new Error(String(S))},f()}),e.pidPath&&await ny(e.pidPath,`${process.pid}
|
|
132
|
+
`,{encoding:"utf8",mode:384});let y=e.residentVersion??"0.0.0-dev",b=e.registryPath??oi(G(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await ks(b,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:y})}catch{}await new Promise(S=>d.once("close",S)),a&&clearTimeout(a),s&&clearInterval(s),await Yh(e.socketPath,{force:!0});let w=n;w.kind==="ready"&&(await Bu(w.telemetry,r,u),await w.store.close()),c&&clearTimeout(c);for(let{signal:S,handler:O}of g)process.off(S,O);t?.kill("SIGTERM"),ii(),e.pidPath&&await Yh(e.pidPath,{force:!0}),await Ss(b)}async function ET(e,t,r=new Date){let n=await po(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=oi(G(t),kT),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 ry(Hu(a),{recursive:!0}),await ny(c,`${W(u)}
|
|
133
|
+
`,{encoding:"utf8",mode:384}),await fT(c,a)}async function Bu(e,t=sy,r=!1){try{r&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await iy(e.drainAndSweep(),t,"telemetry drain timed out")}catch(n){process.stderr.write(`rsp resident: telemetry drain failed: ${n instanceof Error?n.message:String(n)}
|
|
134
|
+
`)}}async function xT(e){let t=[];for(let r of ST){let n=await vT(e,r);n.ok||(n.previousModel&&(n.previousModel!=="collection"&&await CT(e,r,n.previousModel),t.push({collection:r,previousModel:n.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${oy(r)}`))}return t}async function vT(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 CT(e,t,r){let n=TT(r);if(!n)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${r}`);await e.query(`DROP ${n} ${oy(t)}`)}function TT(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 oy(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function OT(e){return e&&clearTimeout(e),setTimeout(()=>{ii(),process.exit(0)},RT)}function AT(){Xh||(Xh=!0,process.on("exit",()=>ii()))}function PT(){if(process.platform==="win32")return;let t=mT(process.execPath,["-e",`
|
|
134
135
|
const { execFileSync } = require("node:child_process");
|
|
135
136
|
const parentPid = Number(process.argv[1]);
|
|
136
137
|
const known = new Set();
|
|
@@ -171,23 +172,23 @@ const timer = setInterval(() => {
|
|
|
171
172
|
clearInterval(timer);
|
|
172
173
|
process.exit(0);
|
|
173
174
|
}, 500);
|
|
174
|
-
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function
|
|
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??
|
|
176
|
-
`)}catch{}}async function
|
|
177
|
-
`}function
|
|
178
|
-
`}function
|
|
179
|
-
`
|
|
180
|
-
`}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
`)
|
|
184
|
-
`),
|
|
185
|
-
`),
|
|
186
|
-
`),
|
|
187
|
-
`
|
|
175
|
+
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function ii(){for(let e of IT())try{process.kill(e,"SIGTERM")}catch{}}function IT(){if(process.platform==="win32")return[];let e="";try{e=dT("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 LT(e){if(e.collection!==he)return e;let t=await Qh(e.raw_text,ey(e.raw_bytes)),r=await Qh(e.emitted_text,ey(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 Qh(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=wT)try{return await iy((async()=>({tokens:(await DT())("cl100k_base").encode(e).length,estimated:!1}))(),_T,"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 DT(){return Zh??=import(yT(NT()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Zh}function NT(){let e=Hu(hT(import.meta.url)),r=[oi(e,"..","node_modules","js-tiktoken","dist","index.js"),oi(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>pT(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function ey(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function ee(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Fu(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function iy(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 $T(e){try{return JSON.parse(e)}catch{return e}}function MT(e){return ty(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>ty(t)&&(t.collection===ce||t.collection===Q||t.collection===he||t.collection===qe)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function ty(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function BT(e,t){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",n=>{r+=n;let s=r.indexOf(`
|
|
176
|
+
`);if(s<0)return;let o=r.slice(0,s);e.pause(),(async()=>{let i;try{i=JSON.parse(o),await t(i)}catch(a){let u={id:i?.id??Wr(),ok:!1,error:a instanceof Error?a.message:String(a)};ay(e,u)}finally{e.end()}})()})}function ay(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
|
|
177
|
+
`)}catch{}}async function FT(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 gc(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 po(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 hc(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return HT(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await jT(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function jT(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await Uh(s,t).request(r,n)}function HT(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var wT,_T,sy,RT,kT,ST,ju,Xh,Zh,uy=h(()=>{"use strict";pe();Es();nt();mo();zh();Le();Ie();wT=256*1024,_T=500,sy=2e3,RT=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),kT="rsp-status-summary.json",ST=[ce,Q,he,qe,bn],ju=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 xT(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 Na(this.opts.rootDir,async a=>{let c=Cr(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return o.push(u),!0}try{let u=await this.writeEvent(t,c);o.push(u);let l=await this.writeAccountingMirror(t,c);return l&&o.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:ee(c.command)||"unknown",source_id:ee(c.id),source_collection:ee(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return o.push(l),!0}});let i=o.length>s;await this.prune(t,{version:1,records:o},i),await ET(t,this.opts.rootDir)}async writeEvent(t,r){let n=new Date,s=typeof r.created_at=="string"?r.created_at:n.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof r.id=="string"&&r.id.trim()!==""?r.id:Wr(),a={...await LT(r),id:i,created_at:s,expires_at:o};return await t.kv(r.collection).put(i,a),{collection:r.collection,key:i,created_at:s,expires_at:o,bytes:r.collection===ce?0:typeof r.bytes=="number"&&Number.isFinite(r.bytes)?Math.max(0,r.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,r){return r.collection===ce||r.accounting_recorded===!0?null:r.collection===he?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||Wr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:Fu(ee(r.command)||"unknown"),wrapper:r.wrapper,loss:r.loss,elided:r.elided,raw_bytes:r.raw_bytes,emitted_bytes:r.emitted_bytes,tokens_raw:r.tokens_raw,tokens_emitted:r.tokens_emitted,estimated:r.estimated,wrapper_ms:r.wrapper_ms,store_open_count:r.store_open_count,store_elapsed_ms:r.store_elapsed_ms}):r.collection===qe?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||Wr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:Fu(ee(r.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:ee(r.reason)||"unknown",wrapper_family:ee(r.wrapper_family),wrapper_exit_code:r.wrapper_exit_code,stderr_head:ee(r.stderr_head)}):null}async writeDrainDegradation(t,r){let n=await this.writeEvent(t,{collection:qe,id:Wr(),created_at:new Date().toISOString(),reason:r.reason,command:r.command,bytes:r.bytes,source_id:r.source_id,source_collection:r.source_collection,error:r.error});return await this.writeEvent(t,{collection:ce,id:`mirror:${Wr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:Fu(r.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:r.reason,source_id:r.source_id,source_collection:r.source_collection,error:r.error}),n}async readIndex(t){let r=await t.kv(bn).get("index:v1"),n=typeof r=="string"?$T(r):r;return MT(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(bn).put("index:v1",r)}async prune(t,r,n=!1){let s=Date.now(),o=[];for(let a of r.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):o.push(a);let i=o.reduce((a,c)=>a+c.bytes,0);for(o.sort((a,c)=>a.created_at.localeCompare(c.created_at));i>this.opts.byteBudget&&o.length>0;){let a=o.shift();i-=a.bytes,await t.kv(a.collection).delete(a.key)}(n||o.length<r.records.length)&&await this.writeIndex(t,{version:1,records:o})}};Xh=!1});je();function ve(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function q(e,t){let r=ve(e,t);if(r==null)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}function ml(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function pl(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 xi(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 xi=class extends Error{constructor(r){super(`unknown flag: ${r}`);this.flag=r}render(){return is("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function ur(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function fl(e){let t=e[1];if(!t)return null;let r={};for(let n=2;n<e.length;n++){let s=e[n];if(s!=="-f"&&s!=="-F")continue;let o=e[++n]??"",i=o.indexOf("=");i<=0||(r[o.slice(0,i)]=o.slice(i+1))}return{path:t,params:r}}function as(e,t){let r=ve(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 gl(e){return e.includes("--full")}vi();je();import{existsSync as GT}from"node:fs";import{fileURLToPath as WT}from"node:url";nt();Qr();U();We();import{existsSync as eE}from"node:fs";import{fileURLToPath as tE}from"node:url";nt();Yi();U();import{existsSync as cw}from"node:fs";import{fileURLToPath as uw}from"node:url";async function fr(e,t){let r={stats:lw(e.telemetryByteBudget),telemetry:ta(t)};if(!e.storeUri.startsWith("file://"))return r;let n=uw(e.storeUri);if(!cw(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Ft(),cn)),o=s(process.cwd(),e);try{return n.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:ta(t)}}catch{return r}finally{await o.close()}}function ra(e,t=ta(30),r=!1,n=od()){return`${W(na(e,t,r,n))}
|
|
178
|
+
`}function sd(e,t){return`${W({...e,overhead:id(t)})}
|
|
179
|
+
`}function od(){return{schema_version:"red.rsp.overhead.v1",verdict:"green",summary:"every wrapper family is inside its overhead ceiling",ceiling:Ce,breaching_families:[],disabled_families:[],families:[]}}function id(e){return{schema_version:e.schema_version,verdict:e.verdict,summary:e.summary,ceiling:e.ceiling,breaching_families:e.breaching_families,disabled_families:e.disabled_families,families:e.families}}function na(e,t,r,n=od()){let s=t.savings.top_commands.slice(0,r?10:3),o=r?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??xs(),a=t.health.recent_failures.slice(0,r?20:5),c=t.decisions.top_pass_reasons.slice(0,r?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:dw(t.savings),dollars_saved_estimate_usd_display:mw(t.savings),daily_tokens_saved:o,daily_tokens_saved_elided:r?0:Math.max(0,t.savings.daily_tokens_saved.length-o.length),top_commands:s,top_commands_elided:r?0:Math.max(0,t.savings.top_commands.length-s.length)},overhead:id(n),health:{overhead_verdict:n.verdict,overhead_summary:n.summary,...t.health,degradation_rate_display:ea(t.health.degradation_rate),show_hit_rate_display:ea(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:r?0:Math.max(0,t.health.recent_failures.length-a.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:ea(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:r?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:r?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:r?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:Zi(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Zi(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Zi(t.latency.store_elapsed_ms_avg)}}}function ad(e){return`${W(e)}
|
|
180
|
+
`}function ta(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 lw(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:xs()}}function xs(){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 sa(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
|
|
181
|
+
`)}function dw(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function mw(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?an(e.dollars_saved_estimate_usd):`${an(e.dollars_saved_low_usd)}-${an(e.dollars_saved_high_usd)} (estimate_midpoint: ${an(e.dollars_saved_estimate_usd)})`}function Zi(e){return e==null?"none":String(e)}function ea(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function of(e){let{stats:t,telemetry:r}=await fr(e,30),[n,s]=await Promise.all([rE(e),Promise.resolve().then(()=>(Dc(),Lc)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:r,recoveryHandles:n,waits:s,overhead:ft(Ge(process.cwd()).rootDir,e.overhead)}}function af(e){let t=na(e.stats,e.telemetry,!1,e.overhead),r=Ai({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??xs()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},nE(e));return`${W(r)}
|
|
182
|
+
`}async function rE(e){if(!e.storeUri.startsWith("file://"))return[];let t=tE(e.storeUri);if(!eE(t))return[];let{residentElisionStore:r}=await Promise.resolve().then(()=>(Ft(),cn)),n=r(process.cwd(),e);try{return await n.recoveryHandles(5)}catch{return[]}finally{await n.close()}}function nE(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"]}nt();U();je();import{existsSync as xv}from"node:fs";import{fileURLToPath as vv}from"node:url";Le();import{spawn as Mo}from"node:child_process";async function zf(e,t,r){let n=process.hrtime.bigint(),s=await Yf(e.positional),o=Number(process.hrtime.bigint()-n)/1e6;return Hx(t,e,s,o,r),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function Yf(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(()=>(To(),Co)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(zn(),Kn)).then(i=>i.parseExecCommandLine(e));r=Mo(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else r=Mo(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let n=0,s=0;return r.stdout?.on("data",o=>{n+=o.length,process.stdout.write(o)}),r.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{r.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
|
|
183
|
+
`;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:n,stderrBytes:s,status:127,signal:null})}),r.on("close",(i,a)=>o({stdoutBytes:n,stderrBytes:s,status:i,signal:a}))})}function Xf(e){return e>0&&Math.random()<e}async function Xn(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error(e);process.stderr.write(`rsp: ${e}, passing through
|
|
184
|
+
`);let s=await tg(t);if(n){let o=Gx(e,t,r),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Le(),Bn));Fo(i(n,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Bo(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})),Fo(i(n,{collection:c,ts:new Date().toISOString(),command:Bo(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Qf(e,t,r){let n=await Yf(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Le(),Bn)),a={ts:new Date().toISOString(),command:Bo(e),reason:"overhead-ceiling-self-disabled",wrapper_family:r.family,wrapper_exit_code:n.status??0,stderr_head:r.disabled_reason??r.reasons.join(",")};return Fo(s(t,{collection:o,event_type:"invocation",command_class:e[0]??"unknown",loss:"lossless",raw_bytes:n.stdoutBytes+n.stderrBytes,emitted_bytes:n.stdoutBytes+n.stderrBytes,degradation_reason:a.reason,...a})),Fo(s(t,{collection:i,accounting_recorded:!0,...a})),n.signal?(process.kill(process.pid,n.signal),128):n.status??0}async function Zf(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${jo()}, passing through
|
|
185
|
+
`),await tg(e)}function jo(){return"rsp is not enabled in this directory; run /red-setup"}function eg(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function Ve(e){return Bo(e.positional)}function Bo(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),r=t>=0?e.slice(t+1):e.slice(1);return r.length===1?r[0]:r.join(" ")}catch{return e.join(" ")}}function Yn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Hx(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:Ve(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:n};yt(e,{collection:"rsp_accounting_events_v1",...i}),yt(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function Gx(e,t,r){let n=t[0]??"unknown",s=Wx(r)||e;return{reason:Kf(r)==="ENOENT"||Kf(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:Jx(r)??1,stderrHead:Ux(s,240)}}function Wx(e){return e instanceof Error?Yn(e.message):Yn(String(e??""))}function Ux(e,t){let r=Yn(e).replace(/\s+/g," ").trim();return r.length<=t?r:`${r.slice(0,Math.max(0,t-1))}\u2026`}function Kf(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function Jx(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 Fo(e){e.catch(()=>{})}async function tg(e){if(e[0]==="exec"||e[0]==="proxy")return await qx(e);let t=e[0];if(!t)return 2;let r=Mo(t,e.slice(1),{stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
186
|
+
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function qx(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:n}=await Promise.resolve().then(()=>(To(),Co));t=n(e)}else{let{parseExecCommandLine:n}=await Promise.resolve().then(()=>(zn(),Kn));t=n(e)}}catch(n){return process.stderr.write(`${n instanceof Error?n.message:String(n)}
|
|
187
|
+
`),2}let r=Mo(t,{shell:!0,stdio:"inherit"});return await new Promise(n=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
188
|
+
`),n(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),n(128);return}n(s??0)})})}async function bg(e,t,r){let n=[],s=!e.enabled;if(n.push(s?z("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):z("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return n.push(z("hook_wiring","skipped because rsp is disabled"),z("proxy_mode","skipped because rsp is disabled"),z("resident_liveness","skipped because rsp is disabled"),z("store_provisioning","skipped because rsp is disabled"),z("recent_degradation_rate","skipped because rsp is disabled"),z("overhead_budget","skipped because rsp is disabled")),yg("disabled",n,r);n.push(await Cv(e)),n.push(e.proxyEnabled?z("proxy_mode","proxy routing enabled for pre-exec rewrites"):Qt("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(We(),Bt));if(n.push(Tv(await o(t))),n.push(Ov(e)),_g(e)){let{telemetry:i}=await fr(e,r);n.push(Av(i,r))}else n.push(z("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return n.push(Pv(ft(process.cwd(),e.overhead))),yg(n.some(i=>!i.pass)?"fail":"pass",n,r)}function wg(e){let{exitCode:t,...r}=e;return`${W({...r,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
|
|
189
|
+
`}async function Cv(e){try{if(e.proxyEnabled)return z("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(Zn(),qo)),r=t("git status");return r.kind==="rewrite"?z("hook_wiring",`pre-exec hook would rewrite git status through ${r.capabilityId}`):Qt("hook_wiring",`pre-exec hook passed git status through: ${r.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Qt("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?Yn(t.message):"unknown error"}`,"rsp setup")}}function Tv(e){return e.state==="registered-alive-socket-healthy"?z("resident_liveness","resident registry points at a healthy socket"):Qt("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function Ov(e){return e.storeUri.startsWith("file://")?_g(e)?z("store_provisioning","rsp store exists for this directory"):Qt("store_provisioning","rsp store is not provisioned","rsp setup"):z("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function Av(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 Qt("recent_degradation_rate",`${n} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,Iv(s,t))}function Pv(e){return e.verdict==="green"?z("overhead_budget",e.summary):Qt("overhead_budget",e.summary,"rsp status")}function Iv(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 _g(e){if(!e.storeUri.startsWith("file://"))return!0;try{return xv(vv(e.storeUri))}catch{return!1}}function z(e,t){return{name:e,pass:!0,finding:t}}function Qt(e,t,r){return{name:e,pass:!1,finding:t,fix_command:r,error:Ei({command:`rsp doctor:${e}`,category:"real-error",error:t,help:r})}}function yg(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)}}eu();function Eg(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${Nv(t).join(`
|
|
188
190
|
`)}
|
|
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"&&
|
|
191
|
-
`),0)}if(r.command==="warm-resident"){let g=i(process.cwd()),y=
|
|
192
|
-
`),0}if(r.command
|
|
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};
|
|
191
|
+
`}function Nv(e){switch(e){case"stats":return F("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return F("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return F("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return F("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return F("rsp gh <pr|issue|run> <list|view> [options] | <issues|prs|edit-labels|link-sub-issues> ...",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail","--json <fields> select fields for batched issues/prs","--repo <slug> owner/repo override for batched operations"],["rsp gh issues 42 43 --json state,title,labels,body","rsp gh prs 12 13 --json state,mergeable,statusCheckRollup","rsp gh edit-labels --add ready-for-agent --remove blocked:crashed 42 43","rsp gh link-sub-issues 100 101 102"]);case"vitest":return F("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return F("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return F("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return F('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return F("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return F("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return F("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return F("rsp sweep",["No flags. Removes stale resident registry entries, reclaims orphan state temps,","re-bounds the gh ETag cache, and prints TOON status."],["rsp sweep"]);case"setup":return F("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return F("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return F("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return F("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return F("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return F("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"hook":return F("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," stats, gains, show, git, gh, vitest, cargo, cat, exec, proxy, wait"," doctor, status, sweep, setup, mcp, shell-init, server, warm-resident, gh-api-json, hook","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return F(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function F(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}pe();U();Le();import{spawn as $v}from"node:child_process";import{createHash as Mv}from"node:crypto";import{existsSync as Bv,readFileSync as Fv,statSync as jv}from"node:fs";import{tmpdir as Hv}from"node:os";import{dirname as Gv,join as Et}from"node:path";async function se(e,t,r,n,s=process.cwd(),o,i=o?.overhead??Ce){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let a=Number(process.hrtime.bigint()-r)/1e6;n&&o&&Uv(s,o);let c=Wv(e,t,a);return en(s,c,i),n?Zt(Kv(s,e,t,c,i,n.lastResponseMetrics())):zv(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Wv(e,t,r){let n=rn(),s=t.stdout.length+t.stderr.length,o=(t.rawOutput?.length??t.stdout.length)+t.stderr.length;return{family:e.command??"unknown",wrapperMs:r,childMs:n.childMs,selfStateBytesRead:n.selfStateBytesRead,bytesSaved:Math.max(0,o-s)}}function Zt(e){e.catch(()=>{})}async function zo(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Le(),Bn));await s(e,{collection:o,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:r,loss:"lossless",raw_bytes:r?n:0,emitted_bytes:n})}function Uv(e,t){try{let r=ut(e),n=jv(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!Vv(r,Date.now()-s))return;let o=Jv(e),i=qv(o),a=Et(i,"rsp.sock"),c=Et(i,"rsp.pid"),u=Et(G(o),"rsp-resident.pid.json"),l=Et(o,".red","tmp","rsp","wake.lock");$v(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",c,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays),"--telemetry-byte-budget",String(t.telemetryByteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs),"--idle-ms",String(t.idleMs),"--registry",u,"--wake-lock",l],{cwd:o,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function Jv(e){let t=e;for(;;){if(Bv(Et(t,".git")))return t;let r=Gv(t);if(r===t)return e;t=r}}function qv(e){let t=Mv("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=Et(r,"red-skills",t);if(Et(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return Et(Hv(),`red-skills-${n}`,t)}function Vv(e,t){try{let r=Fv(e,"utf8");tn(Buffer.byteLength(r));for(let n of r.split(/\r?\n/))if(n.trim())try{let s=JSON.parse(n),o=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof o=="string"){let i=Date.parse(o);if(Number.isFinite(i)&&i<=t)return!0}}catch{}}catch{}return!1}async function Kv(e,t,r,n,s,o){let i=Buffer.concat([r.stdout,r.stderr]),a=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),c=fs(n,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:m}=await Promise.resolve().then(()=>(Le(),Bn));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Ve(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs}),await u(e,{collection:m,ts:new Date().toISOString(),command:Ve(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,raw_text:a.toString("utf8"),emitted_text:i.toString("utf8"),...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs,accounting_recorded:!0}),r.degradation&&(await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Ve(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:a.length,emitted_bytes:i.length,degradation_reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead}),await u(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:Ve(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function zv(e,t,r,n,s){try{let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),a=fs(n,s);yt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Ve(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a}),yt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Ve(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a,accounting_recorded:!0})}catch{}}var Ot=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let r=await this.open(),n=await r.mint(...t);return this.metrics=r.lastResponseMetrics?.(),n}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},Tu=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function ph(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Tu,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(eu(),Sg));if(i(e.positional))return await se(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Yt(),Fc)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await se(e,u,o,s,r,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(wu(),bu)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(Su(),ku)),a=await i(e.positional,{level:e.level,store:s});return await se(e,a,o,s,r,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(Cu(),vu)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s,r,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(zn(),Kn)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s)}}catch(i){return ur(i)?(process.stdout.write(i.render()),2):await Xn("wrapper failed",e.positional,i,r)}finally{await s.close()}return await Xn("wrapper failed",e.positional,n,r)}async function ly(e=process.argv.slice(2)){let t=cs("rsp");if(ml(e))return process.stdout.write(Eg(e)),0;let r=pl(e);if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:g}=await Promise.resolve().then(()=>(Zn(),qo));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:g}=await Promise.resolve().then(()=>(Zn(),qo));return await g()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:g}=await Promise.resolve().then(()=>(Jn(),Wc));return await g()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:g}=await Promise.resolve().then(()=>(Jn(),Wc));return await g()}if(r.command==="setup"){let{provisionRspRepoStore:g}=await Promise.resolve().then(()=>(Rh(),_h)),y=await g(process.cwd());return process.stdout.write(sa(y)),0}if(r.command==="mcp"){let{runRspMcpServer:g}=await Promise.resolve().then(()=>(Th(),Ch));return await g(),0}if(r.command==="wait"){let{runWait:g}=await Promise.resolve().then(()=>(Dc(),Lc));return await g(r.positional)}if(r.command==="shell-init"){let g=r.positional[1];if(g!=="fish"&&g!=="bash"&&g!=="zsh")return process.stdout.write($({command:r.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:y}=await Promise.resolve().then(()=>(Ph(),Ah));return process.stdout.write(y(g)),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(Ie(),Qd)),s=n(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:g}=await Promise.resolve().then(()=>(We(),Bt)),y=g(process.cwd()),b=await bg(s,y,as(r.positional,1));return process.stdout.write(wg(b)),b.exitCode}let o=eg(r.command);if(!s.enabled)return o?await Zf(r.positional):(process.stdout.write(`${jo()}
|
|
192
|
+
`),0);if(r.command==="git"&&Vo(r.positional)){let g=process.hrtime.bigint();return await se(r,await Ko(),g,void 0,await Zc(process.cwd()),s)}let{resolveResidentPaths:i,ensureResidentServer:a}=await Promise.resolve().then(()=>(We(),Bt)),c=i(process.cwd());if(o&&r.command){let{overheadFamilyDisabled:g}=await Promise.resolve().then(()=>(U(),hs)),y=g(c.rootDir,r.command);if(y)return await Qf(r.positional,c.rootDir,y)}if(o&&Xf(s.measurementHoldoutShare))return await zf(r,c.rootDir,s.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:g}=await Promise.resolve().then(()=>(uy(),cy)),y=i(process.cwd()),b=ve(r.positional,"--socket")??y.socketPath,w=n(process.cwd(),process.env,r.storeUri??ve(r.positional,"--store-uri"));return w.enabled?(await g({socketPath:b,pidPath:ve(r.positional,"--pid-file")??i(process.cwd()).pidPath,rootDir:y.rootDir,storeUri:w.storeUri,ttlDays:q(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:q(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:q(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:q(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:q(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:q(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:q(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:q(r.positional,"--idle-ms")??w.idleMs,residentVersion:ve(r.positional,"--resident-version")??t.version,registryPath:ve(r.positional,"--registry")??y.registryPath}),0):(process.stdout.write(`${jo()}
|
|
193
|
+
`),0)}if(r.command==="warm-resident"){let g=i(process.cwd()),y=ve(r.positional,"--socket")??g.socketPath,b=ve(r.positional,"--wake-lock")??g.wakeLockPath,w=n(process.cwd(),process.env,r.storeUri??ve(r.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:S}=await Promise.resolve().then(()=>(We(),Bt));return await S({...g,socketPath:y,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:q(r.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:q(r.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:q(r.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:q(r.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:q(r.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:q(r.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:q(r.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:q(r.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:g}=await Promise.resolve().then(()=>(To(),Co));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(()=>(We(),Bt)),b=r.command==="sweep"?await y(c):await g(c);if(r.command==="sweep"){let{sweepGhEtagCache:O}=await Promise.resolve().then(()=>(yn(),qd));await O(c.rootDir,{maxBytes:s.ghEtagCacheMaxBytes})}let{overheadHealth:w}=await Promise.resolve().then(()=>(U(),hs)),S=w(c.rootDir,s.overhead);return process.stdout.write(sd(b,S)),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:g}=await Promise.resolve().then(()=>(fo(),mp)),y=fl(r.positional);if(!y)return process.stdout.write($({command:r.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let b=await g({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:c.rootDir,command:`rsp ${r.positional.join(" ")}`,overheadCeiling:s.overhead});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
|
|
194
|
+
`),b.status}if(!r.command){let g=await of(s);return process.stdout.write(af(g)),0}if(!r.storeUri&&s.storeUri.startsWith("file://")&&!GT(WT(s.storeUri)))return o?await ph(r,s,c.rootDir):(process.stdout.write($({command:Ve(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:u,residentElisionStore:l,reportResidentEntryDiagnostic:m}=await Promise.resolve().then(()=>(Ft(),cn)),d=(g=!0)=>Promise.resolve(l(process.cwd(),s,{ensureResident:g,paths:c})),p=()=>a(c,u(s,t.version)).catch(g=>void m(g)),f=()=>d(),_;try{if(r.command==="stats"){let{stats:g,telemetry:y}=await fr(s,as(r.positional,30)),{overheadHealth:b}=await Promise.resolve().then(()=>(U(),hs));return process.stdout.write(ra(g,y,gl(r.positional),b(c.rootDir,s.overhead))),0}if(r.command==="gains"){let g=await f();_=()=>g.close();let y;try{y=await g.telemetryGains(as(r.positional,28))}catch(b){return process.stdout.write($({command:`rsp ${r.positional.join(" ")}`.trim(),category:"real-error",error:b instanceof Error?b.message:"rsp gains unavailable",help:"rsp gains requires the shared RedDB store"})),1}return process.stdout.write(ad(y)),0}if(r.command==="git"){if(Zt(p()),Vo(r.positional)){let S=process.hrtime.bigint();return await se(r,await Ko(),S,void 0,c.rootDir,s)}let{runGitWrapper:g}=await Promise.resolve().then(()=>(Yt(),Fc)),y=new Ot(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyGitByteThreshold:s.heavyGitByteThreshold});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="gh"){Zt(p());let{runGhWrapper:g}=await Promise.resolve().then(()=>(wu(),bu)),y=new Ot(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="vitest"||r.command==="cargo"){Zt(p());let{runTestWrapper:g}=await Promise.resolve().then(()=>(Su(),ku)),y=new Ot(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="cat"){Zt(p());let{runCatWrapper:g}=await Promise.resolve().then(()=>(Cu(),vu)),y=new Ot(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyByteThreshold:s.heavyGitByteThreshold});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="exec"){Zt(p());let{runExecWrapper:g}=await Promise.resolve().then(()=>(zn(),Kn)),y=new Ot(()=>d(!1));_=()=>y.close();let b=process.hrtime.bigint(),w=await g(r.positional,{level:r.level,store:y,heavyByteThreshold:s.heavyGitByteThreshold});return await se(r,w,b,y,c.rootDir,s)}if(r.command==="show"&&r.handle){let g=await f();_=()=>g.close();let y=await g.get(r.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await zo(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 zo(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 zo(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(ur(g))return process.stdout.write(g.render()),2;if(o)return await Xn("wrapper failed",r.positional,g,c.rootDir);throw g}finally{await _?.()}}je();import.meta.url===`file://${process.argv[1]}`&&ly().then(e=>process.exit(e),e=>{ur(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{ly as main,sa as renderSetupResult,ra as renderStats};
|