@reddb-io/red-skills 3.3.8 → 3.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brain.bundle.min.mjs +75 -69
- package/dist/castle-mcp.bundle.min.mjs +370 -363
- package/dist/code-nav.bundle.min.mjs +1 -1
- package/dist/dev.bundle.min.mjs +616 -607
- package/dist/memory.bundle.min.mjs +813 -807
- package/dist/redskilled.bundle.min.mjs +72 -63
- package/dist/rsp.bundle.min.mjs +143 -137
- package/package.json +1 -1
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -1,152 +1,158 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
3
|
-
var
|
|
3
|
+
var tw=Object.defineProperty;var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var B=(e,t)=>{for(var n in t)tw(e,n,{get:t[n],enumerable:!0})};function rw(e,t){return typeof t=="string"?{separator:e,to:t,typed:!1,prefix:!1}:{separator:e,to:t.to,typed:t.typed??!1,prefix:t.prefix??!1}}function sw(e=Ll){return Object.entries(e).map(([t,n])=>rw(t,n)).sort((t,n)=>n.separator.length-t.separator.length)}function ow(e){return/^-\d+(\.\d+)?$/.test(e)}function wn(e){return!(!e||e.startsWith("-")&&!ow(e))}function vs(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e}function $l(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}"))try{return JSON.parse(e)}catch{}let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)&&e.trim()!==""?t:e.includes(",")?e.split(",").map(n=>$l(n.trim())):e}function jt(e,t){switch(t){case"boolean":return iw(e);case"number":return aw(e);case"array":return e.split(",").map(n=>vs(n.trim()));case"string":default:return e}}function iw(e){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"||t==="on"}function aw(e){if(e.trim()==="")throw new TypeError(`Cannot convert "${e}" to number`);let t=Number(e);if(Number.isNaN(t))throw new TypeError(`Cannot convert "${e}" to number`);return t}function _t(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function cw(e,t={}){return e.map(n=>{let r=t[n.type];return r?r(n.value):n.value}).join("")}function $(e,t){return{type:e,value:t}}function uw(e){let t=[],n=dw(e);if(t.push($("section-header","Usage:"),$("text"," "),$("usage-text",n),$("newline",`
|
|
4
4
|
`),$("newline",`
|
|
5
5
|
`)),e.positional&&e.positional.length>0){t.push($("section-header","Arguments:"),$("newline",`
|
|
6
|
-
`));for(let
|
|
7
|
-
`),$("indent"," "),$("option-description",
|
|
6
|
+
`));for(let r of e.positional)if(r.description){let s=r.variadic?`${r.name}...`:r.name;t.push($("indent"," "),$("positional-name",`<${s}>`)),r.required||t.push($("positional-optional"," (optional)")),t.push($("newline",`
|
|
7
|
+
`),$("indent"," "),$("option-description",r.description),$("newline",`
|
|
8
8
|
`))}t.push($("newline",`
|
|
9
9
|
`))}if(e.options&&Object.keys(e.options).length>0){t.push($("section-header","Options:"),$("newline",`
|
|
10
|
-
`));let
|
|
11
|
-
`))}return
|
|
12
|
-
`);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(
|
|
13
|
-
`;break;case"r":
|
|
14
|
-
|
|
15
|
-
`)
|
|
16
|
-
`)
|
|
17
|
-
`),
|
|
18
|
-
`)
|
|
10
|
+
`));let r=fw(e.options);t.push(...r)}return t}function lw(e,t){let n=uw(e);return cw(n,t)}function dw(e){let t=["[options]"];if(e.positional)for(let n of e.positional)n.variadic?t.push(n.required?`<${n.name}...>`:`[${n.name}...]`):t.push(n.required?`<${n.name}>`:`[${n.name}]`);return t.join(" ")}function fw(e,t=!1){let n=[],r=[],s=t?"global-option-flag":"option-flag",o=t?"global-option-type":"option-type",i=t?"global-option-default":"option-default",a=t?"global-option-description":"option-description";for(let[u,l]of Object.entries(e)){if(l.hidden)continue;let f=[],d=b=>{f.includes(b)||f.push(b)};l.short&&d(`-${l.short}`),d(`--${u}`);for(let b of l.aliases??[])b.length===1?d(`-${b}`):d(`--${b}`);let m=f.join(", "),p=l.type&&l.type!=="boolean"?`<${l.type}>`:void 0;r.push({flags:m,type:p,desc:l.description??"",default:l.default!==void 0?String(l.default):void 0})}let c=Math.max(...r.map(u=>u.flags.length+(u.type?u.type.length+1:0)),20);for(let u of r){let l=u.flags.length+(u.type?u.type.length+1:0),f=" ".repeat(c-l+2);n.push($("indent"," ")),n.push($(s,u.flags)),u.type&&(n.push($("text"," ")),n.push($(o,u.type))),n.push($("text",f)),n.push($(a,u.desc)),u.default!==void 0&&(n.push($("text"," ")),n.push($(i,`(default: ${u.default})`))),n.push($("newline",`
|
|
11
|
+
`))}return n}function Dl(e){let t=ww(e.options??{},e.autoShort??!1),n=sw(e.separators??Ll);return{schema:e,parse(r){return pw(r,e,t,n)},help(){return lw(e,e.formatter)}}}function pw(e,t,n,r){let s={positional:{},options:{},errors:[],rest:[]},o=new Set(r.map(l=>l.to));for(let l of o)s[l]={};let i=0,a=t.positional??[],c=0,u=!1;for(;c<e.length;){let l=e[c];if(t.stopEarly&&i>0){s.rest=e.slice(c);break}if(l==="--"&&!u){u=!0,c++;continue}if(u){if(i<a.length){let d=a[i];if(d.variadic){let m=[];for(;c<e.length;){let p=e[c];m.push(d.type?jt(p,d.type):p),c++}s.positional[d.name]=m,i++}else{let m=d.type?jt(l,d.type):l;s.positional[d.name]=m,i++,c++}}else t.allowUnknown!==!1&&(s.rest=s.rest??[],s.rest.push(l)),c++;continue}if(l.startsWith("--")){c=yw(l,c,e,s,n,t);continue}if(l.startsWith("-")&&l.length>1&&!Ew(l)){c=bw(l,c,e,s,n,t);continue}let f=mw(l,r);if(f){let{key:d,value:m,config:p}=f,b=s,_=b[p.to]??(b[p.to]={});_[d]=p.typed?$l(m):_t(m),c++;continue}if(i<a.length){let d=a[i];if(d.variadic){let p=[];for(;c<e.length&&!e[c].startsWith("-");){let b=e[c];p.push(d.type?jt(b,d.type):b),c++}s.positional[d.name]=p,i++;continue}let m=d.type?jt(l,d.type):l;s.positional[d.name]=m,i++}else t.allowUnknown!==!1?s.rest.push(l):s.errors.push(`Unexpected positional argument: ${l}`);c++}return Rw(s,t,n),kw(s,t,a),Sw(s,t,n),s}function mw(e,t){if(nw.test(e))return null;for(let n of t){if(n.prefix&&e.startsWith(n.separator)){let s=e.slice(n.separator.length),o=s.indexOf(":");if(o>0){let i=s.slice(0,o),a=s.slice(o+1);if(gw(i))return{key:i,value:a,config:n}}continue}let r=e.indexOf(n.separator);if(r>0){let s=e.slice(0,r),o=e.slice(r+n.separator.length);if(hw(s,o,n))return{key:s,value:o,config:n}}}return null}function gw(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function hw(e,t,n){return e?n.separator===":"?e.includes("/")||e.includes(".")||/^\d+$/.test(t)?!1:/^[A-Z][a-zA-Z0-9-]*$/.test(e):!((n.separator==="="||n.separator===":=")&&e.includes("/")):!1}function yw(e,t,n,r,s,o){let i=e.slice(2);if(i.startsWith("no-")){let c=i.slice(3),u=s.get(c);if(u?.negatable!==!1&&u?.type==="boolean")return r.options[u.name]=!1,t+1}if(i.includes("=")){let c=i.indexOf("="),u=i.slice(0,c),l=i.slice(c+1);return Cs(u,l,t+1,r,s,o)}let a=s.get(i);if(a){if(a.type!=="boolean"){let c=n[t+1];return wn(c)?Cs(a.name,c,t+2,r,s,o):(r.errors.push(`Option --${i} requires a value`),t+1)}return r.options[a.name]=!0,t+1}return o.strict?r.errors.push(`Unknown option: --${i}`):o.allowUnknown!==!1&&(r.options[i]=!0),t+1}function bw(e,t,n,r,s,o){let i=e.slice(1);if(i.includes("=")){let a=i.indexOf("="),c=i.slice(0,a),u=i.slice(a+1),l=Mi(c,s);return l?Cs(l.name,u,t+1,r,s,o):(o.strict?r.errors.push(`Unknown option: -${c}`):o.allowUnknown!==!1&&(r.options[c]=vs(_t(u))),t+1)}if(i.length===1){let a=Mi(i,s);if(a){if(a.type!=="boolean"){let c=n[t+1];return wn(c)?Cs(a.name,c,t+2,r,s,o):(r.errors.push(`Option -${i} requires a value`),t+1)}return r.options[a.name]=!0,t+1}if(o.strict)r.errors.push(`Unknown option: -${i}`);else if(o.allowUnknown!==!1){let c=n[t+1];if(wn(c))return r.options[i]=vs(_t(c)),t+2;r.options[i]=!0}return t+1}for(let a of i){let c=Mi(a,s);c?c.type==="boolean"?r.options[c.name]=!0:r.errors.push(`Option -${a} requires a value`):o.strict?r.errors.push(`Unknown option: -${a}`):o.allowUnknown!==!1&&(r.options[a]=!0)}return t+1}function Cs(e,t,n,r,s,o){let i=s.get(e);if(i){if(i.choices){let c=i.type?jt(_t(t),i.type):_t(t);if(!i.choices.includes(c))return r.errors.push(`Invalid value for '${e}': '${t}'. Allowed: ${i.choices.join(", ")}`),n}let a=i.type?jt(_t(t),i.type):_t(t);if(i.type==="array"){let c=r.options[e];Array.isArray(c)?c.push(...a):r.options[e]=a}else r.options[e]=a}else o.strict?r.errors.push(`Unknown option: --${e}`):o.allowUnknown!==!1&&(r.options[e]=vs(_t(t)));return n}function ww(e,t=!1){let n=new Map,r=Object.entries(e).sort(([o],[i])=>o.localeCompare(i)),s=new Set;for(let[,o]of r)o.short&&s.add(o.short);for(let[o,i]of r){let a=i.short??"";t&&!a&&(a=_w(o,s),a&&s.add(a));let c={name:o,short:a,aliases:i.aliases??[],type:i.type??"string",description:i.description??"",required:i.required??!1,hidden:i.hidden??!1,negatable:i.negatable??!0,default:i.default,choices:i.choices,env:i.env,validate:i.validate};n.set(o,c);for(let u of c.aliases)n.set(u,c)}return n}function _w(e,t){for(let n of e){if(!/[a-zA-Z]/.test(n))continue;let r=n.toLowerCase();if(!t.has(r))return r;let s=n.toUpperCase();if(!t.has(s))return s}return""}function Mi(e,t){for(let n of t.values())if(n.short===e||n.aliases.includes(e))return n}function Rw(e,t,n){for(let r of n.values())if(e.options[r.name]===void 0)if(r.env&&process.env[r.env]!==void 0){let s=process.env[r.env];e.options[r.name]=r.type?jt(s,r.type):s}else r.default!==void 0&&(e.options[r.name]=r.default);for(let r of t.positional??[])e.positional[r.name]===void 0&&r.default!==void 0&&(e.positional[r.name]=r.default)}function kw(e,t,n){if(t.options)for(let[r,s]of Object.entries(t.options))s.required&&e.options[r]===void 0&&e.errors.push(`Missing required option: --${r}`);for(let r of n)r.required&&e.positional[r.name]===void 0&&e.errors.push(`Missing required argument: <${r.name}>`)}function Sw(e,t,n){for(let r of n.values()){let s=e.options[r.name];if(r.validate&&s!==void 0){let o=r.validate(s);o!==!0&&e.errors.push(o)}}for(let r of t.positional??[]){let s=e.positional[r.name];if(r.validate&&s!==void 0){let o=r.validate(s);o!==!0&&e.errors.push(o)}}}function Ew(e){return/^-\d+(\.\d+)?$/.test(e)}var Ll,nw,Nl=g(()=>{Ll={"=":"data",":=":{to:"data",typed:!0},":":"meta"},nw=/^[a-z][a-z0-9+.-]*:\/\//i});function xw(e){let t={};for(let[n,r]of Object.entries(e))t[n]={type:r.kind==="boolean"?"boolean":"string",...n.length===1?{short:n}:{},...r.aliases===void 0?{}:{aliases:r.aliases}};return t}function vw(e,t){let n=new Map;for(let[s,o]of Object.entries(t))if(!(o.kind!=="value"||o.type!=="array")){n.set(s,s);for(let i of o.aliases??[])n.set(i,s)}let r=new Map;for(let s=0;s<e.length;s+=1){let o=e[s];if(o==="--")break;let i=o.match(/^--([^=]+)(?:=(.*))?$/)??o.match(/^-([^=])(?:=(.*))?$/);if(i===null)continue;let a=n.get(i[1]);if(a===void 0)continue;let c=i[2];if(c===void 0&&wn(e[s+1])&&(c=e[s+1],s+=1),c===void 0)continue;let u=r.get(a)??[];u.push(c),r.set(a,u)}return r}function lr(e,t,n={}){let s=Dl({options:xw(t),separators:{},allowUnknown:!0}).parse([...e]),o={},i=vw(e,t),a=s.errors.find(c=>/^Option --?\S+ requires a value$/.test(c));if(a!==void 0)throw new Error(a.replace(/^Option /,""));if(s.errors.length>0)throw new Error(s.errors[0]);if(n.unknownFlags==="error"){let c=new Set(Object.keys(t));for(let u of Object.keys(s.options))if(!c.has(u))throw new Bi(u.length===1?`-${u}`:`--${u}`,Object.keys(t).map(l=>l.length===1?`-${l}`:`--${l}`))}for(let[c,u]of Object.entries(t)){let l=s.options[c];l!==void 0&&(u.kind==="boolean"?o[c]=l:u.type==="array"?o[c]=(i.get(c)??[]).map(f=>u.coerce(f)):o[c]=u.coerce(String(l)))}return{values:o,positionals:s.rest}}function Ow(e){let t=new Map;for(let[n,r]of Object.entries(e)){t.set(n,n);for(let s of r.aliases??[])t.set(s,n)}return t}function Gt(e,t,n={}){let r=Ow(t),s=n.stopAtSeparator??!0,o={},i=[];for(let a=0;a<e.length;a+=1){let c=e[a];if(c==="--"&&s){i.push(...e.slice(a));break}let u=Cw.exec(c)??Tw.exec(c),l=u===null?void 0:r.get(u[1]),f=l===void 0?void 0:t[l];if(l===void 0||f===void 0){i.push(c);continue}if(f.kind==="boolean"){o[l]=!0;continue}let d=u[2];if(d===void 0&&wn(e[a+1])&&(d=e[a+1],a+=1),d===void 0)throw new Error(`${c} requires a value`);if(f.type==="array"){let m=o[l]??[];m.push(f.coerce(d)),o[l]=m}else o[l]=f.coerce(d)}return{values:o,rest:i}}function Fi(e,t){let[n,...r]=e;if(n!==void 0){for(let[o,i]of Object.entries(t.commands))if(n===o||(i.aliases??[]).includes(n))return{command:o,args:r};if(t.errorOnUnknownCommand&&!n.startsWith("-"))throw new ur(n,Object.keys(t.commands))}let s=t.keepArgvOnDefault??!0;return{command:t.default,args:s?[...e]:r}}var Bi,Cw,Tw,ur,ji=g(()=>{Nl();Bi=class extends Error{flag;known;constructor(t,n){super(`unknown flag '${t}'; expected one of: ${n.join(", ")}`),this.name="UnknownFlagError",this.flag=t,this.known=n}};Cw=/^--([^=]+)(?:=([\s\S]*))?$/,Tw=/^-([^-=])(?:=([\s\S]*))?$/;ur=class extends Error{token;known;constructor(t,n){super(`unknown command '${t}'; expected one of: ${n.join(", ")}`),this.name="UnknownCommandError",this.token=t,this.known=n}}});function Bl(e){return Aw.test(e)}var Aw,Ml,Fl=g(()=>{Aw=/rate limit exceeded|secondary rate limit|abuse detection mechanism|API rate limit|API rate limited|RATE_LIMITED|too many requests|\b429\b/i,Ml="wait for the GitHub rate limit window to reset, then retry: gh api rate_limit"});var jl=g(()=>{});function R(e,t){return new _n(e,t)}function P(e,t){return new Ht(e,t)}function Rn(e){return e instanceof Ht?e:e instanceof _n?new Ht(e.line,e.reason):new Ht(0,String(e&&e.message?e.message:e))}var _n,Ht,it=g(()=>{_n=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},Ht=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});var Gl,Wt,Hl,kn=g(()=>{Gl=["type","kind","event"],Wt="|",Hl=new Set(["order","discriminator","rows","common"])});function Ts(e){let t=e.split(`
|
|
12
|
+
`);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(n=>n.endsWith("\r")?n.slice(0,-1):n)}function Ue(e){return R(e,"invalid quoted string")}function _e(e,t){if(e==="")return"";if(e.startsWith('"'))return ql(e,t);if(e.includes('"'))throw Ue(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Pw(e)?Number(e):e}function Pe(e,t){let n=e.trim();if(n.startsWith('"'))return[ql(n,t),!0];if(n.includes('"')||/\s/.test(n))throw R(t,"expected non-empty field name");return[n,!1]}function ql(e,t){if(e.charCodeAt(0)!==34)throw Ue(t);let n="",r=1;for(;r<e.length;){Wl.lastIndex=r;let s=Wl.exec(e);if(s===null)break;if(s[0]==='"'){if(e.slice(s.index+1).trim()==="")return n+e.slice(r,s.index);throw Ue(t)}if(s[0]!=="\\")throw Ue(t);n+=e.slice(r,s.index);let o=e[s.index+1];switch(r=s.index+2,o){case'"':n+='"';break;case"\\":n+="\\";break;case"n":n+=`
|
|
13
|
+
`;break;case"r":n+="\r";break;case"t":n+=" ";break;case"u":{let i=e.slice(r,r+4);if(!/^[0-9a-fA-F]{4}$/.test(i))throw Ue(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw Ue(t);n+=String.fromCharCode(a),r+=4;break}default:throw Ue(t)}}throw Ue(t)}function Jl(e,t,n){for(;;){let r=e.indexOf('"',t),s=e.indexOf("\\",t);if(s!==-1&&(r===-1||s<r)){if(s===e.length-1)throw Ue(n);t=s+2;continue}if(r===-1)throw Ue(n);return r+1}}function Ie(e,t,n){if(e==="")return[];let r=[],s=0,o=0;for(;o<e.length;){let i=e.indexOf('"',o),a=e.indexOf(t,o);if(a!==-1&&(i===-1||a<i))r.push(e.slice(s,a).trim()),s=a+1,o=a+1;else if(i!==-1)o=Jl(e,i+1,n);else break}return r.push(e.slice(s).trim()),r}function oe(e,t,n){let r=0;for(;r<e.length;){let s=e.indexOf('"',r),o=e.indexOf(t,r);if(o!==-1&&(s===-1||o<s))return o;if(s===-1)return-1;r=Jl(e,s+1,n)}return-1}function Pw(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Iw(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Lw(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw R(0,"number is not representable in TOON");return String(e)}function qe(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function ie(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Lw(e);if(typeof e=="string")return Dw(e,t);throw R(0,"not a primitive")}function $w(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function K(e){return $w(e)?e:Os(e)}function Dw(e,t){return Gi(e,t)?Os(e):e}function Gi(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Iw(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Os(e){let t='"',n=0;Ul.lastIndex=0;let r;for(;(r=Ul.exec(e))!==null;){let s=e.charCodeAt(r.index),o;s===34?o='\\"':s===92?o="\\\\":s===10?o="\\n":s===13?o="\\r":s===9?o="\\t":o=`\\u${s.toString(16).padStart(4,"0")}`,t+=e.slice(n,r.index)+o,n=r.index+1}return`${t}${e.slice(n)}"`}function Le(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var G,Wl,Ul,Ut=g(()=>{it();G=",";Wl=/["\\\u0000-\u0008\u000a-\u001f]/g;Ul=/["\\\u0000-\u001f]/g});function H(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var dr=g(()=>{});function Vl(e={}){let t=e.maxDepth??1e3,n=t===Number.POSITIVE_INFINITY?0:Math.max(0,Math.floor(t));return{indent:Math.max(1,e.indent??2),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0,cyclicDiscriminatedArrays:e.cyclicDiscriminatedArrays!==!1,maxDepth:n}}function Kl(e,t){let n=[],r=!1;return Ts(e).forEach((s,o)=>{let i=o+1;if(s.trim()===""){r=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw R(i,"invalid indentation");if(t.strict&&a%t.indent!==0)throw R(i,"invalid indentation");let c=Math.floor(a/t.indent);Je(c,i,t),n.push({number:i,depth:c,content:s.slice(a),blankBefore:r}),r=!1}),n}function Je(e,t,n){if(n.maxDepth!==0&&e>n.maxDepth)throw R(t,`maximum nesting depth exceeded (maxDepth ${n.maxDepth})`)}function mr(e,t,n){if(n.maxDepth===0)return;let r=0,s=!1,o=!1;for(let i of e){if(o){o=!1;continue}if(s&&i==="\\"){o=!0;continue}if(i==='"'){s=!s;continue}s||(i==="{"?(r+=1,Je(r,t,n)):i==="}"&&(r=Math.max(0,r-1)))}}var Hi=g(()=>{it();Ut();kn()});function Ql(e){if(!H(e)||Object.keys(e).length===0)return e;let t={};for(let[n,r]of Object.entries(e)){let s=Nw(r,1);if(s===void 0)return e;Le(t,n,s)}return t}function Nw(e,t){if(!H(e)||!Mw(e))return;let{order:n,discriminator:r,rows:s}=e;if(typeof n!="string"||typeof r!="string"||!Number.isSafeInteger(s)||s<0)throw X(t);let o=Bw(n,s,t),i=e.common,a=i===void 0?Array.from({length:s},()=>({})):i;if(!Array.isArray(a)||a.length!==s||!a.every(H))throw Xl(t);let c=new Map;for(let[f,d]of Object.entries(e))if(!Hl.has(f)){if(!Array.isArray(d)||!d.every(H))throw X(t);c.set(f,d)}if(c.size===0)throw X(t);let u=new Map,l=o.map((f,d)=>{let m=c.get(f);if(m===void 0)throw Wi(t);let p=u.get(f)??0,b=m[p];if(b===void 0)throw Wi(t);return u.set(f,p+1),Fw(r,f,a[d],b,t)});for(let[f,d]of c)if((u.get(f)??0)!==d.length)throw Wi(t);return l}function Mw(e){return Object.prototype.hasOwnProperty.call(e,"order")||Object.prototype.hasOwnProperty.call(e,"discriminator")||Object.prototype.hasOwnProperty.call(e,"rows")}function Bw(e,t,n){if(!e.startsWith("cycle("))throw X(n);let r=e.slice(6),s=r.indexOf(")*");if(s===-1)throw X(n);let o=r.slice(0,s),i=r.slice(s+2);if(o===""||i.includes("+tail("))throw X(n);let a=o.split(",").map(l=>Ww(l,n));if(a.some(l=>l===""))throw X(n);let c=Hw(i,n),u=a.length*c;if(!Number.isSafeInteger(u))throw X(n);if(u!==t)throw Xl(n);return Array.from({length:u},(l,f)=>a[f%a.length])}function Fw(e,t,n,r,s){let o={};Le(o,e,t);for(let[i,a]of Object.entries(n??{})){if(i===e||Object.prototype.hasOwnProperty.call(o,i))throw X(s);Le(o,i,a)}for(let[i,a]of Object.entries(jw(r,s))){if(i===e||Object.prototype.hasOwnProperty.call(o,i))throw X(s);Le(o,i,a)}return o}function jw(e,t){let n={};for(let[r,s]of Object.entries(e))Gw(n,r.split("."),s,t);return As(n,t)}function Gw(e,t,n,r){if(t.some(o=>o===""))throw X(r);let s=e;for(let o=0;o<t.length;o+=1){let i=t[o];if(o===t.length-1){s[i]=n;return}if(s[i]??={},s=s[i],!H(s))throw X(r)}}function As(e,t){return Array.isArray(e)?e.map(n=>As(n,t)):H(e)?Number.isSafeInteger(e.length)&&e.length>=0?Array.from({length:e.length},(n,r)=>{if(!Object.prototype.hasOwnProperty.call(e,String(r)))throw X(t);return As(e[String(r)],t)}):Object.fromEntries(Object.entries(e).map(([n,r])=>[n,As(r,t)])):e}function Hw(e,t){if(e===""||e.length>1&&e.startsWith("0")||!/^[0-9]+$/.test(e))throw X(t);let n=Number(e);if(!Number.isSafeInteger(n))throw X(t);return n}function Ww(e,t){try{return decodeURIComponent(e)}catch{throw X(t)}}function zl(e){return encodeURIComponent(e)}function X(e){return R(e,"invalid cyclic array wire")}function Xl(e){return R(e,"cyclic array length mismatch")}function Wi(e){return R(e,"cyclic array group length mismatch")}function Zl(e){if(!H(e))return;let t=Object.entries(e);if(t.length===0)return;let n=[];for(let[s,o]of t){let i=Uw(o);if(i===void 0)return;n.push([s,i])}let r=[];for(let[s,o]of n)Kw(r,s,o);return r.join("")}function Uw(e){if(!Array.isArray(e)||e.length===0||!e.every(H))return;let t=qw(e);if(t===void 0)return;let n=e.map(a=>a[t]),r=Jw(n);if(r===void 0)return;let s=Vw(e,t),o=new Map;for(let a of e){let c=a[t];o.has(c)||o.set(c,[]);let u={};for(let[l,f]of Object.entries(a))if(l!==t&&!s.includes(l)&&!Ui(f,l,u))return;o.get(c).push(u)}let i=[];for(let a of r.cycle){let c=o.get(a),u=Yw(c);if(u===void 0||u.length===0)return;i.push({fields:u,label:a,rows:c})}return{common:s,commonRows:e.map(a=>Object.fromEntries(s.map(c=>[c,a[c]]))),discriminator:t,groups:i,order:r,rows:e}}function qw(e){return Gl.find(t=>e.every(n=>typeof n[t]=="string"))}function Jw(e){if(!(e.length<12))for(let t=2;t<=Math.min(8,Math.floor(e.length/3));t+=1){if(e.length%t!==0)continue;let n=e.slice(0,t);if(new Set(n).size<2||!e.every((i,a)=>i===n[a%t]))continue;let r=e.length/t;if(r<3)continue;let s=e.map(zl).join(","),o=`cycle(${n.map(zl).join(",")})*${r}`;if(o.length<=s.length*.4)return{cycle:n,encoded:o,repeats:r}}}function Vw(e,t){let n=[],r=Object.keys(e[0]),s=r.indexOf(t)+1;for(let o of r.slice(s).filter(i=>i!==t)){if(!zw(o)||!e.every(i=>Object.prototype.hasOwnProperty.call(i,o))||!e.every(i=>qe(i[o])))break;n.push(o)}return n}function Kw(e,t,n){e.push(K(t),`:
|
|
14
|
+
`),e.push(" order: ",ie(n.order.encoded,Wt),`
|
|
15
|
+
`),e.push(" discriminator: ",ie(n.discriminator,Wt),`
|
|
16
|
+
`),e.push(" rows: ",String(n.rows.length),`
|
|
17
|
+
`),n.common.length>0&&Yl(e,"common",n.common,n.commonRows);for(let r of n.groups)Yl(e,r.label,r.fields,r.rows)}function Yl(e,t,n,r){e.push(" ",K(t),"[",String(r.length),Wt,"]{",n.map(K).join(Wt),`}:
|
|
18
|
+
`);for(let s of r)e.push(" ",n.map(o=>ie(s[o],Wt)).join(Wt),`
|
|
19
|
+
`)}function zw(e){return e!==""&&qi(e)}function Ui(e,t,n,r=new Set){if(!qi(t))return!1;if(qe(e))return n[t]=e,!0;if(Array.isArray(e)){if(r.has(e))return!1;r.add(e),n[`${t}.length`]=e.length;let s=e.every((o,i)=>Ui(o,`${t}.${i}`,n,r));return r.delete(e),s}if(H(e)){if(r.has(e))return!1;r.add(e);let s=Object.entries(e).every(([o,i])=>!o.includes(".")&&Ui(i,`${t}.${o}`,n,r));return r.delete(e),s}return!1}function Yw(e){let t=Object.keys(e[0]??{});if(e.every(n=>Qw(Object.keys(n),t)))return t.every(qi)?t:void 0}function Qw(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function qi(e){return e.split(".").every(t=>/^[A-Za-z_][A-Za-z0-9_]*$|^(?:0|[1-9][0-9]*)$/.test(t))}var Ji=g(()=>{it();Ut();kn();dr()});function Sn(e,t){let n=e[t]??e[e.length-1];return R(n===void 0?1:n.number,"array length mismatch")}function Ps(e,t){if(t===-1)throw R(0,"array header missing colon");let n=e.slice(0,t),r=oe(n,"[",0);if(r===-1)throw R(0,"invalid array header");let s,o;try{[s,o]=Pe(n.slice(0,r),0)}catch{throw R(0,"invalid array header")}let i=n.slice(r+1),a=i.indexOf("]");if(a===-1)throw R(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 R(0,"invalid array header");let l=Number.parseInt(u,10),f;switch(c.slice(u.length)){case"":f=",";break;case" ":f=" ";break;case"|":f="|";break;default:throw R(0,"invalid array header")}let d=i.slice(a+1),m,p;if(d==="")m=void 0,p=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{p=Zw(d.slice(1,-1),f),m=Ki(p)}catch(b){throw R(0,b.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw R(0,"invalid array header");return{key:s,keyQuoted:o,len:l,delimiter:f,fields:m,fieldTree:p}}function ed(e){let t=oe(e,"{",0);if(t===-1||!e.endsWith("}"))throw R(0,"invalid keyed map header");let n,r;try{[n,r]=Pe(e.slice(0,t),0)}catch{throw R(0,"invalid keyed map header")}if(n===""&&!r)throw R(0,"expected non-empty field name");let s=e.slice(t+1,-1),o=G;(s.startsWith("|")||s.startsWith(" "))&&(o=s[0],s=s.slice(1));let i;try{i=Xw(s,o,o)}catch(a){throw R(0,a.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:n,keyQuoted:r,delimiter:o,fields:i}}function Xw(e,t,n){let r=[],s=0;function o(c,u){let l=0;for(;s<e.length&&!(u&&e[s]==="}");){if(e[s]===t||e[s]==="}")throw R(0,"invalid array header");let f=s;for(;s<e.length;){let p=e[s];if(p==='"'){i();continue}if(p===t||p==="{"||p==="}"||p==="[")break;s+=1}let[d,m]=Pe(e.slice(f,s),0);if(d===""&&!m)throw R(0,"invalid array header");if(l+=1,e[s]==="["){s+=1;let p=s;for(;s<e.length&&e[s]!=="]";)s+=1;if(s>=e.length)throw R(0,"invalid array header");let b=e.slice(p,s);if(!td(b,n))throw R(0,"invalid array header");s+=1,r.push({path:[...c,d],listDelimiter:b})}else if(e[s]==="{"){s+=1;let p=r.length;if(o([...c,d],!0),e[s]!=="}"||r.length===p)throw R(0,"invalid array header");s+=1}else r.push({path:[...c,d],listDelimiter:void 0});if(e[s]===t){if(s+=1,s>=e.length||e[s]==="}")throw R(0,"invalid array header");continue}if(u?e[s]==="}":s===e.length)break;throw R(0,"invalid array header")}if(l===0)throw R(0,"invalid array header")}function i(){for(s+=1;s<e.length;){let c=e[s];if(s+=1,c==="\\")s+=1;else if(c==='"')return}}if(o([],!1),s!==e.length)throw R(0,"invalid array header");let a=new Set;for(let c=0;c<r.length;c+=1)for(let u=c+1;u<r.length;u+=1)if(nd(r[c].path,r[u].path)||gr(r[c].path,r[u].path)||gr(r[u].path,r[c].path))throw R(0,"duplicate key");for(let c of r){let l=c.path.join("\0");if(a.has(l))throw R(0,"duplicate key");a.add(l)}return r}function Zw(e,t){if(t!==G&&e.includes(G)&&(e.includes("[")||e.includes("{")))return Vi(e,G,t);try{return Vi(e,t,t)}catch(n){if(t!==G&&n.reason!=="duplicate key")return Vi(e,G,t);throw n}}function Vi(e,t,n){let r=0;function s(c){let u=[];for(;r<e.length&&!(c&&e[r]==="}");){if(e[r]===t||e[r]==="}")throw R(0,"invalid array header");let l=r;for(;r<e.length;){let p=e[r];if(p==='"'){o();continue}if(p===t||p==="{"||p==="}"||p==="[")break;r+=1}let[f,d]=Pe(e.slice(l,r),0);if(f===""&&!d)throw R(0,"invalid array header");let m={key:f};if(e[r]==="["){r+=1;let p=r;for(;r<e.length&&e[r]!=="]";)r+=1;if(r>=e.length)throw R(0,"invalid array header");let b=e.slice(p,r);r+=1;let _=e_(b);if(_!==void 0){if(_.delimiter!==n)throw R(0,"invalid array header");m.fixedLength=_.len,m.fixedDelimiter=_.delimiter}else if(td(b,n))m.listDelimiter=b;else throw R(0,"invalid array header")}else if(e[r]==="{"){if(r+=1,m.children=s(!0),e[r]!=="}"||m.children.length===0)throw R(0,"invalid array header");r+=1}if(u.push(m),e[r]===t){if(r+=1,r>=e.length||e[r]==="}")throw R(0,"invalid array header");continue}if(c?e[r]==="}":r===e.length)break;throw R(0,"invalid array header")}if(u.length===0)throw R(0,"invalid array header");return u}function o(){for(r+=1;r<e.length;){let c=e[r];if(r+=1,c==="\\")r+=1;else if(c==='"')return}}let i=s(!1);if(r!==e.length)throw R(0,"invalid array header");let a=Ki(i);for(let c=0;c<a.length;c+=1)for(let u=c+1;u<a.length;u+=1)if(nd(a[c].path,a[u].path)||gr(a[c].path,a[u].path)||gr(a[u].path,a[c].path))throw R(0,"duplicate key");return i}function e_(e){let t=/^[0-9]+/.exec(e)?.[0];if(t===void 0||t.length>1&&t.startsWith("0"))return;let n=e.slice(t.length),r;switch(n){case"":r=G;break;case" ":r=" ";break;case"|":r="|";break;default:return}return{len:Number.parseInt(t,10),delimiter:r}}function Ki(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children!==void 0?Ki(n.children,r):[{path:r,listDelimiter:n.listDelimiter}]})}function Is(e,t,n){return e.listDelimiter===void 0?_e(t,n):Ie(t,e.listDelimiter,n).map(r=>_e(r,n))}function td(e,t){return e.length===1&&e!==t&&!/[ \t\r\n"[\]{}:]/.test(e)}function nd(e,t){return e.length===t.length&&gr(e,t)}function gr(e,t){return t.every((n,r)=>e[r]===n)}function Ls(e,t){return R(t,e.reason??String(e.message))}var rd=g(()=>{it();Ut()});function L(e,t){let n=Vl(t),r=Kl(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw R(s.number,"invalid indentation");let o=r.length===1;if(o&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){mr(s.content,s.number,n);let u;try{u=Ps(s.content,oe(s.content,":",s.number))}catch(l){if(n.strict)throw Ls(l,s.number);u=void 0}if(u!==void 0)return r_(u,r,n)}if(o&&oe(s.content,":",s.number)===-1)return _e(s.content.trim(),s.number);let i={index:0},a=Yi(r,i,0,n),c=r[i.index];if(c!==void 0)throw R(c.number,"expected end of document");return n.cyclicDiscriminatedArrays?Ql(a):a}function Yi(e,t,n,r){let s={};for(;t.index<e.length;){let o=e[t.index];if(o.depth<n)break;if(o.depth>n)throw R(o.number,"invalid indentation");let{key:i,quoted:a,value:c}=t_(e,t,n,r);ld(s,i,a,c,r,o.number)}return s}function t_(e,t,n,r){let s=e[t.index],o=s.content,i=oe(o,":",s.number);if(i===-1)throw R(s.number,"expected `key: value`");let a=o.slice(0,i),c=o.slice(i+1),u=oe(a,"[",s.number),l=oe(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){mr(a,s.number,r);let p;try{p=ed(a)}catch(_){if(r.strict)throw Ls(_,s.number);t.index+=1;let h=zi(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:h}}if(c.trim()!=="")throw R(s.number,"expected keyed map rows");let b=n_(p,e,t,n+1,r);return{key:p.key,quoted:p.keyQuoted,value:b}}if(u!==-1){mr(a,s.number,r);let p;try{p=Ps(a,i)}catch(_){if(r.strict)throw Ls(_,s.number);t.index+=1;let h=zi(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:h}}if(p.key===""&&!p.keyQuoted)throw R(s.number,"expected non-empty field name");let b=Qi(p,c,e,t,n,r);return{key:p.key,quoted:p.keyQuoted,value:b}}let[f,d]=Pe(a,s.number);if(f===""&&!d)throw R(s.number,"expected non-empty field name");t.index+=1;let m=zi(e,t,n,c,s.number,r);return{key:f,quoted:d,value:m}}function zi(e,t,n,r,s,o){let i=r.trim();if(i==="[]")return[];if(i!=="")return _e(i,s);let a=e[t.index];return a!==void 0&&a.depth>n?Yi(e,t,n+1,o):{}}function n_(e,t,n,r,s){let o={};for(n.index+=1;n.index<t.length;){let i=t[n.index];if(i.depth<r)break;if(i.depth>r)throw R(i.number,"invalid indentation");if(i.blankBefore&&s.strict)throw R(i.number,"blank line inside keyed map");let a=oe(i.content,":",i.number);if(a===-1)throw R(i.number,"expected `key: value`");let[c,u]=Pe(i.content.slice(0,a),i.number);if(c===""&&!u)throw R(i.number,"expected non-empty field name");let l=Ie(i.content.slice(a+1).trim(),e.delimiter,i.number);if(l.length!==e.fields.length)throw R(i.number,"keyed map row length mismatch");let f={};e.fields.forEach((d,m)=>{xn(f,d.path,Is(d,l[m],i.number),s,i.number)}),ld(o,c,u,f,s,i.number),n.index+=1}return o}function r_(e,t,n){let r=t[0],s=oe(r.content,":",r.number);if(s===-1)throw R(r.number,"expected `key: value`");let o=r.content.slice(s+1),i={index:0},a=Qi(e,o,t,i,0,n),c=t[i.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function Qi(e,t,n,r,s,o){let i=n[r.index].number,a=t.trim();if(r.index+=1,e.fields!==void 0){if(a!=="")throw R(i,"expected tabular rows");return s_(e,e.fields,n,r,s+1,o)}if(a!==""){let c=Ie(a,e.delimiter,i).map(u=>_e(u,i));if(c.length!==e.len)throw R(i,"array length mismatch");return c}return d_(e,n,r,s+1,o)}function s_(e,t,n,r,s,o){if(e.fieldTree!==void 0&&u_(e.fieldTree))return o_(e,n,r,s,o);let i=[];for(;i.length<e.len;){let c=n[r.index];if(c===void 0)throw Sn(n,r.index);if(c.depth<s)break;if(c.depth>s)throw R(c.number,"invalid indentation");if(c.blankBefore&&o.strict)throw R(c.number,"blank line inside array");if(!En(c.content,e.delimiter,c.number))break;let u=Ie(c.content,e.delimiter,c.number);if(u.length!==t.length)throw R(c.number,"array row length mismatch");let l={};t.forEach((f,d)=>{xn(l,f.path,Is(f,u[d],c.number),o,c.number)}),i.push(l),r.index+=1}if(i.length!==e.len)throw Sn(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&En(a.content,e.delimiter,a.number))throw R(a.number,"array length mismatch");return i}function o_(e,t,n,r,s){return sd(e.len,e.fieldTree,e.delimiter,t,n,r,s,!0)}function sd(e,t,n,r,s,o,i,a){let c=[],u=id(e,t,n,r,s.index,o,i);for(;c.length<e;){let f=r[s.index];if(f===void 0)throw Sn(r,s.index);if(f.depth<o)break;if(f.depth>o)throw R(f.number,"invalid indentation");if(f.blankBefore&&i.strict)throw R(f.number,"blank line inside array");if(!En(f.content,n,f.number))break;let d=Ie(f.content,n,f.number),m={cellIndex:0,nextIndex:s.index+1,flatWidth:$s(t),childTableFields:u},p=od(t,d,f.number,r,m,o+1,n,i);if(m.cellIndex!==d.length)throw R(f.number,"array row length mismatch");c.push(c_(t,p,a)),s.index=m.nextIndex}if(c.length!==e)throw Sn(r,s.index);let l=r[s.index];if(l!==void 0&&l.depth>=o&&En(l.content,n,l.number))throw R(l.number,"array length mismatch");return c}function od(e,t,n,r,s,o,i,a){let c={};return e.forEach((u,l)=>{let f=e.slice(l+1),d=i_(u,f,t,n,r,s,o,i,a);xn(c,[u.key],d,a,n)}),c}function i_(e,t,n,r,s,o,i,a,c){if(e.fixedLength!==void 0){if(o.cellIndex+e.fixedLength>n.length)throw R(r,"array row length mismatch");let l=n.slice(o.cellIndex,o.cellIndex+e.fixedLength).map(f=>_e(f,r));return o.cellIndex+=e.fixedLength,l}if(e.children!==void 0){let l=$s(e.children),f=n[o.cellIndex],d=cd(f),m=n.length-o.cellIndex-1,p=s[o.nextIndex],b=p!==void 0&&p.depth===i,_=o.childTableFields===void 0?void 0:o.childTableFields.has(e);if(_===void 0?d!==void 0&&(b||n.length!==o.flatWidth&&m<l+l_(t)):_){if(d===void 0)throw R(r,"array row length mismatch");return o.cellIndex+=1,sd(d,e.children,a,s,{get index(){return o.nextIndex},set index(y){o.nextIndex=y}},i,c,!1)}return od(e.children,n,r,s,o,i,a,c)}let u=n[o.cellIndex];if(u===void 0)throw R(r,"array row length mismatch");return o.cellIndex+=1,Is(e,u,r)}function id(e,t,n,r,s,o,i){let a=t.filter(l=>l.children!==void 0);if(a.length===0)return new Set;if(a.length>12)return;let c,u=1<<a.length;for(let l=0;l<u;l+=1){let f=new Set;a.forEach((m,p)=>{l&1<<p&&f.add(m)});let d=ad(e,t,f,n,r,s,o,i);d!==void 0&&(c===void 0||d.consumedChildRows>c.consumedChildRows||d.consumedChildRows===c.consumedChildRows&&f.size<c.childTableFields.size)&&(c={childTableFields:f,consumedChildRows:d.consumedChildRows})}return c?.childTableFields}function ad(e,t,n,r,s,o,i,a){let c=o,u=0;try{for(let f=0;f<e;f+=1){let d=s[c];if(d===void 0||d.depth!==i||d.blankBefore&&a.strict||!En(d.content,r,d.number))return;let m=Ie(d.content,r,d.number),p=a_(t,n,m,r,s,c+1,i+1,a);if(p===void 0||s[p.nextIndex]?.depth>i)return;u+=p.consumedChildRows,c=p.nextIndex}let l=s[c];if(l!==void 0&&l.depth>=i&&En(l.content,r,l.number))return}catch{return}return{nextIndex:c,consumedChildRows:u}}function a_(e,t,n,r,s,o,i,a){let c=0,u=o,l=0;for(let f of e){if(f.fixedLength!==void 0)c+=f.fixedLength;else if(f.children!==void 0)if(t.has(f)){let d=cd(n[c]);if(d===void 0)return;c+=1;let m=id(d,f.children,r,s,u,i,a);if(m===void 0)return;let p=ad(d,f.children,m,r,s,u,i,a);if(p===void 0)return;u=p.nextIndex,l+=d+p.consumedChildRows}else c+=$s(f.children);else c+=1;if(c>n.length)return}if(c===n.length)return{nextIndex:u,consumedChildRows:l}}function c_(e,t,n){return n&&e.length===1&&e[0].fixedLength!==void 0?t[e[0].key]:t}function cd(e){if(!(e===void 0||!/^(0|[1-9][0-9]*)$/.test(e)))return Number.parseInt(e,10)}function u_(e){return e.some(t=>t.fixedLength!==void 0||t.children!==void 0)}function $s(e){return e.reduce((t,n)=>t+ud(n),0)}function ud(e){return e.fixedLength!==void 0?e.fixedLength:e.children!==void 0?$s(e.children):1}function l_(e){return e.reduce((t,n)=>n.children!==void 0?t+1:t+ud(n),0)}function En(e,t,n){let r=oe(e,":",n);if(r===-1)return!0;let s=oe(e,t,n);return s===-1?!1:s<r}function d_(e,t,n,r,s){let o=[];for(;o.length<e.len;){let a=t[n.index];if(a===void 0||a.depth<r)throw Sn(t,n.index);if(a.depth>r)throw R(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw R(a.number,"blank line inside array");o.push(f_(t,n,r,s))}let i=t[n.index];if(i!==void 0&&i.depth>=r)throw R(i.number,"array length mismatch");return o}function f_(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw R(s.number,"expected array item");let o=s.content.slice(1).replace(/^\s+/,"");if(o==="")return t.index+=1,{};if(o.startsWith("[")){let i=oe(o,":",s.number);mr(o,s.number,r);let a;try{a=Ps(o,i)}catch{a=void 0}if(a!==void 0){let c=o.slice(i+1);return Qi(a,c,e,t,n,r)}}if(oe(o,":",s.number)!==-1){let i=[{number:s.number,depth:n+1,content:o,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=n)break;i.push(a),t.index+=1}return Yi(i,{index:0},n+1,r)}return t.index+=1,_e(o,s.number)}function ld(e,t,n,r,s,o){if(s.expandPaths&&!n&&t.includes(".")){let i=t.split(".");if(i.every(p_)){xn(e,i,r,s,o);return}}xn(e,[t],r,s,o)}function xn(e,t,n,r,s){Je(t.length-1,s,r);let o=t[0],i=Object.prototype.hasOwnProperty.call(e,o);if(t.length===1){if(i&&r.strict)throw R(s,"duplicate key");Le(e,o,n);return}if(i&&!H(e[o])){if(r.strict)throw R(s,"path expansion conflict");Le(e,o,{})}else i||Le(e,o,{});xn(e[o],t.slice(1),n,r,s)}function p_(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}var dd=g(()=>{it();Ut();kn();dr();Hi();Ji();rd()});function C(e,t={}){let n=t.maxDepth??1e3,r=t.delimiter??G;if(![G,"|"," "].includes(r))throw R(0,"invalid array header");let s={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0,primitiveArrayColumns:t.primitiveArrayColumns===!0,objectArrayColumns:t.objectArrayColumns===!0,cyclicDiscriminatedArrays:t.cyclicDiscriminatedArrays===!0,delimiter:r,maxDepth:n===Number.POSITIVE_INFINITY?0:Math.max(0,Math.floor(n))};if(s.cyclicDiscriminatedArrays){let i=Zl(e);if(i!==void 0)return i}let o=[];return Array.isArray(e)?ta(o,void 0,e,0,!1,s):H(e)?fd(o,e,0,s):o.push(ie(e,r)),o.join("")}function vn(e,t){e.push(" ".repeat(t*2))}function fd(e,t,n,r){Je(n,0,r);for(let[s,o]of Object.entries(t))vn(e,n),Zi(e,s,o,n,r)}function Zi(e,t,n,r,s){if(Je(r,0,s),Array.isArray(n)){ta(e,t,n,r,!1,s);return}if(H(n)){let o=s.keyedMapCollapse?g_(n,s,r+1):void 0;if(o!==void 0){e.push(K(t),"{",na(s.delimiter),o.fields.map(i=>oa(i,s.delimiter)).join(s.delimiter),`}:
|
|
20
|
+
`);for(let[i,a]of Object.entries(n)){vn(e,r+1);let c=[];e.push(K(i),": ",o.paths.map(u=>ia(sa(a,u.path),u,s.delimiter,s,c,r+2)).join(s.delimiter),`
|
|
21
|
+
`),e.push(...c)}return}e.push(K(t),`:
|
|
22
|
+
`),fd(e,n,r+1,s);return}e.push(K(t),": ",ie(n,s.delimiter),`
|
|
23
|
+
`)}function ta(e,t,n,r,s,o){if(Je(r,0,o),n.length===0){t!==void 0?e.push(K(t),`: []
|
|
19
24
|
`):s?e.push(`[0]:
|
|
20
25
|
`):e.push(`[]
|
|
21
|
-
`);return}if(
|
|
22
|
-
`);return}let i=s?void 0:
|
|
23
|
-
`);for(let a of
|
|
24
|
-
`)
|
|
25
|
-
`);for(let a of
|
|
26
|
-
`);return}e.push("- "),
|
|
27
|
-
`)}function
|
|
28
|
-
`}function
|
|
29
|
-
`}function
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
`
|
|
34
|
-
`)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
`);return}if(n.every(qe)){Xi(e,t,n.length,void 0,o.delimiter),e.push(" "),e.push(n.map(a=>ie(a,o.delimiter)).join(o.delimiter)),e.push(`
|
|
27
|
+
`);return}let i=s?void 0:pd(n,o,r+1);if(i!==void 0){Xi(e,t,n.length,i.fields,o.delimiter),e.push(`
|
|
28
|
+
`);for(let a of n){vn(e,r+1);let c=[];e.push(i.paths.map(u=>ia(sa(a,u.path),u,o.delimiter,o,c,r+2)).join(o.delimiter)),e.push(`
|
|
29
|
+
`),e.push(...c)}return}Xi(e,t,n.length,void 0,o.delimiter),e.push(`
|
|
30
|
+
`);for(let a of n)vn(e,r+1),m_(e,a,r+1,o)}function m_(e,t,n,r){if(Je(n,0,r),Array.isArray(t)){e.push("- "),ta(e,void 0,t,n,!0,r);return}if(H(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
|
|
31
|
+
`);return}e.push("- "),Zi(e,s[0][0],s[0][1],n+1,r);for(let[o,i]of s.slice(1))vn(e,n+1),Zi(e,o,i,n+1,r);return}e.push("- ",ie(t,r.delimiter),`
|
|
32
|
+
`)}function Xi(e,t,n,r,s){t!==void 0&&e.push(K(t)),e.push("[",String(n),na(s),"]"),r!==void 0&&e.push("{",r.map(o=>oa(o,s)).join(s),"}"),e.push(":")}function na(e){return e===G?"":e}function pd(e,t,n){let r=h_(e,t);if(r!==void 0)return r;let s=ea(e.map(o=>({value:o})),t,n);return s===void 0?void 0:{fields:s,paths:ra(s)}}function g_(e,t,n){let r=Object.values(e);if(!(r.length<2))return pd(r,t,n)}function ea(e,t,n){Je(n,0,t);let r=e[0]?.value;if(!H(r))return;let s=Object.keys(r).map(o=>({key:o}));if(s.length!==0){for(let{value:o}of e)if(!H(o)||Object.keys(o).length!==s.length||s.some(a=>!Object.prototype.hasOwnProperty.call(o,a.key)))return;for(let o of s){let i=e.map(({value:c})=>({value:c[o.key]}));if(i.every(({value:c})=>qe(c)))continue;if(t.primitiveArrayColumns&&i.every(({value:c})=>Array.isArray(c)&&c.every(qe))){o.listDelimiter=";";continue}if(t.objectArrayColumns&&i.every(({value:c})=>Array.isArray(c))){let c=md(i.map(({value:l})=>l));if(c!==void 0){o.fixedLength=c.fixedLength,o.fixedDelimiter=t.delimiter;continue}let u=ea(i.flatMap(({value:l})=>l.map(f=>({value:f}))),t,n+1);if(u!==void 0){o.children=u,o.childTable=!0;continue}}if(!t.nestedTabularHeaders)return;let a=ea(i,t,n+1);if(a===void 0)return;o.children=a}return s}}function h_(e,t){if(!t.objectArrayColumns)return;let n=md(e);return n===void 0?void 0:{fields:[{key:"values",fixedLength:n.fixedLength,fixedDelimiter:t.delimiter}],paths:[{path:[],fixedLength:n.fixedLength}]}}function md(e){let t=e[0]?.length;if(!(!Number.isInteger(t)||t===0)&&e.every(n=>Array.isArray(n)&&n.length===t&&n.every(qe)))return{fixedLength:t}}function ra(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.childTable===!0?[{path:r,childFields:n.children}]:n.fixedLength!==void 0?[{path:r,fixedLength:n.fixedLength}]:n.children===void 0?[{path:r,listDelimiter:n.listDelimiter}]:ra(n.children,r)})}function sa(e,t){let n=e;for(let r of t)n=n[r];return n}function oa(e,t){return e.listDelimiter!==void 0?`${K(e.key)}[${e.listDelimiter}]`:e.fixedLength!==void 0?`${K(e.key)}[${e.fixedLength}${na(t)}]`:e.children===void 0?K(e.key):`${K(e.key)}{${e.children.map(n=>oa(n,t)).join(t)}}`}function ia(e,t,n,r,s,o){return t.childFields!==void 0?(y_(s,e,t.childFields,r,o),String(e.length)):t.fixedLength!==void 0?e.map(i=>ie(i,n)).join(n):t.listDelimiter===void 0?ie(e,n):e.map(i=>b_(i,n,t.listDelimiter)).join(t.listDelimiter)}function y_(e,t,n,r,s){for(let o of t){vn(e,s);let i=[];e.push(ra(n).map(a=>ia(sa(o,a.path),a,r.delimiter,r,i,s+1)).join(r.delimiter)),e.push(`
|
|
33
|
+
`),e.push(...i)}}function b_(e,t,n){return typeof e!="string"?ie(e,t):Gi(e,t)||e.includes(n)?Os(e):e}var gd=g(()=>{it();Ut();kn();dr();Hi();Ji()});var hr=g(()=>{kn();dd();dr();gd()});var hd=g(()=>{hr()});function k_(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let n=e.slice(2,-1);if(!/^[0-9]+$/.test(n))throw P(t,"invalid trailer count");return Number.parseInt(n,10)}function Cd(e,t){if(!vd.test(e))throw P(t,"invalid tag")}function S_(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n);if(!vd.test(r)){if(/^[A-Za-z0-9_-]/.test(r)&&/^[^,[\]|{}:\t ]+$/.test(r))throw P(t,"invalid tag");return null}return{tag:r,cellsText:e.slice(n+1)}}function E_(e,t){if(!e.startsWith("["))return null;let n=e.slice(1),r=n.indexOf("]");if(r===-1)throw P(t,"invalid header");let s=n.slice(0,r),o=s.startsWith("~"),i=o?s.slice(1):s;if(!o&&i.startsWith("="))return null;if(!Ed.includes(i)&&i!=="")throw P(t,"invalid header delimiter");let a=i===""?G:i,c=n.slice(r+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),Cd(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),f;try{f=Ie(l,a,t).map(d=>Pe(d,t)[0])}catch(d){throw Rn(d)}if(f.length===0||f.some(d=>d===""))throw P(t,"invalid header fields");return{delimiter:a,fields:f,fieldText:l,continuation:o,tag:u}}function x_(e,t,n){if(e===null||e.delimiter===void 0)throw P(n,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw P(n,"continuation header mismatch")}function yd(e,t,n,r){let s;try{s=Ie(e,t,r)}catch(o){throw Rn(o)}if(s.length!==n)throw P(r,"row arity mismatch");for(let o of s)try{_e(o,r)}catch(i){throw Rn(i)}return s}function v_(e,t,n){let r={};return e.forEach((s,o)=>{try{Le(r,s,_e(t[o],n))}catch(i){throw Rn(i)}}),r}function C_(e,t,n){if(e.startsWith("- "))throw P(t,"reserved line prefix");let r=k_(e,t);if(r!==null){if(n===null||n.delimiter===void 0)throw P(t,"trailer without header");if(n.rowCount!==r)throw P(t,"trailer count mismatch");return{kind:"trailer"}}let s=E_(e,t);if(s!==null)return s.continuation?(x_(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=S_(e,t);if(o!==null){let i=n?.taggedLanes?.get(o.tag);if(i===void 0)throw P(t,"unknown tag");return{kind:"tagged-row",tag:o.tag,cells:yd(o.cellsText,i.delimiter,i.fields.length,t)}}if(n===null||n.delimiter===void 0)throw P(t,"row before header");return{kind:"row",cells:yd(e,n.delimiter,n.fields.length,t)}}function T_(e,t={}){let n=[],r=new Map,s=[],o=[],i=null,a=!1,c=!1;function u(m,p){let b=o.at(-1);if(b!==void 0&&b.lane===m.lane&&b.delimiter===m.delimiter&&b.fieldText===m.fieldText){b.rows.push(p);return}o.push({lane:m.lane,delimiter:m.delimiter,fields:m.fields,fieldText:m.fieldText,rows:[p]})}function l(){i!==null&&s.push({delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,lane:i.lane,rows:i.rows})}function f(m,p,b){let _=r.get(m);if(_===void 0){if(r.size>=xd)throw P(b,"too many tagged lanes");_={segments:[],current:null},r.set(m,_),n.push(m)}else _.current!==null&&_.segments.push(_.current);_.current={lane:m,delimiter:p.delimiter,fields:p.fields,fieldText:p.fieldText,rows:[]},_.delimiter=p.delimiter,_.fields=p.fields,_.fieldText=p.fieldText}if(Ts(e).forEach((m,p)=>{let b=p+1;if(m==="")return;let _=i===null?{taggedLanes:r}:{delimiter:i.delimiter,fields:i.fields,fieldText:i.fieldText,rowCount:i.rows.length,taggedLanes:r},h=C_(m,b,_);if(h.kind==="trailer"){l(),i=null;return}if(h.kind!=="continuation"){if(h.kind==="tag-header"){c=!0,f(h.header.tag,h.header,b);return}if(h.kind==="header"){l(),a||(n.push(null),a=!0),i={lane:null,delimiter:h.header.delimiter,fields:h.header.fields,fieldText:h.header.fieldText,rows:[]};return}if(h.kind==="tagged-row"){c=!0;let y=r.get(h.tag).current;y.rows.push(h.cells),u(y,h.cells);return}if(i===null)throw P(b,"row before header");i.rows.push(h.cells),u(i,h.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let m of n){if(m===null){d.push(...s);continue}let p=r.get(m);d.push(...p.segments),p.current!==null&&d.push(p.current)}return t.preserveInterleaving===!0?o:d}function qt(e){return T_(e).flatMap(t=>t.rows.map(n=>v_(t.fields,n,0)))}function O_(e){if(!Ed.includes(e))throw P(0,"invalid header delimiter")}function bd(e,t,n=!1){return`[${`${n?"~":""}${e===G?"":e}`}]{${t}}:
|
|
34
|
+
`}function wd(e,t){return`[]<${e}>{${t}}:
|
|
35
|
+
`}function aa(e,t){return t.map(K).join(e)}function A_(e){if(!Array.isArray(e)||e.length===0)throw P(0,"TOONL header requires fields");return e.map(t=>{let n;try{[n]=Pe(String(t),0)}catch(r){throw Rn(r)}if(n==="")throw P(0,"TOONL header requires fields");return n})}function _d(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function Rd(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw P(0,"TOONL continuation cadence must be positive")}function P_(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function kd(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(n=>!qe(e[n])))throw P(0,"TOONL rows must be flat objects");return t}function I_(e){return JSON.stringify([...e].sort())}function Sd(e,t){let n=I_(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function Jt({delimiter:e=G,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){O_(e),Rd(n),Rd(r);let s=null,o="",i=new Map,a=0,c=0,u=0,l=new Map,f=!1,d={continuationEveryRows:n,continuationEveryBytes:r},m=()=>s===null||!t?"":`[=${a}]
|
|
36
|
+
`,p=()=>P_(d,c,u)?(c=0,u=0,bd(e,o,!0)):"",b=_=>{Cd(_,0);let h=l.get(_);if(h===void 0){if(l.size>=xd)throw P(0,"too many tagged lanes");h={fields:null,fieldsByShape:new Map},l.set(_,h)}return h};return{push(_){if(f)throw P(0,"TOONL encoder is closed");let h=Sd(kd(_),i),y="";(s===null||s.length!==h.length||s.some((T,M)=>T!==h[M]))&&(y+=m(),s=h,o=aa(e,s),a=0,c=0,u=0,y+=bd(e,o));let w=s.map(T=>ie(_[T],e));y+=p();let k=`${w.join(e)}
|
|
37
|
+
`;return y+=k,a+=1,c+=1,u+=k.length,y},declareLane(_,h){if(f)throw P(0,"TOONL encoder is closed");let y=A_(h),w=aa(G,y),k=b(_);return _d(k.fields,y)?"":(k.fields=y,wd(_,w))},pushTagged(_,h){if(f)throw P(0,"TOONL encoder is closed");let y=b(_),w=Sd(kd(h),y.fieldsByShape),k=aa(G,w),T=w.map(Te=>ie(h[Te],G)),M="";return _d(y.fields,w)||(y.fields=w,M+=wd(_,k)),`${M}${_}:${T.join(G)}
|
|
38
|
+
`},end(){return f?"":(f=!0,m())}}}var Ed,xd,vd,YI,QI,Td=g(()=>{it();hr();Ut();Ed=[G,"|"," "],xd=8,vd=/^[A-Za-z0-9_-]+$/,YI=new TextEncoder,QI=new TextDecoder});var N=g(()=>{jl();it();hr();hr();hd();Td()});function $_(e){return e==="no-op"?0:e==="usage"?2:1}function D(e){return Buffer.from(`${C(ca(e))}
|
|
39
|
+
`)}function ca(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??$_(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=D_(e.diagnostics,3)),t}function $e(e,t,n){let s=([n,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&Bl(s)?{command:e,category:"transient",error:yr(s)||"GitHub API rate limit exceeded",help:Ml,diagnostics:s}:/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:yr(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:yr(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:yr(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:yr(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Od(e,t,n,r){return D({command:e,category:"usage",error:`unknown flag: ${t}`,help:r,validFlags:n})}function yr(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function D_(e,t){return e.split(/\r?\n/).slice(0,t).join(`
|
|
40
|
+
`).trim()}var Ve=g(()=>{"use strict";Fl();N()});function Ms(e){let t={app:e,version:J_(Tn("__RED_BUILD_VERSION__",()=>"3.3.10")??"0.0.0-dev"),gitSha:Tn("__RED_BUILD_GIT_SHA__",()=>"efacf48c6512520601e438c4e755e96b51509e23")??"unknown",buildTime:Tn("__RED_BUILD_TIME__",()=>"2026-08-02T23:09:28-03:00")??"unknown",bundleAsset:Tn("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Tn("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Tn("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function J_(e){return e.startsWith("v")?e.slice(1):e}function Bd(e){return`${e.app} ${e.version} ${e.gitSha}`}function Tn(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var la=g(()=>{});import{isAbsolute as V_,join as at,resolve as da}from"node:path";function Y_(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function jd(e){return at(Y_(e),Fd)}function Gd(e){return at(jd(e),"state")}function Hd(e){return at(jd(e),"tmp")}function q(e){return at(Gd(e),"rsp")}function Q_(e){return at(Gd(e),"red-skills.rdb")}function X_(e){return at(Hd(e),"red-skills.rdb")}function qd(e,t){let n=Q_(e);if(t(n))return n;let r=X_(e);if(t(r))throw Z_();return n}function Z_(){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 Jd(e){return at(Hd(e),"waits")}function Vd(e){let t=e.overrideEnvVars??fa;for(let r of t){let s=e.env[r];if(s)return V_(s)?s:da(e.startDir,s)}let n=da(e.startDir);for(;;){if(e.exists(at(n,Fd)))return n;let r=at(n,".."),s=da(r);if(s===n)break;n=s}return e.startDir}var Fd,K_,z_,fa,Wd,Ud,Re=g(()=>{Fd=".red",K_="MEMORY_ROOT",z_="RED_BRAIN_ROOT",fa=[K_,z_];Wd=".red/state/red-skills.rdb";Ud=".red/tmp/red-skills.rdb"});function J(e){return C(e,{keyedMapCollapse:!0})}var eR,tR,LL,ct=g(()=>{N();Re();eR=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],tR=[{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"}],LL=[...eR,...tR]});function br(e){let{values:t,rest:n}=Gt(e,{query:Kd.query},zd);return{argv:n,query:t.query?.trim()||void 0}}function Yd(e){let{values:t,rest:n}=Gt(e,Kd,zd);return{argv:n,query:t.query?.trim()||void 0,full:t.full===!0}}function nR(e,t){if(!t)return!0;let n=pa(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function ae(e,t){return t?e.filter(n=>nR(n,t)):[...e]}function ut(e,t){return ma(e,t,{includeLegacyHelp:!0})}function ma(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function pa(e){return Array.isArray(e)?e.map(pa).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(pa).join(" "):String(e??"")}var Kd,zd,wr=g(()=>{"use strict";ji();Kd={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},zd={stopAtSeparator:!1}});var qs={};B(qs,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>Bs,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>Fs,DEFAULT_RSP_OVERHEAD_CEILING:()=>De,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>Gs,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Hs,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>js,RSP_OVERHEAD_FAMILIES:()=>uR,RSP_OVERHEAD_LEDGER_FILE:()=>Zd,RSP_OVERHEAD_SCHEMA_VERSION:()=>ef,classifyOverheadSample:()=>ya,noteChildProcessMs:()=>nf,noteSelfStateBytesRead:()=>kr,overheadCounters:()=>Sr,overheadFamilyDisabled:()=>wa,overheadHealth:()=>kt,overheadLedgerPath:()=>ba,overheadMsOf:()=>tf,overheadTelemetryFields:()=>Ws,readOverheadLedger:()=>_r,readSelfStateFile:()=>Us,readSelfStateFileSync:()=>fR,recordOverheadSample:()=>Rr,resetOverheadCounters:()=>dR,resetOverheadLedger:()=>lR,startChildProcessTimer:()=>ce});import{existsSync as rR,mkdirSync as sR,readFileSync as Qd,renameSync as oR,writeFileSync as iR}from"node:fs";import{readFile as aR}from"node:fs/promises";import{dirname as cR,join as Xd}from"node:path";function tf(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,ha(t)):0}function ya(e,t=De){let n=tf(e),r=[];return n>t.maxOverheadMs&&r.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&r.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&r.push("overhead-exceeds-savings"),{overhead_ms:n,breached:r.length>0,reasons:r}}function Ws(e,t=De){let n=ya(e,t);return{wrapper_ms:ha(e.wrapperMs),overhead_ms:n.overhead_ms,child_ms:ha(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:n.breached,overhead_breach_reasons:n.reasons.join(",")}}function ba(e){return Xd(q(e),Zd)}function _r(e){try{let t=Qd(ba(e),"utf8"),n=hR(t);if(yR(n))return n}catch{}return{version:1,families:{}}}function Rr(e,t,n=De,r=Date.now()){let s=_r(e),o=ya(t,n),i=s.families[t.family]??gR(t.family,r),a=ka(i,r)?rf(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(r).toISOString()};return o.breached?c>=n.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(r).toISOString(),u.disabled_until=new Date(r+n.cooldownMs).toISOString(),u.disabled_reason=pR(t.family,c,o,n)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,sf(e,s),u}function wa(e,t,n=Date.now()){let r=_r(e).families[t];return!r?.disabled||ka(r,n)?null:r}function lR(e,t){let n=_r(e);return t?delete n.families[t]:n.families={},sf(e,n),n}function kt(e,t=De,n=Date.now()){let r=Object.values(_r(e).families).map(a=>ka(a,n)?rf(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=r.filter(a=>a.disabled),o=r.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:ef,verdict:i,summary:mR(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:r}}function kr(e){Number.isFinite(e)&&e>0&&(_a+=e)}function nf(e){Number.isFinite(e)&&e>0&&(Ra+=e)}function Sr(){return{selfStateBytesRead:_a,childMs:Ra}}function dR(){_a=0,Ra=0}function ce(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,nf(Number(process.hrtime.bigint()-e)/1e6))}}async function Us(e){let t=await aR(e,"utf8");return kr(Buffer.byteLength(t)),t}function fR(e){let t=Qd(e,"utf8");return kr(Buffer.byteLength(t)),t}function pR(e,t,n,r){let s=n.reasons.map(o=>o==="wall-clock-ceiling"?`added ${n.overhead_ms}ms > ${r.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${r.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 mR(e,t,n){if(e==="green")return"every wrapper family is inside its overhead ceiling";let r=[];return t.length>0&&r.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),n.length>0&&r.push(`breaching: ${n.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),r.join("; ")}function ka(e,t){if(!e.disabled||!e.disabled_until)return!1;let n=Date.parse(e.disabled_until);return Number.isFinite(n)&&n<=t}function rf(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function gR(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 sf(e,t){try{let n=ba(e);if(!rR(Xd(e,".red")))return;sR(cR(n),{recursive:!0});let r=`${n}.${process.pid}.tmp`;iR(r,`${C(t)}
|
|
41
|
+
`,{encoding:"utf8",mode:384}),oR(r,n)}catch{}}function hR(e){try{return JSON.parse(e)}catch{return L(e)}}function yR(e){return!ga(e)||e.version!==1||!ga(e.families)?!1:Object.values(e.families).every(bR)}function bR(e){return ga(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function ga(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ha(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var Zd,ef,Bs,Fs,js,Gs,Hs,uR,De,_a,Ra,V=g(()=>{"use strict";Re();N();Zd="overhead-budget.toon",ef="red.rsp.overhead.v1",Bs=250,Fs=1024*1024,js=64*1024,Gs=3,Hs=6*60*60*1e3,uR=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],De={maxOverheadMs:Bs,maxSelfStateBytes:Fs,netLossFloorBytes:js,consecutiveBreaches:Gs,cooldownMs:Hs};_a=0,Ra=0});function cf(e){return e.trimStart().startsWith("{")?"json":"toon"}function Ea(e){let t=0;for(;e[t]===`
|
|
42
|
+
`||e[t]==="\r";)t+=1;let n=e.slice(t);if(n==="")return null;let r=cf(n);if(r==="json"){let o=n.indexOf(`
|
|
43
|
+
`);return o<0?null:{frame:n.slice(0,o),dialect:r,rest:n.slice(o+1)}}let s=n.indexOf(`
|
|
38
44
|
|
|
39
|
-
`);return s<0?null:{frame:
|
|
40
|
-
`)?`${
|
|
41
|
-
`:`${
|
|
45
|
+
`);return s<0?null:{frame:n.slice(0,s+1),dialect:r,rest:n.slice(s+2)}}function xa(e){let t=cf(e)==="json"?Sa:of,n=t===Sa?of:Sa;try{return t(e)}catch(r){try{return n(e)}catch{throw r}}}function Sa(e){return JSON.parse(e)}function of(e){return L(e)}function va(e,t){if(t==="toon"){let n=_R(e);if(n!==null)return n.endsWith(`
|
|
46
|
+
`)?`${n}
|
|
47
|
+
`:`${n}
|
|
42
48
|
|
|
43
49
|
`}return`${JSON.stringify(e)}
|
|
44
|
-
`}function
|
|
50
|
+
`}function _R(e){try{let t=JSON.stringify(e);if(t===void 0)return null;let n=C(JSON.parse(t));return n.trim()===""?null:n}catch{return null}}function uf(e,t){return!af(e)||!af(t)||t.ok!==!1?!1:typeof e.id=="string"&&typeof t.id=="string"&&t.id!==e.id}function af(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function df(e){return lf.has(e)?"json":wR}function ff(e){lf.add(e)}var wR,lf,pf=g(()=>{N();wR="toon";lf=new Set});import{createHash as RR}from"node:crypto";import{constants as Ca}from"node:fs";import{mkdir as kR,open as SR}from"node:fs/promises";import{createConnection as ER}from"node:net";import{tmpdir as xR}from"node:os";import{dirname as vR,join as Er}from"node:path";async function gf(e,t,n="resident server"){let r=e.wire,s=r??df(e.socketPath),o=await mf(e,t,n,s);return r||s==="json"||!uf(t,o)?o:(ff(e.socketPath),await mf(e,t,n,"json"))}async function mf(e,t,n,r){let s=e.timeoutMs??1e3;return await new Promise((o,i)=>{let a=ER(e.socketPath),c=!1,u="",l=setTimeout(()=>{f(()=>i(new Error(`${n} timed out`))),a.destroy()},s);function f(d){c||(c=!0,clearTimeout(l),d())}a.on("connect",()=>{a.write(va(t,r))}),a.on("data",d=>{u+=d.toString("utf8");let m=Ea(u);m&&(u=m.rest,f(()=>{try{o(xa(m.frame))}catch(p){i(p)}}),a.end())}),a.on("error",d=>f(()=>i(d))),a.on("close",()=>{c||f(()=>i(new Error(`${n} closed without response`)))})})}function hf(e,t,n){let r="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",s=>{r+=s;let o=Ea(r);if(!o)return;r=o.rest,e.pause();let i=a=>{if(!(e.destroyed||!e.writable))try{e.write(va(a,o.dialect))}catch{}};(async()=>{let a;try{a=xa(o.frame),await t(a,i)}catch(c){n(c,a,i)}finally{e.end()}})()})}async function yf(e){await kR(vR(e),{recursive:!0,mode:448});try{return await SR(e,Ca.O_CREAT|Ca.O_EXCL|Ca.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Vt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Ta(e,t=1e3){if(!Vt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let n=Date.now()+t;for(;Date.now()<n;){if(!Vt(e))return;await new Promise(r=>setTimeout(r,50))}try{process.kill(e,"SIGKILL")}catch{}}function bf(e){let t=e.env??process.env,n=RR("sha256").update(e.key).digest("hex").slice(0,20),r=c=>Er(c,e.socketFileName).length<CR,s=t.XDG_RUNTIME_DIR;if(s){let c=Er(s,"red-skills",n);if(r(c))return c}let o=e.uid??(typeof process.getuid=="function"?process.getuid():"nouid"),i=Er(`red-skills-${o}`,n),a=Er(xR(),i);return r(a)||process.platform==="win32"?a:Er(TR,i)}var CR,TR,Js=g(()=>{pf();CR=108;TR="/tmp"});async function On(e,t){return await gf(e,t,"resident rsp server")}var Oa=g(()=>{Js()});var wf=g(()=>{"use strict";Oa()});import{existsSync as OR,readdirSync as AR}from"node:fs";import{homedir as PR}from"node:os";import{basename as Pa,dirname as Aa,join as ke,resolve as Vs}from"node:path";function IR(e){return"command"in e}function Ks(e={},t={}){if(e.serverCommand)return{command:e.serverCommand,args:e.serverArgs??[],source:"server-command"};let n=t.env??process.env,r=t.exists??OR,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(n.RSP_BIN)return{command:n.RSP_BIN,args:[],source:"env-rsp-bin"};if(i&&DR(i))return a(Vs(i),"caller-entry");let c=[];for(let[u,l]of MR(i,t.rootDir,n,t.listDir??GR))if(c.push(u),r(u))return a(u,l);return{diagnostic:lt,searched:c,...i?{callerEntry:Vs(i)}:{}}}function Rf(e={},t={}){let n=Ks(e,t);if(IR(n))return n;throw new An(n)}function DR(e){let t=Pa(e);return t===Kt||Ia.test(t)||t==="rsp"||t==="rsp.mjs"||t==="rsp.js"?!0:t!=="cli.js"&&t!=="cli.mjs"&&t!=="cli.ts"?!1:NR(Vs(e))}function NR(e){let t=Aa(e);for(let n=0;n<4;n++){if(Pa(t)==="rsp")return!0;let r=Aa(t);if(r===t)return!1;t=r}return!1}function*MR(e,t,n,r){if(e){let o=Aa(Vs(e));yield[ke(o,Kt),"caller-sibling-bundle"];let i=LR.exec(Pa(e));i&&(yield[ke(o,`rsp-${i[2]}.bundle.min.mjs`),"caller-sibling-bundle"]),yield[ke(o,"..","dist",Kt),"caller-sibling-bundle"]}for(let o of $R){let i=n[o];i&&(yield[ke(i,"dist",Kt),"plugin-root-bundle"],yield[ke(i,"..","..","dist",Kt),"plugin-root-bundle"])}t&&(yield[ke(t,"dist",Kt),"repo-bundle"],yield[ke(t,"apps","rsp","dist","cli.js"),"workspace-entry"],yield[ke(t,"node_modules","@reddb-io","rsp","dist","cli.js"),"node-modules-entry"]);let s=BR(n);yield[ke(s,Kt),"bundle-cache"];for(let o of FR(s,r))yield[ke(s,o),"bundle-cache"]}function BR(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ke(e.HOME||PR(),".cache");return ke(t,"red-skills","bundles")}function FR(e,t){return t(e).filter(n=>Ia.test(n)).sort((n,r)=>jR(_f(r),_f(n)))}function _f(e){return Ia.exec(e)?.[1]??""}function jR(e,t){let n=o=>o.split(".").map(i=>Number.parseInt(i,10)),[r,s]=[n(e),n(t)];for(let o=0;o<Math.max(r.length,s.length);o++){let[i,a]=[r[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 GR(e){try{return AR(e)}catch{return[]}}var lt,An,Kt,LR,Ia,$R,La=g(()=>{lt="rsp-resident-entry-unresolved";An=class extends Error{code=lt;searched;callerEntry;constructor(t){super(`${lt}: no rsp entrypoint found for the resident auto-spawn${t.callerEntry?` (caller entry: ${t.callerEntry})`:""}
|
|
45
51
|
searched:
|
|
46
|
-
${t.searched.map(
|
|
47
|
-
`)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},
|
|
48
|
-
`,{encoding:"utf8",mode:384}),await
|
|
49
|
-
${s}`),
|
|
50
|
-
`)}function
|
|
52
|
+
${t.searched.map(n=>` ${n}`).join(`
|
|
53
|
+
`)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Kt="rsp.bundle.min.mjs",LR=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,Ia=/^rsp-(.+)\.bundle\.min\.mjs$/,$R=["RED_SKILLS_DEV_PLUGIN_ROOT","CLAUDE_PLUGIN_ROOT","CODEX_PLUGIN_ROOT","OPENCODE_PLUGIN_ROOT"]});import{randomUUID as vf}from"node:crypto";import{spawn as Cf}from"node:child_process";import{readFileSync as HR}from"node:fs";import{mkdir as Na,readFile as Tf,rename as WR,rm as Ke,stat as UR,writeFile as qR}from"node:fs/promises";import{dirname as zt,join as dt,resolve as Ma}from"node:path";import{fileURLToPath as JR}from"node:url";function ze(e){let t=rk(e)??Ma(e),n=nk(t),r=q(t);return{rootDir:t,socketPath:dt(n,"rsp.sock"),pidPath:dt(n,"rsp.pid"),lockPath:dt(n,"rsp.lock"),wakeLockPath:dt(t,".red","tmp","rsp","wake.lock"),summaryPath:dt(r,"rsp-status-summary.json"),registryPath:dt(r,"rsp-resident.pid.json")}}async function zs(e,t){if(await Na(zt(e.socketPath),{recursive:!0,mode:448}),await Ef(e.socketPath,t))return;await Sf(e,t);let n=await Lf(e.lockPath);if(n)try{if(await Ef(e.socketPath,t))return;await Sf(e,t),await zR(e.socketPath);let r=YR(e,t);await kf(e.socketPath,r);return}finally{await n.close(),await Ke(e.lockPath,{force:!0})}await kf(e.socketPath)}async function Yt(e,t=200){try{return await Af(e,t)!=null}catch{return!1}}async function Af(e,t=200){let n=await On({socketPath:e,timeoutMs:t},{id:vf(),op:"ping"});return n.ok?Nf(n.value)?{version:ak(n.value.version)}:{}:null}async function Ys(e,t){if(await Na(zt(e.socketPath),{recursive:!0,mode:448}),await Yt(e.socketPath,50))return!1;let n=await Lf(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=$f(e,t);return Cf(r,[...s,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath,"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function Pf(e,t){try{await zs(e,t)}finally{await Ke(e.wakeLockPath,{force:!0})}}async function vr(e){try{let t=ZR(await Tf(e,"utf8"));return ck(t)?t:null}catch{return null}}async function Qs(e,t){let n={version:Of,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 Na(zt(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await qR(r,`${C(n)}
|
|
54
|
+
`,{encoding:"utf8",mode:384}),await WR(r,e)}async function Xs(e,t=process.pid){try{let n=await vr(e);if(n&&n.pid!==t)return;await Ke(e,{force:!0})}catch{}}async function xr(e){let t=await vr(e.registryPath);if(!t)try{return await Tf(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Vt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await Yt(t.socket_path,100);return n&&await tk(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:n?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function If(e){let t=await xr(e);return t.state==="registered-dead"||t.state==="invalid"?(await Ke(e.registryPath,{force:!0}),await xr(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Ta(t.entry.pid),await Ke(e.registryPath,{force:!0}),await Ke(t.entry.socket_path,{force:!0}),await xr(e)):t}async function kf(e,t){let n=Date.now()+KR(),r;for(;Date.now()<n;){if(await Yt(e))return;if(t){let s=t.spawnError();if(s)throw new Error($a("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error($a("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?$a("resident rsp server did not start",t):"resident rsp server did not start")}function KR(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:VR}async function zR(e){await Ke(e,{force:!0})}function YR(e,t){let[n,r]=$f(e,t),s=process.env.RSP_DEBUG==="1",o,i="",a=Cf(n,[...r,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:s?["ignore","ignore","pipe"]:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return a.on("error",c=>{o=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{i=XR(`${i}${c}`,QR)})),a.unref(),{child:a,stderrTail:()=>i,spawnError:()=>o}}function $a(e,t,n){let r=[e];n&&r.push(`error: ${n.message}`),t.child.exitCode!=null&&r.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&r.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&r.push(`stderr tail:
|
|
55
|
+
${s}`),r.join(`
|
|
56
|
+
`)}function XR(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function ZR(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return L(t)}}async function Sf(e,t){try{let n=await vr(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Vt(n.pid)){await Ke(e.registryPath,{force:!0});return}if(await Yt(n.socket_path,100))return;if(Df(t.clientVersion,n.resident_version)&&(await ek(n.pid,1500),!Vt(n.pid))){await Ke(e.registryPath,{force:!0});return}await Ta(n.pid),await Ke(e.registryPath,{force:!0})}catch{}}async function ek(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Vt(e))return;await new Promise(r=>setTimeout(r,50))}}async function tk(e){if(!e.startsWith("file://"))return!1;try{return await UR(JR(e)),!1}catch(t){return t.code==="ENOENT"}}function $f(e,t){let n=Rf(t,{rootDir:e.rootDir});return[n.command,n.args]}function nk(e){return bf({key:e,socketFileName:"rsp.sock"})}function rk(e){let t=Ma(e);for(let n=0;n<32;n++){try{let s=Da(dt(t,".git"));if(s!=null)return sk(t,s)??t;if(Da(dt(t,".git","HEAD"))!=null||Da(dt(t,".red","config.yaml"))!=null)return t}catch{}let r=zt(t);if(r===t)return null;t=r}return null}function sk(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Ma(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?zt(zt(zt(r))):null}function Da(e){try{return HR(e,"utf8")}catch{return null}}async function Ef(e,t){let n=await Af(e).catch(()=>null);return n?Df(t.clientVersion,n.version)?(await ok(e,t.clientVersion),await uk(e),!1):!0:!1}async function ok(e,t){try{await On({socketPath:e,timeoutMs:200},{id:vf(),op:"handover",clientVersion:t})}catch{}}function Df(e,t){return!e||!t?!1:ik(e,t)>0}function ik(e,t){let n=xf(e),r=xf(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function xf(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 Nf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ak(e){return typeof e=="string"&&e.length>0?e:void 0}function ck(e){return Nf(e)&&e.version===Of&&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 uk(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Yt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Of,VR,Lf,QR,Zs=g(()=>{N();Re();Js();Oa();La();La();Of=1,VR=5e3;Lf=yf;QR=8*1024});var Qt={};B(Qt,{RSP_ENTRY_UNRESOLVED:()=>lt,ResidentRspElisionStore:()=>Cr,RspResidentEntryError:()=>An,ensureResidentServer:()=>zs,kickResidentServer:()=>Ys,pingResident:()=>Yt,readResidentRegistry:()=>vr,removeResidentRegistry:()=>Xs,residentRegistryStatus:()=>xr,resolveResidentPaths:()=>ze,resolveRspEntry:()=>Ks,sweepResidentRegistry:()=>If,warmResidentServer:()=>Pf,writeResidentRegistry:()=>Qs});import{randomUUID as lk}from"node:crypto";function Mf(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Cr,Ye=g(()=>{"use strict";wf();Zs();Cr=class{constructor(t,n,r={}){this.paths=t;this.config=n;this.opts=r}metrics;lastResponseMetrics(){return this.metrics}async mint(t,n){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:n})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let n=await this.request({op:"get",handle:t});return n?Mf(n)&&n.status==="expired"?n:!Mf(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.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,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){this.opts.ensureResident!==!1&&await zs(this.paths,this.config);let n=await On(this.paths,{...t,id:lk()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});function Fa(e,t,n=Bf){let r=Math.max(0,Math.floor(e)),s=n in Ff?n:Bf,o=Ff[s],i=t?Math.floor(r*(1-.25)):null,a=t?Math.ceil(r*(1+.25)):null;return{tokens_saved:r,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:i,tokens_saved_high:a,dollars_saved_estimate_usd:Ba(r,o),dollars_saved_low_usd:i==null?null:Ba(i,o),dollars_saved_high_usd:a==null?null:Ba(a,o),pricing_model_family:s,pricing_input_usd_per_million_tokens:o,pricing_note:dk}}function Ba(e,t){return fk(Math.max(0,e)/1e6*t)}function Tr(e){return`$${e.toFixed(6)}`}function fk(e){return Math.round(e*1e6)/1e6}var Bf,Ff,dk,ja=g(()=>{"use strict";Bf="gpt-5",Ff={"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},dk="estimate derived from byte-based token estimate when token counts are estimated"});var Or={};B(Or,{isResidentEntryUnresolved:()=>Hf,reportResidentEntryDiagnostic:()=>Ha,residentConfigFor:()=>Gf,residentElisionStore:()=>Ga});function Gf(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 Ga(e,t,n={}){let r=n.paths??ze(e);return new Cr(r,Gf(t,Ms("rsp").version),{ensureResident:n.ensureResident})}function Ha(e){return Hf(e)?(jf||(jf=!0,process.stderr.write(`rsp: ${lt} \u2014 elision is off until an rsp entry is installed
|
|
51
57
|
`),process.env.RSP_DEBUG==="1"&&e instanceof Error&&process.stderr.write(`${e.message}
|
|
52
|
-
`)),!0):!1}function
|
|
53
|
-
`)}async function
|
|
54
|
-
`:`${
|
|
55
|
-
`}var
|
|
56
|
-
`)){let s=
|
|
57
|
-
`,{encoding:"utf8",mode:384}),await JR(r,e)}catch(n){throw await Tp(r,{force:!0}),n}}function ZR(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Np(e){try{return JSON.parse(e)}catch{return L(e)}}function QR(e){return $a(e)&&e.version===1&&$a(e.entries)&&Object.values(e.entries).every(Ks)}function Ks(e){return $a(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function $a(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ap,Ip,Lp,vr,La,En=h(()=>{"use strict";me();N();J();Ap="gh-etag",Ip="gh-etag-cache.toon",Lp="gh-etag-cache.json",vr=4*1024*1024;La=new Set});var Wp={};F(Wp,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ot,DEFAULT_RSP_IDLE_MS:()=>Xs,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Gp,DEFAULT_RSP_STORE_PATH:()=>Ha,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Ys,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Fp,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>jp,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>zs,DEFAULT_RSP_TTL_DAYS:()=>Ce,MIN_RSP_IDLE_MS:()=>Hp,resolveRspConfig:()=>Pe});import{existsSync as ek,readFileSync as tk}from"node:fs";import{join as rk,resolve as Bp}from"node:path";function Pe(e,t,r){let n=vp(Bp(e),rk(".red","config.yaml")),s=n?tk(n,"utf8"):"",o=Us(s,"rsp.enabled")==="true",i=Us(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ne(q(s,"rsp.ttlDays"),Ce),u=ne(We(t.RSP_EPHEMERAL_TTL_HOURS)??q(s,"rsp.ephemeralTtlHours"),Te),l=ne(q(s,"rsp.byteBudget"),Oe),p=ne(q(s,"rsp.telemetryTtlDays"),zs),d=ne(q(s,"rsp.telemetryByteBudget")??q(s,"rsp.byteBudget"),Ys),f=ne(We(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??q(s,"rsp.telemetryDrainIntervalMs"),Fp),m=ne(We(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??q(s,"rsp.telemetryDrainTimeoutMs"),jp),w=nk(We(t.RSP_IDLE_MS)??q(s,"rsp.idleMs"),Xs,Hp),_=ne(We(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??q(s,"rsp.heavyGitByteThreshold"),ot),g=sk(We(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??q(s,"rsp.measurement.holdoutShare"),Gp),y=ne(We(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??q(s,"rsp.ghEtagCacheMaxBytes"),vr),b={maxOverheadMs:ne(We(t.RSP_MAX_OVERHEAD_MS)??q(s,"rsp.overhead.maxOverheadMs"),bs),maxSelfStateBytes:ne(We(t.RSP_MAX_SELF_STATE_BYTES)??q(s,"rsp.overhead.maxSelfStateBytes"),ws),netLossFloorBytes:ne(q(s,"rsp.overhead.netLossFloorBytes"),_s),consecutiveBreaches:ne(We(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??q(s,"rsp.overhead.consecutiveBreaches"),Rs),cooldownMs:ne(q(s,"rsp.overhead.cooldownMs"),ks)},R=je(e).rootDir,T=r??t.RSP_STORE_URI??`file://${Zl(Bp(R),ek)}`;return{enabled:o,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:p,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:m,idleMs:w,heavyGitByteThreshold:_,measurementHoldoutShare:g,ghEtagCacheMaxBytes:y,overhead:b}}function q(e,t){let r=Us(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 nk(e,t,r){let n=ne(e,t);return Math.max(n,r)}function sk(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function We(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ot,Ha,Ce,Te,Oe,zs,Ys,Fp,jp,Xs,Hp,Gp,Ae=h(()=>{"use strict";Cp();me();Ls();J();En();ot=8*1024,Ha=Yl,Ce=7,Te=6,Oe=64*1024*1024,zs=90,Ys=4*1024*1024,Fp=3e4,jp=2e3,Xs=5*6e4,Hp=5e3,Gp=0});function Up(e,t=process.env){return{async mint(r,n){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),gn)),o=s(e,Pe(e,t));try{return await o.mint(r,n)}finally{await o.close()}}}}var Jp=h(()=>{"use strict";Ae()});import{spawn as ok}from"node:child_process";async function Vp(e){let{commandLine:t,options:r,cwd:n,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:z("missing command line")};let a=e.store??Up(n),c=Ep(e.spoolDir,o.id,r.captureBytes);return await new Promise(u=>{let l=!1,p=!1,d=async g=>{l||(l=!0,i.removeEventListener("abort",w),await Fs(s,o,g.verdict.status).catch(()=>{}),u(g))},f=ok(t,{cwd:n,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});f.stdout?.on("data",g=>c.stdout.write(Buffer.from(g))),f.stderr?.on("data",g=>c.stderr.write(Buffer.from(g)));let m=async(g,y)=>{if(l||p)return;p=!0,clearTimeout(_);let b=await br(f,r.terminateGraceMs),R=await qp(null,null,c,a,t);await d({verdict:{status:g,exitCode:2,summary:y,details:R},cleanupProven:b.cleaned,survivors:b.survivors})},w=()=>void m("indeterminate","command interrupted");i.addEventListener("abort",w,{once:!0});let _=setTimeout(()=>{m("timeout",`command timed out after ${Kp(r.timeoutMs)}`)},r.timeoutMs);f.once("error",g=>{clearTimeout(_),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:g.message}})}),f.once("close",(g,y)=>{if(clearTimeout(_),l||p)return;let b=g===0;qp(g,y,c,a,t).then(R=>d({verdict:{status:b?"success":"failure",exitCode:b?0:1,summary:b?"command exited successfully":`command exited with ${y??g??"unknown"}`,details:R}}))}),i.aborted&&w()})}async function Zs(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:ik(u,c,o.last_poll_at)};let l;try{l=await t()}catch(w){l=z(w instanceof Error?w.message:String(w))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=Ga(l),await Rr(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await Fs(s,o,l.status).catch(()=>{}),{verdict:l};let p=Math.min(n*4,Math.round(n*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),f=Math.min(p+d,Math.max(0,a-Date.now())),m=e.makeWakeSignal?.();await ak(f,i,m)}return await Fs(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Kp(r)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:Ga(u)}:{attempts:c}}}}async function qp(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 Ga(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function ik(e,t,r){return z("wait interrupted",{attempts:t,last_poll_at:r??null,...e?{last_observation:Ga(e)}:{}})}async function ak(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 Kp(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var zp=h(()=>{"use strict";xp();Jp();Wt();st();Rn()});var Wa,Ua,Ja,ce,X,he,Ue,xn,Qs=h(()=>{"use strict";Wa="rsp-telemetry.spool.toonl",Ua="rsp-telemetry.spool.jsonl",Ja="rsp-telemetry.spool.corrections.toonl",ce="rsp_accounting_events_v1",X="rsp_decisions_v1",he="rsp_telemetry_invocations_v1",Ue="rsp_telemetry_degradations_v1",xn="rsp_telemetry_index_v1"});function Cr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ye(e){return mt(e)??0}function mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var qa=h(()=>{"use strict"});import{randomUUID as Ka,createHash as ck}from"node:crypto";import{appendFileSync as ef,existsSync as uk,mkdirSync as tf}from"node:fs";import{mkdir as rf,readdir as lk,readFile as nf,rename as dk,rm as sf,writeFile as za}from"node:fs/promises";import{basename as Va,dirname as vn,join as Tr,resolve as Yp}from"node:path";function to(e){if(!e)return null;let t=Yp(e);for(;;){if(uk(Tr(t,".red")))return t;let r=Yp(Tr(t,".."));if(r===t)break;t=r}return null}function it(e){return Tr(W(e),Wa)}function ro(e){return Tr(W(e),Ua)}function Xa(e){return Tr(W(e),Ja)}async function at(e,t){gt(e,t)}function gt(e,t){try{let r=to(e);if(!r)return;let n=it(r);tf(vn(n),{recursive:!0}),ef(n,yk({spool_id:Ka(),event:fk(t)}),{encoding:"utf8",mode:384})}catch{}}function fk(e){return Xp(Xp(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Xp(e,t,r){let n=e[t];if(typeof n!="string")return e;let s=Buffer.byteLength(n,"utf8");if(s<=pk)return e;let o={...e};return delete o[t],ye(o[r])===0&&(o[r]=s),o.estimated=!0,o}async function mk(e){let t=to(e);if(!t)return[];let r=it(t);await rf(vn(r),{recursive:!0}).catch(()=>{});let n=await cf(t),s=[...await uf(t),...await wk(n)];return await Promise.all(n.map(o=>sf(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function Za(e,t){let r=to(e);if(!r)return;let n=it(r);await rf(vn(n),{recursive:!0}).catch(()=>{}),await bk(r);for(let s of await gk(r))await Zp(r,s,t);for(let s of await uf(r))await of(r,s,t,!0);for(let s of await cf(r))await Zp(r,s,t)}async function gk(e){let t=[it(e),ro(e)],r=vn(t[0]);return(await lk(r).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${Va(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${Va(c)}.`));if(!o)return!1;let i=`${Va(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&hk(a))}).sort().map(s=>Tr(r,s))}function hk(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Zp(e,t,r){try{let n=await af(t);for(let s of lf(n))await of(e,s,r,!1)}finally{await sf(t,{force:!0})}}async function of(e,t,r,n){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await r(s)){n&&Qp(e,{correction_id:Ka(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Qp(e,{correction_id:Ka(),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 af(e){let t="";for(let r=0;r<5;r++){let n=await nf(e,"utf8").catch(()=>"");if(n===t)return n;t=n,await new Promise(s=>setTimeout(s,2))}return t}function Or(e){try{let t=JSON.parse(e);return!Cr(t)||t.collection!==ce&&t.collection!==X&&t.collection!==he&&t.collection!==Ue?null:t}catch{return null}}function yk(e){return Nt().push(kk(e))}function Qp(e,t){try{let r=to(e);if(!r)return;let n=Xa(r);tf(vn(n),{recursive:!0});let s=Nt();ef(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 cf(e){let t=[it(e),ro(e)],r=[];for(let n of t){let s=`${n}.${process.pid}.${Date.now()}.drain`;try{await dk(n,s),await za(n,"",{flag:"wx"}).catch(()=>{}),r.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return r}async function bk(e){await Promise.all([za(it(e),"",{flag:"a"}),za(ro(e),"",{flag:"a"})]).catch(()=>{})}async function wk(e){let t=[];for(let r of e)t.push(...lf(await af(r)));return t}async function uf(e){let t=await nf(Xa(e),"utf8").catch(()=>""),r=new Map;for(let n of _k(t))r.set(n.target_spool_id,n);return[...r.values()].filter(n=>n.action==="retry"&&n.event_json).map(n=>({spool_id:n.target_spool_id,event:Or(n.event_json)??void 0})).filter(n=>n.event!==void 0)}function lf(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(Cr(o)){let i=Or(JSON.stringify(o));t.push(i?{spool_id:eo(JSON.stringify(o)),event:i}:{spool_id:eo(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){r=s;continue}if(!r){t.push({spool_id:eo(s),raw_line:s});continue}try{for(let o of Dt(`${r}
|
|
58
|
+
`)),!0):!1}function Hf(e){return typeof e=="object"&&e!==null&&e.code===lt}var jf,Xt=g(()=>{"use strict";la();Ye();jf=!1});function Qa(e){return e==="success"?0:e==="failure"?1:2}function Xa(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function ft(e,t,n){return{status:e,exitCode:Qa(e),summary:t,...n?{details:n}:{}}}function Z(e,t){return{status:"indeterminate",exitCode:2,summary:e,...t?{details:t}:{}}}function In(e,t){return{status:"running",exitCode:2,summary:e,...t?{details:t}:{}}}var Vf,Kf,zf,za,Yf,Qf,Xf,Zf,Ya,Zt=g(()=>{"use strict";Vf="rsp.wait.result",Kf="rsp.wait.registry",zf="rsp.wait.list",za={cmd:18e5,pr:27e5,run:27e5,release:72e5},Yf=16*1024,Qf=1e4,Xf=2e3,Zf=6e4,Ya={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 bk,readFile as wk}from"node:fs/promises";async function Ln(e,t){let n=e.pid;if(!n)return{cleaned:!0,escalation:"none",survivors:[]};let r=await no(n),s=[n,...r];if(s.every(c=>!en(c)))return{cleaned:!0,escalation:"none",survivors:[]};if(ep(e,"SIGTERM"),to(r,"SIGTERM"),await tp(s,t))return{cleaned:!0,escalation:"term",survivors:[]};let o=[...new Set([...s,...await no(n)])];ep(e,"SIGKILL"),to(o,"SIGKILL");let i=Math.max(1e3,t);await _k(e,i);let a=await tp(o,i);return{cleaned:a,escalation:"kill",survivors:a?[]:o.filter(en)}}function ep(e,t){let n=e.pid;if(n)try{process.platform!=="win32"?process.kill(-n,t):e.kill(t)}catch{try{e.kill(t)}catch{}}}function to(e,t){for(let n of e)try{process.kill(n,t)}catch{}}async function _k(e,t){return e.exitCode!==null||e.signalCode!==null?!0:await new Promise(n=>{let r=setTimeout(()=>n(!1),t);e.once("close",()=>{clearTimeout(r),n(!0)})})}async function tp(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(e.every(r=>!en(r)))return!0;await Rk(Math.min(25,Math.max(1,n-Date.now())))}return e.every(r=>!en(r))}async function no(e){if(process.platform!=="linux")return[];let t=new Map;for(let s of await bk("/proc").catch(()=>[])){if(!/^[1-9][0-9]*$/.test(s))continue;let o=Number(s),i=await np(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 n=[],r=[...t.get(e)??[]];for(;r.length>0;){let s=r.shift();n.push(s),r.push(...t.get(s)??[])}return n.reverse()}async function Ar(e){return(await np(e))?.[19]}async function $n(e,t){if(!en(e))return!1;if(!t)return!0;let n=await Ar(e);return n===void 0?process.platform!=="linux":n===t}function en(e){try{return process.kill(e,0),!0}catch{return!1}}async function np(e){if(process.platform!=="linux")return null;try{let t=await wk(`/proc/${e}/stat`,"utf8"),n=t.lastIndexOf(")");return n<0?null:t.slice(n+2).trim().split(/\s+/)}catch{return null}}async function Rk(e){await new Promise(t=>setTimeout(t,e))}var pt=g(()=>{"use strict"});import{constants as kk}from"node:os";async function rp(e){let t=e[1],n={timeoutMs:za.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:Qf,terminateGraceMs:Xf,probeTimeoutMs:Zf,format:"toon",captureBytes:Yf},r={kind:t,options:n};if(!t||t==="--help"||t==="-h")return{...r,kind:"help"};if(t!=="ls"&&t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...r,kind:void 0};t!=="ls"&&(n.timeoutMs=za[t]);let s=e.indexOf("--"),o=s>=0?s:e.length;for(let i=2;i<o;i++){let a=e[i];a==="--timeout"?n.timeoutMs=Pr(e[++i]??""):a==="--reason"?n.reason=e[++i]??"":a==="--signal-pid"?n.signalPid=Number(e[++i]):a==="--signal"?n.signal=xk(e[++i]??""):a==="--notify-cmd"?n.notifyCmd=e[++i]??"":a==="--notify-timeout"?n.notifyTimeoutMs=Pr(e[++i]??""):a==="--terminate-grace"?n.terminateGraceMs=Pr(e[++i]??""):a==="--probe-timeout"?n.probeTimeoutMs=Pr(e[++i]??""):a==="--result-file"?n.resultFile=e[++i]??"":a==="--json"?n.format="json":a==="--capture-bytes"?n.captureBytes=Ek(e[++i]??"","capture bytes"):t==="run"&&a==="--branch"?r.branch=e[++i]??"":t==="run"&&a==="--latest"?r.latest=!0:t==="release"&&a==="--tag"?r.tagGlob=e[++i]??"":!a.startsWith("--")&&!r.target&&(r.target=a)}return await Sk(n),t==="cmd"&&(r.commandLine=s>=0?e.slice(s+1).join(" "):""),r}async function Sk(e){if(!(e.signal in kk.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(!en(e.signalPid))throw new Error(`signal pid is not running: ${e.signalPid}`);e.signalPidStartTime=await Ar(e.signalPid)}if(e.resultFile!==void 0&&!e.resultFile.trim())throw new Error("invalid result file: empty path")}function Pr(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let n=Number(t[1]),r=t[2]??"ms";return r==="ms"?n:r==="s"?n*1e3:r==="m"?n*6e4:n*60*6e4}function Ir(e,t,n=process.env){let r=n[e];if(!r)return t;try{return Pr(r)}catch{return t}}function Ek(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function xk(e){return e.startsWith("SIG")?e:`SIG${e}`}var sp=g(()=>{"use strict";Zt();pt()});import{existsSync as Za,readFileSync as vk,statSync as Ck}from"node:fs";import{basename as op,dirname as ro,isAbsolute as Tk,join as ip,resolve as Lr}from"node:path";function so(e,t=process.env){let n=Lr(e);if(fa.map(i=>t[i]).find(Boolean))return Vd({startDir:n,env:t,exists:Za});let s=Ak(n),o=Ok(n,s);return o||(s??n)}function Ok(e,t){let n=e;for(;;){if(Za(ip(n,".red")))return n;if(t&&n===t)return null;let r=Lr(n,"..");if(r===n)return null;n=r}}function Ak(e){let t=e;for(;;){let n=ip(t,".git");if(Za(n))return Lk(n)?t:Pk(n)??t;let r=Lr(t,"..");if(r===t)return null;t=r}}function Pk(e){let t=Ik(e);if(!t)return null;let n=ro(t),r=ro(n);return op(n)!=="worktrees"||op(r)!==".git"?null:ro(r)}function Ik(e){let t;try{t=vk(e,"utf8")}catch{return null}let n=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!n)return null;let r=n[1].trim();return Tk(r)?Lr(r):Lr(ro(e),r)}function Lk(e){try{return Ck(e).isDirectory()}catch{return!1}}var ec=g(()=>{Re()});import{join as $k}from"node:path";function Nk(e,t=process.env){return so(e,t)}function Dn(e,t=process.env){return Jd(Nk(e,t))}function ap(e,t=process.env){return $k(Dn(e,t),Dk)}var Dk,tc=g(()=>{"use strict";Re();ec();Dk="spool"});import{randomUUID as Mk}from"node:crypto";import{existsSync as Bk}from"node:fs";import{mkdir as Fk,readdir as jk,readFile as Gk,rename as Hk,rm as nc,writeFile as Wk}from"node:fs/promises";import{dirname as Uk,join as up}from"node:path";function lp(e,t,n=process.env){return up(Dn(e,n),`${t}${qk}`)}async function Nn(e,t){await rc(e,`${J(t)}
|
|
59
|
+
`)}async function oo(e,t,n){t.status=n,await Nn(e,t)}async function io(e,t=process.env){let n=Dn(e,t);if(!Bk(n))return[];let r=await jk(n).catch(()=>[]),s=[];for(let o of r.filter(i=>Jk.some(a=>i.endsWith(a)))){let i=up(n,o),a=await Vk(i);if(!a){await nc(i,{force:!0});continue}if(!await Kk(a)){await nc(i,{force:!0});continue}s.push(a)}return s}async function Vk(e){let t;try{t=await Gk(e,"utf8")}catch{return null}let n=t.trim();if(!n)return null;let r=zk(n);return r&&Object.keys(r).length>0?r:null}async function Kk(e){let t=typeof e.pid=="number"?e.pid:0;if(!t||!Number.isSafeInteger(t)||t<=0)return!1;let n=typeof e.pid_start_time=="string"?e.pid_start_time:void 0;return await $n(t,n)}function zk(e){try{let t=L(e);if(cp(t))return t}catch{}try{let t=JSON.parse(e);if(cp(t))return t}catch{}return null}async function rc(e,t){await Fk(Uk(e),{recursive:!0});let n=`${e}.tmp-${process.pid}-${Mk()}`;try{await Wk(n,t,"utf8"),await Hk(n,e)}finally{await nc(n,{force:!0})}}function sc(e){return{schema:Kf,version:1,...e}}function cp(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var qk,Jk,Dr=g(()=>{"use strict";N();ct();Zt();tc();pt();qk=".toon",Jk=[".toon",".json"]});function Mn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Qe(e){return Mn(e)?e:{}}function tn(e){return Array.isArray(e)?e.filter(Mn):[]}function ee(e,t){let n=e[t];return typeof n=="string"?n:""}function Bn(e,t){let n=e[t];return typeof n=="number"?n:0}function oc(e){let t=JSON.parse(e);if(!Mn(t))throw new Error("expected JSON object");return t}function ao(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}var co=g(()=>{"use strict"});import{spawn as Yk}from"node:child_process";import{resolve as Qk}from"node:path";async function dp(e,t,n){let r=[];if(e.signalPid){let s=await Xk(e);s&&r.push(s)}if(e.notifyCmd?.trim()){let s=await Zk(e,t,n);s&&r.push({hook:"notify-cmd",...s})}return r.length===0?{status:"success"}:{status:"failure",errors:r}}async function Xk(e){let t=e.signalPid;if(!await $n(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(n){return{hook:"signal-pid",error:fp(n),pid:t,signal:e.signal}}}async function Zk(e,t,n){let r=Qe(t.wait),s=Qe(t.verdict);return await eS(e.notifyCmd,n,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?Qk(n,e.resultFile):"",RSP_WAIT_STATUS:String(r.status??"indeterminate"),RSP_WAIT_EXIT_CODE:String(s.target_exit_code??2),RSP_WAIT_TARGET:String(r.target??""),RSP_WAIT_RESULT_SCHEMA:"rsp.wait.result@1"})}async function eS(e,t,n,r,s){return await new Promise(o=>{let i=!1,a=!1,c=f=>{i||(i=!0,o(f))},u=Yk(e,{cwd:t,shell:!0,stdio:"ignore",env:s,detached:process.platform!=="win32"}),l=setTimeout(()=>{a=!0,Ln(u,r).then(f=>c({error:`timed out after ${n}ms`,...f.cleaned?{}:{survivors:f.survivors}}))},n);u.once("error",f=>{clearTimeout(l),c({error:fp(f)})}),u.once("close",(f,d)=>{clearTimeout(l),!a&&c(f===0?null:{error:`exited with ${d??f??"unknown"}`,status:f??null,signal:d??null})})})}function fp(e){return e instanceof Error?e.message:String(e)}var pp=g(()=>{"use strict";co();pt()});import{resolve as tS}from"node:path";async function mp(e){let{kind:t,entry:n,options:r,cwd:s}=e,o=nS(e.verdict,e.cleanupProven,e.survivors),i=new Date().toISOString(),a=Nr(t,n,o,{status:"pending"},i);await Mr(r.resultFile,a,r.format);let c=await dp(r,a,s),u=Nr(t,n,o,c,i);return await Mr(r.resultFile,u,r.format),{result:u,exitCode:gp(o,c)}}function gp(e,t){return t.status!=="success"||e.status==="running"?2:Qa(e.status)}function nS(e,t,n=[]){return t!==!1?e:{status:"indeterminate",exitCode:2,summary:`${e.summary}; could not verify process cleanup`,details:{...e.details??{},cleanup:{verified:!1,survivors:n}}}}function Nr(e,t,n,r,s){return{schema:Vf,version:1,wait:{id:t.id,target:t.target,kind:e,status:n.status,reason:t.reason,started_at:t.started_at,completed_at:s,poll_tier:t.poll_tier},verdict:{exit_code:gp(n,r),target_exit_code:n.exitCode,summary:n.summary,delivery:r,...n.details?{details:n.details}:{}}}}async function Mr(e,t,n){e&&await rc(tS(e),Fn(t,n))}function Fn(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
|
|
60
|
+
`:`${J(e)}
|
|
61
|
+
`}var hp=g(()=>{"use strict";ct();Zt();Dr();pp()});import{createWriteStream as rS,mkdirSync as sS}from"node:fs";import{readFile as oS,rm as iS}from"node:fs/promises";import{dirname as aS}from"node:path";import{join as yp}from"node:path";function bp(e,t,n){return{stdout:new uo(n,yp(e,`${t}.stdout.bin`)),stderr:new uo(n,yp(e,`${t}.stderr.bin`))}}function cS(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!uS(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function uS(e){for(let t of e)if(t<=8||t>=11&&t<=31&&t!==13||t===127)return!0;return!1}var uo,wp=g(()=>{"use strict";uo=class{constructor(t,n){this.limit=t;this.spoolPath=n}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 n=this.limit-this.headBytes;if(n>0){let r=t.subarray(0,n);this.head.push(r),this.headBytes+=r.length}if(this.total>this.limit){let r=n>0?t.subarray(n):t;this.openSpool(),r.length>0&&this.appendSpool(r)}}async finish(t,n){this.closed=!0;let r=Buffer.concat(this.head),s=this.total>this.headBytes,o={bytes:this.total,...cS(r),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 oS(this.spoolPath);o.handle=await t.mint(Buffer.concat([r,i]),{command:n,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{sS(aS(this.spoolPath),{recursive:!0}),t=rS(this.spoolPath,{flags:"w"})}catch(n){this.spoolError=n instanceof Error?n.message:String(n);return}t.on("error",n=>{this.spoolError=n instanceof Error?n.message:String(n)}),this.spool=t}appendSpool(t){let n=this.spool;n&&(this.spoolReady=this.spoolReady.then(()=>new Promise(r=>{n.write(t)?r():n.once("drain",()=>r())})))}async closeSpool(){let t=this.spool;t&&(this.spool=null,await this.spoolReady.catch(()=>{}),await new Promise(n=>t.end(()=>n())))}async discardSpool(){await iS(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as lS,readFileSync as _D}from"node:fs";import{dirname as dS,join as fS}from"node:path";function _p(e,t){let n=e;for(let r=0;r<16;r++){let s=fS(n,t);if(lS(s))return s;let o=dS(n);if(o===n)break;n=o}return null}function pS(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function lo(e,t){let n=[];for(let r of e.split(`
|
|
62
|
+
`)){let s=r.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(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(f=>f.key).join(".")===t)return pS(u)}}var Rp=g(()=>{});var Pp={};B(Pp,{DEFAULT_GH_ETAG_CACHE_MAX_BYTES:()=>Gn,GH_ETAG_CACHE_DIR_NAME:()=>xp,LEGACY_GH_ETAG_CACHE_FILE:()=>vp,LEGACY_GH_ETAG_CACHE_JSON_FILE:()=>Cp,enforceGhEtagCacheCeiling:()=>dc,ghEtagCacheDir:()=>fo,ghEtagEntryPath:()=>po,isCacheEntry:()=>go,legacyGhEtagCachePaths:()=>cc,migrateLegacyGhEtagCache:()=>pc,readGhEtagCache:()=>mo,readGhEtagEntry:()=>uc,resetGhEtagCacheMigrationMemo:()=>_S,sweepGhEtagCache:()=>fc,writeGhEtagEntry:()=>lc});import{existsSync as mS}from"node:fs";import{mkdir as gS,readdir as hS,rename as yS,rm as kp,stat as Sp,unlink as Ep,writeFile as bS}from"node:fs/promises";import{dirname as wS,join as jn}from"node:path";function fo(e){return jn(q(e),xp)}function po(e,t){return jn(fo(e),`${ES(t)}.toon`)}function cc(e){let t=q(e);return[jn(t,vp),jn(t,Cp)]}async function uc(e,t){await pc(e);try{let n=Ap(await Us(po(e,t)));return go(n)?n:void 0}catch{return}}async function lc(e,t,n={}){return await Op(po(e,t.key),t),await dc(e,n.maxBytes??Gn)}async function dc(e,t=Gn){let n=await kS(e),r=n.reduce((o,i)=>o+i.bytes,0);if(r<=t)return{evictedEntries:0,bytes:r};n.sort((o,i)=>o.mtimeMs-i.mtimeMs||o.path.localeCompare(i.path));let s=0;for(let o of n){if(r<=t)break;try{await Ep(o.path),r-=o.bytes,s+=1}catch{}}return{evictedEntries:s,bytes:r}}async function fc(e,t={}){let n=await pc(e,{force:!0}),r=await RS(e);return{...await dc(e,t.maxBytes??Gn),reclaimedTmp:r,migratedEntries:n}}async function mo(e){for(let t of cc(e))try{let n=Ap(await Us(t));if(xS(n))return n}catch{}return{version:1,entries:{}}}async function pc(e,t={}){if(!t.force&&ic.has(e))return 0;ic.add(e);let n=cc(e).filter(o=>mS(o));if(n.length===0)return 0;let r=await mo(e),s=0;for(let[o,i]of Object.entries(r.entries)){if(!go(i))continue;let a=po(e,o);await SS(a)||(await Op(a,{...i,key:o}),s+=1)}for(let o of n)await kp(o,{force:!0});return s}function _S(){ic.clear()}async function RS(e){let t=0;for(let n of[q(e),fo(e)])for(let r of await Tp(n))if(r.endsWith(".tmp"))try{await Ep(jn(n,r)),t+=1}catch{}return t}async function kS(e){let t=fo(e),n=[];for(let r of await Tp(t)){if(!r.endsWith(".toon"))continue;let s=jn(t,r);try{let o=await Sp(s);o.isFile()&&n.push({path:s,bytes:o.size,mtimeMs:o.mtimeMs})}catch{}}return n}async function Tp(e){try{return await hS(e)}catch{return[]}}async function SS(e){try{return await Sp(e),!0}catch{return!1}}async function Op(e,t){await gS(wS(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;try{await bS(n,`${C(t)}
|
|
63
|
+
`,{encoding:"utf8",mode:384}),await yS(n,e)}catch(r){throw await kp(n,{force:!0}),r}}function ES(e){if(!/^[A-Za-z0-9_-]{1,128}$/.test(e))throw new Error(`unsafe gh etag cache key: ${e}`);return e}function Ap(e){try{return JSON.parse(e)}catch{return L(e)}}function xS(e){return ac(e)&&e.version===1&&ac(e.entries)&&Object.values(e.entries).every(go)}function go(e){return ac(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function ac(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var xp,vp,Cp,Gn,ic,Br=g(()=>{"use strict";Re();N();V();xp="gh-etag",vp="gh-etag-cache.toon",Cp="gh-etag-cache.json",Gn=4*1024*1024;ic=new Set});var Mp={};B(Mp,{DEFAULT_RSP_BYTE_BUDGET:()=>Be,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Me,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>mt,DEFAULT_RSP_IDLE_MS:()=>bo,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>Np,DEFAULT_RSP_STORE_PATH:()=>mc,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>yo,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Lp,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>$p,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>ho,DEFAULT_RSP_TTL_DAYS:()=>Ne,MIN_RSP_IDLE_MS:()=>Dp,resolveRspConfig:()=>Fe});import{existsSync as vS,readFileSync as CS}from"node:fs";import{join as TS,resolve as Ip}from"node:path";function Fe(e,t,n){let r=_p(Ip(e),TS(".red","config.yaml")),s=r?CS(r,"utf8"):"",o=lo(s,"rsp.enabled")==="true",i=lo(s,"rsp.proxy.enabled"),a=i===void 0?o:i==="true",c=ue(z(s,"rsp.ttlDays"),Ne),u=ue(Xe(t.RSP_EPHEMERAL_TTL_HOURS)??z(s,"rsp.ephemeralTtlHours"),Me),l=ue(z(s,"rsp.byteBudget"),Be),f=ue(z(s,"rsp.telemetryTtlDays"),ho),d=ue(z(s,"rsp.telemetryByteBudget")??z(s,"rsp.byteBudget"),yo),m=ue(Xe(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??z(s,"rsp.telemetryDrainIntervalMs"),Lp),p=ue(Xe(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??z(s,"rsp.telemetryDrainTimeoutMs"),$p),b=OS(Xe(t.RSP_IDLE_MS)??z(s,"rsp.idleMs"),bo,Dp),_=ue(Xe(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??z(s,"rsp.heavyGitByteThreshold"),mt),h=AS(Xe(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??z(s,"rsp.measurement.holdoutShare"),Np),y=ue(Xe(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??z(s,"rsp.ghEtagCacheMaxBytes"),Gn),w={maxOverheadMs:ue(Xe(t.RSP_MAX_OVERHEAD_MS)??z(s,"rsp.overhead.maxOverheadMs"),Bs),maxSelfStateBytes:ue(Xe(t.RSP_MAX_SELF_STATE_BYTES)??z(s,"rsp.overhead.maxSelfStateBytes"),Fs),netLossFloorBytes:ue(z(s,"rsp.overhead.netLossFloorBytes"),js),consecutiveBreaches:ue(Xe(t.RSP_OVERHEAD_CONSECUTIVE_BREACHES)??z(s,"rsp.overhead.consecutiveBreaches"),Gs),cooldownMs:ue(z(s,"rsp.overhead.cooldownMs"),Hs)},k=ze(e).rootDir,T=n??t.RSP_STORE_URI??`file://${qd(Ip(k),vS)}`;return{enabled:o,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:m,telemetryDrainTimeoutMs:p,idleMs:b,heavyGitByteThreshold:_,measurementHoldoutShare:h,ghEtagCacheMaxBytes:y,overhead:w}}function z(e,t){let n=lo(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function ue(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function OS(e,t,n){let r=ue(e,t);return Math.max(r,n)}function AS(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function Xe(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var mt,mc,Ne,Me,Be,ho,yo,Lp,$p,bo,Dp,Np,je=g(()=>{"use strict";Rp();Re();Zs();V();Br();mt=8*1024,mc=Wd,Ne=7,Me=6,Be=64*1024*1024,ho=90,yo=4*1024*1024,Lp=3e4,$p=2e3,bo=5*6e4,Dp=5e3,Np=0});function Bp(e,t=process.env){return{async mint(n,r){let{residentElisionStore:s}=await Promise.resolve().then(()=>(Xt(),Or)),o=s(e,Fe(e,t));try{return await o.mint(n,r)}finally{await o.close()}}}}var Fp=g(()=>{"use strict";je()});import{spawn as PS}from"node:child_process";async function Gp(e){let{commandLine:t,options:n,cwd:r,registryPath:s,entry:o,signal:i}=e;if(!t.trim())return{verdict:Z("missing command line")};let a=e.store??Bp(r),c=bp(e.spoolDir,o.id,n.captureBytes);return await new Promise(u=>{let l=!1,f=!1,d=async h=>{l||(l=!0,i.removeEventListener("abort",b),await oo(s,o,h.verdict.status).catch(()=>{}),u(h))},m=PS(t,{cwd:r,shell:!0,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"});m.stdout?.on("data",h=>c.stdout.write(Buffer.from(h))),m.stderr?.on("data",h=>c.stderr.write(Buffer.from(h)));let p=async(h,y)=>{if(l||f)return;f=!0,clearTimeout(_);let w=await Ln(m,n.terminateGraceMs),k=await jp(null,null,c,a,t);await d({verdict:{status:h,exitCode:2,summary:y,details:k},cleanupProven:w.cleaned,survivors:w.survivors})},b=()=>void p("indeterminate","command interrupted");i.addEventListener("abort",b,{once:!0});let _=setTimeout(()=>{p("timeout",`command timed out after ${Hp(n.timeoutMs)}`)},n.timeoutMs);m.once("error",h=>{clearTimeout(_),c.stdout.discard(),c.stderr.discard(),d({verdict:{status:"failure",exitCode:1,summary:h.message}})}),m.once("close",(h,y)=>{if(clearTimeout(_),l||f)return;let w=h===0;jp(h,y,c,a,t).then(k=>d({verdict:{status:w?"success":"failure",exitCode:w?0:1,summary:w?"command exited successfully":`command exited with ${y??h??"unknown"}`,details:k}}))}),i.aborted&&b()})}async function wo(e){let{probe:t,timeoutMs:n,baseSleepMs:r,registryPath:s,entry:o,signal:i}=e,a=Date.now()+n,c=0,u;for(;Date.now()<a;){if(i.aborted)return{verdict:IS(u,c,o.last_poll_at)};let l;try{l=await t()}catch(b){l=Z(b instanceof Error?b.message:String(b))}if(u=l,o.attempts=++c,o.last_poll_at=new Date().toISOString(),o.last_observation=gc(l),await Nn(s,o).catch(()=>{}),l.status!=="running"&&l.status!=="indeterminate")return await oo(s,o,l.status).catch(()=>{}),{verdict:l};let f=Math.min(r*4,Math.round(r*Math.pow(1.25,c-1))),d=Math.floor(Math.random()*1e3),m=Math.min(f+d,Math.max(0,a-Date.now())),p=e.makeWakeSignal?.();await LS(m,i,p)}return await oo(s,o,"timeout").catch(()=>{}),{verdict:{status:"timeout",exitCode:2,summary:`timed out after ${Hp(n)}`,details:u?{attempts:c,last_poll_at:o.last_poll_at??null,last_observation:gc(u)}:{attempts:c}}}}async function jp(e,t,n,r,s){let[o,i]=await Promise.all([n.stdout.finish(r,`${s} # stdout`),n.stderr.finish(r,`${s} # stderr`)]);return{status:e??null,signal:t??null,stdout:o,stderr:i}}function gc(e){return{status:e.status,exit_code:e.exitCode,summary:e.summary,...e.details?{details:e.details}:{}}}function IS(e,t,n){return Z("wait interrupted",{attempts:t,last_poll_at:n??null,...e?{last_observation:gc(e)}:{}})}async function LS(e,t,n){t.aborted||e<=0||n?.aborted||await new Promise(r=>{let s=setTimeout(o,e);function o(){clearTimeout(s),t.removeEventListener("abort",i),n?.removeEventListener("abort",a),r()}let i=()=>o(),a=()=>o();t.addEventListener("abort",i,{once:!0}),n?.addEventListener("abort",a,{once:!0})})}function Hp(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}var Wp=g(()=>{"use strict";wp();Fp();Zt();pt();Dr()});var hc,yc,bc,pe,te,Se,Ze,Fr,_o=g(()=>{"use strict";hc="rsp-telemetry.spool.toonl",yc="rsp-telemetry.spool.jsonl",bc="rsp-telemetry.spool.corrections.toonl",pe="rsp_accounting_events_v1",te="rsp_decisions_v1",Se="rsp_telemetry_invocations_v1",Ze="rsp_telemetry_degradations_v1",Fr="rsp_telemetry_index_v1"});function Hn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ee(e){return St(e)??0}function St(e){return typeof e=="number"&&Number.isFinite(e)?e:null}var wc=g(()=>{"use strict"});import{randomUUID as Rc,createHash as $S}from"node:crypto";import{appendFileSync as Kp,existsSync as DS,mkdirSync as zp}from"node:fs";import{mkdir as Yp,readdir as NS,readFile as Qp,rename as MS,rm as Xp,writeFile as kc}from"node:fs/promises";import{basename as _c,dirname as jr,join as Wn,resolve as Up}from"node:path";function ko(e){if(!e)return null;let t=Up(e);for(;;){if(DS(Wn(t,".red")))return t;let n=Up(Wn(t,".."));if(n===t)break;t=n}return null}function gt(e){return Wn(q(e),hc)}function So(e){return Wn(q(e),yc)}function Ec(e){return Wn(q(e),bc)}async function ht(e,t){Et(e,t)}function Et(e,t){try{let n=ko(e);if(!n)return;let r=gt(n);zp(jr(r),{recursive:!0}),Kp(r,WS({spool_id:Rc(),event:FS(t)}),{encoding:"utf8",mode:384})}catch{}}function FS(e){return qp(qp(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function qp(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=BS)return e;let o={...e};return delete o[t],Ee(o[n])===0&&(o[n]=s),o.estimated=!0,o}async function jS(e){let t=ko(e);if(!t)return[];let n=gt(t);await Yp(jr(n),{recursive:!0}).catch(()=>{});let r=await tm(t),s=[...await nm(t),...await qS(r)];return await Promise.all(r.map(o=>Xp(o,{force:!0}))),s.map(o=>JSON.stringify(o.event))}async function xc(e,t){let n=ko(e);if(!n)return;let r=gt(n);await Yp(jr(r),{recursive:!0}).catch(()=>{}),await US(n);for(let s of await GS(n))await Jp(n,s,t);for(let s of await nm(n))await Zp(n,s,t,!0);for(let s of await tm(n))await Jp(n,s,t)}async function GS(e){let t=[gt(e),So(e)],n=jr(t[0]);return(await NS(n).catch(()=>[])).filter(s=>t.some(o=>s.startsWith(`${_c(o)}.`)&&s.endsWith(".drain"))).filter(s=>{let o=t.find(c=>s.startsWith(`${_c(c)}.`));if(!o)return!1;let i=`${_c(o)}.`,a=Number(s.slice(i.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&HS(a))}).sort().map(s=>Wn(n,s))}function HS(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Jp(e,t,n){try{let r=await em(t);for(let s of rm(r))await Zp(e,s,n,!1)}finally{await Xp(t,{force:!0})}}async function Zp(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&Vp(e,{correction_id:Rc(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Vp(e,{correction_id:Rc(),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 em(e){let t="";for(let n=0;n<5;n++){let r=await Qp(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function Un(e){try{let t=JSON.parse(e);return!Hn(t)||t.collection!==pe&&t.collection!==te&&t.collection!==Se&&t.collection!==Ze?null:t}catch{return null}}function WS(e){return Jt().push(KS(e))}function Vp(e,t){try{let n=ko(e);if(!n)return;let r=Ec(n);zp(jr(r),{recursive:!0});let s=Jt();Kp(r,s.push({correction_id:t.correction_id,target_spool_id:t.target_spool_id,action:t.action,created_at:t.created_at,event_json:t.event_json??null}),{encoding:"utf8",mode:384})}catch{}}async function tm(e){let t=[gt(e),So(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await MS(r,s),await kc(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(o){if(o.code!=="ENOENT")continue}}return n}async function US(e){await Promise.all([kc(gt(e),"",{flag:"a"}),kc(So(e),"",{flag:"a"})]).catch(()=>{})}async function qS(e){let t=[];for(let n of e)t.push(...rm(await em(n)));return t}async function nm(e){let t=await Qp(Ec(e),"utf8").catch(()=>""),n=new Map;for(let r of JS(t))n.set(r.target_spool_id,r);return[...n.values()].filter(r=>r.action==="retry"&&r.event_json).map(r=>({spool_id:r.target_spool_id,event:Un(r.event_json)??void 0})).filter(r=>r.event!==void 0)}function rm(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s){try{let o=JSON.parse(s);if(Hn(o)){let i=Un(JSON.stringify(o));t.push(i?{spool_id:Ro(JSON.stringify(o)),event:i}:{spool_id:Ro(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n){t.push({spool_id:Ro(s),raw_line:s});continue}try{for(let o of qt(`${n}
|
|
58
64
|
${s}
|
|
59
|
-
`))
|
|
65
|
+
`))Sc(o)&&zS(o)&&t.push({spool_id:o.spool_id,event:sm(o)})}catch{s.startsWith("{")&&t.push({spool_id:Ro(s),raw_line:s})}}}return t}function JS(e){return VS(e).map(YS).filter(t=>t!==null)}function VS(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let o=JSON.parse(s);Sc(o)&&t.push(o)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let o of qt(`${n}
|
|
60
66
|
${s}
|
|
61
|
-
`))
|
|
62
|
-
`,"utf8"),t]):null}function
|
|
63
|
-
`,"utf8"),await
|
|
67
|
+
`))Sc(o)&&t.push(o)}catch{}}}return t}function Ro(e){return`legacy:${$S("sha256").update(e).digest("hex").slice(0,24)}`}function KS(e){let t={spool_id:e.spool_id};for(let[n,r]of Object.entries(e.event??{}))n!=="spool_id"&&(typeof r=="string"||typeof r=="number"||typeof r=="boolean"||r===null?t[n]=r:r!==void 0&&(t[n]=JSON.stringify(r)));return t}function sm(e){let{spool_id:t,...n}=e;return Un(JSON.stringify(n))}function zS(e){return typeof e.spool_id=="string"&&sm(e)!==null}function YS(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 Sc(e){return Hn(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}var BS,om=g(()=>{"use strict";Re();N();_o();wc();BS=64*1024});function Eo(e){return e.trim().split(/\s+/).filter(Boolean)}function Gr(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Hr(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function xe(e){let t=Eo(e);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:nn(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:nn(t)&&t[1]?`gh ${t[1]} json-jq`:nn(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 nn(e){return e[0]==="gh"&&e.some(QS)}function QS(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function qn(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Wr=g(()=>{"use strict"});var Y,xo=g(()=>{"use strict";je();Y="rsp_elisions_v1"});import{spawnSync as Jr}from"node:child_process";import{createHash as Tc}from"node:crypto";import{existsSync as XS}from"node:fs";import{mkdir as ZS,readFile as eE,readdir as im,rename as tE,writeFile as nE}from"node:fs/promises";import{homedir as rE}from"node:os";import{basename as sE,dirname as oE,join as Ur}from"node:path";import{fileURLToPath as iE}from"node:url";import{gunzipSync as aE,gzipSync as cE}from"node:zlib";function Vr(e,t){return`el:${Tc("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 xt(e){return`record:${e.slice(3)}`}function sn(e){return`expired:${e.slice(3)}`}function To(){return"index:v1"}function uE(e){return`blob:${e}`}function am(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function yt(e){let t=Eo(e),n=t[0]??"";if(n==="cat")return"derivable";if(n==="git"){let r=t[1]??"";return r==="log"||r==="diff"||r==="blame"||r==="show"?"derivable":Oo(t)?"re-executable":"ephemeral"}return"ephemeral"}function Kr(e){return Lo(e.storage_class)?e.storage_class:yt(e.command)}function cm(e){return Lo(e.storage_class)?e.storage_class:yt(e.command)}function Oc(e){let t=fE(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=cm(r);if(t[s].records+=1,t[s].raw_bytes+=r.raw_bytes??r.bytes,r.blob_key){if(n[s].has(r.blob_key))continue;n[s].add(r.blob_key)}t[s].bytes+=r.bytes}return t}function Ac(e,t,n){let r=t.getTime();return[...e].sort((s,o)=>o.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,n)).map(s=>{let o=Math.max(0,Math.floor((r-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:o,age_display:lE(o),storage_class:cm(s),recover:`rsp show ${s.handle}`}})}function lE(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let n=Math.floor(t/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function Pc(e,t,n,r){let s=t==="ephemeral"?r*60*60*1e3:n*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function on(e){let t=0,n=new Set;for(let r of e){if(r.blob_key){if(n.has(r.blob_key))continue;n.add(r.blob_key)}t+=r.bytes}return t}function Ic(e,t){let n=process.cwd(),r=Jr("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=Jr("git",["hash-object","-w","--stdin"],{cwd:n,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:n,object_ids:[o],working_tree_fingerprint:dE(n),original_bytes:e.length}:null}function dE(e){let t=vc(e,["rev-parse","HEAD"])||"unborn",n=vc(e,["write-tree"])||"no-index",r=vc(e,["status","--porcelain=v1","-z"])||"";return Tc("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function vc(e,t){let n=Jr("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function Lc(e,t){let n=Eo(t);if(!Oo(n))return null;let r=fm(process.cwd(),n,e.length);return!r||rn(r)!==rn(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:n,original_bytes:e.length,content_hash:rn(e)}}function Oo(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 rn(e){return Tc("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function $c(e,t,n,r){return t?Buffer.byteLength(JSON.stringify(t),"utf8"):n?Buffer.byteLength(JSON.stringify(n),"utf8"):r?r.stored_bytes:e.length}function Dc(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 Nc(e,t,n){let r=cE(e);return{key:uE(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function um(e){try{let t=aE(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function lm(e){let t=e.object_ids[0];if(!t)return null;let n=Jr("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return n.status!==0||n.stdout.length!==e.original_bytes?null:n.stdout}function dm(e){if(!Oo(e.argv))return null;let t=fm(e.cwd,e.argv,e.original_bytes);return t?rn(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
|
|
68
|
+
`,"utf8"),t]):null}function fm(e,t,n){let r=t[0];if(!r)return null;let s=Jr(r,t.slice(1),{cwd:e,encoding:"buffer",maxBuffer:Math.max(n+1024,1024*1024)});return s.status!==0||s.signal?null:s.stdout}function fE(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function zr(e){return/^el:[a-f0-9]{12}$/.test(e)}function Co(e){return/^blob:[a-f0-9]{64}$/.test(e)}function pm(e){if(!qr(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let n=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:n,options:{includeSuperseded:e.includeSuperseded===!0,scope:qr(e.scope)?e.scope:void 0,ranking:qr(e.ranking)?e.ranking:void 0}}}function mm(e){if(!qr(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let n=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,r=Array.isArray(e.ignore)?e.ignore.filter(s=>typeof s=="string"):void 0;return{cwd:t,maxFiles:n,ignore:r}}function qr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function gm(e,t,n){let r=[],s=new Set([".git","node_modules",".red",...n]);async function o(i){if(r.length>=t)return;let a=await im(i,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let u=Ur(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)&&r.push(u)}}return await o(e),r}function hm(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,s=qr(r)?r:{},o=String(e.label??e.LABEL??s.title??`memory-${n}`),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(n),rid:n,label:o,node_type:i,score:u.length||1,excerpt:a.slice(0,500)}}function Ao(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Yr(e){if(!ve(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=mE(e.derivation_recipe),r=gE(e.reexecution_recipe),s=e.blob_key,o=typeof s=="string"&&Co(s);return e.collection===Y&&typeof e.handle=="string"&&zr(e.handle)&&(t||n||r||o)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Bc(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&Co(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&pE(e.loss)&&(e.storage_class===void 0||Lo(e.storage_class))}function Mc(e){return!ve(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!ve(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&zr(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&(t.raw_bytes===void 0||typeof t.raw_bytes=="number")&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&(t.storage_class===void 0||Lo(t.storage_class))&&(n===void 0||typeof n=="string"&&Co(n))})}function Po(e){return ve(e)&&typeof e.key=="string"&&Co(e.key)&&Bc(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 Io(e){return ve(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function pE(e){return ve(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Lo(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function mE(e){return ve(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 gE(e){return ve(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&Oo(e.argv)&&typeof e.original_bytes=="number"&&Bc(e.content_hash)}function Bc(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function ve(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function ym(e){try{let r=(await eE(e,"utf8")).trim();if(r==="")return vo();let s;try{s=JSON.parse(r)}catch{s=L(r)}if(hE(s))return{...s,blobs:s.blobs??{}}}catch(n){if(n.code==="ENOENT"){let s=vo();return await Jn(e,s),s}let r=vo();return await Jn(e,r),r}let t=vo();return await Jn(e,t),t}async function bm(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function wm(e){return sE(e)==="red-skills.rdb"}async function $o(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Ur(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Ur(rE(),".cache","red-skills","bundles")),t=Ur(e,"reddb"),n;try{n=await im(t)}catch{return}n.sort().reverse();for(let r of n){let s=Ur(t,r,process.platform==="win32"?"red.exe":"red");if(XS(s)){process.env.REDDB_BIN=s;return}}}async function Jn(e,t){await ZS(oE(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await nE(n,`${C(Cc(t))}
|
|
69
|
+
`,"utf8"),await tE(n,e)}function Cc(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=>Cc(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=Cc(r));return t}return String(e)}function vo(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function hE(e){return ve(e)&&e.version===1&&ve(e.records)&&Object.values(e.records).every(Yr)&&(e.blobs===void 0||ve(e.blobs)&&Object.values(e.blobs).every(Po))&&ve(e.tombstones)&&Object.values(e.tombstones).every(Io)&&Mc(e.index)}function _m(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return iE(e)}var Do=g(()=>{"use strict";N();Wr();xo()});async function Rm(e,t){return yE?_E(e,t):bE?kE(e,t):wE(e,t)}async function wE(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(s){return new Promise((o,i)=>{r.stdin.write(s,a=>a?i(a):o())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(s=>{r.on("exit",o=>s(o??0))})}}}function _E(e,t){let n=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),r=n.stdin.getWriter?n.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(s){r?await r.write(s):(n.stdin.write(s),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:RE(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*RE(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}async function kE(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),s=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(o){await s.write(o)},end(){try{s.close()}catch{}}},stdout:SE(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*SE(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var yE,bE,km=g(()=>{yE=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",bE=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as EE}from"node:fs";import{join as xE}from"node:path";function Sm(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:n,envVar:r}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let s=process.env?.[r];if(typeof s=="string"&&s!=="")return s;let o=xE(n,"bin",t);if(EE(o))return o;throw new Error(`reddb: binary "${t}" not found.
|
|
64
70
|
expected at: ${o}
|
|
65
|
-
override: set ${
|
|
71
|
+
override: set ${r}=/path/to/${t}
|
|
66
72
|
fix: re-run \`pnpm install\` (the postinstall script downloads it),
|
|
67
|
-
or check the postinstall log for a download error.`)}var
|
|
68
|
-
`)).catch(a=>{this.pending.delete(
|
|
73
|
+
or check the postinstall log for a download error.`)}var Em=g(()=>{});import{fileURLToPath as vE}from"node:url";import{dirname as CE,resolve as TE,join as EN}from"node:path";function PE(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function xm(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Sm({name:PE(),packageRoot:AE,envVar:"REDDB_BIN"})}var OE,AE,vm=g(()=>{Em();OE=CE(vE(import.meta.url)),AE=TE(OE,"..")});var IE,LE,v,No,vt=g(()=>{IE=new TextEncoder,LE=new TextDecoder("utf-8"),v=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},No=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new v("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,s=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((o,i)=>{this.pending.set(r,{resolve:o,reject:i}),this.child.stdin.write(IE.encode(s+`
|
|
74
|
+
`)).catch(a=>{this.pending.delete(r),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 n of this.child.stdout){let r=new Uint8Array(t.length+n.length);r.set(t,0),r.set(n,t.length),t=r;let s=0;for(let o=0;o<t.length;o++)if(t[o]===10){let i=t.subarray(s,o);this.#n(LE.decode(i)),s=o+1}s>0&&(t=t.subarray(s))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(o){this.#e(`malformed server response: ${o.message}`);return}let r=n.id;if(r==null)return;let s=this.pending.get(r);s&&(this.pending.delete(r),n.error?s.reject(new v(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):s.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new v("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function jc(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:/"?$E(e):DE(e)}function $E(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let n;try{n=new URL(t)}catch(l){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let r=n.searchParams,s=(r.get("proto")||"").toLowerCase(),o=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return o?{kind:"embedded",path:o,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let i=NE(s),a=n.port?Number(n.port):Fc(i),c=n.username?decodeURIComponent(n.username):void 0,u=n.password?decodeURIComponent(n.password):void 0;return{kind:i,host:n.hostname,port:a,path:o||void 0,username:c,password:u,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function DE(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(o){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${o.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",s=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):Fc(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:s.get("token")??void 0,apiKey:s.get("apiKey")??s.get("api_key")??void 0,loginUrl:s.get("loginUrl")??s.get("login_url")??void 0,params:s,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new v("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Fc(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 NE(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 Fc(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 Gc=g(()=>{vt()});function BE(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Cm(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Cm(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Cm(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function FE(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}var ME,Qr,Hc=g(()=>{vt();ME=new Set(["embedded"]),Qr=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&ME.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,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:FE(r.value)}async put(t,n,r,s={}){this._guard("put");let o=BE(r);await this._client.call("cache.put",{namespace:t,key:n,value:o,...s})}async exists(t,n){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:n}))?.status??"maybe"}async invalidate(t,n){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:n})}async invalidatePrefix(t,n){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:n}))?.removed??0}async invalidateTags(t,n){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:n}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function Wc(e,t){return`${Uc(e)}.${jE(t)}`}function Uc(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new v("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function jE(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function GE(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 Tm(e){return`'${String(e).replace(/'/g,"''")}'`}var Vn,qc=g(()=>{vt();Vn=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let s=r.collection??this.collection,o=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Tm).join(", ")}]`:"",i=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Wc(s,t)} = ${GE(n)}${i}${o}`})}set(t,n,r={}){return this.put(t,n,r)}async get(t,n={}){let r=n.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${Wc(r,t)}`}))?.rows?.[0]?.value??null}async getMany(t,n={}){let r=[];for(let s of t)r.push(await this.get(s,n));return r}async exists(t,n={}){return{exists:await this.get(t,n)!==null}}async delete(t,n={}){let r=n.collection??this.collection,s=await this.client.call("query",{sql:`KV DELETE ${Wc(r,t)}`}),o=s.affected??s.affected_rows??0;return{affected:o,deleted:o>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new 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 ${Uc(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:s.length>0?i.filter(c=>String(c.key).startsWith(s)):i}}async invalidateTags(t,n={}){let r=n.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Tm).join(", ")}] FROM ${Uc(r)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new v("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,s=new URLSearchParams;n.sinceLsn!=null&&s.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&s.set("limit",String(n.limit));let o=s.toString()?`?${s}`:"",i=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/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(`
|
|
69
75
|
|
|
70
76
|
`)){let l=u.split(`
|
|
71
|
-
`).find(p=>p.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,r={}){return this.watch(`${t}.*`,r)}}});function hS(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=ut(e),a=ut(t),c=s!=null?` GROUP ${ut(s)}`:"",u=o!=null?_c(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${n}ms`}function ut(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 _c(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 yS(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function bS(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 ${yS(e.priority)}`),e.key!=null&&(t+=` KEY ${Rc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Rc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function wS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Rc(e):JSON.stringify(e)}function Rc(e){return`'${String(e).replace(/'/g,"''")}'`}function wc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Bn,kc=h(()=>{yt();Bn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ut(t)}`})}push(t,r,n={}){let s=bS(n);return this.client.call("query",{sql:`QUEUE PUSH ${ut(t)} ${wS(r)}${s}`})}async pop(t,r){let n=await this.client.call("query",{sql:`QUEUE POP ${ut(t)}${_c(r)}`});return wc(n)}async peek(t,r){let n=await this.client.call("query",{sql:`QUEUE PEEK ${ut(t)}${_c(r)}`});return wc(n)}async len(t){let r=await this.client.call("query",{sql:`QUEUE LEN ${ut(t)}`});return Number(r?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ut(t)}`})}async readWait(t,r,n={}){let s=hS(t,r,n),o=await this.client.call("query",{sql:s});return wc(o)}}});function Nf(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function _S(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 yo(e){return String(e).split(".").map(Mf).join(".")}function Mf(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 RS(e){return Bf(JSON.stringify(e))}function kS(e){return JSON.stringify(e)}function SS(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?RS(e):Bf(e)}function Bf(e){return`'${String(e).replace(/'/g,"''")}'`}var Fn,Sc=h(()=>{yt();Fn=class{constructor(t){this.db=t}async insert(t,r){Nf(r,"documents.insert document"),await this.ensureCollection(t);let n=await this.db.query(`INSERT INTO ${yo(t)} DOCUMENT VALUES (${kS(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=_S(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 ${yo(t)}${o} ORDER BY ${s} LIMIT ${n}`)).rows??[]}}async patch(t,r,n){Nf(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])=>`${Mf(c)} = ${SS(u)}`).join(", "),a=(await this.db.query(`UPDATE ${yo(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 ${yo(t)}`)}catch(r){if(!String(r?.message??"").includes("already exists"))throw r}}}});function ES(e,t){if(t.secretRef){let{collection:r,key:n}=t.secretRef;return`SECRET_REF(vault, ${bt(r)}.${bt(n)})`}return vS(e)}function xS(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 bt(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 vS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ff(e)}function Ff(e){return`'${String(e).replace(/'/g,"''")}'`}var jn,Ec=h(()=>{jn=class{constructor(t,r="red.config"){this.client=t,this.collection=r}put(t,r,n={}){xS(n,"config");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(Ff).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${bt(s)} ${bt(t)} = ${ES(r,n)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${bt(n)} ${bt(t)}`})}resolve(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${bt(n)} ${bt(t)}`})}}});function CS(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 Lr(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 TS(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):jf(e)}function jf(e){return`'${String(e).replace(/'/g,"''")}'`}var Hn,xc=h(()=>{Hn=class{constructor(t,r="red.vault"){this.client=t,this.collection=r}put(t,r,n={}){CS(n,"vault");let s=n.collection??this.collection,o=Array.isArray(n.tags)&&n.tags.length>0?` TAGS [${n.tags.map(jf).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Lr(s)}.${Lr(t)} = ${TS(r)}${o}`})}get(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Lr(n)}.${Lr(t)}`})}unseal(t,r={}){let n=r.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Lr(n)}.${Lr(t)}`})}}});async function Gf(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(OS)}async function Wf(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${AS(t)}`)).rows??[]).some(n=>n.name===String(t))}function OS(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Hf(e){return String(e).split(".").map(PS).join(".")}function PS(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 AS(e){return`'${String(e).replace(/'/g,"''")}'`}var Gn,vc=h(()=>{yt();Gn=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(Hf).join(", "),r=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",n=`SELECT ${t} FROM ${Hf(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 _o(e,t={}){let r=fc(e);if(HS(r),r.kind==="embedded"){let n=jS(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=FS(r),o=t.binary??If(),i=await Tf(o,s),a=new ho(i);return await a.call("version",{}),new Tc(a,{transport:"embedded"})}}function Jf(e){return $S(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:NS(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&BS(e)?{$uuid:e}:e}function $S(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 DS(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Jf):e.map(Jf)}function NS(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 MS(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 BS(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function bo(e){if(Array.isArray(e))return e.map(bo);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return MS(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]=bo(s);return r}return e}function FS(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function jS(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 HS(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",IS)}function Oc(){return new v(Uf,`${Uf}: nested transactions are not supported on one connection`)}function Vf(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function GS(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${qf} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function WS(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 >= ${qf} 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 IS,LS,qf,Uf,wo,Cc,Tc,Kf=h(()=>{Of();Lf();yt();mc();gc();bc();kc();Sc();Ec();xc();vc();gc();bc();kc();Sc();Ec();xc();vc();mc();IS="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",LS="1.0",qf="1.0.9",Uf="NESTED_TX_NOT_SUPPORTED";wo=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 Oc()}},Cc=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Oc();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 wo(this.db));return await this.commit(),r}catch(r){if(this.active)try{await this.rollback()}catch(n){Vf(r,n)}throw r}}},Tc=class{constructor(t,r={}){this.client=t,this.transport=r.transport??null,this.helperSpecVersion=LS,this.cache=new Mn(t,this.transport),this.queue=new Bn(t),this.queues=this.queue,this.documents=new Fn(this);let n=new Ir(t);this.kv=Object.assign((s="kv_default")=>new Ir(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 jn(t,s),this.vault=(s="red.vault")=>new Hn(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=DS(r);return n==null?this.client.call("query",{sql:t}).then(bo):this.client.call("query",{sql:t,params:n}).then(bo)}execute(t,...r){return this.query(t,...r)}async insert(t,r){let n=await this.client.call("insert",{collection:t,payload:r});return GS(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 WS(n,r.length)}tx(){return new Cc(this)}async transaction(t){if(this.inTransaction)throw Oc();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 wo(this));return await this.query("COMMIT"),n}catch(n){if(r)try{await this.query("ROLLBACK")}catch(s){Vf(n,s)}throw n}finally{this.inTransaction=!1}}exists(t){return Wf(this,t)}list(){return Gf(this)}from(t){return new Gn(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 US}from"node:crypto";import{existsSync as zf}from"node:fs";import{mkdir as JS,readFile as qS,rename as Pc,rm as Wn,stat as Ac}from"node:fs/promises";import{basename as VS,dirname as KS}from"node:path";async function Yf(e){await(await Yt.open({...e,allowResidentOpen:!0})).close()}var Yt,Xf=h(()=>{"use strict";Kf();so();go();Yt=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=Cf(t.uri),n=await xf(r),s=new e(n,{uri:t.uri,ttlDays:uo(t.ttlDays,Ce),ephemeralTtlHours:uo(t.ephemeralTtlHours,Te),byteBudget:uo(t.byteBudget,Oe),now:t.now??(()=>new Date)});return vf(n)?(await mo(),await JS(KS(n),{recursive:!0}),s.db=await _o(`file://${n}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Ef(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=Ln(n,r),a=ht(i),c=ct(r.command),u=c==="derivable"?oc(n,r.command):null,l=c==="re-executable"?ic(n,r.command):null,p=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=sc(s,p,this.opts.ttlDays,this.opts.ephemeralTtlHours),f=Vt(n),m=p==="ephemeral"?uc(n,f,o):null,w=ac(n,u,l,m);m&&!this.document.blobs[m.key]&&(this.document.blobs[m.key]=m,this.dirty=!0);let _={collection:V,handle:i,original_bytes:n.length,stored_bytes:w,command:r.command,created_at:o,expires_at:d,loss:r.loss,storage_class:p,content_hash:f,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:m?.key}};return delete this.document.tombstones[Kt(i)],this.document.records[a]=_,this.upsertIndex({handle:i,key:a,bytes:w,raw_bytes:n.length,command:r.command,created_at:o,expires_at:d,storage_class:p,blob_key:m?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!Dn(t))return null;let r=this.tombstone(t);if(r)return r;let n=this.document.records[ht(t)];if(!Nn(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:ht(n.handle),bytes:cc(n),raw_bytes:n.original_bytes,command:n.command,created_at:n.created_at,expires_at:n.expires_at,storage_class:$n(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:V,handle:n.handle,original:s,command:n.command,created_at:n.created_at,loss:n.loss,storage_class:$n(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:zt(r),oldest:r.reduce((n,s)=>n==null||s.created_at<n?s.created_at:n,null),budget:this.opts.byteBudget,storage_classes:rc(r)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),nc(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=zt(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=zt(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[Kt(t.handle)]={status:"expired",expired_at:r,command:t.command},this.dirty=!0}tombstone(t){let r=this.document.tombstones[Kt(t)];return po(r)?r:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return yf(t.derivation_recipe);if(t.reexecution_recipe)return bf(t.reexecution_recipe);if(t.blob_key){let r=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return lo(r)?hf(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 Ar(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Ac(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)}
|
|
72
|
-
`,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await
|
|
73
|
-
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(ao());return lc(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ao(),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=zt(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=zt(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 Ac(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 Wn(o,{force:!0}),await Wn(i,{force:!0});let a=await _o(`file://${o}`);try{for(let u of n){await a.query(`CREATE KV IF NOT EXISTS ${mf(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 Ac(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=r){await Wn(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await Pc(this.path,i),await Pc(o,this.path),await Wn(i,{force:!0})}catch(u){throw!zf(this.path)&&zf(i)&&await Pc(i,this.path),await Wn(o,{force:!0}),u}finally{this.db=await _o(`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===V){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:ao(),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:V,items:r}}async expireRedDbEntry(t,r){await this.kv().delete(t.key),await this.kv().put(Kt(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(ht(t));if(!Nn(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 Zf={};F(Zf,{DEFAULT_RSP_BYTE_BUDGET:()=>Oe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Te,DEFAULT_RSP_TTL_DAYS:()=>Ce,RSP_ELISION_COLLECTION:()=>V,RspElisionStore:()=>Yt,contentHandle:()=>Ln,ensureReddbBinaryFromWarmCache:()=>mo,provisionElisionStore:()=>Yf,storageClassForCommand:()=>ct});var Ro=h(()=>{"use strict";so();go();go();Xf()});async function ko(e,t,r=new Date){let n=Number.isFinite(t)&&t>0?t:30,s=r.getTime()-n*24*60*60*1e3,o=await tm(e,s),i=(await Un(e,X)).filter(E=>Dr(E)>=s),a=o.filter(E=>P(E.event_type)!=="show"&&P(E.degradation_reason)===""),c=o.filter(E=>P(E.event_type)==="show"),u=o.filter(E=>P(E.degradation_reason)!==""),l=0,p=0,d=0,f=0,m=!1,w=new Map,_=new Map,g=[],y=0,b=0,R=0;for(let E of a){E.elided===!0&&l++;let I=ye(E.raw_bytes),Ye=ye(E.emitted_bytes),Tt=Math.max(0,I-Ye),ir=Nr(E,"raw"),k=Nr(E,"emitted"),O=Math.max(0,ir.tokens-k.tokens);m||=(E.estimated===!0||ir.estimated||k.estimated)&&O>0,p+=I,d+=Ye,f+=O;let Ot=Xt(E).slice(0,10);Ot&&w.set(Ot,(w.get(Ot)??0)+O);let Pt=P(E.command)||"unknown",ke=_.get(Pt)??{command:Pt,invocations:0,bytes_saved:0,tokens_saved:0};ke.invocations++,ke.bytes_saved+=Tt,ke.tokens_saved+=O,_.set(Pt,ke);let Se=mt(E.wrapper_ms);Se!=null&&g.push(Se),y+=ye(E.store_open_count);let ar=mt(E.store_elapsed_ms);ar!=null&&(b+=ar,R++)}let T=new Map,B=new Map,Re=[],fe=null;for(let E of u){let I=P(E.degradation_reason)||P(E.reason)||"unknown",Ye=P(E.wrapper_family)||be(P(E.command));T.set(I,(T.get(I)??0)+1),B.set(Ye,(B.get(Ye)??0)+1);let Tt=Xt(E);Re.push({timestamp:Tt,family:Ye,command:P(E.command)||"unknown",reason:I,exit_code:mt(E.wrapper_exit_code),stderr_head:P(E.stderr_head)||null}),(!fe||Tt>fe.timestamp)&&(fe={timestamp:Tt,reason:I,command:P(E.command)||"unknown"})}let oe=a.length+u.length,lt=c.filter(E=>E.hit===!0).length,ie=pa(f,m),Vr=zS(i);return{window_days:n,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:p,emitted_bytes:d,bytes_saved:Math.max(0,p-d),tokens_saved:f,tokens_saved_estimated: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:[...w.entries()].sort(([E],[I])=>E.localeCompare(I)).map(([E,I])=>({date:E,tokens_saved:I})),top_commands:[..._.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:lt,show_misses:Math.max(0,c.length-lt),show_hit_rate:c.length===0?0:Z(lt/c.length),by_reason:[...T.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({reason:E,count:I})),by_family:[...B.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:fe},latency:{wrapper_ms_p50:$r(g,.5),wrapper_ms_p95:$r(g,.95),store_open_count_sum:y,store_elapsed_ms_sum:Z(b),store_elapsed_ms_avg:R===0?null:Z(b/R)},decisions:Vr}}function zS(e){let t=0,r=0,n=0,s=0,o=new Map,i=new Map;for(let a of e){let c=P(a.decision);if(c==="contributed"?t++:c==="failed-open"?n++:r++,a.quota_free===!0&&(s+=Math.max(1,ye(a.saved_units))),c!=="contributed"){let p=P(a.reason)||"unknown";o.set(p,(o.get(p)??0)+1)}let u=P(a.command_family)||"unknown",l=i.get(u)??{contributed:0,passed:0,failed_open:0};c==="contributed"?l.contributed++:c==="failed-open"?l.failed_open++:l.passed++,i.set(u,l)}return{seen:e.length,contributed:t,passed:r,failed_open:n,quota_free_saved_units:s,contribution_rate:e.length===0?0: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 Ic(e,t,r=new Date){let s=(await Un(e,ce)).filter(o=>Dr(o)<=r.getTime()||Xt(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=Xt(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:sE(s)}}async function Lc(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 tm(e,i),c=a.filter(k=>P(k.event_type)!=="show"&&P(k.event_type)!=="control_holdout"&&k.control_holdout!==!0&&P(k.degradation_reason)===""),u=a.filter(k=>P(k.event_type)==="control_holdout"||k.control_holdout===!0),l=a.filter(k=>P(k.event_type)==="show"),p=a.filter(k=>P(k.degradation_reason)!==""),d=[...c,...p].map(Dr).filter(k=>Number.isFinite(k)&&k>0),f=d.length===0?null:Math.min(...d),m=f==null?0:Math.max(1,Math.min(n,Math.ceil((r.getTime()-f)/fE()))),w=[],_=new Map,g=new Map,y=new Map,b=new Map,R=new Map,T=new Map,B=0,Re=!1,fe=0,oe=null,lt=0,ie=0;for(let k of c){let O=Xt(k),Ot=O.slice(0,10),Pt=O.slice(0,16),ke=be(P(k.command)),Se=Math.max(0,Nr(k,"raw").tokens-Nr(k,"emitted").tokens);B+=Se,Re||=k.estimated===!0&&Se>0;let ar=Math.max(0,ye(k.raw_bytes)-ye(k.emitted_bytes)),mi=mt(k.wrapper_ms);if(mi!=null){w.push(mi);let ol=_.get(ke)??[];ol.push(mi),_.set(ke,ol)}Ot&&g.set(Ot,(g.get(Ot)??0)+1),Pt&&y.set(Pt,(y.get(Pt)??0)+1);let gi=cE(O);gi&&b.set(gi,(b.get(gi)??0)+1);let hi=dE(O);hi&&R.set(hi,(R.get(hi)??0)+Se);let ds=T.get(ke)??{command_family:ke,invocations:0,tokens_saved:0,bytes_saved:0};ds.invocations++,ds.tokens_saved+=Se,ds.bytes_saved+=ar,T.set(ke,ds),k.elided===!0&&fe++,(k.store_open_count!=null||k.store_elapsed_ms!=null)&&(lt++,ye(k.store_open_count)>0&&ie++),Se>0&&(!oe||Se>oe.tokens_saved||Se===oe.tokens_saved&&ar>oe.bytes_saved)&&(oe={timestamp:O,command_family:ke,tokens_saved:Se,bytes_saved:ar})}let Vr=p.map(k=>({timestamp:Xt(k),command_family:be(P(k.command)),reason:P(k.degradation_reason)||P(k.reason)||"unknown"})).sort((k,O)=>k.timestamp.localeCompare(O.timestamp)),E=new Map;for(let k of Vr)E.set(k.reason,(E.get(k.reason)??0)+1);let I=QS(Vr),Ye=ZS(l),Tt=tE([...T.values()],Ye,I),ir=[...y.entries()].sort((k,O)=>O[1]-k[1]||k[0].localeCompare(O[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:n,data_days:m,since:o,until:s,label:`window: ${n}d, data: ${m}d`,empty:c.length===0&&p.length===0,invocations:c.length,degradations:p.length},latency:{global:em(w),by_command_family:[..._.entries()].sort((k,O)=>O[1].length-k[1].length||k[0].localeCompare(O[0])).map(([k,O])=>({command_family:k,count:O.length,...em(O)}))},throughput:{requests_per_day:[...g.entries()].sort(([k],[O])=>k.localeCompare(O)).map(([k,O])=>({date:k,requests:O})),active_minute_avg:y.size===0?null:Z([...y.values()].reduce((k,O)=>k+O,0)/y.size),peak_minute:ir?{minute:ir[0],requests:ir[1]}:null,hour_weekday_heatmap:uE(b)},savings:{tokens:pa(B,Re),measured_control_holdout:YS(c,u),weekly_tokens_saved:pE(R),elision_rate:c.length===0?0:Z(fe/c.length),top_commands_by_tokens_saved:[...T.values()].sort((k,O)=>O.tokens_saved-k.tokens_saved||O.bytes_saved-k.bytes_saved||k.command_family.localeCompare(O.command_family)).slice(0,10),top_commands_by_invocation_count:[...T.values()].sort((k,O)=>O.invocations-k.invocations||O.tokens_saved-k.tokens_saved||k.command_family.localeCompare(O.command_family)).slice(0,10),single_biggest_elision:oe},health:{degradation_timeline:Vr,degradations_by_reason:[...E.entries()].sort((k,O)=>O[1]-k[1]||k[0].localeCompare(O[0])).map(([k,O])=>({reason:k,count:O})),cold_boots:lt===0?null:ie,warm_hits:lt===0?null:Math.max(0,lt-ie)},mining:{recovery_usage_by_family:Ye,degradation_clusters:I,threshold_tuning_suggestions:Tt}}}async function tm(e,t){let r=(await Un(e,ce)).filter(i=>Dr(i)>=t),n=r.some(i=>P(i.event_type)!=="show"||P(i.degradation_reason)!==""),s=(await Un(e,he)).filter(i=>Dr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:P(i.event_type)||"invocation"})),o=(await Un(e,Ue)).filter(i=>Dr(i)>=t).filter(i=>!n&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:P(i.reason)||"unknown"}));return[...r,...s,...o]}function Nr(e,t){let r=mt(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 YS(e,t){let r=nE(t.map(a=>mt(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(Qf).filter(a=>a!=null),s=t.map(Qf).filter(a=>a!=null),o=n.length>0?n:s,i=o.length===0?null:Z(rE(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:XS(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Qf(e){let t=Nr(e,"raw").tokens;if(t<=0)return null;let r=Nr(e,"emitted").tokens;return Math.max(0,t-r)/t}function XS(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 ZS(e){let t=new Map;for(let r of e){let n=be(P(r.recovered_command)||P(r.command)),s=t.get(n)??{command_family:n,show_total:0,show_hits:0,show_misses:0};s.show_total++,r.hit===!0?s.show_hits++:s.show_misses++,t.set(n,s)}return[...t.values()].sort((r,n)=>n.show_total-r.show_total||r.command_family.localeCompare(n.command_family)).map(r=>({...r,show_hit_rate:r.show_total===0?0:Z(r.show_hits/r.show_total)}))}function QS(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:eE(r)}))}function eE(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 tE(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 rE(e){return e.reduce((t,r)=>t+r,0)/e.length}function nE(e){let t=e.filter(r=>r!=null);return t.length===0?null:Math.max(...t)}function sE(e){let t=iE();for(let r of e){if(P(r.event_type)==="show"||P(r.degradation_reason)!==""||r.elided!==!0)continue;let n=oE(r.storage_class)??ct(P(r.command));t[n].records+=1;let s=ye(r.raw_bytes);t[n].bytes+=s,t[n].raw_bytes+=s}return t}function oE(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function iE(){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 Un(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=>aE(n.value)).filter(n=>Cr(n))}function aE(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Dr(e){let t=Date.parse(Xt(e));return Number.isFinite(t)?t:0}function Xt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function $r(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 em(e){return{wrapper_ms_p50:$r(e,.5),wrapper_ms_p90:$r(e,.9),wrapper_ms_p95:$r(e,.95),wrapper_ms_p99:$r(e,.99)}}function Z(e){return Math.round(e*100)/100}function cE(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${lE(t.getUTCDay())}:${t.getUTCHours()}`:null}function uE(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 lE(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function dE(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 pE(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 fE(){return 24*60*60*1e3}var rm=h(()=>{"use strict";On();Ro();fa();Qs();qa()});var Jn={};F(Jn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ce,RSP_DECISIONS_COLLECTION:()=>X,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ue,RSP_TELEMETRY_INDEX_COLLECTION:()=>xn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>he,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Ua,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ja,RSP_TELEMETRY_SPOOL_FILE:()=>Wa,appendTelemetryEvent:()=>at,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>Za,parseTelemetryEvent:()=>Or,readAccountingLaneStats:()=>Ic,readTelemetryGainsReport:()=>Lc,readTelemetryStats:()=>ko,takeTelemetrySpool:()=>mk,telemetryLegacySpoolPath:()=>ro,telemetrySpoolCorrectionsPath:()=>Xa,telemetrySpoolPath:()=>it});var Ie=h(()=>{"use strict";Qs();pf();rm()});var sm={};F(sm,{readGhConditionalJson:()=>ue,readGhEtagCache:()=>Vs,sweepGhEtagCache:()=>Fa});import{spawn as mE}from"node:child_process";import{createHash as gE,randomUUID as hE}from"node:crypto";async function ue(e){let t=e.cwd??process.cwd(),r=e.telemetryRoot??t,n=process.hrtime.bigint(),s=e.overheadCeiling??ve,o=yE(e.path,e.params),i=bE(o),c=qi(r,"gh-api-json")?void 0:await Na(r,i),u=["api","--include","--method","GET",e.path];for(let[m,w]of nm(e.params))u.push("-f",`${m}=${String(w)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await wE(u,t,e.env,e.signal),p=m=>{let w=un();an(r,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-n)/1e6,childMs:w.childMs,selfStateBytesRead:w.selfStateBytesRead,bytesSaved:m},s)},d=_E(l.stdout);if(d.statusCode===304&&!!c)return p(Buffer.byteLength(c.body)),await $c(r,e.command??`gh api ${e.path}`,!0),{status:0,stdout:c.body,stderr:l.stderr,etag:c.etag,quotaFree:!0};if(d.statusCode>=200&&d.statusCode<300){let m=d.headers.get("etag");return m&&await Ma(r,{key:i,request:o,etag:m,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),p(0),await $c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:m??void 0,quotaFree:!1}}return p(0),await $c(r,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function nm(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[r])=>t.localeCompare(r))}function yE(e,t){return JSON.stringify({method:"GET",path:e,params:nm(t)})}function bE(e){return gE("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function wE(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=mE("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=[],p=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>p.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(p).toString("utf8").trim()})})})}function _E(e){let t=e.replace(/\r\n/g,`
|
|
74
|
-
`),
|
|
77
|
+
`).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function HE(e,t,n){let{waitMs:r,group:s=null,count:o=null}=n??{};if(!Number.isInteger(r)||r<0)throw new v("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let i=bt(e),a=bt(t),c=s!=null?` GROUP ${bt(s)}`:"",u=o!=null?Vc(o):"";return`QUEUE READ ${i}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function bt(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 Vc(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 WE(e){if(!Number.isInteger(e))throw new v("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function UE(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 ${WE(e.priority)}`),e.key!=null&&(t+=` KEY ${Kc(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Kc(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function qE(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Kc(e):JSON.stringify(e)}function Kc(e){return`'${String(e).replace(/'/g,"''")}'`}function Jc(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Xr,zc=g(()=>{vt();Xr=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${bt(t)}`})}push(t,n,r={}){let s=UE(r);return this.client.call("query",{sql:`QUEUE PUSH ${bt(t)} ${qE(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${bt(t)}${Vc(n)}`});return Jc(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${bt(t)}${Vc(n)}`});return Jc(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${bt(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${bt(t)}`})}async readWait(t,n,r={}){let s=HE(t,n,r),o=await this.client.call("query",{sql:s});return Jc(o)}}});function Om(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new v("INVALID_ARGUMENT",`${t} must be an object`)}function JE(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 Mo(e){return String(e).split(".").map(Am).join(".")}function Am(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 VE(e){return Pm(JSON.stringify(e))}function KE(e){return JSON.stringify(e)}function zE(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?VE(e):Pm(e)}function Pm(e){return`'${String(e).replace(/'/g,"''")}'`}var Zr,Yc=g(()=>{vt();Zr=class{constructor(t){this.db=t}async insert(t,n){Om(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Mo(t)} DOCUMENT VALUES (${KE(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new v("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:s.rid,item:s}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new v("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=JE(n.limit),s=n.orderBy??n.order_by??"rid ASC",o=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${Mo(t)}${o} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Om(r,"documents.patch patch");let s=Object.entries(r);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])=>`${Am(c)} = ${zE(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Mo(t)} SET ${o} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new v("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let s=(await this.db.delete(t,n)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${Mo(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function YE(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${Ct(n)}.${Ct(r)})`}return XE(e)}function QE(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Ct(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function XE(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Im(e)}function Im(e){return`'${String(e).replace(/'/g,"''")}'`}var es,Qc=g(()=>{es=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){QE(r,"config");let s=r.collection??this.collection,o=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Im).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${Ct(s)} ${Ct(t)} = ${YE(n,r)}${o}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${Ct(r)} ${Ct(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${Ct(r)} ${Ct(t)}`})}}});function ZE(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Kn(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 ex(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Lm(e)}function Lm(e){return`'${String(e).replace(/'/g,"''")}'`}var ts,Xc=g(()=>{ts=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){ZE(r,"vault");let s=r.collection??this.collection,o=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Lm).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Kn(s)}.${Kn(t)} = ${ex(n)}${o}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Kn(r)}.${Kn(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Kn(r)}.${Kn(t)}`})}}});async function Dm(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(tx)}async function Nm(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${rx(t)}`)).rows??[]).some(r=>r.name===String(t))}function tx(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function $m(e){return String(e).split(".").map(nx).join(".")}function nx(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 rx(e){return`'${String(e).replace(/'/g,"''")}'`}var ns,Zc=g(()=>{vt();ns=class e{constructor(t,n,r=null,s=[],o=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=s,this.params=o}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new v("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map($m).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(i=>`(${i})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${$m(this.collection)}${n}`,o=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).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 jo(e,t={}){let n=jc(e);if(px(n),n.kind==="embedded"){let r=fx(n,t.auth);if(r.token||r.username)throw new v("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=dx(n),o=t.binary??xm(),i=await Rm(o,s),a=new No(i);return await a.call("version",{}),new tu(a,{transport:"embedded"})}}function Bm(e){return ix(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:cx(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&lx(e)?{$uuid:e}:e}function ix(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 ax(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Bm):e.map(Bm)}function cx(e){let t=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(typeof Buffer<"u")return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64");let n="";for(let r of t)n+=String.fromCharCode(r);return btoa(n)}function ux(e){if(typeof Buffer<"u"){let r=Buffer.from(e,"base64");return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function lx(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Bo(e){if(Array.isArray(e))return e.map(Bo);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return ux(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let r=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(r/1000000n))}}let n={};for(let[r,s]of Object.entries(e))n[r]=Bo(s);return n}return e}function dx(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function fx(e,t){let n={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return n;if(typeof t!="object")throw new TypeError("options.auth must be an object");if(t.token!=null){if(typeof t.token!="string"||t.token.length===0)throw new TypeError("options.auth.token must be a non-empty string");n.token=t.token}if(t.apiKey!=null){if(typeof t.apiKey!="string"||t.apiKey.length===0)throw new TypeError("options.auth.apiKey must be a non-empty string");n.token=t.apiKey}if(t.username!=null){if(typeof t.username!="string"||t.username.length===0)throw new TypeError("options.auth.username must be a non-empty string");n.username=t.username}if(t.password!=null){if(typeof t.password!="string"||t.password.length===0)throw new TypeError("options.auth.password must be a non-empty string");n.password=t.password}return t.loginUrl!=null&&(n.loginUrl=t.loginUrl),n}function px(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",sx)}function nu(){return new v(Mm,`${Mm}: nested transactions are not supported on one connection`)}function jm(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function mx(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new v("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Fm} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function gx(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 >= ${Fm} 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 sx,ox,Fm,Mm,Fo,eu,tu,Gm=g(()=>{km();vm();vt();Gc();Hc();qc();zc();Yc();Qc();Xc();Zc();Hc();qc();zc();Yc();Qc();Xc();Zc();Gc();sx="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",ox="1.0",Fm="1.0.9",Mm="NESTED_TX_NOT_SUPPORTED";Fo=class{constructor(t){this.db=t}query(t,...n){return this.db.query(t,...n)}execute(t,...n){return this.db.execute(t,...n)}insert(t,n){return this.db.insert(t,n)}bulkInsert(t,n){return this.db.bulkInsert(t,n)}async transaction(){throw nu()}},eu=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw nu();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 n=await t(new Fo(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){jm(n,r)}throw n}}},tu=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=ox,this.cache=new Qr(t,this.transport),this.queue=new Xr(t),this.queues=this.queue,this.documents=new Zr(this);let r=new Vn(t);this.kv=Object.assign((s="kv_default")=>new Vn(t,s),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(s="red.config")=>new es(t,s),this.vault=(s="red.vault")=>new ts(t,s),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new v("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=ax(n);return r==null?this.client.call("query",{sql:t}).then(Bo):this.client.call("query",{sql:t,params:r}).then(Bo)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return mx(r,"insert")}async bulkInsert(t,n){if(Array.isArray(n)&&n.length===0)return{affected:0,rids:[],ids:[]};let r=await this.client.call("bulk_insert",{collection:t,payloads:n});return gx(r,n.length)}tx(){return new eu(this)}async transaction(t){if(this.inTransaction)throw nu();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let n=!1;try{await this.query("BEGIN"),n=!0;let r=await t(new Fo(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){jm(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return Nm(this,t)}list(){return Dm(this)}from(t){return new ns(this,t)}get(t,n){return this.client.call("get",{collection:t,id:String(n)})}delete(t,n){return this.client.call("delete",{collection:t,id:String(n)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,n){return this.client.call("auth.login",{username:t,password:n})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,n){return this.client.call("auth.change_password",{current_password:t,new_password:n})}createApiKey({username:t,role:n}={}){return this.client.call("auth.create_api_key",{username:t,role:n})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});import{createHash as hx}from"node:crypto";import{existsSync as Hm}from"node:fs";import{mkdir as yx,readFile as bx,rename as ru,rm as rs,stat as su}from"node:fs/promises";import{basename as wx,dirname as _x}from"node:path";async function Wm(e){await(await an.open({...e,allowResidentOpen:!0})).close()}var an,Um=g(()=>{"use strict";Gm();xo();Do();an=class e{constructor(t,n){this.opts=n;this.path=t}document;db;path;dirty=!1;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1"&&!t.allowResidentOpen)throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let n=_m(t.uri),r=await bm(n),s=new e(r,{uri:t.uri,ttlDays:Ao(t.ttlDays,Ne),ephemeralTtlHours:Ao(t.ephemeralTtlHours,Me),byteBudget:Ao(t.byteBudget,Be),now:t.now??(()=>new Date)});return wm(r)?(await $o(),await yx(_x(r),{recursive:!0}),s.db=await jo(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await ym(s.path),s}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,n){if(this.db)return await this.mintRedDb(t,n);let r=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=Vr(r,n),a=xt(i),c=yt(n.command),u=c==="derivable"?Ic(r,n.command):null,l=c==="re-executable"?Lc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Pc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=rn(r),p=f==="ephemeral"?Nc(r,m,o):null,b=$c(r,u,l,p);p&&!this.document.blobs[p.key]&&(this.document.blobs[p.key]=p,this.dirty=!0);let _={collection:Y,handle:i,original_bytes:r.length,stored_bytes:b,command:n.command,created_at:o,expires_at:d,loss:n.loss,storage_class:f,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:p?.key}};return delete this.document.tombstones[sn(i)],this.document.records[a]=_,this.upsertIndex({handle:i,key:a,bytes:b,raw_bytes:r.length,command:n.command,created_at:o,expires_at:d,storage_class:f,blob_key:p?.key}),this.prune(),await this.flush(),i}async get(t){if(this.db)return await this.getRedDb(t);if(!zr(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[xt(t)];if(!Yr(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:xt(r.handle),bytes:Dc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Kr(r),blob_key:r.blob_key},r.expires_at),await this.flush(),o}let s=await this.readOriginal(r);return!s&&(r.derivation_recipe||r.reexecution_recipe)?{status:"expired",expired_at:r.expires_at,command:r.command}:s?{collection:Y,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Kr(r)}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let n=this.readIndex().records;return{records:n.length,bytes:on(n),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget,storage_classes:Oc(n)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),Ac(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(s=>s.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),s=[];for(let i of r.records)Date.parse(i.expires_at)<=t?this.expireEntry(i,i.expires_at):s.push(i);let o=on(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,n),o=on(s)}s.length<r.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[sn(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[sn(t)];return Io(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return lm(t.derivation_recipe);if(t.reexecution_recipe)return dm(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return Po(n)?um(n):null}return null}deleteUnreferencedLocalBlobs(t){let n=new Set(t.map(r=>r.blob_key).filter(r=>typeof r=="string"));for(let r of Object.keys(this.document.blobs))n.has(r)||(delete this.document.blobs[r],this.dirty=!0)}async flush(){this.dirty&&(await Jn(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await su(this.path).then(a=>a.size,()=>0);if(t<=this.opts.byteBudget)return;let n=this.readIndex().records,r=new Set(n.map(a=>a.key)),s=new Set(n.map(a=>a.blob_key).filter(a=>typeof a=="string")),o={version:1,records:Object.fromEntries(Object.entries(this.document.records).filter(([a])=>r.has(a))),blobs:Object.fromEntries(Object.entries(this.document.blobs).filter(([a])=>s.has(a))),tombstones:{},index:{version:1,records:n}},i=Buffer.byteLength(`${JSON.stringify(o)}
|
|
78
|
+
`,"utf8");i>this.opts.byteBudget||i>=t||(this.document=o,await Jn(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(Y)}async kvGet(t){let n=await this.kv().get(t);if(typeof n!="string")return n;try{return JSON.parse(n)}catch{return n}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(n=>n.name===Y);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${Y}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${Y}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${Y}`),await this.db.query(`CREATE KV IF NOT EXISTS ${Y}`)}}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),o=s.toISOString(),i=Vr(r,n),a=xt(i),c=yt(n.command),u=c==="derivable"?Ic(r,n.command):null,l=c==="re-executable"?Lc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Pc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),m=rn(r),p=f==="ephemeral"?Nc(r,m,o):null,b=$c(r,u,l,p);p&&!Po(await this.kvGet(p.key))&&await this.kv().put(p.key,p);let _={collection:Y,handle:i,original_bytes:r.length,stored_bytes:b,command:n.command,created_at:o,expires_at:d,loss:n.loss,storage_class:f,content_hash:m,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:p?.key}};await this.kv().delete(sn(i)),await this.kv().put(a,_);let y=(await this.readRedDbIndex()).records.filter(w=>w.handle!==i);return y.push({handle:i,key:a,bytes:b,raw_bytes:r.length,command:n.command,created_at:o,expires_at:d,storage_class:f,blob_key:p?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(i,b),i}async getRedDb(t){if(!zr(t))return null;let n=await this.kvGet(sn(t));if(Io(n))return n;let r=await this.kvGet(xt(t));if(!Yr(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let o={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:xt(r.handle),bytes:Dc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Kr(r),blob_key:r.blob_key},r.expires_at),o}let s=await this.readOriginal(r);return!s&&(r.derivation_recipe||r.reexecution_recipe)?{status:"expired",expired_at:r.expires_at,command:r.command}:s?{collection:Y,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Kr(r)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:on(t.records),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget,storage_classes:Oc(t.records)}}async recoveryHandlesRedDb(t){let n=await this.pruneRedDb(await this.readRedDbIndex());return Ac(n.records,this.opts.now(),t)}async memory(t,n){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let r=pm(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=mm(n);return await this.memoryIngestRedDb(r)}throw new Error(`unsupported memory action: ${t}`)}async ensureMemoryGraphStore(){if(!this.db)throw new Error("rsp RedDB store is not open");await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_nodes"),await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_edges")}async memoryIngestRedDb(t){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await gm(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let i=(await bx(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=wx(s),c=hx("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}},f=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(f.rows[0]?.red_entity_id??f.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),o=r.rows.map(i=>hm(i,s)).filter(i=>i!=null).sort((i,a)=>a.score-i.score).slice(0,Math.max(1,Math.min(100,n)));return{hits:o,context_md:o.map(i=>`- memory_nodes:${i.rid} ${i.label}: ${i.excerpt}`).join(`
|
|
79
|
+
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(To());return Mc(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(To(),t)}async pruneRedDb(t,n=!1){let r=this.opts.now().getTime(),s=new Date(r).toISOString(),o=[];for(let c of t.records)Date.parse(c.expires_at)<=r?await this.expireRedDbEntry(c,c.expires_at):o.push(c);let i=on(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=on(o)}let a={version:1,records:o};return(n||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 n=await su(this.path).then(u=>u.size,()=>0);if(n<=this.opts.byteBudget)return;let r=await this.snapshotRedDbKvCollections(t);if(!r)return;let s=`${process.pid}.${Date.now()}`,o=`${this.path}.${s}.compact`,i=`${this.path}.${s}.old`;await rs(o,{force:!0}),await rs(i,{force:!0});let a=await jo(`file://${o}`);try{for(let u of r){await a.query(`CREATE KV IF NOT EXISTS ${am(u.name)}`);let l=a.kv(u.name);for(let f of u.items)await l.put(f.key,f.value)}}finally{await a.close()}let c=await su(o).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=n){await rs(o,{force:!0});return}await this.db.close(),this.db=void 0;try{await ru(this.path,i),await ru(o,this.path),await rs(i,{force:!0})}catch(u){throw!Hm(this.path)&&Hm(i)&&await ru(i,this.path),await rs(o,{force:!0}),u}finally{this.db=await jo(`file://${this.path}`)}}async snapshotRedDbKvCollections(t){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.list();if(n.some(o=>o.model!=="kv"))return null;let r=[],s=!1;for(let o of n){let i=String(o.name??"").trim();if(i===Y){r.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;r.push({name:i,items:a.items})}return s||r.push(await this.snapshotRedDbElisions(t)),r}async snapshotRedDbElisions(t){let n=[{key:To(),value:t}],r=new Set;for(let s of t.records)r.add(s.key),s.blob_key&&r.add(s.blob_key);for(let s of r){let o=await this.kvGet(s);o!=null&&n.push({key:s,value:o})}return{name:Y,items:n}}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(sn(t.handle),{status:"expired",expired_at:n,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let n=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),r=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of r.items)s.key.startsWith("blob:")&&!n.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(xt(t));if(!Yr(r))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!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var qm={};B(qm,{DEFAULT_RSP_BYTE_BUDGET:()=>Be,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Me,DEFAULT_RSP_TTL_DAYS:()=>Ne,RSP_ELISION_COLLECTION:()=>Y,RspElisionStore:()=>an,contentHandle:()=>Vr,ensureReddbBinaryFromWarmCache:()=>$o,provisionElisionStore:()=>Wm,storageClassForCommand:()=>yt});var Go=g(()=>{"use strict";xo();Do();Do();Um()});async function Ho(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,o=await Km(e,s),i=(await ss(e,te)).filter(E=>Yn(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,f=0,d=0,m=0,p=!1,b=new Map,_=new Map,h=[],y=0,w=0,k=0;for(let E of a){E.elided===!0&&l++;let I=Ee(E.raw_bytes),ot=Ee(E.emitted_bytes),Mt=Math.max(0,I-ot),yn=Qn(E,"raw"),S=Qn(E,"emitted"),O=Math.max(0,yn.tokens-S.tokens);p||=(E.estimated===!0||yn.estimated||S.estimated)&&O>0,f+=I,d+=ot,m+=O;let Bt=cn(E).slice(0,10);Bt&&b.set(Bt,(b.get(Bt)??0)+O);let Ft=A(E.command)||"unknown",Oe=_.get(Ft)??{command:Ft,invocations:0,bytes_saved:0,tokens_saved:0};Oe.invocations++,Oe.bytes_saved+=Mt,Oe.tokens_saved+=O,_.set(Ft,Oe);let Ae=St(E.wrapper_ms);Ae!=null&&h.push(Ae),y+=Ee(E.store_open_count);let bn=St(E.store_elapsed_ms);bn!=null&&(w+=bn,k++)}let T=new Map,M=new Map,Te=[],we=null;for(let E of u){let I=A(E.degradation_reason)||A(E.reason)||"unknown",ot=A(E.wrapper_family)||xe(A(E.command));T.set(I,(T.get(I)??0)+1),M.set(ot,(M.get(ot)??0)+1);let Mt=cn(E);Te.push({timestamp:Mt,family:ot,command:A(E.command)||"unknown",reason:I,exit_code:St(E.wrapper_exit_code),stderr_head:A(E.stderr_head)||null}),(!we||Mt>we.timestamp)&&(we={timestamp:Mt,reason:I,command:A(E.command)||"unknown"})}let de=a.length+u.length,wt=c.filter(E=>E.hit===!0).length,fe=Fa(m,p),cr=Rx(i);return{window_days:r,empty:o.length===0,savings:{invocations:a.length,elided:l,raw_bytes:f,emitted_bytes:d,bytes_saved:Math.max(0,f-d),tokens_saved:m,tokens_saved_estimated:fe.tokens_saved_estimated,token_estimate_range_pct:fe.token_estimate_range_pct,tokens_saved_low:fe.tokens_saved_low,tokens_saved_high:fe.tokens_saved_high,dollars_saved_estimate_usd:fe.dollars_saved_estimate_usd,dollars_saved_low_usd:fe.dollars_saved_low_usd,dollars_saved_high_usd:fe.dollars_saved_high_usd,pricing_model_family:fe.pricing_model_family,pricing_input_usd_per_million_tokens:fe.pricing_input_usd_per_million_tokens,pricing_note:fe.pricing_note,daily_tokens_saved:[...b.entries()].sort(([E],[I])=>E.localeCompare(I)).map(([E,I])=>({date:E,tokens_saved:I})),top_commands:[..._.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:de===0?0:u.length/de,show_total:c.length,show_hits:wt,show_misses:Math.max(0,c.length-wt),show_hit_rate:c.length===0?0:ne(wt/c.length),by_reason:[...T.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({reason:E,count:I})),by_family:[...M.entries()].sort((E,I)=>I[1]-E[1]||E[0].localeCompare(I[0])).map(([E,I])=>({family:E,count:I})),recent_failures:Te.sort((E,I)=>I.timestamp.localeCompare(E.timestamp)).slice(0,20),most_recent:we},latency:{wrapper_ms_p50:zn(h,.5),wrapper_ms_p95:zn(h,.95),store_open_count_sum:y,store_elapsed_ms_sum:ne(w),store_elapsed_ms_avg:k===0?null:ne(w/k)},decisions:cr}}function Rx(e){let t=0,n=0,r=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"?r++:n++,a.quota_free===!0&&(s+=Math.max(1,Ee(a.saved_units))),c!=="contributed"){let f=A(a.reason)||"unknown";o.set(f,(o.get(f)??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:n,failed_open:r,quota_free_saved_units:s,contribution_rate:e.length===0?0:ne(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:ne(c.contributed/u)}})}}async function ou(e,t,n=new Date){let s=(await ss(e,pe)).filter(o=>Yn(o)<=n.getTime()||cn(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=cn(i);return a&&(o==null||a<o)?a:o},null),budget:t,storage_classes:Ax(s)}}async function iu(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:28,s=n.toISOString(),o=new Date(n.getTime()-r*24*60*60*1e3).toISOString(),i=Date.parse(o),a=await Km(e,i),c=a.filter(S=>A(S.event_type)!=="show"&&A(S.event_type)!=="control_holdout"&&S.control_holdout!==!0&&A(S.degradation_reason)===""),u=a.filter(S=>A(S.event_type)==="control_holdout"||S.control_holdout===!0),l=a.filter(S=>A(S.event_type)==="show"),f=a.filter(S=>A(S.degradation_reason)!==""),d=[...c,...f].map(Yn).filter(S=>Number.isFinite(S)&&S>0),m=d.length===0?null:Math.min(...d),p=m==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-m)/Fx()))),b=[],_=new Map,h=new Map,y=new Map,w=new Map,k=new Map,T=new Map,M=0,Te=!1,we=0,de=null,wt=0,fe=0;for(let S of c){let O=cn(S),Bt=O.slice(0,10),Ft=O.slice(0,16),Oe=xe(A(S.command)),Ae=Math.max(0,Qn(S,"raw").tokens-Qn(S,"emitted").tokens);M+=Ae,Te||=S.estimated===!0&&Ae>0;let bn=Math.max(0,Ee(S.raw_bytes)-Ee(S.emitted_bytes)),$i=St(S.wrapper_ms);if($i!=null){b.push($i);let Il=_.get(Oe)??[];Il.push($i),_.set(Oe,Il)}Bt&&h.set(Bt,(h.get(Bt)??0)+1),Ft&&y.set(Ft,(y.get(Ft)??0)+1);let Di=$x(O);Di&&w.set(Di,(w.get(Di)??0)+1);let Ni=Mx(O);Ni&&k.set(Ni,(k.get(Ni)??0)+Ae);let xs=T.get(Oe)??{command_family:Oe,invocations:0,tokens_saved:0,bytes_saved:0};xs.invocations++,xs.tokens_saved+=Ae,xs.bytes_saved+=bn,T.set(Oe,xs),S.elided===!0&&we++,(S.store_open_count!=null||S.store_elapsed_ms!=null)&&(wt++,Ee(S.store_open_count)>0&&fe++),Ae>0&&(!de||Ae>de.tokens_saved||Ae===de.tokens_saved&&bn>de.bytes_saved)&&(de={timestamp:O,command_family:Oe,tokens_saved:Ae,bytes_saved:bn})}let cr=f.map(S=>({timestamp:cn(S),command_family:xe(A(S.command)),reason:A(S.degradation_reason)||A(S.reason)||"unknown"})).sort((S,O)=>S.timestamp.localeCompare(O.timestamp)),E=new Map;for(let S of cr)E.set(S.reason,(E.get(S.reason)??0)+1);let I=xx(cr),ot=Ex(l),Mt=Cx([...T.values()],ot,I),yn=[...y.entries()].sort((S,O)=>O[1]-S[1]||S[0].localeCompare(O[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:p,since:o,until:s,label:`window: ${r}d, data: ${p}d`,empty:c.length===0&&f.length===0,invocations:c.length,degradations:f.length},latency:{global:Vm(b),by_command_family:[..._.entries()].sort((S,O)=>O[1].length-S[1].length||S[0].localeCompare(O[0])).map(([S,O])=>({command_family:S,count:O.length,...Vm(O)}))},throughput:{requests_per_day:[...h.entries()].sort(([S],[O])=>S.localeCompare(O)).map(([S,O])=>({date:S,requests:O})),active_minute_avg:y.size===0?null:ne([...y.values()].reduce((S,O)=>S+O,0)/y.size),peak_minute:yn?{minute:yn[0],requests:yn[1]}:null,hour_weekday_heatmap:Dx(w)},savings:{tokens:Fa(M,Te),measured_control_holdout:kx(c,u),weekly_tokens_saved:Bx(k),elision_rate:c.length===0?0:ne(we/c.length),top_commands_by_tokens_saved:[...T.values()].sort((S,O)=>O.tokens_saved-S.tokens_saved||O.bytes_saved-S.bytes_saved||S.command_family.localeCompare(O.command_family)).slice(0,10),top_commands_by_invocation_count:[...T.values()].sort((S,O)=>O.invocations-S.invocations||O.tokens_saved-S.tokens_saved||S.command_family.localeCompare(O.command_family)).slice(0,10),single_biggest_elision:de},health:{degradation_timeline:cr,degradations_by_reason:[...E.entries()].sort((S,O)=>O[1]-S[1]||S[0].localeCompare(O[0])).map(([S,O])=>({reason:S,count:O})),cold_boots:wt===0?null:fe,warm_hits:wt===0?null:Math.max(0,wt-fe)},mining:{recovery_usage_by_family:ot,degradation_clusters:I,threshold_tuning_suggestions:Mt}}}async function Km(e,t){let n=(await ss(e,pe)).filter(i=>Yn(i)>=t),r=n.some(i=>A(i.event_type)!=="show"||A(i.degradation_reason)!==""),s=(await ss(e,Se)).filter(i=>Yn(i)>=t).filter(i=>!r&&i.accounting_recorded!==!0).map(i=>({...i,event_type:A(i.event_type)||"invocation"})),o=(await ss(e,Ze)).filter(i=>Yn(i)>=t).filter(i=>!r&&i.accounting_recorded!==!0).map(i=>({...i,event_type:"invocation",degradation_reason:A(i.reason)||"unknown"}));return[...n,...s,...o]}function Qn(e,t){let n=St(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=Ee(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function kx(e,t){let n=Ox(t.map(a=>St(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:n,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let r=e.map(Jm).filter(a=>a!=null),s=t.map(Jm).filter(a=>a!=null),o=r.length>0?r:s,i=o.length===0?null:ne(Tx(o));return{enabled:!0,holdout_share:ne(n),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:i,confidence_interval_95:i==null?null:Sx(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Jm(e){let t=Qn(e,"raw").tokens;if(t<=0)return null;let n=Qn(e,"emitted").tokens;return Math.max(0,t-n)/t}function Sx(e,t){if(e.length<=1)return{low:ne(Math.max(0,t)),high:ne(Math.min(1,t))};let n=e.reduce((s,o)=>s+(o-t)**2,0)/(e.length-1),r=1.96*Math.sqrt(n/e.length);return{low:ne(Math.max(0,t-r)),high:ne(Math.min(1,t+r))}}function Ex(e){let t=new Map;for(let n of e){let r=xe(A(n.recovered_command)||A(n.command)),s=t.get(r)??{command_family:r,show_total:0,show_hits:0,show_misses:0};s.show_total++,n.hit===!0?s.show_hits++:s.show_misses++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.show_total-n.show_total||n.command_family.localeCompare(r.command_family)).map(n=>({...n,show_hit_rate:n.show_total===0?0:ne(n.show_hits/n.show_total)}))}function xx(e){let t=new Map;for(let n of e){let r=`${n.command_family}\0${n.reason}`,s=t.get(r)??{command_family:n.command_family,reason:n.reason,count:0};s.count++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.count-n.count||n.command_family.localeCompare(r.command_family)||n.reason.localeCompare(r.reason)).map(n=>({...n,suggestion:vx(n)}))}function vx(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 Cx(e,t,n){let r=[];for(let s of t.filter(o=>o.show_total>0))r.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of n.filter(o=>o.count>1))r.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(o=>o.invocations>0&&o.tokens_saved===0))r.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return r.slice(0,10)}function Tx(e){return e.reduce((t,n)=>t+n,0)/e.length}function Ox(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function Ax(e){let t=Ix();for(let n of e){if(A(n.event_type)==="show"||A(n.degradation_reason)!==""||n.elided!==!0)continue;let r=Px(n.storage_class)??yt(A(n.command));t[r].records+=1;let s=Ee(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function Px(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Ix(){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 ss(e,t){return(await e.kv(t).list({limit:1e4}).catch(r=>{if(r instanceof Error&&/\bnot found\b/i.test(r.message))return{items:[]};throw r})).items.map(r=>Lx(r.value)).filter(r=>Hn(r))}function Lx(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Yn(e){let t=Date.parse(cn(e));return Number.isFinite(t)?t:0}function cn(e){return A(e.created_at)||A(e.ts)||""}function A(e){return typeof e=="string"?e:""}function zn(e,t){if(e.length===0)return null;let n=[...e].sort((s,o)=>s-o),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return ne(n[r])}function Vm(e){return{wrapper_ms_p50:zn(e,.5),wrapper_ms_p90:zn(e,.9),wrapper_ms_p95:zn(e,.95),wrapper_ms_p99:zn(e,.99)}}function ne(e){return Math.round(e*100)/100}function $x(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Nx(t.getUTCDay())}:${t.getUTCHours()}`:null}function Dx(e){let t=[];for(let n of["sun","mon","tue","wed","thu","fri","sat"])for(let r=0;r<24;r++){let s=e.get(`${n}:${r}`)??0;s>0&&t.push({weekday:n,hour:r,requests:s})}return t}function Nx(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Mx(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let n=t.getUTCDay(),r=n===0?-6:1-n;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+r)).toISOString().slice(0,10)}function Bx(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:ne((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function Fx(){return 24*60*60*1e3}var zm=g(()=>{"use strict";Wr();Go();ja();_o();wc()});var os={};B(os,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>pe,RSP_DECISIONS_COLLECTION:()=>te,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ze,RSP_TELEMETRY_INDEX_COLLECTION:()=>Fr,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>Se,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>yc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>bc,RSP_TELEMETRY_SPOOL_FILE:()=>hc,appendTelemetryEvent:()=>ht,appendTelemetryEventSync:()=>Et,drainTelemetrySpool:()=>xc,parseTelemetryEvent:()=>Un,readAccountingLaneStats:()=>ou,readTelemetryGainsReport:()=>iu,readTelemetryStats:()=>Ho,takeTelemetrySpool:()=>jS,telemetryLegacySpoolPath:()=>So,telemetrySpoolCorrectionsPath:()=>Ec,telemetrySpoolPath:()=>gt});var Ge=g(()=>{"use strict";_o();om();zm()});var Qm={};B(Qm,{readGhConditionalJson:()=>me,readGhEtagCache:()=>mo,sweepGhEtagCache:()=>fc});import{spawn as jx}from"node:child_process";import{createHash as Gx,randomUUID as Hx}from"node:crypto";async function me(e){let t=e.cwd??process.cwd(),n=e.telemetryRoot??t,r=process.hrtime.bigint(),s=e.overheadCeiling??De,o=Wx(e.path,e.params),i=Ux(o),c=wa(n,"gh-api-json")?void 0:await uc(n,i),u=["api","--include","--method","GET",e.path];for(let[p,b]of Ym(e.params))u.push("-f",`${p}=${String(b)}`);c?.etag&&u.push("-H",`If-None-Match: ${c.etag}`);let l=await qx(u,t,e.env,e.signal),f=p=>{let b=Sr();Rr(n,{family:"gh-api-json",wrapperMs:Number(process.hrtime.bigint()-r)/1e6,childMs:b.childMs,selfStateBytesRead:b.selfStateBytesRead,bytesSaved:p},s)},d=Jx(l.stdout);if(d.statusCode===304&&!!c)return f(Buffer.byteLength(c.body)),await au(n,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 p=d.headers.get("etag");return p&&await lc(n,{key:i,request:o,etag:p,body:d.body,updated_at:new Date().toISOString()},{maxBytes:e.cacheMaxBytes}),f(0),await au(n,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body,stderr:l.stderr,etag:p??void 0,quotaFree:!1}}return f(0),await au(n,e.command??`gh api ${e.path}`,!1),{status:l.status,stdout:d.body||l.stdout,stderr:l.stderr,quotaFree:!1}}function Ym(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function Wx(e,t){return JSON.stringify({method:"GET",path:e,params:Ym(t)})}function Ux(e){return Gx("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function qx(e,t,n,r){return r?.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(s=>{let o=!1,i=d=>{o||(o=!0,r?.removeEventListener("abort",c),s(d))},a=jx("gh",e,{cwd:t,env:n?{...process.env,...n}:process.env,stdio:["ignore","pipe","pipe"]});function c(){try{a.kill("SIGKILL")}catch{}i({status:1,stdout:"",stderr:"gh call cancelled"})}r?.addEventListener("abort",c,{once:!0});let u=ce();a.once("close",u),a.once("error",u);let l=[],f=[];a.stdout.on("data",d=>l.push(Buffer.from(d))),a.stderr.on("data",d=>f.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(f).toString("utf8").trim()})})})}function Jx(e){let t=e.replace(/\r\n/g,`
|
|
80
|
+
`),n=[...t.matchAll(/^HTTP\/\S+\s+(\d{3})[^\n]*\n/gm)];if(n.length===0)return{statusCode:0,headers:new Map,body:e};let r=n[n.length-1],s=Number(r[1]),o=r.index+r[0].length,i=t.indexOf(`
|
|
75
81
|
|
|
76
82
|
`,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
|
|
77
|
-
`)){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
|
|
78
|
-
`),stdout:JSON.stringify({number:
|
|
79
|
-
`)}var Dc=h(()=>{"use strict"});var pm=h(()=>{"use strict";N()});var fm=h(()=>{"use strict"});function PE(e){return Object.keys(e)}function Mr(e){return{...e,fields:PE(e.fields)}}var mm,gm,hm,AE,IE,LE,ym,Nc=h(()=>{"use strict";mm="red.castle.lane.v1",gm="red.castle.state.v1",hm="red.castle.history.v1",AE="red.castle.validation.v2",IE="red.castle.envelope.v1",LE="red.castle.hitl-card.v1",ym=[Mr({schemaId:mm,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}}),Mr({schemaId:gm,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}}),Mr({schemaId:hm,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}}),Mr({schemaId:AE,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}}),Mr({schemaId:IE,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}}),Mr({schemaId:LE,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 FD,Eo=h(()=>{"use strict";N();Nc();FD=new Map(ym.map(e=>[e.schemaId,new Set(e.fields)]))});var bm=h(()=>{"use strict";fm();Eo()});var wm=h(()=>{"use strict"});var xo=h(()=>{"use strict"});var Mc=h(()=>{"use strict";xo()});var vo=h(()=>{"use strict"});import{appendFile as NE,mkdir as ME,readFile as BE}from"node:fs/promises";import{dirname as FE,join as jE}from"node:path";function Bc(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function _m(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:Bc(t.at,"at"),singleton:Bc(t.singleton,"singleton"),kind:Bc(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function HE(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function GE(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function WE(e){return jE(e.castleStateRoot,"singleton-events.toonl")}function Fc(e,t={}){let r=t.fs??{appendFile:NE,mkdir:ME,readFile:BE},n=t.clock??(()=>new Date().toISOString()),s=WE(e);return{path:s,async append(o){let i=_m({at:o.at??n(),...o});return await r.mkdir(FE(s),{recursive:!0}),await r.appendFile(s,Nt().push(HE(i)),"utf8"),i},async read(o={}){GE(o.tail);let i;try{i=await r.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=Dt(i).map(_m);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var jc=h(()=>{"use strict";N()});var Co=h(()=>{"use strict";N();vo();jc()});var Rm=h(()=>{"use strict";xo();Mc();Co()});var km=h(()=>{"use strict"});var SN,Sm=h(()=>{"use strict";N();SN=24*60*60*1e3});var Em=h(()=>{"use strict";Eo()});var CN,TN,xm=h(()=>{"use strict";CN=15*6e4,TN=30*6e4});var vm=h(()=>{"use strict"});var JE,qE,AN,IN,Cm=h(()=>{"use strict";JE=["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"],qE={pre_worktree:["cargo","gradle"]},AN=Object.values(qE).flat(),IN=new Set(JE)});var Tm=h(()=>{"use strict"});var Om=h(()=>{"use strict";Co()});var Pm=h(()=>{"use strict"});var Am=h(()=>{"use strict"});var Im=h(()=>{"use strict"});var Hc=h(()=>{"use strict"});var Lm=h(()=>{"use strict";N();Hc()});var $m=h(()=>{"use strict";N()});var Gc=h(()=>{"use strict"});var Wc=h(()=>{"use strict"});import{resolve as Q}from"node:path";function Dm(e){let t=Q(e),r=Q(t,"state"),n=Q(r,"castle"),s=Q(t,"tmp"),o=Q(s,"supervisors"),i=Q(s,"workers"),a=Q(s,"monitors"),c=Q(s,"worktrees");return{redRoot:t,stateRoot:r,castleStateRoot:n,castleHistory:Q(n,"history.toonl"),castleValidation:Q(n,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>Q(o,u),projectSupervisor:Q(o,VE),workersRoot:i,worker:u=>Q(i,u),workerSteerFile:u=>Q(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>Q(a,u),worktreesRoot:c,worktreeLane:u=>Q(c,u)}}var VE,Nm=h(()=>{"use strict";VE="default"});var Mm=h(()=>{"use strict";vo()});var Bm=h(()=>{"use strict"});var Fm=h(()=>{"use strict";Gc();Wc()});import{mkdir as KE,readFile as zE,rename as YE,rm as XE,writeFile as ZE}from"node:fs/promises";import{dirname as QE,join as ex}from"node:path";function rx(e){if(!tx.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function nx(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function sx(e){return e.code==="ENOENT"}function ox(e){return e.code==="EEXIST"}function ix(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 Uc(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function To(e,t){return rx(t),ex(e.castleStateRoot,"singletons",t,"lease.toon")}function jm(e,t={}){let r=t.fs??{mkdir:KE,readFile:zE,rename:YE,rm:XE,writeFile:ZE},n=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??nx;async function o(a){try{return ix(L(await r.readFile(a,"utf8")))}catch(c){if(sx(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(To(e,a))},async acquire(a,c){let u=To(e,a);await r.mkdir(QE(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(m){if(!ox(m))throw m}let f=await o(u);if(f){if(Uc(f,c))return{acquired:!0,reaped:l,lease:f};if(await s(f.pid))return{acquired:!1,lease:f};await r.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=To(e,a),l=await o(u);if(!l||!Uc(l,c))throw new Oo(a);let p={...l,renewed_at:n()};return await i(u,p),p},async release(a,c){let u=To(e,a),l=await o(u);if(!l)return!1;if(!Uc(l,c))throw new Oo(a);return await r.rm(u,{force:!0}),!0}}}var Oo,tx,Hm=h(()=>{"use strict";N();Oo=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},tx=/^[a-z0-9][a-z0-9._-]{0,63}$/});var Jc=h(()=>{"use strict"});var Gm=h(()=>{"use strict"});var ax,cx,ux,hM,Wm=h(()=>{"use strict";ax={refreshCadenceS:270,tolerance:3},cx=270,ux=2700,hM={...ax,claimGraceS:cx,recentCommitProtectionS:ux}});var Um=h(()=>{"use strict"});import{execFile as fx}from"node:child_process";import{promisify as mx}from"node:util";var RM,Jm=h(()=>{"use strict";Jc();RM=mx(fx)});var qm=h(()=>{"use strict";pm();bm();wm();xo();Rm();km();Sm();Em();Eo();xm();vm();Cm();Tm();Mc();Om();Pm();Am();Im();Co();Lm();$m();Nc();Gc();Wc();Nm();Mm();Bm();Fm();vo();Hc();jc();Hm();Jc();Gm();Wm();Um();Jm()});import{EventEmitter as gx}from"node:events";import{spawn as hx}from"node:child_process";function Ao(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 Io(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var Kn,qc,yx,bx,wx,_x,Po,Vc=h(()=>{Kn="github-webhook",qc="github.webhook.delivery";yx="pull_request,pull_request_review,check_run,check_suite,workflow_run",bx=3,wx=1e3,_x=/no extension matched|unknown command|command not found/i,Po=class extends gx{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,wx).then(()=>{}),await this.stopping)}makeWakeSignalFor(r,n){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(r==="pr"?Ao(c,n):Io(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=hx(r,["webhook","forward",`--events=${yx}`],{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(`
|
|
80
|
-
`))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];
|
|
81
|
-
`),
|
|
83
|
+
`)){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 au(e,t,n){await ht(e,{collection:te,id:Hx(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:n?"gh-conditional-304":"gh-conditional-fetch",quota_free:n,saved_units:n?1:0})}var Wo=g(()=>{"use strict";Br();Br();V();Ge()});import{spawn as Vx}from"node:child_process";async function is(e,t){return await Kx(t,async n=>{let r=await Yx(e,t.cwd,n);return r||await zx(e,t.cwd,n)})}async function Kx(e,t){if(e.signal.aborted)return{status:1,stdout:"",stderr:"wait cancelled"};let n=new AbortController,r=setTimeout(()=>n.abort(),e.timeoutMs),s=AbortSignal.any([e.signal,n.signal]);try{let o=await t(s);return n.signal.aborted?{status:1,stdout:"",stderr:`GitHub probe exceeded ${e.timeoutMs}ms`}:o}finally{clearTimeout(r)}}async function zx(e,t,n){return n.aborted?{status:1,stdout:"",stderr:"gh call cancelled"}:await new Promise(r=>{let s=!1,o=l=>{s||(s=!0,n.removeEventListener("abort",a),r(l))},i=Vx("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]});function a(){let l=i.pid;l&&no(l).then(f=>to(f,"SIGKILL"));try{i.kill("SIGKILL")}catch{}o({status:1,stdout:"",stderr:"gh call cancelled"})}n.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 Yx(e,t,n){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Qx(e[2],t,n);if(e[0]==="run"&&e[1]==="view"&&e[2]){let r=await me({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=Qe(JSON.parse(r.stdout));return{status:0,stderr:r.stderr,stdout:JSON.stringify({databaseId:Bn(s,"database_id")||Bn(s,"id"),status:ee(s,"status").toUpperCase(),conclusion:ee(s,"conclusion").toUpperCase(),workflowName:ee(s,"workflow_name")||ee(s,"name"),headBranch:ee(s,"head_branch"),url:ee(s,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let r=ao(e,"--branch"),s=ao(e,"--limit")??"20",o=await me({path:"repos/{owner}/{repo}/actions/runs",params:{branch:r,per_page:s},cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(o.status!==0)return o;let i=tn(Qe(JSON.parse(o.stdout)).workflow_runs).map(a=>({databaseId:Bn(a,"database_id")||Bn(a,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:o.stderr}}if(e[0]==="release"&&e[1]==="list"){let r=ao(e,"--limit")??"20",s=await me({path:"repos/{owner}/{repo}/releases",params:{per_page:r},cwd:t,signal:n,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let o=tn(JSON.parse(s.stdout)).map(i=>({tagName:ee(i,"tag_name"),publishedAt:ee(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(o),stderr:s.stderr}}return null}async function Qx(e,t,n){let r=await me({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,signal:n,command:`gh pr view ${e}`});if(r.status!==0)return r;let s=Qe(JSON.parse(r.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:r.stdout,stderr:r.stderr};let o=ee(Qe(s.head),"sha"),[i,a]=o?await Promise.all([me({path:`repos/{owner}/{repo}/commits/${o}/status`,cwd:t,signal:n,command:`gh pr view ${e} status`}),me({path:`repos/{owner}/{repo}/commits/${o}/check-runs`,cwd:t,signal:n,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],c=i.status===0?tn(Qe(JSON.parse(i.stdout)).statuses):[],u=a.status===0?tn(Qe(JSON.parse(a.stdout)).check_runs):[];return{status:0,stderr:[r.stderr,i.stderr,a.stderr].filter(Boolean).join(`
|
|
84
|
+
`),stdout:JSON.stringify({number:Bn(s,"number"),state:ee(s,"state").toUpperCase(),mergeable:Xx(s),statusCheckRollup:[...c.map(l=>({conclusion:ee(l,"state").toUpperCase()})),...u.map(l=>({status:ee(l,"status").toUpperCase(),conclusion:ee(l,"conclusion").toUpperCase()}))],url:ee(s,"html_url")})}}function Xx(e){let t=ee(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}var Xm=g(()=>{"use strict";Wo();co();pt()});function eg(e,t,n){let r=Date.now();return()=>Zx(e,t,n,r)}async function Zx(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return Z("missing PR number");let s=await is(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return Z(s.stderr||"gh pr view failed");let o=oc(s.stdout),i=Array.isArray(o.statusCheckRollup)?o.statusCheckRollup:[],a=String(o.mergeable??""),c=i.map(ev),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(o.state)!=="OPEN")return ft("failure",`PR #${e} is ${String(o.state).toLowerCase()}`,{mergeable:a});if(a==="CONFLICTING")return ft("failure",`PR #${e} has merge conflicts`,{failing:u,pending:l,mergeable:a});if(u>0)return ft("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return In(`PR #${e} has ${l} pending checks`);if(i.length===0){let f=Date.now()-r;return a==="UNKNOWN"||a==="BLOCKED"||f<n.emptyChecksGraceMs?In(`PR #${e} has no registered checks yet`,{checks:0,mergeable:a,empty_checks_elapsed_ms:f}):ft("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?In(`PR #${e} mergeability is still unknown`,{checks:i.length,mergeable:a}):ft("success",`PR #${e} checks passed`,{checks:i.length,mergeable:a})}async function tg(e,t){if(!e)return Z("missing run id");let n=await is(["run","view",e,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(n.status!==0)return Z(n.stderr||"gh run view failed");let r=oc(n.stdout),s=String(r.status??"").toLowerCase(),o=String(r.conclusion??"").toLowerCase();return s!=="completed"?In(`run ${e} is ${s||"pending"}`):o==="success"?ft("success",`run ${e} succeeded`,Zm(r)):ft("failure",`run ${e} concluded ${o||"unknown"}`,Zm(r))}async function ng(e,t){let n=await is(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(n.status!==0)return"";let r=JSON.parse(n.stdout),s=Array.isArray(r)?r[0]:void 0;return Mn(s)&&s.databaseId!=null?String(s.databaseId):""}async function rg(e,t,n){let r=await is(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return Z(r.stderr||"gh release list failed");let o=tn(JSON.parse(r.stdout)).find(i=>{let a=String(i.tagName??""),c=new Date(String(i.publishedAt??""));return i.isDraft!==!0&&(!e||tv(e,a))&&c>=t});return o?ft("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):In("no matching release is published yet")}function ev(e){let t=Mn(e)?e:{},n=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(n)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(n)?"failure":"pending"}function Zm(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 tv(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}var sg=g(()=>{"use strict";Zt();Xm();co()});function as(){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(`
|
|
85
|
+
`)}var cu=g(()=>{"use strict"});var og=g(()=>{"use strict";N()});var ig=g(()=>{"use strict"});function nv(e){return Object.keys(e)}function Xn(e){return{...e,fields:nv(e.fields)}}var ag,cg,ug,rv,sv,ov,lg,uu=g(()=>{"use strict";ag="red.castle.lane.v1",cg="red.castle.state.v1",ug="red.castle.history.v1",rv="red.castle.validation.v2",sv="red.castle.envelope.v1",ov="red.castle.hitl-card.v1",lg=[Xn({schemaId:ag,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}}),Xn({schemaId:cg,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}}),Xn({schemaId:ug,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}}),Xn({schemaId:rv,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}}),Xn({schemaId:sv,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}}),Xn({schemaId:ov,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 XM,Uo=g(()=>{"use strict";N();uu();XM=new Map(lg.map(e=>[e.schemaId,new Set(e.fields)]))});var dg=g(()=>{"use strict";ig();Uo()});var fg=g(()=>{"use strict"});var qo=g(()=>{"use strict"});var lu=g(()=>{"use strict";qo()});var Jo=g(()=>{"use strict"});import{appendFile as cv,mkdir as uv,readFile as lv}from"node:fs/promises";import{dirname as dv,join as fv}from"node:path";function du(e,t){if(typeof e!="string"||e.length===0)throw new Error(`singleton event ${t} must be a non-empty string`);return e}function pg(e){if(e===null||typeof e!="object"||Array.isArray(e))throw new Error("singleton event must be a record");let t={...e},n=t.payload;if(typeof n=="string")try{t.payload=JSON.parse(n)}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:du(t.at,"at"),singleton:du(t.singleton,"singleton"),kind:du(t.kind,"kind"),...t.payload===void 0?{}:{payload:t.payload}}}function pv(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function mv(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function gv(e){return fv(e.castleStateRoot,"singleton-events.toonl")}function fu(e,t={}){let n=t.fs??{appendFile:cv,mkdir:uv,readFile:lv},r=t.clock??(()=>new Date().toISOString()),s=gv(e);return{path:s,async append(o){let i=pg({at:o.at??r(),...o});return await n.mkdir(dv(s),{recursive:!0}),await n.appendFile(s,Jt().push(pv(i)),"utf8"),i},async read(o={}){mv(o.tail);let i;try{i=await n.readFile(s,"utf8")}catch(c){if(c.code==="ENOENT")return[];throw c}let a=qt(i).map(pg);return o.tail===void 0?a:o.tail===0?[]:a.slice(-o.tail)}}}var pu=g(()=>{"use strict";N()});var Vo=g(()=>{"use strict";N();Jo();pu()});var mg=g(()=>{"use strict";qo();lu();Vo()});var gg=g(()=>{"use strict"});var N1,hg=g(()=>{"use strict";N();N1=24*60*60*1e3});var yg=g(()=>{"use strict";Uo()});var j1,G1,bg=g(()=>{"use strict";j1=15*6e4,G1=30*6e4});var wg=g(()=>{"use strict"});var yv,bv,U1,q1,_g=g(()=>{"use strict";yv=["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"],bv={pre_worktree:["cargo","gradle"]},U1=Object.values(bv).flat(),q1=new Set(yv)});var Rg=g(()=>{"use strict"});var kg=g(()=>{"use strict";Vo()});var Sg=g(()=>{"use strict"});var Eg=g(()=>{"use strict"});var xg=g(()=>{"use strict"});var mu=g(()=>{"use strict"});var vg=g(()=>{"use strict";N();mu()});var Cg=g(()=>{"use strict";N()});var gu=g(()=>{"use strict"});var hu=g(()=>{"use strict"});import{resolve as re}from"node:path";function Tg(e){let t=re(e),n=re(t,"state"),r=re(n,"castle"),s=re(t,"tmp"),o=re(s,"supervisors"),i=re(s,"workers"),a=re(s,"monitors"),c=re(s,"worktrees");return{redRoot:t,stateRoot:n,castleStateRoot:r,castleHistory:re(r,"history.toonl"),castleValidation:re(r,"validation.toonl"),tmpRoot:s,supervisorsRoot:o,supervisor:u=>re(o,u),projectSupervisor:re(o,wv),workersRoot:i,worker:u=>re(i,u),workerSteerFile:u=>re(i,u,"steer.toon"),monitorsRoot:a,monitor:u=>re(a,u),worktreesRoot:c,worktreeLane:u=>re(c,u)}}var wv,Og=g(()=>{"use strict";wv="default"});var Ag=g(()=>{"use strict";Jo()});var Pg=g(()=>{"use strict"});var Ig=g(()=>{"use strict";gu();hu()});import{mkdir as _v,readFile as Rv,rename as kv,rm as Sv,writeFile as Ev}from"node:fs/promises";import{dirname as xv,join as vv}from"node:path";function Tv(e){if(!Cv.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function Ov(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function Av(e){return e.code==="ENOENT"}function Pv(e){return e.code==="EEXIST"}function Iv(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 n of["start_time","acquired_at","renewed_at"])if(typeof t[n]!="string"||t[n].length===0)throw new Error(`singleton lease ${n} must be a non-empty string`);return t}function yu(e,t){return e.pid===t.pid&&e.start_time===t.startTime}function Ko(e,t){return Tv(t),vv(e.castleStateRoot,"singletons",t,"lease.toon")}function Lg(e,t={}){let n=t.fs??{mkdir:_v,readFile:Rv,rename:kv,rm:Sv,writeFile:Ev},r=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??Ov;async function o(a){try{return Iv(L(await n.readFile(a,"utf8")))}catch(c){if(Av(c))return;throw c}}async function i(a,c){let u=`${a}.tmp-${c.pid}-${crypto.randomUUID()}`;await n.writeFile(u,C(c,{keyedMapCollapse:!0}),{encoding:"utf8"}),await n.rename(u,a)}return{read(a){return o(Ko(e,a))},async acquire(a,c){let u=Ko(e,a);await n.mkdir(xv(u),{recursive:!0});let l=!1;for(;;){let f=r(),d={pid:c.pid,start_time:c.startTime,acquired_at:f,renewed_at:f};try{return await n.writeFile(u,C(d,{keyedMapCollapse:!0}),{encoding:"utf8",flag:"wx"}),{acquired:!0,reaped:l,lease:d}}catch(p){if(!Pv(p))throw p}let m=await o(u);if(m){if(yu(m,c))return{acquired:!0,reaped:l,lease:m};if(await s(m.pid))return{acquired:!1,lease:m};await n.rm(u,{force:!0}),l=!0}}},async renew(a,c){let u=Ko(e,a),l=await o(u);if(!l||!yu(l,c))throw new zo(a);let f={...l,renewed_at:r()};return await i(u,f),f},async release(a,c){let u=Ko(e,a),l=await o(u);if(!l)return!1;if(!yu(l,c))throw new zo(a);return await n.rm(u,{force:!0}),!0}}}var zo,Cv,$g=g(()=>{"use strict";N();zo=class extends Error{constructor(t){super(`singleton lease ${JSON.stringify(t)} is held by another owner`),this.name="SingletonLeaseOwnershipError"}},Cv=/^[a-z0-9][a-z0-9._-]{0,63}$/});var bu=g(()=>{"use strict"});var Dg=g(()=>{"use strict"});var Lv,$v,Dv,OB,Ng=g(()=>{"use strict";Lv={refreshCadenceS:270,tolerance:3},$v=270,Dv=2700,OB={...Lv,claimGraceS:$v,recentCommitProtectionS:Dv}});var Mg=g(()=>{"use strict"});function Bg(e){return e==="single-object"?"rest":"graphql"}function W(e,t,n,r,s){return{key:e,kind:"read",cardinality:t,surface:s??Bg(t),budget:n,...s?{only:s}:{},why:r}}function ge(e,t,n,r){return{key:e,kind:"write",cardinality:"single-object",surface:t,budget:n,why:r}}var Fg,PB,jg=g(()=>{Fg=[W("issue view","single-object","rest","one issue by number; REST answers it in one request against the idle pool"),W("pr view","single-object","rest","one pull request by number, polled per Worker per iteration"),W("repo view","single-object","rest","one repository's own metadata"),W("run view","single-object","rest","one Actions run; the Actions API has no GraphQL surface either way"),W("release view","single-object","rest","one release by tag"),W("pr diff","single-object","rest","one pull request's diff, served by a REST media type"),W("issue list","multi-node","graphql","a connection of issues; one GraphQL query beats N REST pages"),W("pr list","multi-node","graphql","a connection of pull requests; one GraphQL query beats N REST pages"),W("pr checks","multi-node","graphql","every check context on one commit, which is a connection, not an object"),W("release list","multi-node","rest","Releases have no GraphQL connection gh reads; REST pages them","rest"),W("run list","multi-node","rest","the Actions API has no GraphQL surface, so a listing draws the request pool","rest"),W("label list","multi-node","graphql","a connection of labels inside one repository"),W("issue list (search)","multi-node","search","`--search` routes the listing through the search connection, metered 30/min"),W("pr list (search)","multi-node","search","`--search` routes the listing through the search connection, metered 30/min"),W("search issues","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),W("search prs","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),W("search repos","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),W("api graphql","multi-node","graphql","the caller wrote the query; `gh api graphql` is GraphQL by construction"),W("api rest","single-object","rest","any `gh api <path>` that is not `graphql` is a REST request"),ge("issue create","graphql","graphql","gh files an issue with the createIssue mutation \u2014 an exhausted GraphQL pool blocks filing"),ge("issue edit","graphql","graphql","gh edits labels, body and assignees with GraphQL mutations"),ge("issue close","graphql","graphql","gh closes with the closeIssue mutation"),ge("issue reopen","graphql","graphql","gh reopens with the reopenIssue mutation"),ge("issue comment","rest","rest","gh POSTs to `repos/{o}/{r}/issues/{n}/comments`, a REST request"),ge("issue develop","graphql","graphql","linked-branch creation is a GraphQL mutation"),ge("pr create","rest","rest","gh POSTs to `repos/{o}/{r}/pulls`, a REST request"),ge("pr comment","rest","rest","a pull request comment is an issue comment: the same REST POST"),ge("pr merge","graphql","graphql","gh merges with the mergePullRequest mutation"),ge("pr close","graphql","graphql","gh closes with a GraphQL mutation"),ge("pr edit","graphql","graphql","gh edits with GraphQL mutations"),ge("pr ready","graphql","graphql","marking ready-for-review is a GraphQL mutation"),ge("pr update-branch","rest","rest","gh PUTs `repos/{o}/{r}/pulls/{n}/update-branch`, a REST request"),ge("label create","rest","rest","gh POSTs `repos/{o}/{r}/labels`, a REST request")],PB=new Map(Fg.map(e=>[e.key,e]))});var Gg=g(()=>{});var Hg=g(()=>{});var Wg=g(()=>{});var Ug=g(()=>{});var qg=g(()=>{jg();Gg();Hg();Wg();Ug()});import{execFile as jv}from"node:child_process";import{promisify as Gv}from"node:util";var wF,Jg=g(()=>{"use strict";qg();bu();wF=Gv(jv)});var Vg=g(()=>{"use strict";og();dg();fg();qo();mg();gg();hg();yg();Uo();bg();wg();_g();Rg();lu();kg();Sg();Eg();xg();Vo();vg();Cg();uu();gu();hu();Og();Ag();Pg();Ig();Jo();mu();pu();$g();bu();Dg();Ng();Mg();Jg()});import{EventEmitter as Hv}from"node:events";import{spawn as Wv}from"node:child_process";function Qo(e,t){let n=Number(t);return!Number.isSafeInteger(n)||n<=0?!1:!!(e.pull_request?.number===n||e.check_run?.pull_requests?.some(r=>r.number===n)||e.check_suite?.pull_requests?.some(r=>r.number===n))}function Xo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var cs,wu,Uv,qv,Jv,Vv,Yo,_u=g(()=>{cs="github-webhook",wu="github.webhook.delivery";Uv="pull_request,pull_request_review,check_run,check_suite,workflow_run",qv=3,Jv=1e3,Vv=/no extension matched|unknown command|command not found/i,Yo=class extends Hv{constructor(n,r){super();this.opts=n;this.terminate=r}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 n=this.child;this.child=void 0,n&&(this.stopping=this.terminate(n,Jv).then(()=>{}),await this.stopping)}makeWakeSignalFor(n,r){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(n==="pr"?Qo(c,r):Xo(c,r))&&(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 n=this.opts.ghBin??"gh",r;try{r=Wv(n,["webhook","forward",`--events=${Uv}`],{cwd:this.opts.cwd,stdio:["ignore","pipe","pipe"],detached:process.platform!=="win32"})}catch{return}this.child=r;let s="";r.stdout?.setEncoding("utf8"),r.stdout?.on("data",i=>{s+=i;let a;for(;(a=s.indexOf(`
|
|
86
|
+
`))>=0;){let c=s.slice(0,a).trim();s=s.slice(a+1),c&&this.onLine(c)}});let o=[];r.stderr?.on("data",i=>{o.push(Buffer.from(i))}),r.once("error",()=>{this.child===r&&(this.child=void 0),this.scheduleRestart()}),r.once("close",i=>{if(this.child===r&&(this.child=void 0),this._dead)return;let a=Buffer.concat(o).toString("utf8");Vv.test(a)||this.restarts===0&&(i===1||i===127)||this.scheduleRestart()})}onLine(n){let r;try{r=JSON.parse(n)}catch{this.emit("malformed-delivery",n);return}this._mode!=="webhook"&&(this._mode="webhook",this.emit("mode-changed","webhook")),this.emit("delivery",r)}scheduleRestart(){if(this._dead||this.restarts>=qv)return;let n=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),n).unref()}}});var Zo,Kg=g(()=>{"use strict";_u();_u();pt();Zo=class extends Yo{constructor(t){super(t,Ln)}}});import{EventEmitter as Kv}from"node:events";import{join as zv}from"node:path";function ku(e){let t=so(e.cwd),n=Tg(zv(t,".red"));return new Ru({...e,leases:e.leases??Lg(n),lane:e.lane??fu(n),makeForwarder:e.makeForwarder??((r,s)=>new Zo({cwd:r,cancelSignal:s})),isLeaseHolderLive:e.isLeaseHolderLive??(r=>$n(r.pid,r.start_time))})}var Ru,zg=g(()=>{"use strict";Vg();Kg();pt();ec();Ru=class extends Kv{constructor(n){super();this.options=n}_mode="polling";cursor=0;timer;fallback;stopped=!1;syncing=!1;get mode(){return this.fallback?.mode??this._mode}async start(){let n=await this.options.leases.read(cs).catch(()=>{});if(!n||!await this.options.isLeaseHolderLive(n)){this.startFallback();return}let r=await this.options.lane.read().catch(()=>{});if(!r){this.degradeToFallback();return}this.cursor=r.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(n,r){return()=>{if(this.fallback)return this.fallback.makeWakeSignalFor(n,r)();if(this._mode!=="webhook"||this.stopped)return;let s=new AbortController,o=a=>{(n==="pr"?Qo(a,r):Xo(a,r))&&(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",n=>{this.emit("mode-changed",n)}),this.fallback.on("delivery",n=>{this.emit("delivery",n)}),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 n=await this.options.lane.read();n.length<this.cursor&&(this.cursor=0);let r=n.slice(this.cursor);this.cursor=n.length;for(let o of r)o.singleton===cs&&o.kind===wu&&o.payload&&this.emit("delivery",o.payload);let s=await this.options.leases.read(cs);(!s||!await this.options.isLeaseHolderLive(s))&&this.degradeToFallback()}finally{this.syncing=!1}}}}});var Su={};B(Su,{listWaits:()=>io,renderWaitHelp:()=>as,runWait:()=>Xv});import{randomUUID as Yg}from"node:crypto";import{mkdir as Yv,rm as Qv}from"node:fs/promises";async function Xv(e,t=process.cwd()){let n;try{n=await rp(e)}catch(r){return await r0(e,r)}if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(as()),0;if(n.kind==="ls"){let r={schema:zf,version:1,waits:await io(t)};return process.stdout.write(Fn(r,n.options.format)),0}return Xa(n.kind)?await Zv({...n,kind:n.kind},t):(process.stdout.write(as()),2)}async function Zv(e,t){let n=e.kind,r=sc({id:Yg(),kind:n,target:n0(e),reason:e.options.reason,pid:process.pid,pid_start_time:await Ar(process.pid),started_at:new Date().toISOString(),deadline_at:new Date(Date.now()+e.options.timeoutMs).toISOString(),timeout_ms:e.options.timeoutMs,poll_tier:Ya[n],status:"running",attempts:0}),s=lp(t,r.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 Yv(Dn(t),{recursive:!0}),await Nn(s,r);let l=await e0(e,t,s,r,o.signal);i&&(l={...l,verdict:Z(`wait interrupted by ${i}`,l.verdict.details)});let f=await mp({kind:n,entry:r,verdict:l.verdict,options:e.options,cwd:t,cleanupProven:l.cleanupProven,survivors:l.survivors});return process.stdout.write(Fn(f.result,e.options.format)),f.exitCode}catch(l){let f=Z(l instanceof Error?l.message:String(l)),d=Nr(n,r,f,{status:"success"},new Date().toISOString());return await Mr(e.options.resultFile,d,e.options.format).catch(()=>{}),process.stdout.write(Fn(d,e.options.format)),2}finally{process.removeListener("SIGINT",c),process.removeListener("SIGTERM",u),await Qv(s,{force:!0}).catch(()=>{})}}async function e0(e,t,n,r,s){let o={cwd:t,signal:s,timeoutMs:e.options.probeTimeoutMs};switch(e.kind){case"cmd":return await Gp({commandLine:e.commandLine??"",options:e.options,cwd:t,spoolDir:ap(t),registryPath:n,entry:r,signal:s});case"pr":{let i=e.target??"";if(!/^[1-9][0-9]*$/.test(i))return{verdict:Z("missing PR number")};r.webhook_mode="polling";let a=ku({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:eg(i,o,{emptyChecksGraceMs:Ir("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_PR_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("pr",i),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"run":{let i=await t0(e,o,n,r);if(!i.ok)return{verdict:Z(i.reason)};r.webhook_mode="polling";let a=ku({cwd:t,cancelSignal:s});a.once("mode-changed",()=>{r.webhook_mode="webhook"}),await a.start();try{return await wo({probe:()=>tg(i.value,o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RUN_POLL_MS",15e3),makeWakeSignal:a.makeWakeSignalFor("run",i.value),registryPath:n,entry:r,signal:s})}finally{await a.stop()}}case"release":return await wo({probe:()=>rg(e.tagGlob,new Date(r.started_at),o),timeoutMs:e.options.timeoutMs,baseSleepMs:Ir("RSP_WAIT_RELEASE_POLL_MS",6e4),registryPath:n,entry:r,signal:s})}}async function t0(e,t,n,r){if(e.target)return{ok:!0,value:e.target};if(!(e.latest&&e.branch))return{ok:!1,reason:"missing run id"};let s=await ng(e.branch,t);return s?(e.target=s,r.target=`run:${s}`,await Nn(n,r),{ok:!0,value:s}):{ok:!1,reason:`no run found for branch ${e.branch}`}}function n0(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 r0(e,t){let n=e.includes("--json")?"json":"toon",r=e.indexOf("--result-file"),s=r>=0?e[r+1]:void 0,o=Xa(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=sc({id:Yg(),kind:o,target:`${o}:`,reason:"",pid:process.pid,started_at:i,deadline_at:i,timeout_ms:0,poll_tier:Ya[o],status:"indeterminate",attempts:0}),c=Nr(o,a,Z(t instanceof Error?t.message:String(t)),{status:"success"},i);return await Mr(s,c,n).catch(()=>{}),process.stdout.write(Fn(c,n)),2}var Eu=g(()=>{"use strict";sp();hp();Wp();Zt();tc();sg();pt();Dr();cu();zg();Dr();cu()});import{existsSync as c0}from"node:fs";import{join as u0}from"node:path";function l0(){for(let e of(process.env.PATH??"").split(":"))if(e&&c0(u0(e,"rsp")))return!0;return!1}function us(){return l0()?["rsp"]:[process.execPath,process.argv[1]]}var xu=g(()=>{"use strict"});var ei={};B(ei,{parseProxyCommandLine:()=>th,rewriteProxyCommandLine:()=>eh,runProxy:()=>p0});import{spawn as d0}from"node:child_process";function f0(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function p0(e,t){let n="",r="",s=[],o=process.hrtime.bigint();try{if(n=th(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=eh(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await m0(t.telemetryRoot,n,c),await Zg(n);throw c}for(let c of s)await g0(t.telemetryRoot,c);let i=await Zg(r||n),a=Number(process.hrtime.bigint()-o)/1e6;return await ht(t.telemetryRoot,{collection:Se,ts:new Date().toISOString(),command:n,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),i}function eh(e,t="lossless",n=us()){let r=R0(e),s=[];return{commandLine:r.map((i,a)=>{if(i.kind==="operator"||_0(r,a)==="|")return i.text;let c=h0(i.text,t,n);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function th(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp proxy -- <command line>");return r}async function m0(e,t,n){await ht(e,{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:xe(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function g0(e,t){await ht(e,{collection:te,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 Zg(e){let t=d0(e,{shell:!0,stdio:"inherit"}),n=ce();return t.once("close",n),t.once("error",n),await new Promise(r=>{t.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
87
|
+
`),r(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}function h0(e,t,n){let r=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=S0(o);if(!i)return null;let a=w0(i);if(a>=i.length)return null;let c=i.slice(a),u=c.map(p=>p.value);if(nn(u))return{text:e,match:{command:c.map(p=>p.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let l=y0(c);if(!l)return null;let f=i.slice(0,a).map(p=>p.raw),d=t==="lossless"?[]:[`--${t}`],m=[...f,...n.map(f0),...d,...l.wrapperWords].join(" ");return{text:`${r}${m}${s}`,match:{command:c.map(p=>p.raw).join(" "),commandFamily:xe(u.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:l.capabilityId}}}function y0(e){let t=e.map(r=>r.value),n=e.map(r=>r.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:n}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:n}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:n}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:n}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:n}:b0(t,n)}function b0(e,t){return e[0]==="cat"&&e.length===2&&vu(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&vu(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])&&vu(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function vu(e){return!!e&&!e.startsWith("-")}function w0(e){let t=0;for(;t<e.length&&qn(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&qn(e[t].value);)t+=1;return t}function _0(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function R0(e){let t=[],n=0,r,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(r){i===r&&(r=void 0);continue}if(i==="'"||i==='"'){r=i;continue}let a=k0(e,o);a&&(o>n&&t.push({kind:"segment",text:e.slice(n,o)}),t.push({kind:"operator",text:a}),o+=a.length-1,n=o+1)}return n<e.length&&t.push({kind:"segment",text:e.slice(n)}),t}function k0(e,t){let n=e.slice(t,t+2);if(n==="&&"||n==="||")return n;let r=e[t];return r===";"||r==="|"?r:void 0}function S0(e){let t=[],n="",r="",s,o=!1,i=!1,a=()=>{i&&(t.push({raw:n,value:r}),n="",r="",i=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(o){n+=u,r+=u,o=!1,i=!0;continue}if(u==="\\"){n+=u,o=!0,i=!0;continue}if(s){n+=u,u===s?s=void 0:r+=u,i=!0;continue}if(u==="'"||u==='"'){n+=u,s=u,i=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;n+=u,r+=u,i=!0}return s||o?null:(a(),t)}var ti=g(()=>{"use strict";V();Wr();xu();Ge()});function sh(e,t={}){let n=E0(e);if(n.length<12)return[];let r=new Map,s=new Map;for(let d of n){s.set(d.signature,(s.get(d.signature)??0)+1);for(let m of new Set(d.tokens))r.set(m,(r.get(m)??0)+1)}let o=n.map(d=>d.length),i=n.map(d=>d.tokens.length),a=n.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=Cu(o),u=Cu(i),l=Cu(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(m=>A0(d.start,d.end,m.start,m.end))).map(d=>({line:d,score:Tu(d.length,c)+Tu(d.tokens.length,u)+Tu(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+T0(d.tokens,r,n.length)+O0(d.signature,s,n.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 E0(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(nh(r++,n,o,e.slice(n,o).replace(/\r$/,""))),n=o+1}return(n<e.length||e.length===0)&&t.push(nh(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function nh(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:x0(r),tokens:v0(r),numbers:C0(r),length:r.length}}function x0(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 v0(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function C0(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function T0(e,t,n){let r=[...new Set(e)];if(r.length===0)return 0;let s=r.map(o=>Math.log2(n/Math.max(1,t.get(o)??n))).sort((o,i)=>i-o).slice(0,6);return s.reduce((o,i)=>o+i,0)/Math.max(1,s.length)}function O0(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function Cu(e){let t=rh(e),n=rh(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function Tu(e,t){return Math.abs(e-t.median)/t.mad}function rh(e){let t=[...e].sort((r,s)=>r-s),n=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[n]:((t[n-1]??0)+(t[n]??0))/2}function A0(e,t,n,r){return e<r&&n<t}var oh=g(()=>{"use strict"});var Ou={};B(Ou,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>mt,GIT_LOG_MACHINE_FIELDS:()=>ah,StructuredUsageError:()=>ni,cleanStatusPayload:()=>dh,recoveryInstruction:()=>He,renderGitContract:()=>ch,runGitWrapper:()=>I0});import{spawn as P0}from"node:child_process";async function I0(e,t){let n=uh(e),r=lh(n.argv),s=await N0(r,n.argv.slice(1));return ch(e,s,t)}async function ch(e,t,n){let r=uh(e);if((t.status??0)!==0||t.signal){let f=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=lh(r.argv),o;try{o=M0(s,r.argv,t.stdout,r.query)}catch(f){if(f instanceof ri)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:f.reason,family:"git status",stderrHead:f.message}};throw f}let i=C(o);if(L0(s,i,r.full,n))return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o};let a=tC(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 n.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 ${He(u)}
|
|
82
88
|
`;return{stdout:Buffer.from(`${C(a.payload)}
|
|
83
|
-
${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
|
|
84
|
-
`)[0]??"",
|
|
85
|
-
`).filter(Boolean),n
|
|
86
|
-
`),s=[],o=null;for(let c of
|
|
87
|
-
`).filter(Boolean).map(i=>{let[a,c,u,l,
|
|
88
|
-
`)){let
|
|
89
|
-
`).length:0,files:
|
|
90
|
-
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function
|
|
91
|
-
`).map(t=>{let
|
|
92
|
-
`)},
|
|
89
|
+
${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 He(e){return e.startsWith("el:")?`rsp show ${e}`:e}function uh(e){let{argv:t,query:n,full:r}=Yd(e),s=t.slice(2).find(o=>o.startsWith("--rsp-"));if(s)throw new ni(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:t,query:n,full:r}}function L0(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!$0(e)||r.level!=="lossless")return!0;let s=eC(r.heavyGitByteThreshold,mt);return Buffer.byteLength(t)<=s}function $0(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function lh(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 D0(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${ah.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function N0(e,t){let n=P0("git",D0(e,t),{stdio:["ignore","pipe","pipe"]}),r=ce();n.once("close",r),n.once("error",r);let s=[],o=[];return n.stdout.on("data",i=>s.push(i)),n.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{n.on("error",a),n.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function M0(e,t,n,r){switch(e){case"status":return B0(t,n,r);case"log":return J0(t,n,r);case"diff":return V0(t,n,r);case"commit":return Tt(K0(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Tt(z0(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return Y0(t,n,r);case"branch":return Q0(t,n,r);case"show":return X0(t,n,r)}}function B0(e,t,n){let r="",s=[],o=!1,i=!1;for(let u of F0(t)){if(!u)continue;if(i=!0,u.startsWith("# branch.head ")){r=u.slice(14),o=!0;continue}if(u.startsWith("# ")){o=!0;continue}if(u.startsWith("## ")){r=H0(u),o=!0;continue}let l=j0(u);if(l){o=!0,s.push(l);continue}let f=G0(u);f&&(o=!0,s.push(f))}if(s.length===0){if(!i||o)return dh(e.join(" "),r);throw new ri("git-status-unparseable")}let a=ae(s,n),c=fh(a,"state");return Tt({command:e.join(" "),branch:r,rows:a,summary:q0(a.length,s.length,c,n)},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function F0(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function j0(e){if(e.startsWith("1 ")){let t=e.split(" "),n=t[1]??"..",r=t.slice(8).join(" ");return ls(r,n)}if(e.startsWith("2 ")){let t=e.split(" "),n=t[1]??"..";return ls(t.slice(9).join(" "),n)}if(e.startsWith("u ")){let t=e.split(" "),n=t[1]??"..";return ls(t.slice(10).join(" "),n)}return e.startsWith("? ")?ls(e.slice(2),"??"):null}function G0(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?ls(W0(e.slice(3),t),t):null}function ls(e,t){let n=ih(t[0]??"."),r=ih(t[1]??".");return{path:U0(e),index:n,worktree:r,state:Z0(`${n}${r}`)}}function ih(e){return e===" "?".":e}function H0(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function W0(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let n=e.lastIndexOf(" -> ");return n>=0?e.slice(n+4):e}function U0(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function q0(e,t,n,r){let s=[];return n.renamed&&s.push(`${n.renamed} renamed`),n.untracked&&s.push(`${n.untracked} untracked`),n.changed&&s.push(`${n.changed} changed`),`${r?`${e}/${t}`:e} changes: ${n.added??0} added, ${n.modified??0} modified, ${n.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function dh(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 J0(e,t,n){let r=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=ae(r,n);return Tt({command:e.join(" "),commits:s,summary:`${n?`${s.length}/${r.length}`:s.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function V0(e,t,n){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),o=ae(s,n),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 Tt({command:e.join(" "),files:o,summary:`${n?`${o.length}/${s.length}`:o.length} files, +${i.added} -${i.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function K0(e,t){let n=t.split(`
|
|
90
|
+
`)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),o=/(\d+) insertions?\(\+\)/.exec(t),i=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(o?.[1]??0),f=Number(i?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:f,summary:`commit ${c} on ${a}: ${u} files, +${l} -${f}`}}function z0(e,t){let n=t.split(`
|
|
91
|
+
`).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,f=""]=c.split(" "),[d,m]=(l??"").split(":");return{flag:u??"",from:d??"",to:m??"",summary:f}}),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:r,refs:s,summary:`push already satisfied for ${i} -> ${r}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:r,refs:s,summary:`pushed ${i} -> ${r} +${a} commits`}}function Y0(e,t,n){let r=t.split(`
|
|
92
|
+
`),s=[],o=null;for(let c of r){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),f=o.commit.slice(0,12);l&&l.commit===f&&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:f,path:o.path}),o=null}let i=ae(s,n),a=fh(i,"author");return Tt({command:e.join(" "),ranges:i,authors:a,summary:`${n?`${i.length}/${s.length}`:i.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function Q0(e,t,n){let r=t.split(`
|
|
93
|
+
`).filter(Boolean).map(i=>{let[a,c,u,l,f,d]=i.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=ae(r,n),o=s.find(i=>i.current)?.name??"";return Tt({command:e.join(" "),branches:s,summary:`${n?`${s.length}/${r.length}`:s.length} branches${o?`, current ${o}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function X0(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,o=r>=0&&s>=0?t.slice(r+1,s):"",i=s>=0?t.slice(s+1):t,[a,c,u,l,f,d=""]=o.split(""),m=[];for(let y of i.split(`
|
|
94
|
+
`)){let w=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!w)continue;let k=w[3]??"";m.push({path:(w[1]??"").trim(),changed:Number(w[2]??0),added:[...k].filter(T=>T==="+").length,deleted:[...k].filter(T=>T==="-").length,binary:k.startsWith("Bin")})}let p=ae(m,n),b=0,_=0,h=0;for(let y of p)b+=typeof y.changed=="number"?y.changed:0,_+=typeof y.added=="number"?y.added:0,h+=typeof y.deleted=="number"?y.deleted:0;return Tt({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
|
|
95
|
+
`).length:0,files:p,summary:`${n?`${p.length}/${m.length}`:p.length} files, ${b} changed, +${_} -${h}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Tt(e,t,n){return t?ut(e,n):e}function Z0(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function fh(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function eC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function tC(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var ah,ni,ri,un=g(()=>{"use strict";V();N();je();wr();Ve();je();ah=["%h","%an","%as","%s"];ni=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return Od(this.command,this.flag,this.validFlags,`${this.command} --help`)}},ri=class extends Error{constructor(n){super("git status output was not recognized; passing raw stdout through");this.reason=n}}});var Lu={};B(Lu,{NORMALIZATION_ALLOWLIST:()=>wh,NORMALIZE_ANSI:()=>oi,NORMALIZE_BLANK_LINES:()=>ci,NORMALIZE_CR_PROGRESS:()=>ii,NORMALIZE_JSON_TOON:()=>bh,NORMALIZE_TRAILING_WHITESPACE:()=>ai,crushJsonArrayItems:()=>ds,formatCodexNormalizeDecision:()=>Eh,formatNormalizeDecision:()=>Sh,hookDecisionFromClaudePostExecJson:()=>_h,hookDecisionFromCodexPostExecJson:()=>Rh,normalizeOutput:()=>ui,renderGenericJsonLane:()=>Pu,runClaudePostExecHook:()=>sC,runCodexPostExecHook:()=>oC,transcodeJsonToToon:()=>yh});import{readFileSync as si}from"node:fs";function yh(e,t){let n=t?.encode??C,r=t?.decode??L,s=e.trimEnd();if(!s)return e;let o;try{o=JSON.parse(s)}catch{return e}let i;try{i=n(o)}catch{return e}let a;try{a=r(i)}catch{return e}return Au(o,a)?i.trimEnd():e}async function Pu(e,t={}){let n=uC(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:C(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,o=hh(t.minTokens,nC),i=hh(t.maxItems,rC);if(!(s>i&&mC(e)>=o))return{output:C(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??ds)(r,i)}catch(b){return{output:C(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:gC(b)}}}let u=c.items,l={items:u},f=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let m=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,p=C(l).trimEnd();return{output:[f,m,p].filter(Boolean).join(`
|
|
96
|
+
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function ds(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let n=new Set([0,e.length-1]),r=lC(e),s=new Set;r&&e.forEach((a,c)=>{Iu(a)!==r&&s.add(c)});let o=dC(e,r);for(let a of s)n.add(a);for(let a of o)n.add(a);let i=[...n].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 ui(e){let t=e;for(let n of wh)t=n.apply(t);return t}async function _h(e,t){return await kh(e,t)}async function Rh(e,t){return await kh(e,t)}async function kh(e,t){let n=cC(e),r=hC(n,["cwd"])||t.cwd;if(!await(t.isEnabled??aC)(r))return{kind:"passthrough",reason:"disabled"};let o=yC(n,"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??ui)(i);return c===i?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Sh(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Eh(e){return{stdout:"",status:0}}async function sC(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await _h(t,{cwd:process.cwd()}),r=Sh(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function oC(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await Rh(t,{cwd:process.cwd()}),r=Eh(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function iC(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let s=e.charCodeAt(n+1);if(s===93){for(n+=2;n<e.length;){let o=e.charCodeAt(n);if(o===7){n++;break}if(o===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(s===91){for(n+=2;n<e.length&&ph(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&ph(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function ph(e){return e>=32&&e<=63}function aC(e){return Fe(e,process.env).enabled}function cC(e){try{let t=JSON.parse(e);return Zn(t)?t:{}}catch{return{}}}function uC(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Zn(r)||Array.isArray(r)?{value:r}:null}catch{}let n=[];for(let r of e.split(/\r?\n/))if(r.trim())try{n.push(JSON.parse(r))}catch{return null}return n.length>0?{value:n}:null}function lC(e){let t=new Map;for(let s of e){let o=Iu(s);t.set(o,(t.get(o)??0)+1)}let[n,r]=[...t.entries()].sort((s,o)=>o[1]-s[1]||s[0].localeCompare(o[0]))[0]??[];return typeof n=="string"&&typeof r=="number"&&r>e.length/2?n:null}function Iu(e){return Array.isArray(e)?"array":Zn(e)?Object.keys(e).sort().map(t=>`${t}:${mh(e[t])}`).join("|"):mh(e)}function dC(e,t){let n=new Set,r=new Map;e.forEach((s,o)=>{if(!(t&&Iu(s)!==t))for(let[i,a]of xh(s)){let c=r.get(i)??[];c.push({index:o,value:a}),r.set(i,c)}});for(let s of r.values()){for(let o of fC(s))n.add(o);for(let o of pC(s))n.add(o)}return n}function fC(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let n=t.map(a=>a.value).sort((a,c)=>a-c),r=gh(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),o=gh(s);if(o===0)return t.filter(c=>c.value===r).length/t.length<.8?[]:t.filter(c=>c.value!==r).map(c=>c.index);let i=o*8;return t.filter(a=>Math.abs(a.value-r)>i).map(a=>a.index)}function pC(e){if(e.length<5)return[];if(!e.every(s=>typeof s.value=="string"||typeof s.value=="boolean"||s.value===null))return[];let t=new Map;for(let s of e)t.set(String(s.value),(t.get(String(s.value))??0)+1);if(Math.max(...t.values())/e.length<.8)return[];let r=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=r).map(s=>s.index)}function xh(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Zn(e)?Object.entries(e).flatMap(([n,r])=>xh(r,t?`${t}.${n}`:n)):[]}function mh(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function gh(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 mC(e){return Math.ceil(e.length/4)}function hh(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function gC(e){let n=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function hC(e,t){let n=e;for(let r of t){if(!Zn(n))return"";n=n[r]}return typeof n=="string"?n:""}function yC(e,t){let n=e[t];return Zn(n)?n:null}function Zn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Au(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)=>Au(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&Au(n[i],r[i]))}var oi,ii,ai,ci,bh,nC,rC,wh,fs=g(()=>{"use strict";N();je();oi={id:"ansi",apply:iC},ii={id:"cr-progress",apply:e=>e.split(`
|
|
97
|
+
`).map(t=>{let n=t.endsWith("\r")?t.slice(0,-1):t,r=n.lastIndexOf("\r");return r>=0?n.slice(r+1):n}).join(`
|
|
98
|
+
`)},ai={id:"trailing-whitespace",apply:e=>e.split(`
|
|
93
99
|
`).map(t=>t.replace(/[ \t]+$/,"")).join(`
|
|
94
|
-
`)},
|
|
100
|
+
`)},ci={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
|
|
95
101
|
|
|
96
|
-
`)};
|
|
97
|
-
`}function
|
|
98
|
-
`,status:0}}async function
|
|
102
|
+
`)};bh={id:"json-to-toon",apply:e=>yh(e)},nC=200,rC=15;wh=[oi,ii,ai,ci,bh]});var gs={};B(gs,{parseExecCommandLine:()=>Ph,renderExecContract:()=>Ah,runExecWrapper:()=>kC});import{isUtf8 as bC}from"node:buffer";import{spawn as wC}from"node:child_process";async function kC(e,t){let n=Ph(e),r=await SC(n);return await Ah(n,r,t)}async function Ah(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=$e(e,t.stdout,t.stderr);return{stdout:D(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:r}}if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let o=EC(r),i=o.kind==="text"?Buffer.from(o.text):r,a=UC(n.heavyByteThreshold,_C);if(i.length<=a&&n.level!=="terse")return{stdout:i,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let f=o.kind==="text"?vC(o.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):CC(r,r.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r,degradation:f.degradation}}function Ph(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function SC(e){let t=wC(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=ce();t.once("close",n),t.once("error",n);let r=[],s=[];return t.stdout.on("data",o=>r.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(r).toString("binary"),stderr:Buffer.concat(s).toString("binary"),status:a,signal:c})})})}function EC(e){return bC(e)?{kind:"text",text:xC(e.toString("utf8"))}:{kind:"bytes"}}function xC(e){let t=e;for(let n of[oi,ii,ai,ci])t=n.apply(t);return t}function vC(e,t,n,r,s,o=MC,i=ds){let c=Math.max(1,Math.floor((r==="terse"?Oh:RC)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=NC(e,c,l,o),d=TC(e),m=OC(d,e,u,c,l,f.kind==="ok"?f.lines:[],i),p=Ih(s,d,t,WC(u),n,m.summary),b=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Bh(f.error)}:m.degradation;return{text:Mh(p),degradation:b}}function CC(e,t,n,r){let s=Math.max(1,Math.floor(Oh/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Mh(Ih(r,"bytes",t,0,n,o))}}function Ih(e,t,n,r,s,o){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:o,recovery:{original:He(s)}}}function TC(e){let t=e.trim();return t?$h(t)?"json":Dh(e)?"jsonl":BC(e)?"unified-diff":Nh(e)?"tabular":FC(e)?"log-like":jC(e)?"prose":"untyped":"untyped"}function OC(e,t,n,r,s,o,i=ds){switch(e){case"json":return AC(t,i);case"jsonl":return{summary:PC(t)};case"unified-diff":return{summary:IC(t)};case"tabular":return{summary:LC(t)};case"log-like":return{summary:$C(t,o)};case"prose":return{summary:DC(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Lh(n,r,s,o)}}}function AC(e,t){let n=$h(e);if(Array.isArray(n)){if(n.length>15)try{let r=t(n,15);return{summary:{root_type:"array",total:r.total,kept:r.kept,dropped:r.dropped,shape_outliers:r.shapeOutliers,value_outliers:r.valueOutliers,items:r.items.map(Ot),item_keys:Du(n)}}}catch(r){return{summary:Ch(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Bh(r)}}}return{summary:Ch(n)}}if(ms(n)){let r=Object.entries(n);return{summary:{root_type:"object",keys:r.map(([s])=>s).slice(0,20),key_count:r.length,sample:Object.fromEntries(r.slice(0,8).map(([s,o])=>[s,Ot(o)]))}}}return{summary:{root_type:typeof n,value:Ot(n)}}}function Ch(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Ot),item_keys:Du(e)}}function PC(e){let t=Dh(e)??[],n=GC(t,"level");return{records:t.length,keys:Du(t),levels:n,first:Ot(t[0]),last:Ot(t.at(-1))}}function IC(e){let t=new Map,n="",r=0,s=0,o=0;for(let i of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(i);if(a){n=a[2]??a[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0});continue}if(!n){let c=/^\+\+\+ b\/(.+)$/.exec(i);c&&(n=c[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0}))}i.startsWith("@@")?(o++,n&&t.get(n).hunks++):i.startsWith("+")&&!i.startsWith("+++")?(r++,n&&t.get(n).added++):i.startsWith("-")&&!i.startsWith("---")&&(s++,n&&t.get(n).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:o,added_lines:r,deleted_lines:s}}function LC(e){let t=Nh(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Lh(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function $C(e,t){let n=ps(e);return{entries:n.length,levels:HC(n),first:ln(n[0]??""),last:ln(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:ln(r.text)}))}}function DC(e){let t=e.trim().split(/\n\s*\n/).filter(r=>r.trim()),n=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:n.length,opening:ln(t[0]??""),closing:ln(t.at(-1)??"")}}function Lh(e,t,n,r){let s=Th(e.subarray(0,t)),o=Th(e.subarray(n));return{head:s,tail:o,outliers:r.map(i=>({line:i.lineNumber,score:Number(i.score.toFixed(2)),text:ln(i.text)}))}}function NC(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function MC(e,t){return sh(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function $h(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return ms(n)||Array.isArray(n)?n:null}catch{return null}}function Dh(e){let t=ps(e);if(t.length<2||!t.every(r=>/^[\[{]/.test(r.trim())))return null;let n=[];for(let r of t)try{n.push(JSON.parse(r))}catch{return null}return n}function BC(e){let t=ps(e),n=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(n)&&!/^--- /.test(n))return!1;let r=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 r&&s&&o}function Nh(e){let t=ps(e);if(t.length<3)return null;let n=t[0]??"";if(/[=:{}/]/.test(n)||/^\d{4}-\d{2}-\d{2}/.test(n))return null;let r=n.includes(" ")?/\t+/:/\s{2,}/,s=n.split(r).map(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(r).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 FC(e){let t=ps(e);return t.length<3?!1:t.filter(r=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(r)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(r)||(r.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(r)).length/t.length>=.6}function jC(e){let t=e.trim();if(!t)return!1;let n=t.split(/\s+/).filter(Boolean),r=t.match(/[.!?](?:\s|$)/g)?.length??0;return n.length>=20&&r>=2}function ps(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Du(e){let t=new Map;for(let n of e)if(ms(n))for(let r of Object.keys(n))t.set(r,(t.get(r)??0)+1);return[...t.entries()].sort((n,r)=>r[1]-n[1]||n[0].localeCompare(r[0])).slice(0,20).map(([n])=>n)}function GC(e,t){let n=new Map;for(let r of e){if(!ms(r))continue;let s=r[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let o=String(s).toLowerCase();n.set(o,(n.get(o)??0)+1)}}return Object.fromEntries([...n.entries()].sort((r,s)=>r[0].localeCompare(s[0])))}function HC(e){let t=new Map;for(let n of e){let r=/\blevel=([A-Za-z]+)\b/.exec(n)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(n);if(!r)continue;let s=(r[1]??r[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((n,r)=>n[0].localeCompare(r[0])))}function Ot(e){return typeof e=="string"?ln(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(Ot):ms(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,Ot(n)])):String(e)}function ln(e){let t=e.replace(/\s+/g," ").trim();return t.length<=vh?t:`${t.slice(0,vh-1)}\u2026`}function Mh(e){let t=C(e).trimEnd(),n=L(t);if(!$u(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
|
|
103
|
+
`}function $u(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)=>$u(a,i[c]))}let n=e,r=t,s=Object.keys(n),o=Object.keys(r);return s.length!==o.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(r,i)&&$u(n[i],r[i]))}function ms(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Bh(e){let n=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function Th(e){return e.toString("utf8").replace(/�$/g,"")}function WC(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function UC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var _C,RC,Oh,vh,hs=g(()=>{"use strict";V();N();oh();un();fs();Ve();_C=8*1024,RC=2*1024,Oh=1024,vh=240});var wi={};B(wi,{RSP_WRAPPER_CAPABILITIES:()=>ws,_testOnlyResetBinaryState:()=>tT,formatCodexHookDecision:()=>Qh,formatHookDecision:()=>Yh,hookDecisionFromClaudePreExecJson:()=>aT,hookDecisionFromCodexPreExecJson:()=>cT,rewriteCommand:()=>Kh,rewriteTableFromCapabilities:()=>Vh,runClaudePreExecHook:()=>uT,runCodexPreExecHook:()=>lT});import{accessSync as QC,constants as XC,existsSync as ZC,readFileSync as yi}from"node:fs";import{fileURLToPath as eT}from"node:url";function tT(){hi=void 0,Nu=!1}function nT(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return QC(`${t}/rsp`,XC.X_OK),!0}catch{}return!1}function rT(e){return hi===void 0&&(hi=e()),hi}function sT(){Nu||(Nu=!0,process.stderr.write("rsp: entrypoint not found on PATH; run `rsp setup` to provision. See apps/rsp/docs/TROUBLESHOOTING.md\n"))}function Vh(e){let t=new Map;for(let n of e)t.set(TT(n.command),["rsp",...n.wrapper]);return t}function Kh(e,t=us()){let n=wT(e);if(n)return n;let r=yT(e);if(!r)return gi(e,t);let s=r.tokens.map(u=>u.text);if(s.length>0&&qn(s[0]))return gi(e,t);let o=iT(r,t);if(o)return o;if(r.tokens.some(u=>u.quoted))return gi(e,t);let i=[...ws].sort((u,l)=>l.command.length-u.command.length).find(u=>bT(s,u.command));if(!i)return gi(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=ny(r.redirectSuffix);return{kind:"rewrite",command:[...a.map(At),...c].join(" "),capabilityId:i.id}}function iT(e,t){let n=e.tokens.map(i=>i.text),r=n[0],s=ny(e.redirectSuffix),o=t.map(At);return r==="cat"&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",At(n[1]),...s].join(" "),capabilityId:"cat:file"}:(r==="head"||r==="tail")&&n.length===2&&mi(n[1])?{kind:"rewrite",command:[...o,"cat",`--${r}`,"10",At(n[1]),...s].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&n.length===4&&n[1]==="-n"&&/^[1-9][0-9]*$/.test(n[2])&&mi(n[3])?{kind:"rewrite",command:[...o,"cat",`--${r}`,n[2],At(n[3]),...s].join(" "),capabilityId:`cat:${r}`}:(r==="head"||r==="tail")&&n.length===3&&/^-[1-9][0-9]*$/.test(n[1])&&mi(n[2])?{kind:"rewrite",command:[...o,"cat",`--${r}`,n[1].slice(1),At(n[2]),...s].join(" "),capabilityId:`cat:${r}`}:null}function mi(e){return!!e&&!e.startsWith("-")}async function aT(e,t){return await zh(e,t)}async function cT(e,t){return await zh(e,t)}async function zh(e,t){return(await Bu(e,t,"pre-exec")).decision}async function Bu(e,t,n){let r=iy(e);if(!r.ok){let p={kind:"passthrough",reason:r.reason};return{decision:p,telemetryRoot:t.cwd,event:er({hook:n,command:"",decision:p,reason:r.reason})}}let s=r.payload,o=We(s,["cwd"])||We(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??dT)(o)){let p={kind:"passthrough",reason:"disabled"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:Mu(s),decision:p,reason:"disabled"})}}let a=Mu(s);if(!a){let p={kind:"passthrough",reason:"missing-command"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:"missing-command"})}}if(!rT(t.resolveBinary??nT)){sT();let p={kind:"passthrough",reason:"binary-unresolved"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:"binary-unresolved"})}}let u=process.hrtime.bigint(),l=Fe(o,process.env),f=t.rspInvocationPrefix??us(),d=l.proxyEnabled?_T(a,f):(t.rewrite??(p=>Kh(p,f)))(a),m=Number(process.hrtime.bigint()-u)/1e6;if(d.kind!=="rewrite"){let p=d.reason?d:{...d,reason:"unsupported-command"};return{decision:p,telemetryRoot:o,event:er({hook:n,command:a,decision:p,reason:p.reason??"unsupported-command",decisionMs:m})}}return await pT(o,t.wakeResident??fT),{decision:d,telemetryRoot:o,event:er({hook:n,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function Yh(e){return e.kind==="rewrite"?Xh(e.command):{stdout:"",status:0}}function Qh(e){return e.kind==="rewrite"?Xh(e.command):{stdout:"",status:0}}function Xh(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
|
|
104
|
+
`,status:0}}async function uT(e){let t="";try{t=e?yi(e,"utf8"):yi(0,"utf8");let n=await Bu(t,{cwd:process.cwd()},"claude-pre-exec");bi(n.telemetryRoot,n.event);let r=n.decision;ey("claude-pre-exec",r);let s=Yh(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),Zh("claude-pre-exec",t,n)),ty("claude-pre-exec",n),0}}async function lT(e){let t="";try{t=e?yi(e,"utf8"):yi(0,"utf8");let n=await Bu(t,{cwd:process.cwd()},"codex-pre-exec");bi(n.telemetryRoot,n.event);let r=n.decision;ey("codex-pre-exec",r);let s=Qh(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),Zh("codex-pre-exec",t,n)),ty("codex-pre-exec",n),0}}function bi(e,t){ht(e,t).catch(()=>{})}function er(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:xe(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function Zh(e,t,n){let r=iy(t),s=r.ok?Mu(r.payload):"";return{collection:te,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:xe(s),decision:"failed-open",reason:"hook-exception",error:Fu(n)}}function dT(e){return Fe(e,process.env).enabled}async function fT(e){let t=Fe(e,process.env);if(!t.enabled||!hT(t))return;let n=ze(e);await Ys(n,gT(t))}async function pT(e,t){try{await Promise.resolve(t(e))}catch(n){mT(n)}}function ey(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
|
|
99
105
|
`);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
|
|
100
|
-
`)}}function
|
|
101
|
-
`)}function
|
|
102
|
-
`)}function
|
|
103
|
-
`)}function
|
|
104
|
-
`),u=o.map(({alias:d,number:
|
|
105
|
-
`)),l=i.map(({alias:d,name:
|
|
106
|
-
`);return{kind:e,query:
|
|
107
|
-
`)}}function
|
|
108
|
-
`)}}function
|
|
109
|
-
`).map(
|
|
110
|
-
`)}function
|
|
111
|
-
`),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as
|
|
112
|
-
`))}async function
|
|
113
|
-
`),stderr:Buffer.from(
|
|
114
|
-
${e.stdout}`)}function
|
|
115
|
-
`)[0]?.slice(0,240)??""}function
|
|
106
|
+
`)}}function ty(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Fu(t)}
|
|
107
|
+
`)}function mT(e){Ha(e)||process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${Fu(e)}
|
|
108
|
+
`)}function Fu(e){return e instanceof Error?e.name||"Error":typeof e}function gT(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 hT(e){if(!e.storeUri.startsWith("file://"))return!0;try{return ZC(eT(e.storeUri))}catch{return!1}}function Mu(e){return We(e,["tool_input","command"])||We(e,["tool_input","cmd"])||We(e,["tool_input","args","command"])||We(e,["input","command"])||We(e,["input","cmd"])||We(e,["arguments","command"])||We(e,["arguments","cmd"])||We(e,["command"])||We(e,["cmd"])}function yT(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=ju(t);if(n.length===0||n[0]?.quoted||n.some(o=>/[()$`]/.test(o.text))||n.some(o=>o.text.includes("=")&&qn(o.text)))return null;let r=[],s=[];for(let o of n){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}r.push(o)}return r.length===0?null:{tokens:r,redirectSuffix:s}}function ju(e){let t=[],n="",r=!1,s=null,o=()=>{!n&&!r||(t.push({text:n,quoted:r}),n="",r=!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,n+=e[i];continue}n+=a;continue}if(a==="'"||a==='"'){s=a,r=!0;continue}if(a==="\\"&&i+1<e.length){i+=1,n+=e[i];continue}if(/[ \t]/.test(a)){o();continue}n+=a}return s?[]:(o(),t)}function bT(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function wT(e){let t=ju(e.trim()).map(n=>n.text);return nn(t)?{kind:"passthrough",reason:oT}:null}function ny(e){return e.map(t=>t.text)}function At(e){return/[^\w@%+=:,./-]/.test(e)?Gu(e):e}function _T(e,t){let n=kT(e);return n?{kind:"passthrough",reason:n}:{kind:"rewrite",command:`${t.map(At).join(" ")} proxy -- ${Gu(e.trim())}`,capabilityId:"proxy:universal"}}function RT(e){if(!process.argv[1])return!1;let t=ju(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function kT(e){let t=e.trim();if(!t)return"missing-command";if(sy(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=Hr(Gr(t)[0]??"")[0];if(n==="rsp"||RT(t))return"opt-out";if(n&&ry.has(n))return"interactive"}function gi(e,t){let n=e.trim();return ST(n)?{kind:"rewrite",command:`${t.map(At).join(" ")} exec -- ${Gu(n)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function ST(e){return!(!e||!ET(e)||!xT(e)||sy(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||vT(e,"rsp")||oy(e,ry)||CT(e))}function ET(e){return/&&|[;|]/.test(e)}function sy(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 xT(e){return Gr(e).some(t=>{let n=Hr(t);return n.length===0?!1:n[0]==="git"?["log","diff","show","blame"].includes(n[1]??""):n[0]==="gh"?n.some((r,s)=>s>0&&(r==="list"||r==="view")):n[0]==="vitest"?!0:n[0]==="cargo"&&n[1]==="test"})}function oy(e,t){return Gr(e).some(n=>{let r=Hr(n)[0];return r?t.has(r):!1})}function vT(e,t){return oy(e,new Set([t]))}function CT(e){return Gr(e).some(t=>{let n=Hr(t);return n[0]==="grep"&&n.includes("-q")})}function Gu(e){return`'${e.replace(/'/g,"'\\''")}'`}function TT(e){return e.join("\0")}function iy(e){try{let t=JSON.parse(e);return ay(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function We(e,t){let n=e;for(let r of t){if(!ay(n))return"";n=n[r]}return typeof n=="string"?n:""}function ay(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var hi,Nu,ws,DG,oT,ry,_s=g(()=>{"use strict";Wr();je();Ye();Xt();xu();Ge();Nu=!1;ws=[{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"]}],DG=Vh(ws),oT="lossless-gh-json-jq";ry=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var my={};B(my,{fastTelemetryRoot:()=>Wu,isFastGitStatus:()=>_i,runFastGitStatus:()=>Ri});import{spawnSync as fy}from"node:child_process";import{existsSync as py,readdirSync as MT}from"node:fs";function _i(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Ri(){if(BT(process.cwd()))return{stdout:Hu(),stderr:Buffer.alloc(0),status:0,signal:null};if(fy("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Hu(),stderr:Buffer.alloc(0),status:0,signal:null};let t=fy("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 n=t.stdout.length===0?Hu():t.stdout;return{stdout:n,stderr:t.stderr,status:0,signal:t.signal,rawOutput:n}}async function Wu(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ye(),Qt));return t(e).rootDir}catch{return e}}function Hu(){return Buffer.from(`${J({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
|
|
109
|
+
`)}function BT(e){try{return!py(`${e}/.git`)||py(`${e}/.git/index`)?!1:MT(e).every(t=>t===".git")}catch{return!1}}var Uu=g(()=>{"use strict";ct()});async function nr(e,t,n){let r=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++;r[a]=await n(e[a])}});return await Promise.all(i),r}function yy(e,t,n,r={}){tO(t);let s=e==="issue"?"i":"p",o=t.map((d,m)=>({alias:`${s}${m}`,number:d})),i=(r.labelNames??[]).map((d,m)=>({alias:`l${m}`,name:d})),c=nO(["id","number",...n]).map(d=>rO(eO[d],6)).join(`
|
|
110
|
+
`),u=o.map(({alias:d,number:m})=>[` ${d}: ${e}(number: ${m}) {`,c," }"].join(`
|
|
111
|
+
`)),l=i.map(({alias:d,name:m})=>` ${d}: label(name: ${JSON.stringify(m)}) { id name }`),f=["query RspGitHubBatch($owner: String!, $repo: String!) {"," repository(owner: $owner, name: $repo) {",...u,...l," }","}"].join(`
|
|
112
|
+
`);return{kind:e,query:f,aliases:o,labelAliases:i}}function by(e,t){let n=tr(t),r=tr(n.data),s=tr(r.repository),o=Array.isArray(n.errors)?n.errors.map(tr):[];return e.aliases.map(({alias:i,number:a})=>{let c=s[i];if(Ry(c))return{number:a,value:c};let u=o.find(l=>{let f=l.path;return Array.isArray(f)&&f.includes(i)});return{number:a,error:ky(u?.message)||"not found"}})}function wy(e,t,n){let r=[],s=[];return e.forEach((o,i)=>{if(t.length>0){let a=`add${i}`;r.push({alias:a,number:o.number}),s.push(` ${a}: addLabelsToLabelable(input: { labelableId: ${It(o.nodeId)}, labelIds: ${hy(t)}, clientMutationId: ${It(String(o.number))} }) { clientMutationId }`)}if(n.length>0){let a=`remove${i}`;r.push({alias:a,number:o.number}),s.push(` ${a}: removeLabelsFromLabelable(input: { labelableId: ${It(o.nodeId)}, labelIds: ${hy(n)}, clientMutationId: ${It(String(o.number))} }) { clientMutationId }`)}}),{aliases:r,query:["mutation RspEditLabels {",...s,"}"].join(`
|
|
113
|
+
`)}}function _y(e,t){let n=t.map((s,o)=>({alias:`link${o}`,number:s.number})),r=t.map((s,o)=>` link${o}: addSubIssue(input: { issueId: ${It(e.nodeId)}, subIssueId: ${It(s.nodeId)}, clientMutationId: ${It(String(s.number))} }) { clientMutationId }`);return{aliases:n,query:["mutation RspLinkSubIssues {",...r,"}"].join(`
|
|
114
|
+
`)}}function qu(e,t){let n=tr(t),r=Array.isArray(n.errors)?n.errors.map(tr):[],s=new Map;for(let{alias:o}of e){let i=r.find(a=>Array.isArray(a.path)&&a.path.includes(o));i&&s.set(o,ky(i.message)||"mutation failed")}return s}function tO(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 nO(e){return[...new Set(e)]}function rO(e,t){let n=" ".repeat(t);return e.split(`
|
|
115
|
+
`).map(r=>`${n}${r}`).join(`
|
|
116
|
+
`)}function It(e){return JSON.stringify(e)}function hy(e){return`[${e.map(It).join(", ")}]`}function tr(e){return Ry(e)?e:{}}function Ry(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ky(e){return typeof e=="string"?e:""}var eO,Sy=g(()=>{eO={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(`
|
|
117
|
+
`),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as oO,spawnSync as iO}from"node:child_process";function Ku(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function vy(e,t={}){let n=_O(e),r=n.repo??t.repo??process.env.GH_REPO??kO();if(!r||!r.includes("/"))return Qu(e,"repository is required; pass --repo owner/repo");let s=t.exec??SO,o=Math.max(1,Math.floor(t.restConcurrency??xy));return n.verb==="issues"||n.verb==="prs"?await uO(n,r,s,o,e):n.verb==="edit-labels"?await dO(n,r,s,o,e):await pO(n,r,s,o,e)}async function uO(e,t,n,r,s){let o=e.verb==="issues"?"issue":"pullRequest",i=Cy(e),a=[],c=[];for(let l of Yu(e.numbers,100)){let f=yy(o,l,i.query),d=await zu(n,t,f.query);if(Zu(d))return await lO(e,t,n,r,s);if(d.code!==0){c.push(d.stderr),a.push(...l.map(m=>({number:m,value:{error:Ce(d)||`failed to read ${m}`},failed:!0})));continue}a.push(...by(f,Lt(d.stdout)).map(m=>({number:m.number,value:m.error?{error:m.error}:gO(e.verb,m.value??{},i.output),failed:!!m.error})))}let u=a.filter(l=>l.failed).length;return Si({command:Ei(s),transport:"graphql",order:e.numbers,[e.verb]:Rs(a),summary:`${a.length-u}/${a.length} read`},c.length>0?1:0,c.filter(Boolean).join(`
|
|
118
|
+
`))}async function lO(e,t,n,r,s){let o=Cy(e),i=e.verb==="issues"?"issues":"pulls",a=await nr(e.numbers,r,async u=>{let l=await n(["api",`repos/${t}/${i}/${u}`]);if(l.code!==0)return{number:u,value:{error:Ce(l)||"REST fallback failed"}};let f=tt(Lt(l.stdout));if(e.verb==="prs"&&o.output.some(Ty)){let d=U(tt(f.head).sha);if(!d)return{number:u,value:{error:"REST fallback pull response omitted head SHA"}};let m=await n(["api",`repos/${t}/commits/${d}/check-runs`]);if(m.code!==0)return{number:u,value:{error:Ce(m)||"REST check-runs fallback failed"}};let p=await n(["api",`repos/${t}/commits/${d}/status`]);if(p.code!==0)return{number:u,value:{error:Ce(p)||"REST commit-status fallback failed"}};f={...f,restCheckRollup:yO(tt(Lt(m.stdout)),tt(Lt(p.stdout)))}}return{number:u,value:hO(e.verb,f,o.output)}}),c=a.filter(u=>"error"in u.value).length;return Si({command:Ei(s),transport:"rest-fallback",degraded:"graphql-quota",concurrency:r,order:e.numbers,[e.verb]:Rs(a),summary:`${a.length-c}/${a.length} read via REST fallback`})}async function dO(e,t,n,r,s){if(e.add.length===0&&e.remove.length===0)return Qu(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Oy(e.numbers,t,n,r),nr(o,r,async d=>{let m=await n(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:U(tt(Lt(m.stdout)).node_id),error:m.code===0?"":Ce(m)}})]),c=new Map(a.map(d=>[d.name,d.nodeId])),u=o.filter(d=>!c.get(d));if(u.length>0)return sr(s,e.numbers,Xu(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}])),f=i.flatMap(d=>d.nodeId?[{number:d.number,nodeId:d.nodeId}]:[]);for(let d of Yu(f,100)){let m=wy(d,e.add.map(_=>c.get(_)),e.remove.map(_=>c.get(_))),p=await zu(n,t,m.query);if(Zu(p))return await fO(e,t,n,r,s);if(p.code!==0){for(let _ of d)l.set(_.number,{error:Ce(p)||"label mutation failed"});continue}let b=qu(m.aliases,Lt(p.stdout));for(let _ of d){let y=m.aliases.filter(w=>w.number===_.number).map(w=>b.get(w.alias)).find(Boolean);l.set(_.number,y?{error:y}:{ok:!0})}}return sr(s,e.numbers,Ay(e.numbers,l),"graphql")}async function fO(e,t,n,r,s){let o=await nr(e.numbers,r,async i=>{for(let a of e.remove){let c=await n(["api","-X","DELETE",`repos/${t}/issues/${i}/labels/${encodeURIComponent(a)}`]);if(c.code!==0)return{number:i,value:{error:Ce(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 n(a);if(c.code!==0)return{number:i,value:{error:Ce(c)||"failed to add labels"}}}return{number:i,value:{ok:!0}}});return sr(s,e.numbers,Rs(o),"rest-fallback",r)}async function pO(e,t,n,r,s){if(e.numbers.length<2)return Qu(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Oy(e.numbers,t,n,r),c=a[0],u=c?.nodeId;if(!u)return sr(s,i,Xu(i,()=>({error:c?.error??"parent not found"})),"graphql");let l=new Map,f=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 Yu(f,100)){let m=_y({number:o,nodeId:u},d),p=await zu(n,t,m.query);if(Zu(p))return await mO(o,i,t,n,r,s);if(p.code!==0){for(let _ of d)l.set(_.number,{error:Ce(p)||"sub-issue mutation failed"});continue}let b=qu(m.aliases,Lt(p.stdout));for(let _ of m.aliases){let h=b.get(_.alias);l.set(_.number,h?{error:h}:{ok:!0})}}return sr(s,i,Ay(i,l),"graphql")}async function mO(e,t,n,r,s,o){let i=await nr(t,s,async a=>{let c=await r(["api",`repos/${n}/issues/${a}`,"--jq",".id"]),u=Number(c.stdout.trim());if(c.code!==0||!Number.isSafeInteger(u)||u<=0)return{number:a,value:{error:Ce(c)||"REST id lookup failed"}};let l=await r(["api","-X","POST",`repos/${n}/issues/${e}/sub_issues`,"-F",`sub_issue_id=${u}`]);return{number:a,value:l.code===0?{ok:!0}:{error:Ce(l)||"REST link failed"}}});return sr(o,t,Rs(i),"rest-fallback",s)}function sr(e,t,n,r,s){let o=Object.values(n).filter(i=>or(i)&&"error"in i).length;return Si({command:Ei(e),transport:r,...r==="rest-fallback"?{degraded:"graphql-quota",concurrency:s??xy}:{},order:[...t],issues:n,summary:`${t.length-o}/${t.length} mutated`})}function Cy(e){if(e.verb==="issues"){let n=e.fields.length>0?e.fields:["title","state","labels","body"];return Ey(n,aO),{output:n,query:n}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Ey(t,cO),{output:t,query:t.map(n=>["checkRollup","statusCheckRollup"].includes(n)?"checks":n)}}function Ey(e,t){let n=e.find(r=>!t.has(r));if(n)throw new Error(`unknown GitHub batch field: ${n}`)}function gO(e,t,n){let r={};for(let s of n)s==="labels"?r.labels=Ju(t.labels).map(o=>U(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?r[s]=wO(t.commits):s==="state"||s==="mergeable"?r[s]=U(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(r[s]=Py(t[s]));return"number"in r||(r.number=el(t.number)),r}function hO(e,t,n){let r={};for(let s of n)if(s==="labels"){let o=Array.isArray(t.labels)?t.labels.filter(or):[];r.labels=o.map(i=>U(i.name)).filter(Boolean)}else if(Ty(s))r[s]=tt(t.restCheckRollup);else if(s==="state")r.state=U(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;r.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else r[s]=Py(t[s]);return"number"in r||(r.number=el(t.number)),r}function yO(e,t){let n=Array.isArray(e.check_runs)?e.check_runs.filter(or):[],r=Array.isArray(t.statuses)?t.statuses.filter(or):[],s=[...n.map(o=>({name:U(o.name),state:(U(o.conclusion)||U(o.status)).toLowerCase()})),...r.map(o=>({name:U(o.context),state:U(o.state).toLowerCase()}))];return{state:U(t.state).toLowerCase()||bO(s.map(o=>o.state)),contexts:s}}function bO(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 Ty(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function wO(e){let t=Ju(e).at(-1),n=tt(tt(t?.commit).statusCheckRollup);return{state:U(n.state).toLowerCase(),contexts:Ju(n.contexts).map(r=>({name:U(r.name)||U(r.context),state:(U(r.conclusion)||U(r.status)||U(r.state)).toLowerCase()}))}}async function zu(e,t,n){let[r,s]=RO(t);return await e(["api","graphql","-f",`query=${n}`,"-F",`owner=${r}`,"-F",`repo=${s}`])}async function Oy(e,t,n,r){return await nr(e,r,async s=>{let o=await n(["api",`repos/${t}/issues/${s}`]),i=tt(Lt(o.stdout)),a=U(i.node_id),c=el(i.id);return o.code!==0||!a?{number:s,error:Ce(o)||"REST issue lookup failed"}:{number:s,nodeId:a,databaseId:c>0?c:void 0}})}function Yu(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function _O(e){if(!Ku(e))throw new Error("unsupported rsp gh batch command");let t=e[1],n=[],r=[],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")r.push(...rr(e[++a]??""));else if(c.startsWith("--json="))r.push(...rr(c.slice(7)));else if(c==="--add")s.push(...rr(e[++a]??""));else if(c.startsWith("--add="))s.push(...rr(c.slice(6)));else if(c==="--remove")o.push(...rr(e[++a]??""));else if(c.startsWith("--remove="))o.push(...rr(c.slice(9)));else{let u=Number(c);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`invalid GitHub number: ${c}`);n.push(u)}}if(n.length===0)throw new Error("at least one GitHub number is required");return{verb:t,numbers:n,repo:i,fields:r,add:s,remove:o}}function Si(e,t=0,n=""){return{stdout:Buffer.from(`${C(e)}
|
|
119
|
+
`),stderr:Buffer.from(n),status:t,signal:null,payload:e}}function Qu(e,t){return Si({command:Ei(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function Xu(e,t){return Rs(e.map(n=>({number:n,value:t(n)})))}function Rs(e){return Object.fromEntries(e.map(t=>[String(t.number),t.value]))}function Ay(e,t){return Xu(e,n=>t.get(n)??{error:"mutation skipped"})}function Zu(e){return e.code!==0&&/rate.?limit|rate_limit|RATE_LIMITED|quota/i.test(`${e.stderr}
|
|
120
|
+
${e.stdout}`)}function Ce(e){return(e.stderr||e.stdout).trim().split(`
|
|
121
|
+
`)[0]?.slice(0,240)??""}function Lt(e){try{return e.trim()?JSON.parse(e):{}}catch{return{}}}function Ju(e){let t=tt(e).nodes;return Array.isArray(t)?t.filter(or):[]}function Py(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?e:""}function el(e){let t=Number(e);return Number.isFinite(t)?t:0}function rr(e){return e.split(",").map(t=>t.trim()).filter(Boolean)}function RO(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function Ei(e){return`rsp ${e.join(" ")}`}function kO(){let e=iO("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 SO(e){let t=oO("gh",e,{stdio:["ignore","pipe","pipe"]}),n=ce();t.once("close",n),t.once("error",n);let r=[],s=[];return t.stdout.on("data",o=>r.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(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8")}))})}function tt(e){return or(e)?e:{}}function or(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function U(e){return typeof e=="string"?e:""}var xy,aO,cO,Iy=g(()=>{"use strict";V();N();Sy();xy=4,aO=new Set(["number","title","state","labels","body"]),cO=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var cl={};B(cl,{renderGhContract:()=>By,runGhWrapper:()=>OO});import{spawn as EO}from"node:child_process";async function OO(e,t){if(Ku(e))return await vy(e);let n=Fy(e),r=await PO(n);return By(e,r,t)}async function By(e,t,n){if((t.status??0)!==0||t.signal){let m=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let r=Fy(e),s=ks(t.stdout),o=FO(r,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=VO(o);if(i){if(!n.store)throw new Error("truncated gh output requires an elision store");let m=await n.store.mint(Buffer.from(i.original),{command:e.join(" "),loss:{level:r.full?"brief":n.level,bytes_elided:i.bytes}});i.target.truncated.handle=m}let a=i?.target.truncated.handle||void 0,c=C(o);if(n.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=KO(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),f=await n.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!f)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${He(f)}
|
|
116
122
|
`;return{stdout:Buffer.from(`${C(u.payload)}
|
|
117
|
-
${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 Bh(e){let t=nn(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let r=t.argv[1],n=t.argv[2];if(!(r==="pr"||r==="issue"||r==="run"))throw new Error(`unsupported gh surface: ${r??""}`);let s=r==="pr"&&n&&n!=="list"&&n!=="view";if(!(n==="list"||n==="view"||s))throw new Error(`unsupported gh subcommand: ${n??""}`);let o=r,i=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let f=0;f<l.length;f+=1){let m=l[f]??"";m==="--full"?a=!0:m==="--wide"?c=!0:m==="--fields"?u=Lh(l[++f]??""):m.startsWith("--fields=")?u=Lh(m.slice(9)):i.push(m)}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 nT(d),d}function Ih(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?Q0[t]:Z0[t];return[e.kind,e.action,...e.passthrough,"--json",r.join(",")]}function Lh(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function nT(e){if(e.fields.size===0)return;if(e.action!=="list")throw new oi(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,r=tT[t];for(let n of e.fields)if(!r.includes(n))throw new oi(e,`unknown field: ${n}`,r)}async function sT(e){if(e.action==="combined")return await oT(e);let t=iT(e);if(!t)return await dT(Ih(e));let r=await ue({...t,command:["gh",...Ih(e)].join(" ")});return r.status!==0?{stdout:r.stdout,stderr:r.stderr,status:r.status,signal:null}:{stdout:JSON.stringify(await aT(e,r.stdout)),stderr:r.stderr,status:0,signal:null}}async function oT(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=jh(cs(r.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:pe(cs(s.stdout)).map(uT)}}),stderr:[r.stderr,n.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function iT(e){let t=Hh(e.passthrough),r=lT(e.passthrough,"--limit")??30,n=Ve(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:Ve(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 aT(e,t){let r=cs(t);switch(`${e.kind}:${e.action}`){case"pr:list":return pe(r).map(Fh);case"pr:view":return jh(r);case"issue:list":return pe(r).filter(n=>!rr(n.pull_request)).map($h);case"issue:view":return $h(r);case"run:list":return{items:pe(H(r).workflow_runs).map(Dh),total:le(H(r),"total_count")};case"run:view":{let n=Dh(r),s=Hh(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?pe(H(cs(o.stdout)).jobs).map(cT):[]}}default:return r}}function Fh(e){let t=H(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:Lu(t.user),labels:pe(t.labels).map(r=>({name:x(r,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(H(t.base),"ref"),headRefName:x(H(t.head),"ref")}}function jh(e){return Fh(e)}function $h(e){let t=H(e);return{number:le(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:pe(t.labels).map(r=>({name:x(r,"name")})),author:Lu(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Dh(e){let t=H(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 cT(e){let t=H(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function uT(e){let t=H(e);return{author:Lu(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function Lu(e){let t=H(e);return{login:x(t,"login")}}function Hh(e){return e.find(t=>!t.startsWith("-"))}function Ve(e,t){let r=e.indexOf(t);return r>=0?e[r+1]:void 0}function lT(e,t){let r=Ve(e,t);if(!r)return;let n=Number(r);return Number.isFinite(n)&&n>0?n:void 0}async function dT(e){let t=X0("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 pT(e,t,r){let n={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Tu(r,"prs"),o=s.rows.map(c=>Gh(c,e)),i=te(o,e.query),a=Ou(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>"]):Jr({...n,prs:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} ${Nh(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Jr({...n,pr:Wh(H(r),e),summary:`PR #${le(H(r),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return fT(e,t,H(r));case"issue:list":{let s=Tu(r,"issues"),o=s.rows.map(c=>Uh(c,e)),i=te(o,e.query),a=Ou(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>"]):Jr({...n,issues:i,aggregate:a,summary:`${Au(i.length,o.length,e.query)} ${Nh(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Jr({...n,issue:bT(H(r),e),summary:`issue #${le(H(r),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Tu(r,"runs"),o=s.rows.map(c=>Jh(c,e)),i=te(o,e.query),a=Ou(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>"]):Jr({...n,runs:i,aggregate:a,summary:`${Au(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 Jr({...n,run:wT(H(r),e),summary:`run ${le(H(r),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function fT(e,t,r){let n=Wh(H(r.view),{...e,action:"view",wide:!0}),s=te(pe(r.checks).map(mT),e.query),o=H(r.comments).comments,i=te(pe(o).map(gT).slice(-3),e.query);return et({command:t.join(" "),pr:n,checks:s,comments:i,summary:`PR #${le(H(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 mT(e){return{name:x(e,"name"),state:us(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function gT(e){return{author:Vh(e.author),body:ii(e,"body",Iu,!1),created:x(e,"createdAt")}}function Tu(e,t){if(Array.isArray(e))return{rows:pe(e)};let r=H(e),n=le(r,"total")||le(r,"total_count")||void 0;return Array.isArray(r.items)?{rows:pe(r.items),total:n}:t==="runs"&&Array.isArray(r.workflow_runs)?{rows:pe(r.workflow_runs),total:n}:{rows:[]}}function Ou(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 et({...e,empty:!0,scope:hT(t),[r]:[],aggregate:n,summary:`0 ${yT(t)}`},s)}function hT(e){let t=Ve(e.passthrough,"--state")??"open",r=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${r}`;if(e.kind==="issue"){let o=Ve(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${r}`}let n=Ve(e.passthrough,"--branch")??Ve(e.passthrough,"-b"),s=Ve(e.passthrough,"--workflow")??Ve(e.passthrough,"-w");return`workflow runs${n?` branch=${n}`:""}${s?` workflow=${s}`:""}${r}`}function yT(e){let t=Ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Gh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:us(e),draft:!!e.isDraft};return $u(r,e,t,["author","labels","url","updated"]),r}function Wh(e,t){let r=Gh(e,t);return r.body=ii(e,"body",Iu,t.full),t.wide&&(r.base=x(e,"baseRefName"),r.head=x(e,"headRefName")),r}function Uh(e,t){let r={number:le(e,"number"),title:x(e,"title"),state:us(e),labels:qh(e.labels)};return $u(r,e,t,["author","url","updated"]),r}function bT(e,t){let r=Uh(e,t);return r.body=ii(e,"body",Iu,t.full),r}function Jh(e,t){let r={id:le(e,"databaseId"),name:x(e,"name"),status:us(e),conclusion:x(e,"conclusion")};return $u(r,e,t,["event","branch","workflow","created"]),r}function wT(e,t){let r=Jh(e,t),n=pe(e.jobs).map(s=>({name:x(s,"name"),status:us(s),conclusion:x(s,"conclusion"),log:ii(s,"log",eT,t.full)}));return r.jobs=n,r}function ii(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 _T(e){let t=[e];for(;t.length>0;){let r=t.pop();if(Array.isArray(r))t.push(...r);else if(rr(r)){if(rr(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 RT(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 Nh(e,t){return e.every(r=>r.state===t)?t:"returned"}function Au(e,t,r){return r?`${e}/${t}`:String(e)}function Jr(e,t,r){return t.query?et(e,r):e}function us(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function $u(e,t,r,n){if(!(!r.wide&&r.fields.size===0))for(let s of n)!r.wide&&!r.fields.has(s)||(s==="author"?e.author=Vh(t.author):s==="labels"?e.labels=qh(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 qh(e){return Array.isArray(e)?e.map(t=>rr(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Vh(e){return rr(e)?x(e,"login"):""}function cs(e){return e.trim()?JSON.parse(e):null}function pe(e){return Array.isArray(e)?e.filter(rr):[]}function H(e){return rr(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 rr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Z0,Q0,Iu,eT,tT,oi,Nu=h(()=>{"use strict";J();N();So();Ah();Zt();sn();Be();Z0={"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"]},Q0={"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"]},Iu=160,eT=160,tT={"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"]};oi=class extends Error{constructor(r,n,s=[]){super(n);this.command=r;this.validFields=s}render(){return D({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 Fu={};F(Fu,{renderTestContract:()=>Kh,runTestWrapper:()=>vT});import{spawn as kT}from"node:child_process";async function vT(e,t){let r=nn(e),n=await AT(r.argv);return await Kh(e,n,t)}async function Kh(e,t,r){let n=nn(e),o=zh(n.argv)==="vitest"?IT(t.stdout):LT(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let m=xe(e.join(" "),t.stdout,t.stderr);return{stdout:D(m),stderr:Buffer.from(t.stderr),status:m.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${NT(o.durationSeconds)}`,c=te(o.failures,n.query);if(r.level==="terse")return await CT(n.argv,t,{...o,failures:c},i,a,r,n.query);let u=[],l,p=0;for(let m of c){let w=await $T(m.excerpt,n.argv.join(" "),r.store);u.push({suite:m.suite,name:m.name,excerpt:w.text}),l??=w.handle,p+=w.bytesElided}let d={exit_code:i,summary:n.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let f=n.query?et(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(f)),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:f,mintedHandle:l,bytesElided:p>0?p:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function CT(e,t,r,n,s,o,i){let a=TT(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?et(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((b,R)=>b.excerpt!==r.failures[R].excerpt);if(p===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Bu(t.status),signal:t.signal,payload:u};let f={exit_code:n,summary:s};r.failures.length>0&&(f.failures=r.failures.map(b=>({suite:b.suite,name:b.name,excerpt:b.excerpt})));let m=C(f),w=Buffer.byteLength(m),_=await o.store?.mint(Buffer.from(m),{command:e.join(" "),loss:{level:"terse",bytes_elided:w}});if(!_)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${p>0?`${p} failures`:"full detail"} (+${w}) \u2014 ${Le(_)}`;return{stdout:Buffer.from(`${l}
|
|
118
|
-
${y}`),stderr:Buffer.from(t.stderr),status:
|
|
119
|
-
`),n
|
|
123
|
+
${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:f,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Fy(e){let t=br(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let s=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||s))throw new Error(`unsupported gh subcommand: ${r??""}`);let o=n,i=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let m=0;m<l.length;m+=1){let p=l[m]??"";p==="--full"?a=!0:p==="--wide"?c=!0:p==="--fields"?u=$y(l[++m]??""):p.startsWith("--fields=")?u=$y(p.slice(9)):i.push(p)}let d={kind:o,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:a,wide:c,fields:u,passthrough:i,query:t.query};return AO(d),d}function Ly(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide||e.fields.size>0?vO[t]:xO[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function $y(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function AO(e){if(e.fields.size===0)return;if(e.action!=="list")throw new xi(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,n=TO[t];for(let r of e.fields)if(!n.includes(r))throw new xi(e,`unknown field: ${r}`,n)}async function PO(e){if(e.action==="combined")return await IO(e);let t=LO(e);if(!t)return await BO(Ly(e));let n=await me({...t,command:["gh",...Ly(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await $O(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function IO(e){let t=e.target??"",[n,r,s]=await Promise.all([me({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),me({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),me({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),o=[n,r,s].find(a=>(a.status??0)!==0);if(o)return{stdout:o.stdout,stderr:o.stderr,status:o.status,signal:null};let i=Gy(ks(n.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:be(ks(s.stdout)).map(NO)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function LO(e){let t=Hy(e.passthrough),n=MO(e.passthrough,"--limit")??30,r=nt(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:r,per_page:n}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:r,labels:nt(e.passthrough,"--label"),per_page:n}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:n}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function $O(e,t){let n=ks(t);switch(`${e.kind}:${e.action}`){case"pr:list":return be(n).map(jy);case"pr:view":return Gy(n);case"issue:list":return be(n).filter(r=>!pn(r.pull_request)).map(Dy);case"issue:view":return Dy(n);case"run:list":return{items:be(j(n).workflow_runs).map(Ny),total:he(j(n),"total_count")};case"run:view":{let r=Ny(n),s=Hy(e.passthrough);if(!s)return r;let o=await me({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...r,jobs:o.status===0?be(j(ks(o.stdout)).jobs).map(DO):[]}}default:return n}}function jy(e){let t=j(e);return{number:he(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),isDraft:!!t.draft,author:il(t.user),labels:be(t.labels).map(n=>({name:x(n,"name")})),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body"),baseRefName:x(j(t.base),"ref"),headRefName:x(j(t.head),"ref")}}function Gy(e){return jy(e)}function Dy(e){let t=j(e);return{number:he(t,"number"),title:x(t,"title"),state:x(t,"state").toUpperCase(),labels:be(t.labels).map(n=>({name:x(n,"name")})),author:il(t.user),url:x(t,"html_url"),updatedAt:x(t,"updated_at"),body:x(t,"body")}}function Ny(e){let t=j(e);return{databaseId:he(t,"database_id")||he(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 DO(e){let t=j(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function NO(e){let t=j(e);return{author:il(t.user),body:x(t,"body"),createdAt:x(t,"created_at")}}function il(e){let t=j(e);return{login:x(t,"login")}}function Hy(e){return e.find(t=>!t.startsWith("-"))}function nt(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function MO(e,t){let n=nt(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function BO(e){let t=EO("gh",e,{stdio:["ignore","pipe","pipe"]}),n=ce();t.once("close",n),t.once("error",n);let r=[],s=[];return t.stdout.on("data",o=>r.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(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function FO(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=tl(n,"prs"),o=s.rows.map(c=>Wy(c,e)),i=ae(o,e.query),a=nl(i.length,o.length,s.total,e.query);return i.length===0?rl(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):ir({...r,prs:i,aggregate:a,summary:`${sl(i.length,o.length,e.query)} ${My(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return ir({...r,pr:Uy(j(n),e),summary:`PR #${he(j(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return jO(e,t,j(n));case"issue:list":{let s=tl(n,"issues"),o=s.rows.map(c=>qy(c,e)),i=ae(o,e.query),a=nl(i.length,o.length,s.total,e.query);return i.length===0?rl(r,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):ir({...r,issues:i,aggregate:a,summary:`${sl(i.length,o.length,e.query)} ${My(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return ir({...r,issue:qO(j(n),e),summary:`issue #${he(j(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=tl(n,"runs"),o=s.rows.map(c=>Jy(c,e)),i=ae(o,e.query),a=nl(i.length,o.length,s.total,e.query);return i.length===0?rl(r,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):ir({...r,runs:i,aggregate:a,summary:`${sl(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 ir({...r,run:JO(j(n),e),summary:`run ${he(j(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function jO(e,t,n){let r=Uy(j(n.view),{...e,action:"view",wide:!0}),s=ae(be(n.checks).map(GO),e.query),o=j(n.comments).comments,i=ae(be(o).map(HO).slice(-3),e.query);return ut({command:t.join(" "),pr:r,checks:s,comments:i,summary:`PR #${he(j(n.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 GO(e){return{name:x(e,"name"),state:Ss(e),bucket:x(e,"bucket"),conclusion:x(e,"conclusion"),workflow:x(e,"workflow"),link:x(e,"link")}}function HO(e){return{author:Ky(e.author),body:vi(e,"body",ol,!1),created:x(e,"createdAt")}}function tl(e,t){if(Array.isArray(e))return{rows:be(e)};let n=j(e),r=he(n,"total")||he(n,"total_count")||void 0;return Array.isArray(n.items)?{rows:be(n.items),total:r}:t==="runs"&&Array.isArray(n.workflow_runs)?{rows:be(n.workflow_runs),total:r}:{rows:[]}}function nl(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function rl(e,t,n,r,s){return ut({...e,empty:!0,scope:WO(t),[n]:[],aggregate:r,summary:`0 ${UO(t)}`},s)}function WO(e){let t=nt(e.passthrough,"--state")??"open",n=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${n}`;if(e.kind==="issue"){let o=nt(e.passthrough,"--label");return`${t} issues${o?` label=${o}`:""}${n}`}let r=nt(e.passthrough,"--branch")??nt(e.passthrough,"-b"),s=nt(e.passthrough,"--workflow")??nt(e.passthrough,"-w");return`workflow runs${r?` branch=${r}`:""}${s?` workflow=${s}`:""}${n}`}function UO(e){let t=nt(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Wy(e,t){let n={number:he(e,"number"),title:x(e,"title"),state:Ss(e),draft:!!e.isDraft};return al(n,e,t,["author","labels","url","updated"]),n}function Uy(e,t){let n=Wy(e,t);return n.body=vi(e,"body",ol,t.full),t.wide&&(n.base=x(e,"baseRefName"),n.head=x(e,"headRefName")),n}function qy(e,t){let n={number:he(e,"number"),title:x(e,"title"),state:Ss(e),labels:Vy(e.labels)};return al(n,e,t,["author","url","updated"]),n}function qO(e,t){let n=qy(e,t);return n.body=vi(e,"body",ol,t.full),n}function Jy(e,t){let n={id:he(e,"databaseId"),name:x(e,"name"),status:Ss(e),conclusion:x(e,"conclusion")};return al(n,e,t,["event","branch","workflow","created"]),n}function JO(e,t){let n=Jy(e,t),r=be(e.jobs).map(s=>({name:x(s,"name"),status:Ss(s),conclusion:x(s,"conclusion"),log:vi(s,"log",CO,t.full)}));return n.jobs=r,n}function vi(e,t,n,r){let s=x(e,t);if(r||Buffer.byteLength(s)<=n)return s;let o=s.slice(0,n),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 VO(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(pn(n)){if(pn(n.truncated)&&n.truncated.handle===""&&typeof n.preview=="string"){let r=typeof n.__rsp_original=="string"?n.__rsp_original:n.preview;return{target:n,original:r,bytes:Number(n.truncated.bytes??0)}}t.push(...Object.values(n))}}return null}function KO(e){for(let t of["prs","issues","runs","jobs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}function My(e,t){return e.every(n=>n.state===t)?t:"returned"}function sl(e,t,n){return n?`${e}/${t}`:String(e)}function ir(e,t,n){return t.query?ut(e,n):e}function Ss(e){return(x(e,"state")||x(e,"status")).toLowerCase()}function al(e,t,n,r){if(!(!n.wide&&n.fields.size===0))for(let s of r)!n.wide&&!n.fields.has(s)||(s==="author"?e.author=Ky(t.author):s==="labels"?e.labels=Vy(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 Vy(e){return Array.isArray(e)?e.map(t=>pn(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Ky(e){return pn(e)?x(e,"login"):""}function ks(e){return e.trim()?JSON.parse(e):null}function be(e){return Array.isArray(e)?e.filter(pn):[]}function j(e){return pn(e)?e:{}}function x(e,t){let n=e[t];return typeof n=="string"?n:""}function he(e,t){let n=e[t];return typeof n=="number"?n:0}function pn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var xO,vO,ol,CO,TO,xi,ul=g(()=>{"use strict";V();N();Wo();Iy();un();wr();Ve();xO={"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"]},vO={"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"]},ol=160,CO=160,TO={"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"]};xi=class extends Error{constructor(n,r,s=[]){super(r);this.command=n;this.validFields=s}render(){return D({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 fl={};B(fl,{renderTestContract:()=>zy,runTestWrapper:()=>ZO});import{spawn as zO}from"node:child_process";async function ZO(e,t){let n=br(e),r=await sA(n.argv);return await zy(e,r,t)}async function zy(e,t,n){let r=br(e),o=Yy(r.argv)==="vitest"?oA(t.stdout):iA(t.stdout),i=t.status;if(!o||(i??0)!==0&&o.failed===0){let p=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let a=`${o.failed}/${o.total} failed \xB7 ${o.suites} suites \xB7 ${uA(o.durationSeconds)}`,c=ae(o.failures,r.query);if(n.level==="terse")return await eA(r.argv,t,{...o,failures:c},i,a,n,r.query);let u=[],l,f=0;for(let p of c){let b=await aA(p.excerpt,r.argv.join(" "),n.store);u.push({suite:p.suite,name:p.name,excerpt:b.text}),l??=b.handle,f+=b.bytesElided}let d={exit_code:i,summary:r.query?`${a} \xB7 ${c.length}/${o.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let m=r.query?ut(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(C(m)),stderr:Buffer.from(t.stderr),status:dl(t.status),signal:t.signal,payload:m,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:u.length>0?Math.max(0,o.total-u.length):void 0}}async function eA(e,t,n,r,s,o,i){let a=tA(n.failures),c={exit_code:r,summary:i?`${s} \xB7 ${n.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=i?ut(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=C(u),f=Math.max(0,n.failures.length-a.length),d=a.some((w,k)=>w.excerpt!==n.failures[k].excerpt);if(f===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:dl(t.status),signal:t.signal,payload:u};let m={exit_code:r,summary:s};n.failures.length>0&&(m.failures=n.failures.map(w=>({suite:w.suite,name:w.name,excerpt:w.excerpt})));let p=C(m),b=Buffer.byteLength(p),_=await o.store?.mint(Buffer.from(p),{command:e.join(" "),loss:{level:"terse",bytes_elided:b}});if(!_)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${b}) \u2014 ${He(_)}`;return{stdout:Buffer.from(`${l}
|
|
124
|
+
${y}`),stderr:Buffer.from(t.stderr),status:dl(t.status),signal:t.signal,payload:u,mintedHandle:_,bytesElided:b,rowsElided:f,rawOutput:Buffer.from(p)}}function dl(e){return e===0||e===null?0:1}function tA(e){let t=[],n=QO;for(let r of e.slice(0,XO)){let s=nA(r.excerpt,Math.min(YO,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function nA(e,t){if(t<=0)return"";let n=e.split(`
|
|
125
|
+
`),r=n.length<=2?e:`${n[0]}
|
|
120
126
|
\u2026
|
|
121
|
-
${
|
|
122
|
-
`).filter(Boolean).map(c=>
|
|
123
|
-
`)}),o||=1,
|
|
124
|
-
\u2026 elided ${i} bytes (+${
|
|
125
|
-
`):""}function
|
|
126
|
-
`),status:1,signal:null}}return
|
|
127
|
-
`;if(!i&&Buffer.byteLength(c)<=
|
|
128
|
-
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:
|
|
129
|
-
`),n
|
|
130
|
-
`)}${
|
|
131
|
-
`:""}`,truncated:i.length<s.length}}function
|
|
132
|
-
`);return t.at(-1)===""?t.slice(0,-1):t}function
|
|
133
|
-
`),s=
|
|
127
|
+
${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Yy(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 rA(e){if(Yy(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 n=e.slice(1);return{executable:"cargo",args:n.some(s=>s==="--message-format=json"||s.startsWith("--message-format="))?n:["test","--message-format=json",...n.slice(1)]}}async function sA(e){let t=rA(e),n=zO(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=ce();n.once("close",r),n.once("error",r);let s=[],o=[];return n.stdout.on("data",i=>s.push(i)),n.stderr.on("data",i=>o.push(i)),await new Promise((i,a)=>{n.on("error",a),n.on("close",(c,u)=>{i({stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(o).toString("utf8"),status:c,signal:u})})})}function oA(e){let t=Qy(e);if(!$t(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Dt(t.numTotalTests),o=Dt(t.numFailedTests),i=lA(Dt(t.startTime),Dt(t.endTime));for(let a of n){if(!$t(a))continue;let c=rt(a.name)||rt(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)$t(l)&&l.status==="failed"&&r.push({suite:c,name:rt(l.fullName)||rt(l.title)||rt(l.name),excerpt:cA(l.failureMessages)||rt(l.failureMessage)})}return s||=n.reduce((a,c)=>!$t(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),o||=r.length,i||=n.reduce((a,c)=>$t(c)?a+Dt(c.perfStats&&$t(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:o,total:s,suites:n.length||1,durationSeconds:i,failures:r}}function iA(e){let t=e.split(`
|
|
128
|
+
`).filter(Boolean).map(c=>Qy(c)).filter($t);if(t.length===0)return null;let n=[],r=0,s=0,o=0,i=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(o+=1,r+=Dt(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Dt(c.failed),i+=Dt(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:rt(c.name).split("::").slice(0,-1).join("::"),name:rt(c.name),excerpt:rt(c.stdout)});continue}if(c.reason==="compiler-message"&&$t(c.message)){let u=rt(c.message.rendered);u&&a.push(u)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
|
|
129
|
+
`)}),o||=1,r||=1,s||=1),s||=n.length,o||=1,r||=Math.max(s,n.length),{failed:s,total:r,suites:o,durationSeconds:i,failures:n}}async function aA(e,t,n){let r=Buffer.from(e);if(r.length<=ll)return{text:e,bytesElided:0};if(!n)throw new Error("over-limit test failure excerpt requires an elision store");let s=await n.mint(r,{command:t,loss:{level:"brief",bytes_elided:r.length}}),o=r.subarray(0,ll).toString("utf8").replace(/\uFFFD$/,""),i=r.length-Buffer.byteLength(o);return{text:`${o}
|
|
130
|
+
\u2026 elided ${i} bytes (+${r.length}) \u2014 ${He(s)}`,handle:s,bytesElided:r.length}}function Qy(e){try{return JSON.parse(e)}catch{return null}}function cA(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
|
|
131
|
+
`):""}function uA(e){return`${Number(e.toFixed(1))}s`}function lA(e,t){return e>0&&t>e?(t-e)/1e3:0}function Dt(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function rt(e){return typeof e=="string"?e:""}function $t(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ll,YO,QO,XO,pl=g(()=>{"use strict";V();N();un();wr();Ve();ll=320,YO=160,QO=ll,XO=3});var hl={};B(hl,{parseCatCommand:()=>gl,renderCatContract:()=>bA,runCatWrapper:()=>yA});import{isUtf8 as dA}from"node:buffer";import{readFile as fA}from"node:fs/promises";import{extname as pA}from"node:path";async function yA(e,t){let n=gl(e),r;try{r=await fA(n.file)}catch(s){let o=s instanceof Error?s.message:String(s),i=$e(e.join(" "),"",o);return{stdout:D({...i,help:`ls ${n.file}`}),stderr:Buffer.from(`${o}
|
|
132
|
+
`),status:1,signal:null}}return rb(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await nb(e,n,r,t)}async function bA(e,t,n){if((t.status??0)!==0||t.signal){let i=$e(e.join(" "),t.stdout,t.stderr);return{stdout:D(i),stderr:Buffer.from(t.stderr),status:i.exitCode??1,signal:t.signal}}let r=gl(e),s=Buffer.from(t.stdout,"utf8");return rb(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await nb(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function gl(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,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"){n=a.slice(2),r=tb(t[++i],ml);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=tb(u,ml);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:n,...r?{limit:r}:{},...s?{inlineFull:s}:{}}}async function nb(e,t,n,r){let s=n.toString("utf8"),o=RA(s,t);if(t.inlineFull)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let i=r.level!=="lossless"||n.length>eb(r.heavyByteThreshold,Xy)||o.truncated;if(!Zy(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=Zy(t.file)?wA(e,t.file,n,s,r.level,o):_A(e,t.file,n,s,o),c=`${C(a)}
|
|
133
|
+
`;if(!i&&Buffer.byteLength(c)<=eb(r.heavyByteThreshold,Xy))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:n};let u=await r.store?.mint(n,{command:e.join(" "),loss:{level:r.level==="lossless"?"terse":r.level,bytes_elided:n.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${n.length}) \u2014 ${He(u)}
|
|
134
|
+
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function wA(e,t,n,r,s,o){let i=Ci(r),a=s==="terse"?gA:mA,c=Ci(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:n.length,lines:i.length,symbols:kA(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function _A(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:Ci(r).length,content:Ci(s.text),truncated:s.truncated}}function RA(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
|
|
135
|
+
`),r=n.at(-1)==="",s=r?n.slice(0,-1):n,o=t.limit??ml,i=t.mode==="head"?s.slice(0,o):s.slice(Math.max(0,s.length-o));return{text:`${i.join(`
|
|
136
|
+
`)}${r&&i.length>0?`
|
|
137
|
+
`:""}`,truncated:i.length<s.length}}function kA(e){let t=[];for(let n=0;n<e.length;n++){let s=e[n].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:n+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:n+1,signature:s});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(s);a&&!SA(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function Ci(e){let t=e.split(`
|
|
138
|
+
`);return t.at(-1)===""?t.slice(0,-1):t}function rb(e){return e.includes(0)||!dA(e)}function Zy(e){return hA.has(pA(e).toLowerCase())}function SA(e){return["for","if","switch","while"].includes(e)}function eb(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function tb(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var Xy,ml,mA,gA,hA,yl=g(()=>{"use strict";N();un();Ve();Xy=8*1024,ml=10,mA=8,gA=2,hA=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var db={};B(db,{REPO_STORE_PATH:()=>_l,mergeRspBlock:()=>cb,provisionRspRepoStore:()=>LA});import{constants as EA}from"node:fs";import{access as xA,copyFile as vA,mkdir as ob,readFile as CA,rename as TA,writeFile as ib}from"node:fs/promises";import{dirname as OA,join as Es,resolve as AA}from"node:path";async function LA(e,t={}){let n=AA(e),r=Es(n,".red"),s=Es(r,"config.yaml"),o=Es(n,_l);await ob(r,{recursive:!0}),await ob(OA(o),{recursive:!0});let i="";try{i=await CA(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=cb(i,{enabled:!0,ttlDays:t.ttlDays??Ne,ephemeralTtlHours:t.ephemeralTtlHours??Me,byteBudget:t.byteBudget??Be,heavyGitByteThreshold:t.heavyGitByteThreshold??mt}),c=a!==i;c&&await ib(s,a,"utf8");let u=!await wl(o),l=!1,f=!1;if(u){let m=Es(n,PA),p=Es(n,IA);if(await wl(m))await TA(m,o),f=!0;else if(await wl(p))await vA(p,o),l=!0;else{let{provisionElisionStore:b}=await Promise.resolve().then(()=>(Go(),qm)),_=process.env.REDDB_BIN;try{await b({uri:`file://${o}`,ttlDays:t.ttlDays??Ne,ephemeralTtlHours:t.ephemeralTtlHours??Me,byteBudget:t.byteBudget??Be})}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let d=$A(a,_l);return d!==a&&await ib(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function cb(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Ti(t.ttlDays,Ne)}`,` ephemeralTtlHours: ${Ti(t.ephemeralTtlHours,Me)}`,` byteBudget: ${Ti(t.byteBudget,Be)}`,` heavyGitByteThreshold: ${Ti(t.heavyGitByteThreshold,mt)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
139
|
+
`),s=ub(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
|
|
134
140
|
`)}
|
|
135
|
-
`}let o=
|
|
141
|
+
`}let o=Rl(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(o)].join(`
|
|
136
142
|
`)}
|
|
137
|
-
`}function
|
|
138
|
-
`),
|
|
143
|
+
`}function ub(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Sl(r)&&kl(r)===0&&lb(r)===t)return n}return-1}function Rl(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(Sl(e[s])&&kl(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function kl(e){return(e.match(/^ */)?.[0]??"").length}function Sl(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function lb(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Ti(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function $A(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
144
|
+
`),r=ub(n,"plugins");if(r===-1)return e;let s=Rl(n,r,0),o=ab(n,"memory",r+1,s,2);if(o===-1)return e;let i=Rl(n,o,2),a=[...n],c=ab(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
|
|
139
145
|
`)}
|
|
140
|
-
`}function
|
|
141
|
-
`}function
|
|
146
|
+
`}function ab(e,t,n,r,s){for(let o=n;o<r;o++){let i=e[o];if(Sl(i)&&kl(i)===s&&lb(i)===t)return o}return-1}async function wl(e){try{return await xA(e,EA.F_OK),!0}catch{return!1}}var _l,PA,IA,fb=g(()=>{"use strict";Re();je();_l=mc,PA=Ud,IA=".red/memory/graph.rdb"});var bb={};B(bb,{runRspMcpServer:()=>NA});import{createInterface as DA}from"node:readline";async function NA(){let e=Fe(process.cwd(),process.env),t=DA({input:process.stdin,crlfDelay:1/0});for await(let n of t){if(!n.trim())continue;let r;try{r=JSON.parse(n);let s=await MA(r,e);gb({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){gb({jsonrpc:"2.0",id:typeof hb(n)?.id>"u"?null:hb(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function MA(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp accounting stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:mb(t)}]};if(!t.enabled)return{content:[{type:"text",text:mb(t)}],isError:!0};let r=qA(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:mn({tool:"rsp_stats",...await r.accountingStats(t.telemetryByteBudget)})}]};if(n?.name==="rsp_show"){let s=String(n.arguments?.handle??""),o=await r.get(s);return o?"status"in o?{content:[{type:"text",text:mn({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:mn({tool:"rsp_show",handle:s,found:!0,bytes:o.original.length,text:o.original.toString("utf8")})}]}:{content:[{type:"text",text:mn(BA(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await FA(n.arguments,r)}]}}return{}}function mn(e){return`${J(e)}
|
|
147
|
+
`}function BA(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function FA(e,t){let n=GA(e?.payload);try{return await jA(n,e,t)}catch(r){if(process.env.RSP_DEBUG==="1")throw r;return yb(n)}}async function jA(e,t,n){let r=HA(t?.level),s=await Pu(e,{level:r,command:"rsp mcp compress",store:n});if(s.detected)return yb(s.output);let o=ui(e);if(r==="brief"&&Buffer.byteLength(o)<=2*1024)return mn({tool:"rsp_compress",level:r,detected:"text",bytes:Buffer.byteLength(e),text:o});let i=Buffer.from(e),a=await n.mint(i,{command:"rsp mcp compress",loss:{level:r,bytes_elided:i.length}});return WA(o,i.length,a,r)}function GA(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function HA(e){return e==="terse"?"terse":"brief"}function WA(e,t,n,r){let s=r==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=pb(o.subarray(0,i)),c=pb(o.subarray(Math.max(0,o.length-i)));return mn({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:UA(o),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function yb(e){return e.endsWith(`
|
|
142
148
|
`)?e:`${e}
|
|
143
|
-
`}function
|
|
144
|
-
`)}function
|
|
145
|
-
`)}function
|
|
146
|
-
`)}function ui(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(li),n=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(li)),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=>wy(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of kO(n)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${EO(u)}' ]`).join(" && ")).join(" || ");s.push(` ${wy(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function kO(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 SO(e){let t=new Map;for(let r of e){let n=r.command[0];if(!n||!li(n))continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function li(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function wy(e){return e.replace(/[\\|)&;]/g,"\\$&")}function EO(e){return e.replace(/'/g,"'\\''")}function xO(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ry=h(()=>{"use strict";is()});function Xu(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"&&vO(t.chosenOption)&&CO(t.outcome)&&TO(t.cost)}function vO(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function CO(e){return e==="success"||e==="failure"||e==="escalated"}function TO(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 ky=h(()=>{});import{createHash as OO}from"node:crypto";function $y(e,t){return new Qu(e,t)}function Sy(e){let t=Number(e.red_entity_id??e.rid),r=el(e.properties??e.PROPERTIES),n=Dy(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 Ey(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=Ny(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:el(e.properties??e.PROPERTIES)}}function IO(e){let t=Number(e.red_entity_id??e.rid),r=el(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Xu(r)?null:{rid:t,event:r}}function el(e){return e==null?{}:typeof e=="string"?JSON.parse(e):di(e)?e:{}}function Dy(e){let t=e==="contact"?"person":e;if(PO.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Ny(e){if(AO.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function LO(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function xy(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function or(e){return di(e)?e:{}}function vy(e,t){return or(e)[t]}function Cy(e,t){let r=e[t];if(typeof r!="string")throw new Error(`brain ${t} must be a string`);return r}function Ty(e,t){let r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Oy(e){let t=or(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 di(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zu(e){return e!=null}function $O(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function DO(e){return OO("sha256").update(JSON.stringify(e)).digest("hex")}function NO(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Py(e){return`artifact-hash:${e}`}function Ay(e,t,r){return`connection:${e}:${t}:${r}`}function Iy(){return"model-tier-bandit:v1"}function MO(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Ly(e,t){let r=0,n=e.indexOf(t);for(;n>=0;)r++,n=e.indexOf(t,n+t.length);return r}function My(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+Ly(r,a)*3+Ly(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 BO(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=By({...My(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return sr(s)}function By(e){return{...e,lexical:sr(e.lexical),tags:sr(e.tags),kind:sr(e.kind),connections:sr(e.connections),vector:sr(e.vector),total:sr(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function sr(e){return Math.round(e*1e3)/1e3}function FO(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 jO(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 HO(e){let t={};for(let r of e)t[r]=(t[r]??0)+1;return t}var ze,PO,AO,Qu,Fy=h(()=>{"use strict";ky();ze={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},PO=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),AO=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Qu=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(or(r));if(t==="getArtifact")return await this.getArtifact(vy(r,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let n=or(r);return await this.search(Cy(n,"query"),Ty(n,"limit")??10,Oy(n.options))}if(t==="think"){let n=or(r);return await this.think(Cy(n,"query"),Ty(n,"limit")??8,Oy(n.options))}if(t==="link")return await this.link(or(r));if(t==="backlinks")return await this.backlinks(vy(r,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(or(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 ${ze.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ze.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),r=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:r.length,kinds:HO(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=Dy(de(t.kind)||"note"),o=$O(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=DO([s,r,n,o,de(t.sourcePath),de(t.sourceSession)]),c=await this.kv().get(Py(a));if(c!=null){let m=await this.getArtifact(Number(c));if(m)return m}let u=`${NO(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:di(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${ze.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let f=Sy(d);if(!f)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Py(a),f.rid),await this.materializeTagConnections(f),f}async getArtifact(t){let r=await this.listArtifacts();return typeof t=="number"?r.find(n=>n.rid===t)??null:r.find(n=>n.properties.id===t||n.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${ze.artifacts}`)).rows.map(Sy).filter(Zu)}async search(t,r,n={}){let s=MO(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=My(u,s),p=By({...l,connections:BO(u,s,a,c),vector:0});return{artifact:u,score:p.total,score_breakdown:p,excerpt:FO(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 jO(t,s)}async link(t){let r=await this.getArtifact(xy(t.from)),n=await this.getArtifact(xy(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=Ny(de(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:de(t.reason),confidence:de(t.confidence)||"explicit",created_at:Date.now(),metadata:di(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${ze.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=Ey(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Ay(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 ${ze.connections}`)).rows.map(Ey).filter(Zu)}async eventKpis(t){let r=(await this.listArtifacts()).filter(o=>o.kind==="event"),n=LO(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(!Xu(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${ze.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 ${ze.outcomeEvents}`)).rows.map(IO).filter(Zu).sort((r,n)=>r.rid-n.rid).map(({event:r})=>r)}async loadModelTierBanditDocument(){let t=await this.kv().get(Iy());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Iy(),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(Ay(t,r,n));return s!=null?Number(s):null}kv(){return this.db.kv(ze.kv)}}});var Xy={};F(Xy,{runResidentServer:()=>zO});import{randomUUID as qr}from"node:crypto";import{execFileSync as GO,spawn as WO}from"node:child_process";import{existsSync as UO}from"node:fs";import{mkdir as qy,rename as JO,rm as jy,writeFile as Vy}from"node:fs/promises";import{createServer as qO}from"node:net";import{dirname as sl,join as pi}from"node:path";import{fileURLToPath as VO,pathToFileURL as KO}from"node:url";async function zO(e){await qy(sl(e.socketPath),{recursive:!0});let t=cP();aP();let r=e.telemetryDrainTimeoutMs??Ky,n={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??Xs,a,c,u=!1,l=new Set,p=e.telemetryDrainIntervalMs??3e4,d=qO(R=>{l.add(R),R.once("close",()=>l.delete(R)),m(),gP(R,async(T,B)=>{m();let Re=await hP(n,T,e.storeUri,e.residentVersion??"0.0.0-dev"),fe={id:T.id,ok:!0,value:Re,storeOpenCount:n.kind==="ready"?n.storeOpenCount:void 0,storeElapsedMs:n.kind==="ready"?n.storeElapsedMs:void 0};B(fe),T.op==="handover"&&setImmediate(()=>f())})});function f(){o=!0,u=!0,c=iP(c),d.close();for(let R of l)R.destroy()}function m(){n.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{f()},i),a.unref())}let _=["SIGINT","SIGTERM"].map(R=>{let T=()=>{fi(),d.close();for(let B of l)B.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(R,T),{signal:R,handler:T}});await new Promise((R,T)=>{d.once("error",T),d.listen(e.socketPath,()=>{d.off("error",T),R()})}),(async()=>{let R=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let T=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(T)&&T>0&&await new Promise(oe=>setTimeout(oe,T));let B=await Yt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),Re=Number(process.hrtime.bigint()-R)/1e6,fe=new nl(B,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??zs,byteBudget:e.telemetryByteBudget??e.byteBudget??Ys});if(o){await B.close();return}if(await tl(fe,r),o){await B.close();return}n={kind:"ready",store:B,telemetry:fe,storeOpenCount:1,storeElapsedMs:Re},s=setInterval(()=>{let oe=n.kind==="ready"?n:void 0;oe&&tl(oe.telemetry,r)},p),s.unref(),m()})().catch(R=>{n={kind:"failed",error:R instanceof Error?R:new Error(String(R))},m()}),e.pidPath&&await Vy(e.pidPath,`${process.pid}
|
|
147
|
-
`,{encoding:"utf8",mode:384});let
|
|
148
|
-
`,{encoding:"utf8",mode:384}),await
|
|
149
|
-
`)}}async function
|
|
149
|
+
`}function pb(e){return e.toString("utf8").replace(/�$/g,"")}function UA(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function qA(e){return Ga(process.cwd(),e)}function mb(e){let t=e.enabled?kt(process.cwd(),e.overhead):null;return mn({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(n=>n.family)??[],help:e.enabled?[]:["/red-setup"]})}function gb(e){process.stdout.write(`${JSON.stringify(e)}
|
|
150
|
+
`)}function hb(e){try{return JSON.parse(e)}catch{return null}}var wb=g(()=>{"use strict";ct();je();V();fs();Xt()});var Rb={};B(Rb,{renderShellInit:()=>JA});function JA(e,t=ws){if(e==="fish")return VA(t);if(e==="bash"||e==="zsh")return KA(e,t);throw new Error(`unsupported shell: ${e}`)}function VA(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(n=>n.command[0]).filter(Ai))].map(n=>` abbr --add --position command -- ${n} '${XA(`rsp ${n}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
|
|
151
|
+
`)}function KA(e,t){let n=YA(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Oi("git",n.get("git")??[]),...Oi("gh",n.get("gh")??[]),...Oi("vitest",n.get("vitest")??[]),...Oi("cargo",n.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
|
|
152
|
+
`)}function Oi(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 n=t.map(o=>o.command.slice(1)).filter(o=>o.length===1).map(o=>o[0]).filter(Ai),r=t.map(o=>o.command.slice(1)).filter(o=>o.length>1&&o.every(Ai)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let o=n.map(i=>_b(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of zA(r)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${QA(u)}' ]`).join(" && ")).join(" || ");s.push(` ${_b(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function zA(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function YA(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Ai(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function Ai(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function _b(e){return e.replace(/[\\|)&;]/g,"\\$&")}function QA(e){return e.replace(/'/g,"'\\''")}function XA(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var kb=g(()=>{"use strict";_s()});function El(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"&&ZA(t.chosenOption)&&eP(t.outcome)&&tP(t.cost)}function ZA(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function eP(e){return e==="success"||e==="failure"||e==="escalated"}function tP(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 Sb=g(()=>{});import{createHash as nP}from"node:crypto";function Db(e,t){return new vl(e,t)}function Eb(e){let t=Number(e.red_entity_id??e.rid),n=Cl(e.properties??e.PROPERTIES),r=Nb(String(e.node_type??e.NODE_TYPE??n.kind??"note"));if(!Number.isFinite(t))return null;let s=String(n.id??e.label??e.LABEL??t),o=String(n.title??e.label??e.LABEL??s),i=String(n.content??""),a=Array.isArray(n.tags)?n.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:r,properties:{...n,id:s,title:o,content:i,tags:a,created_at:Number(n.created_at??c),updated_at:Number(n.updated_at??n.created_at??c),hash:String(n.hash??"")}}}function xb(e){let t=Number(e.red_entity_id??e.rid),n=Number(e.from??e.FROM??e.from_rid??e.source),r=Number(e.to??e.TO??e.to_rid??e.target),s=Mb(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)?null:{rid:t,kind:s,from_rid:n,to_rid:r,weight:Number(e.weight??1),properties:Cl(e.properties??e.PROPERTIES)}}function oP(e){let t=Number(e.red_entity_id??e.rid),n=Cl(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!El(n)?null:{rid:t,event:n}}function Cl(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Pi(e)?e:{}}function Nb(e){let t=e==="contact"?"person":e;if(rP.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Mb(e){if(sP.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function iP(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function vb(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function hn(e){return Pi(e)?e:{}}function Cb(e,t){return hn(e)[t]}function Tb(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Ob(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Ab(e){let t=hn(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function ye(e){return typeof e=="string"&&e.length>0?e:void 0}function Pi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function xl(e){return e!=null}function aP(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function cP(e){return nP("sha256").update(JSON.stringify(e)).digest("hex")}function uP(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Pb(e){return`artifact-hash:${e}`}function Ib(e,t,n){return`connection:${e}:${t}:${n}`}function Lb(){return"model-tier-bandit:v1"}function lP(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function $b(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Bb(e,t){let n=e.properties.title.toLowerCase(),r=e.properties.content.toLowerCase(),s=e.properties.tags.map(i=>i.toLowerCase()),o=e.kind.toLowerCase();return{lexical:t.reduce((i,a)=>i+$b(n,a)*3+$b(r,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 dP(e,t,n,r){let s=0;for(let o of n){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=r.get(i);if(!a)continue;let c=Fb({...Bb(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return gn(s)}function Fb(e){return{...e,lexical:gn(e.lexical),tags:gn(e.tags),kind:gn(e.kind),connections:gn(e.connections),vector:gn(e.vector),total:gn(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function gn(e){return Math.round(e*1e3)/1e3}function fP(e,t){if(e.length<=220)return e;let n=e.toLowerCase(),r=t.map(o=>n.indexOf(o)).filter(o=>o>=0).sort((o,i)=>o-i)[0]??0,s=Math.max(0,r-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function pP(e,t){let n=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",r=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,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:n,missing_evidence:r}}function mP(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var st,rP,sP,vl,jb=g(()=>{"use strict";Sb();st={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},rP=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),sP=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),vl=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(hn(n));if(t==="getArtifact")return await this.getArtifact(Cb(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=hn(n);return await this.search(Tb(r,"query"),Ob(r,"limit")??10,Ab(r.options))}if(t==="think"){let r=hn(n);return await this.think(Tb(r,"query"),Ob(r,"limit")??8,Ab(r.options))}if(t==="link")return await this.link(hn(n));if(t==="backlinks")return await this.backlinks(Cb(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(hn(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${st.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${st.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${st.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:mP(t.map(r=>r.kind))}}async capture(t){let n=ye(t.title)||"Untitled artifact",r=ye(t.content);if(!r)throw new Error("brain capture requires content");let s=Nb(ye(t.kind)||"note"),o=aP(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=cP([s,n,r,o,ye(t.sourcePath),ye(t.sourceSession)]),c=await this.kv().get(Pb(a));if(c!=null){let p=await this.getArtifact(Number(c));if(p)return p}let u=`${uP(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:o,source_agent:ye(t.sourceAgent),source_runner:ye(t.sourceRunner),source_session:ye(t.sourceSession),source_path:ye(t.sourcePath),created_at:i,updated_at:i,hash:a,metadata:Pi(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${st.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=Eb(d);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Pb(a),m.rid),await this.materializeTagConnections(m),m}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${st.artifacts}`)).rows.map(Eb).filter(xl)}async search(t,n,r={}){let s=lP(t),o=new Set(r.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=Bb(u,s),f=Fb({...l,connections:dP(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:fP(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,n)))}async think(t,n,r={}){let s=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return pP(t,s)}async link(t){let n=await this.getArtifact(vb(t.from)),r=await this.getArtifact(vb(t.to));if(!n)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!r)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=Mb(ye(t.kind)||"related_to"),o=await this.findConnection(n.rid,r.rid,s);if(o!=null){let l=(await this.listConnections()).find(f=>f.rid===o);if(l)return l}let i={reason:ye(t.reason),confidence:ye(t.confidence)||"explicit",created_at:Date.now(),metadata:Pi(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${st.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,n.rid,r.rid,1,i)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=xb(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Ib(n.rid,r.rid,s),u.rid),u}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${st.connections}`)).rows.map(xb).filter(xl)}async eventKpis(t){let n=(await this.listArtifacts()).filter(o=>o.kind==="event"),r=iP(ye(t.interval)||"day"),s=ye(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:s,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!El(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${st.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 ${st.outcomeEvents}`)).rows.map(oP).filter(xl).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Lb());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Lb(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let n={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(n),n}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let n of t.properties.tags){let r=await this.capture({title:n,content:`Tag: ${n}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:r.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,n,r){let s=await this.kv().get(Ib(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(st.kv)}}});var Xb={};B(Xb,{runResidentServer:()=>kP});import{randomUUID as ar}from"node:crypto";import{execFileSync as gP,spawn as hP}from"node:child_process";import{existsSync as yP}from"node:fs";import{mkdir as Vb,rename as bP,rm as Gb,writeFile as Kb}from"node:fs/promises";import{createServer as wP}from"node:net";import{dirname as Pl,join as Ii}from"node:path";import{fileURLToPath as _P,pathToFileURL as RP}from"node:url";async function kP(e){await Vb(Pl(e.socketPath),{recursive:!0});let t=DP();$P();let n=e.telemetryDrainTimeoutMs??zb,r={kind:"opening",startedAt:process.hrtime.bigint()},s,o=!1,i=e.idleMs??bo,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=wP(k=>{l.add(k),k.once("close",()=>l.delete(k)),p(),HP(k,async(T,M)=>{p();let Te=await WP(r,T,e.storeUri,e.residentVersion??"0.0.0-dev"),we={id:T.id,ok:!0,value:Te,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};M(we),T.op==="handover"&&setImmediate(()=>m())})});function m(){o=!0,u=!0,c=LP(c),d.close();for(let k of l)k.destroy()}function p(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{m()},i),a.unref())}let _=["SIGINT","SIGTERM"].map(k=>{let T=()=>{Li(),d.close();for(let M of l)M.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(k,T),{signal:k,handler:T}});await new Promise((k,T)=>{d.once("error",T),d.listen(e.socketPath,()=>{d.off("error",T),k()})}),(async()=>{let k=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let T=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(T)&&T>0&&await new Promise(de=>setTimeout(de,T));let M=await an.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),Te=Number(process.hrtime.bigint()-k)/1e6,we=new Al(M,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??ho,byteBudget:e.telemetryByteBudget??e.byteBudget??yo});if(o){await M.close();return}if(await Tl(we,n),o){await M.close();return}r={kind:"ready",store:M,telemetry:we,storeOpenCount:1,storeElapsedMs:Te},s=setInterval(()=>{let de=r.kind==="ready"?r:void 0;de&&Tl(de.telemetry,n)},f),s.unref(),p()})().catch(k=>{r={kind:"failed",error:k instanceof Error?k:new Error(String(k))},p()}),e.pidPath&&await Kb(e.pidPath,`${process.pid}
|
|
153
|
+
`,{encoding:"utf8",mode:384});let h=e.residentVersion??"0.0.0-dev",y=e.registryPath??Ii(q(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await Qs(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:h})}catch{}await new Promise(k=>d.once("close",k)),a&&clearTimeout(a),s&&clearInterval(s),await Gb(e.socketPath,{force:!0});let w=r;w.kind==="ready"&&(await Tl(w.telemetry,n,u),await w.store.close()),c&&clearTimeout(c);for(let{signal:k,handler:T}of _)process.off(k,T);t?.kill("SIGTERM"),Li(),e.pidPath&&await Gb(e.pidPath,{force:!0}),await Xs(y)}async function TP(e,t,n=new Date){let r=await Ho(e,1,n),s=n.toISOString().slice(0,10),o=r.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,i=r.savings.tokens_saved>0?o/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=Ii(q(t),vP),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:r.health.show_total,updated_at:n.toISOString()};r.health.show_total>0&&(u.show_hit_rate=r.health.show_hit_rate),r.decisions.seen>0&&(u.decisions={seen:r.decisions.seen,contributed:r.decisions.contributed}),await Vb(Pl(a),{recursive:!0}),await Kb(c,`${J(u)}
|
|
154
|
+
`,{encoding:"utf8",mode:384}),await bP(c,a)}async function Tl(e,t=zb,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Qb(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
|
|
155
|
+
`)}}async function OP(e){let t=[];for(let n of CP){let r=await AP(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await PP(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Yb(n)}`))}return t}async function AP(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(n){let r=n instanceof Error?n.message:String(n);if(/\bnot found\b/i.test(r))return{ok:!1,previousModel:null};let s=r.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(s?.[1])return{ok:!1,previousModel:s[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(r))return{ok:!1,previousModel:"collection"};let o=(await e.list()).find(i=>i.name===t);if(o&&o.model!=="kv")return{ok:!1,previousModel:o.model};throw n}}async function PP(e,t,n){let r=IP(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Yb(t)}`)}function IP(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 Yb(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function LP(e){return e&&clearTimeout(e),setTimeout(()=>{Li(),process.exit(0)},xP)}function $P(){Hb||(Hb=!0,process.on("exit",()=>Li()))}function DP(){if(process.platform==="win32")return;let t=hP(process.execPath,["-e",`
|
|
150
156
|
const { execFileSync } = require("node:child_process");
|
|
151
157
|
const parentPid = Number(process.argv[1]);
|
|
152
158
|
const known = new Set();
|
|
@@ -187,23 +193,23 @@ const timer = setInterval(() => {
|
|
|
187
193
|
clearInterval(timer);
|
|
188
194
|
process.exit(0);
|
|
189
195
|
}, 500);
|
|
190
|
-
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function fi(){for(let e of uP())try{process.kill(e,"SIGTERM")}catch{}}function uP(){if(process.platform==="win32")return[];let e="";try{e=GO("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 lP(e){if(e.collection!==he)return e;let t=await Gy(e.raw_text,Uy(e.raw_bytes)),r=await Gy(e.emitted_text,Uy(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 Gy(e,t){if(typeof e=="string"){let r=Buffer.byteLength(e,"utf8");if(r<=YO)try{return await Yy((async()=>({tokens:(await dP())("cl100k_base").encode(e).length,estimated:!1}))(),XO,"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 dP(){return Wy??=import(KO(pP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Wy}function pP(){let e=sl(VO(import.meta.url)),r=[pi(e,"..","node_modules","js-tiktoken","dist","index.js"),pi(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(n=>UO(n));if(!r)throw new Error("js-tiktoken dependency not found");return r}function Uy(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 rl(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Yy(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 fP(e){try{return JSON.parse(e)}catch{return e}}function mP(e){return Jy(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Jy(t)&&(t.collection===ce||t.collection===X||t.collection===he||t.collection===Ue)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Jy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function gP(e,t){kd(e,(r,n)=>t(r,n),(r,n,s)=>{s({id:n?.id??qr(),ok:!1,error:r instanceof Error?r.message:String(r)})})}async function hP(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 Ic(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 ko(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 Lc(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return bP(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await yP(s,r,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function yP(e,t,r,n){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await $y(s,t).request(r,n)}function bP(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var YO,XO,Ky,ZO,QO,eP,nl,Hy,Wy,Zy=h(()=>{"use strict";me();Ls();vs();Qe();Ro();Fy();Ie();Ae();YO=256*1024,XO=500,Ky=2e3,ZO=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),QO="rsp-status-summary.json",eP=[ce,X,he,Ue,xn],nl=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 rP(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 Za(this.opts.rootDir,async a=>{let c=Or(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 tP(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:qr(),a={...await lP(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)||qr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:rl(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===Ue?await this.writeEvent(t,{collection:ce,id:`mirror:${ee(r.id)||qr()}`,created_at:ee(r.created_at)||ee(r.ts)||new Date().toISOString(),event_type:"invocation",command:ee(r.command)||"unknown",command_class:rl(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:Ue,id:qr(),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:${qr()}`,created_at:n.created_at,event_type:"invocation",command:r.command,command_class:rl(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(xn).get("index:v1"),n=typeof r=="string"?fP(r):r;return mP(n)?n:{version:1,records:[]}}async writeIndex(t,r){await t.kv(xn).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})}};Hy=!1});_i();Be();var Ml={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},lw={json:{kind:"boolean"}},dw={help:{kind:"boolean",aliases:["h"]}},pw={commands:{dashboard:{},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:{}},default:"dashboard",keepArgvOnDefault:!0,errorOnUnknownCommand:!0};function Bl(e){let{command:t,args:r}=wi(e,fw);return t==="--version"?{kind:"version",json:zr(r,lw).values.json===!0}:mw(e)?{kind:"help"}:{kind:"command"}}var fw={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function mw(e){return It(e,dw).values.help===!0}function Fl(e){let{values:t,rest:r}=hw(e),n=r[0];if(n!==void 0&&n!=="--"&&n.startsWith("--"))throw gs.unknownFlag(n);let s=wi(r,pw).command,o=[...r],i=t.query;return i!==void 0&&s!=="show"&&o.push("--query",i),{command:s,handle:r[1],storeUri:t["store-uri"],query:i,level:t.terse===!0?"terse":t.brief===!0?"brief":"lossless",positional:o}}var gs=class e extends Error{static unknownFlag(t){return new e(`unknown flag: ${t}`)}render(){return D({command:"rsp",category:"usage",error:this.message,help:"rsp --help",validFlags:gw})}},gw=Object.keys(Ml).map(e=>`--${e}`);function hw(e){try{return It(e,Ml)}catch(t){throw new gs(t instanceof Error?t.message:String(t))}}function jl(e){return D({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function Hl(e){return e instanceof Kr}function pr(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var yw={socket:{kind:"value",coerce:e=>e},"pid-file":{kind:"value",coerce:e=>e},"wake-lock":{kind:"value",coerce:e=>e},registry:{kind:"value",coerce:e=>e},"resident-version":{kind:"value",coerce:e=>e},"ttl-days":{kind:"value",coerce:pt},"ephemeral-ttl-hours":{kind:"value",coerce:pt},"byte-budget":{kind:"value",coerce:pt},"telemetry-ttl-days":{kind:"value",coerce:pt},"telemetry-byte-budget":{kind:"value",coerce:pt},"telemetry-drain-interval-ms":{kind:"value",coerce:pt},"telemetry-drain-timeout-ms":{kind:"value",coerce:pt},"idle-ms":{kind:"value",coerce:pt}};function Ni(e){return zr(e,yw).values}var Gl={since:{kind:"value",coerce:ww},full:{kind:"boolean"}};function hs(e,t){return zr(e,Gl).values.since??t}function Wl(e){return zr(e,Gl).values.full===!0}var bw={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function Ul(e){let{values:t,rest:r}=It(e,bw),n=r[1];if(!n)return null;let s={};for(let o of t.field??[]){let i=o.indexOf("=");i<=0||(s[o.slice(0,i)]=o.slice(i+1))}return{path:n,params:s}}function pt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function ww(e){let t=/^(\d+)(d)?$/.exec(e);if(!t)return;let r=Number(t[1]);return Number.isFinite(r)&&r>0?r:void 0}Mi();Be();import{existsSync as wP}from"node:fs";import{fileURLToPath as _P}from"node:url";Qe();sn();J();He();import{existsSync as Ax}from"node:fs";import{fileURLToPath as Ix}from"node:url";Qe();fa();J();import{existsSync as H_}from"node:fs";import{fileURLToPath as G_}from"node:url";async function hr(e,t){let r={stats:W_(e.telemetryByteBudget),telemetry:ba(t)};if(!e.storeUri.startsWith("file://"))return r;let n=G_(e.storeUri);if(!H_(n))return r;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Gt(),gn)),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:ba(t)}}catch{return r}finally{await o.close()}}function wa(e,t=ba(30),r=!1,n=Yd()){return`${U(_a(e,t,r,n))}
|
|
191
|
-
`}function
|
|
192
|
-
`}function
|
|
193
|
-
`}function
|
|
194
|
-
`)}function
|
|
195
|
-
`}async function
|
|
196
|
-
`;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:
|
|
197
|
-
`);let s=await
|
|
198
|
-
`),await
|
|
199
|
-
`),
|
|
200
|
-
`),2}let
|
|
201
|
-
`),
|
|
202
|
-
`}async function
|
|
196
|
+
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Li(){for(let e of NP())try{process.kill(e,"SIGTERM")}catch{}}function NP(){if(process.platform==="win32")return[];let e="";try{e=gP("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let s=Number(r[1]),o=Number(r[2]),i=r[3]??"";o===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(i)&&t.push(s)}return t}async function MP(e){if(e.collection!==Se)return e;let t=await Wb(e.raw_text,qb(e.raw_bytes)),n=await Wb(e.emitted_text,qb(e.emitted_bytes)),{raw_text:r,emitted_text:s,...o}=e;return{...o,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function Wb(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=SP)try{return await Qb((async()=>({tokens:(await BP())("cl100k_base").encode(e).length,estimated:!1}))(),EP,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(n/4),estimated:!0}}return{tokens:Math.ceil(n/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function BP(){return Ub??=import(RP(FP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Ub}function FP(){let e=Pl(_P(import.meta.url)),n=[Ii(e,"..","node_modules","js-tiktoken","dist","index.js"),Ii(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>yP(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function qb(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function se(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Ol(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Qb(e,t,n){let r;try{return await Promise.race([e,new Promise((s,o)=>{r=setTimeout(()=>o(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function jP(e){try{return JSON.parse(e)}catch{return e}}function GP(e){return Jb(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Jb(t)&&(t.collection===pe||t.collection===te||t.collection===Se||t.collection===Ze)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Jb(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function HP(e,t){hf(e,(n,r)=>t(n,r),(n,r,s)=>{s({id:r?.id??ar(),ok:!1,error:n instanceof Error?n.message:String(n)})})}async function WP(e,t,n,r){if(t.op==="handover")return{handover:!0,version:r,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:r};if(t.op==="stats")return await s.stats();if(t.op==="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 ou(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 Ho(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 iu(o,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return qP(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await UP(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function UP(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await Db(s,t).request(n,r)}function qP(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var SP,EP,zb,xP,vP,CP,Al,Hb,Ub,Zb=g(()=>{"use strict";Re();Zs();Js();ct();Go();jb();Ge();je();SP=256*1024,EP=500,zb=2e3,xP=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),vP="rsp-status-summary.json",CP=[pe,te,Se,Ze,Fr],Al=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await OP(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),s=r.records.length,o=[...r.records];for(let a of n)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 xc(this.opts.rootDir,async a=>{let c=Un(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:se(c.command)||"unknown",source_id:se(c.id),source_collection:se(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 TP(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,s=typeof n.created_at=="string"?n.created_at:r.toISOString(),o=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),i=typeof n.id=="string"&&n.id.trim()!==""?n.id:ar(),a={...await MP(n),id:i,created_at:s,expires_at:o};return await t.kv(n.collection).put(i,a),{collection:n.collection,key:i,created_at:s,expires_at:o,bytes:n.collection===pe?0:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,n){return n.collection===pe||n.accounting_recorded===!0?null:n.collection===Se?await this.writeEvent(t,{collection:pe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Ol(se(n.command)||"unknown"),wrapper:n.wrapper,loss:n.loss,elided:n.elided,raw_bytes:n.raw_bytes,emitted_bytes:n.emitted_bytes,tokens_raw:n.tokens_raw,tokens_emitted:n.tokens_emitted,estimated:n.estimated,wrapper_ms:n.wrapper_ms,store_open_count:n.store_open_count,store_elapsed_ms:n.store_elapsed_ms}):n.collection===Ze?await this.writeEvent(t,{collection:pe,id:`mirror:${se(n.id)||ar()}`,created_at:se(n.created_at)||se(n.ts)||new Date().toISOString(),event_type:"invocation",command:se(n.command)||"unknown",command_class:Ol(se(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:se(n.reason)||"unknown",wrapper_family:se(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:se(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Ze,id:ar(),created_at:new Date().toISOString(),reason:n.reason,command:n.command,bytes:n.bytes,source_id:n.source_id,source_collection:n.source_collection,error:n.error});return await this.writeEvent(t,{collection:pe,id:`mirror:${ar()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:Ol(n.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:n.reason,source_id:n.source_id,source_collection:n.source_collection,error:n.error}),r}async readIndex(t){let n=await t.kv(Fr).get("index:v1"),r=typeof n=="string"?jP(n):n;return GP(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Fr).put("index:v1",n)}async prune(t,n,r=!1){let s=Date.now(),o=[];for(let a of n.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)}(r||o.length<n.records.length)&&await this.writeIndex(t,{version:1,records:o})}};Hb=!1});ji();Ve();var Ad={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},N_={json:{kind:"boolean"}},M_={help:{kind:"boolean",aliases:["h"]}},B_={commands:{dashboard:{},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:{}},default:"dashboard",keepArgvOnDefault:!0,errorOnUnknownCommand:!0};function Pd(e){let{command:t,args:n}=Fi(e,F_);return t==="--version"?{kind:"version",json:lr(n,N_).values.json===!0}:j_(e)?{kind:"help"}:{kind:"command"}}var F_={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function j_(e){return Gt(e,M_).values.help===!0}function Id(e){let{values:t,rest:n}=H_(e),r=n[0];if(r!==void 0&&r!=="--"&&r.startsWith("--"))throw Ds.unknownFlag(r);let s=Fi(n,B_).command,o=[...n],i=t.query;return i!==void 0&&s!=="show"&&o.push("--query",i),{command:s,handle:n[1],storeUri:t["store-uri"],query:i,level:t.terse===!0?"terse":t.brief===!0?"brief":"lossless",positional:o}}var Ds=class e extends Error{static unknownFlag(t){return new e(`unknown flag: ${t}`)}render(){return D({command:"rsp",category:"usage",error:this.message,help:"rsp --help",validFlags:G_})}},G_=Object.keys(Ad).map(e=>`--${e}`);function H_(e){try{return Gt(e,Ad)}catch(t){throw new Ds(t instanceof Error?t.message:String(t))}}function Ld(e){return D({command:`rsp ${e.token}`,category:"usage",error:`unknown command: ${e.token}`,help:"rsp --help",validFlags:e.known})}function $d(e){return e instanceof ur}function Cn(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}var W_={socket:{kind:"value",coerce:e=>e},"pid-file":{kind:"value",coerce:e=>e},"wake-lock":{kind:"value",coerce:e=>e},registry:{kind:"value",coerce:e=>e},"resident-version":{kind:"value",coerce:e=>e},"ttl-days":{kind:"value",coerce:Rt},"ephemeral-ttl-hours":{kind:"value",coerce:Rt},"byte-budget":{kind:"value",coerce:Rt},"telemetry-ttl-days":{kind:"value",coerce:Rt},"telemetry-byte-budget":{kind:"value",coerce:Rt},"telemetry-drain-interval-ms":{kind:"value",coerce:Rt},"telemetry-drain-timeout-ms":{kind:"value",coerce:Rt},"idle-ms":{kind:"value",coerce:Rt}};function ua(e){return lr(e,W_).values}var Dd={since:{kind:"value",coerce:q_},full:{kind:"boolean"}};function Ns(e,t){return lr(e,Dd).values.since??t}function Nd(e){return lr(e,Dd).values.full===!0}var U_={field:{kind:"value",type:"array",aliases:["f","F"],coerce:e=>e}};function Md(e){let{values:t,rest:n}=Gt(e,U_),r=n[1];if(!r)return null;let s={};for(let o of t.field??[]){let i=o.indexOf("=");i<=0||(s[o.slice(0,i)]=o.slice(i+1))}return{path:r,params:s}}function Rt(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:void 0}function q_(e){let t=/^(\d+)(d)?$/.exec(e);if(!t)return;let n=Number(t[1]);return Number.isFinite(n)&&n>0?n:void 0}la();Ve();import{existsSync as JP}from"node:fs";import{fileURLToPath as VP}from"node:url";ct();wr();V();Ye();import{existsSync as s0}from"node:fs";import{fileURLToPath as o0}from"node:url";ct();ja();V();import{existsSync as pk}from"node:fs";import{fileURLToPath as mk}from"node:url";async function Pn(e,t){let n={stats:gk(e.telemetryByteBudget),telemetry:qa(t)};if(!e.storeUri.startsWith("file://"))return n;let r=mk(e.storeUri);if(!pk(r))return n;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Xt(),Or)),o=s(process.cwd(),e);try{return r.endsWith("red-skills.rdb")?{stats:await o.accountingStats(e.telemetryByteBudget),telemetry:await o.telemetryStats(t)}:{stats:await o.stats(),telemetry:qa(t)}}catch{return n}finally{await o.close()}}function Ja(e,t=qa(30),n=!1,r=Uf()){return`${J(Va(e,t,n,r))}
|
|
197
|
+
`}function Wf(e,t){return`${J({...e,overhead:qf(t)})}
|
|
198
|
+
`}function Uf(){return{schema_version:"red.rsp.overhead.v1",verdict:"green",summary:"every wrapper family is inside its overhead ceiling",ceiling:De,breaching_families:[],disabled_families:[],families:[]}}function qf(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 Va(e,t,n,r=Uf()){let s=t.savings.top_commands.slice(0,n?10:3),o=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??eo(),a=t.health.recent_failures.slice(0,n?20:5),c=t.decisions.top_pass_reasons.slice(0,n?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:hk(t.savings),dollars_saved_estimate_usd_display:yk(t.savings),daily_tokens_saved:o,daily_tokens_saved_elided:n?0:Math.max(0,t.savings.daily_tokens_saved.length-o.length),top_commands:s,top_commands_elided:n?0:Math.max(0,t.savings.top_commands.length-s.length)},overhead:qf(r),health:{overhead_verdict:r.verdict,overhead_summary:r.summary,...t.health,degradation_rate_display:Ua(t.health.degradation_rate),show_hit_rate_display:Ua(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:a,recent_failures_elided:n?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:Ua(t.decisions.contribution_rate),top_pass_reasons:c,top_pass_reasons_elided:n?0:Math.max(0,t.decisions.top_pass_reasons.length-c.length),by_command_family:n?t.decisions.by_command_family:t.decisions.by_command_family.slice(0,5),by_command_family_elided:n?0:Math.max(0,t.decisions.by_command_family.length-5)},latency:{...t.latency,wrapper_ms_p50_display:Wa(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Wa(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Wa(t.latency.store_elapsed_ms_avg)}}}function Jf(e){return`${J(e)}
|
|
199
|
+
`}function qa(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 gk(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:eo()}}function eo(){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 Ka(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
|
|
200
|
+
`)}function hk(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 yk(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Tr(e.dollars_saved_estimate_usd):`${Tr(e.dollars_saved_low_usd)}-${Tr(e.dollars_saved_high_usd)} (estimate_midpoint: ${Tr(e.dollars_saved_estimate_usd)})`}function Wa(e){return e==null?"none":String(e)}function Ua(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Qg(e){let{stats:t,telemetry:n}=await Pn(e,30),[r,s]=await Promise.all([i0(e),Promise.resolve().then(()=>(Eu(),Su)).then(o=>o.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s,overhead:kt(ze(process.cwd()).rootDir,e.overhead)}}function Xg(e){let t=Va(e.stats,e.telemetry,!1,e.overhead),n=ma({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??eo()},savings:t.savings,overhead:t.overhead,health:t.health,decisions:t.decisions,latency:t.latency},a0(e));return`${J(n)}
|
|
201
|
+
`}async function i0(e){if(!e.storeUri.startsWith("file://"))return[];let t=o0(e.storeUri);if(!s0(t))return[];let{residentElisionStore:n}=await Promise.resolve().then(()=>(Xt(),Or)),r=n(process.cwd(),e);try{return await r.recoveryHandles(5)}catch{return[]}finally{await r.close()}}function a0(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"]}ct();V();Ve();import{existsSync as OT}from"node:fs";import{fileURLToPath as AT}from"node:url";Ge();import{spawn as li}from"node:child_process";async function jh(e,t,n){let r=process.hrtime.bigint(),s=await Gh(e.positional),o=Number(process.hrtime.bigint()-r)/1e6;return qC(t,e,s,o,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function Gh(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let n;if(t==="exec"||t==="proxy"){let o=t==="proxy"?await Promise.resolve().then(()=>(ti(),ei)).then(i=>i.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(hs(),gs)).then(i=>i.parseExecCommandLine(e));n=li(o,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=li(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let r=0,s=0;return n.stdout?.on("data",o=>{r+=o.length,process.stdout.write(o)}),n.stderr?.on("data",o=>{s+=o.length,process.stderr.write(o)}),await new Promise(o=>{n.on("error",i=>{let a=`${i instanceof Error?i.message:String(i)}
|
|
202
|
+
`;s+=Buffer.byteLength(a),process.stderr.write(a),o({stdoutBytes:r,stderrBytes:s,status:127,signal:null})}),n.on("close",(i,a)=>o({stdoutBytes:r,stderrBytes:s,status:i,signal:a}))})}function Hh(e){return e>0&&Math.random()<e}async function bs(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);process.stderr.write(`rsp: ${e}, passing through
|
|
203
|
+
`);let s=await Jh(t);if(r){let o=JC(e,t,n),{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ge(),os));fi(i(r,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:di(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})),fi(i(r,{collection:c,ts:new Date().toISOString(),command:di(t),reason:o.reason,wrapper_family:o.family,wrapper_exit_code:o.exitCode,stderr_head:o.stderrHead,accounting_recorded:!0}))}return s}async function Wh(e,t,n){let r=await Gh(e),{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:i}=await Promise.resolve().then(()=>(Ge(),os)),a={ts:new Date().toISOString(),command:di(e),reason:"overhead-ceiling-self-disabled",wrapper_family:n.family,wrapper_exit_code:r.status??0,stderr_head:n.disabled_reason??n.reasons.join(",")};return fi(s(t,{collection:o,event_type:"invocation",command_class:e[0]??"unknown",loss:"lossless",raw_bytes:r.stdoutBytes+r.stderrBytes,emitted_bytes:r.stdoutBytes+r.stderrBytes,degradation_reason:a.reason,...a})),fi(s(t,{collection:i,accounting_recorded:!0,...a})),r.signal?(process.kill(process.pid,r.signal),128):r.status??0}async function Uh(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${pi()}, passing through
|
|
204
|
+
`),await Jh(e)}function pi(){return"rsp is not enabled in this directory; run /red-setup"}function qh(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}function et(e){return di(e.positional)}function di(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1);return n.length===1?n[0]:n.join(" ")}catch{return e.join(" ")}}function ys(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function qC(e,t,n,r,s){let o=n.stdoutBytes+n.stderrBytes,i={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:et(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:o,emitted_bytes:o,wrapper_ms:r};Et(e,{collection:"rsp_accounting_events_v1",...i}),Et(e,{collection:"rsp_telemetry_invocations_v1",...i,accounting_recorded:!0})}function JC(e,t,n){let r=t[0]??"unknown",s=VC(n)||e;return{reason:Fh(n)==="ENOENT"||Fh(n)==="MODULE_NOT_FOUND"||/(?:command not found|cannot find package|cannot find module|module not found|not provisioned)/i.test(s)?"wrapper-unavailable":"wrapper-crash",family:r,exitCode:zC(n)??1,stderrHead:KC(s,240)}}function VC(e){return e instanceof Error?ys(e.message):ys(String(e??""))}function KC(e,t){let n=ys(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function Fh(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function zC(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let n=e[t];if(typeof n=="number"&&Number.isFinite(n))return n}return null}function fi(e){e.catch(()=>{})}async function Jh(e){if(e[0]==="exec"||e[0]==="proxy")return await YC(e);let t=e[0];if(!t)return 2;let n=li(t,e.slice(1),{stdio:"inherit"});return await new Promise(r=>{n.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
205
|
+
`),r(127)}),n.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}async function YC(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:r}=await Promise.resolve().then(()=>(ti(),ei));t=r(e)}else{let{parseExecCommandLine:r}=await Promise.resolve().then(()=>(hs(),gs));t=r(e)}}catch(r){return process.stderr.write(`${r instanceof Error?r.message:String(r)}
|
|
206
|
+
`),2}let n=li(t,{shell:!0,stdio:"inherit"});return await new Promise(r=>{n.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
207
|
+
`),r(127)}),n.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}async function uy(e,t,n){let r=[],s=!e.enabled;if(r.push(s?Q("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):Q("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(Q("hook_wiring","skipped because rsp is disabled"),Q("proxy_mode","skipped because rsp is disabled"),Q("resident_liveness","skipped because rsp is disabled"),Q("store_provisioning","skipped because rsp is disabled"),Q("recent_degradation_rate","skipped because rsp is disabled"),Q("overhead_budget","skipped because rsp is disabled")),cy("disabled",r,n);r.push(await PT(e)),r.push(e.proxyEnabled?Q("proxy_mode","proxy routing enabled for pre-exec rewrites"):dn("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:o}=await Promise.resolve().then(()=>(Ye(),Qt));if(r.push(IT(await o(t))),r.push(LT(e)),dy(e)){let{telemetry:i}=await Pn(e,n);r.push($T(i,n))}else r.push(Q("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return r.push(DT(kt(process.cwd(),e.overhead))),cy(r.some(i=>!i.pass)?"fail":"pass",r,n)}function ly(e){let{exitCode:t,...n}=e;return`${J({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
|
|
208
|
+
`}async function PT(e){try{if(e.proxyEnabled)return Q("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(_s(),wi)),n=t("git status");return n.kind==="rewrite"?Q("hook_wiring",`pre-exec hook would rewrite git status through ${n.capabilityId}`):dn("hook_wiring",`pre-exec hook passed git status through: ${n.reason??"unsupported-command"}`,"rsp setup")}catch(t){return dn("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?ys(t.message):"unknown error"}`,"rsp setup")}}function IT(e){return e.state==="registered-alive-socket-healthy"?Q("resident_liveness","resident registry points at a healthy socket"):dn("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function LT(e){return e.storeUri.startsWith("file://")?dy(e)?Q("store_provisioning","rsp store exists for this directory"):dn("store_provisioning","rsp store is not provisioned","rsp setup"):Q("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function $T(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return Q("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let r=e.health.degradations,s=n?.reason??e.health.most_recent?.reason??"unknown",o=n?.count??r;return dn("recent_degradation_rate",`${r} degradation(s) in the recent ${t}d window; dominant reason ${s} (${o})`,NT(s,t))}function DT(e){return e.verdict==="green"?Q("overhead_budget",e.summary):dn("overhead_budget",e.summary,"rsp status")}function NT(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 dy(e){if(!e.storeUri.startsWith("file://"))return!0;try{return OT(AT(e.storeUri))}catch{return!1}}function Q(e,t){return{name:e,pass:!0,finding:t}}function dn(e,t,n){return{name:e,pass:!1,finding:t,fix_command:n,error:ca({command:`rsp doctor:${e}`,category:"real-error",error:t,help:n})}}function cy(e,t,n){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:n,probes:t,errors:t.map(r=>r.error).filter(r=>!!r)}}Uu();function gy(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${FT(t).join(`
|
|
203
209
|
`)}
|
|
204
|
-
`}function p0(e){switch(e){case"stats":return j("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 j("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 j("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 j("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 j("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 j("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 j("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 j("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 j('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 j("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 j("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return j("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return j("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 j("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return j("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return j("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return j("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 j("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 j("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"dashboard":return j("rsp dashboard",["No flags. The explicit spelling of the bare `rsp` invocation."],["rsp","rsp dashboard"]);case"hook":return j("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:"," dashboard, 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"," --version, -v build version; add --json for structured build info","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return j(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function j(e,t,r){return[`usage: ${e}`,"","Flags and defaults:",...t.map(n=>` ${n}`),"","Examples:",...r.map(n=>` ${n}`)]}me();J();Ie();import{spawn as f0}from"node:child_process";import{createHash as m0}from"node:crypto";import{existsSync as g0,readFileSync as h0,statSync as y0}from"node:fs";import{tmpdir as b0}from"node:os";import{dirname as w0,join as kt}from"node:path";async function se(e,t,r,n,s=process.cwd(),o,i=o?.overhead??ve){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let a=Number(process.hrtime.bigint()-r)/1e6;n&&o&&R0(s,o);let c=_0(e,t,a);return an(s,c,i),n?tr(x0(s,e,t,c,i,n.lastResponseMetrics())):v0(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function _0(e,t,r){let n=un(),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 tr(e){e.catch(()=>{})}async function ri(e,t,r,n){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ie(),Jn));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 R0(e,t){try{let r=it(e),n=y0(r),s=t.telemetryDrainIntervalMs*2;if(n.size<t.telemetryByteBudget&&!E0(r,Date.now()-s))return;let o=k0(e),i=S0(o),a=kt(i,"rsp.sock"),c=kt(i,"rsp.pid"),u=kt(W(o),"rsp-resident.pid.json"),l=kt(o,".red","tmp","rsp","wake.lock");f0(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 k0(e){let t=e;for(;;){if(g0(kt(t,".git")))return t;let r=w0(t);if(r===t)return e;t=r}}function S0(e){let t=m0("sha256").update(e).digest("hex").slice(0,20),r=process.env.XDG_RUNTIME_DIR;if(r){let s=kt(r,"red-skills",t);if(kt(s,"rsp.sock").length<108)return s}let n=typeof process.getuid=="function"?process.getuid():"nouid";return kt(b0(),`red-skills-${n}`,t)}function E0(e,t){try{let r=h0(e,"utf8");cn(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 x0(e,t,r,n,s,o){let i=Buffer.concat([r.stdout,r.stderr]),a=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),c=Ss(n,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:p}=await Promise.resolve().then(()=>(Ie(),Jn));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs}),await u(e,{collection:p,ts:new Date().toISOString(),command:Je(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:Je(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:Je(t),reason:r.degradation.reason,wrapper_family:r.degradation.family,wrapper_exit_code:0,stderr_head:r.degradation.stderrHead,accounting_recorded:!0}))}function v0(e,t,r,n,s){try{let o=Buffer.concat([r.stdout,r.stderr]),i=Buffer.concat([r.rawOutput??r.stdout,r.stderr]),a=Ss(n,s);gt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Je(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a}),gt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Je(t),wrapper:t.command,loss:t.level,elided:!!(r.mintedHandle||r.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a,accounting_recorded:!0})}catch{}}var Ct=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let r=await this.open(),n=await r.mint(...t);return this.metrics=r.lastResponseMetrics?.(),n}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},Ju=class{async mint(t,r){return`recovery unavailable (cold store) \u2014 re-run: ${r.command}`}lastResponseMetrics(){}async close(){}};async function ny(e,t,r,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error("cold store");let s=new Ju,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(yu(),fh));if(i(e.positional))return await se(e,await a(),o,s,r,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(Zt(),ru)),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(()=>(Nu(),Du)),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(()=>(ju(),Fu)),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(()=>(Uu(),Wu)),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(()=>(rs(),ts)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,o,s)}}catch(i){return pr(i)?(process.stdout.write(i.render()),2):await ss("wrapper failed",e.positional,i,r)}finally{await s.close()}return await ss("wrapper failed",e.positional,n,r)}async function Qy(e=process.argv.slice(2)){let t=ys("rsp"),r=Bl(e);if(r.kind==="version")return process.stdout.write(r.json?`${JSON.stringify(t)}
|
|
205
|
-
`:`${
|
|
206
|
-
`),0;if(
|
|
207
|
-
`),0);if(
|
|
208
|
-
`),0)}if(
|
|
209
|
-
`),
|
|
210
|
+
`}function FT(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"dashboard":return F("rsp dashboard",["No flags. The explicit spelling of the bare `rsp` invocation."],["rsp","rsp dashboard"]);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:"," dashboard, 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"," --version, -v build version; add --json for structured build info","","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,n){return[`usage: ${e}`,"","Flags and defaults:",...t.map(r=>` ${r}`),"","Examples:",...n.map(r=>` ${r}`)]}Re();V();Ge();import{spawn as jT}from"node:child_process";import{createHash as GT}from"node:crypto";import{existsSync as HT,readFileSync as WT,statSync as UT}from"node:fs";import{tmpdir as qT}from"node:os";import{dirname as JT,join as Pt}from"node:path";async function le(e,t,n,r,s=process.cwd(),o,i=o?.overhead??De){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let a=Number(process.hrtime.bigint()-n)/1e6;r&&o&&KT(s,o);let c=VT(e,t,a);return Rr(s,c,i),r?fn(XT(s,e,t,c,i,r.lastResponseMetrics())):ZT(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function VT(e,t,n){let r=Sr(),s=t.stdout.length+t.stderr.length,o=(t.rawOutput?.length??t.stdout.length)+t.stderr.length;return{family:e.command??"unknown",wrapperMs:n,childMs:r.childMs,selfStateBytesRead:r.selfStateBytesRead,bytesSaved:Math.max(0,o-s)}}function fn(e){e.catch(()=>{})}async function ki(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:o}=await Promise.resolve().then(()=>(Ge(),os));await s(e,{collection:o,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:n,loss:"lossless",raw_bytes:n?r:0,emitted_bytes:r})}function KT(e,t){try{let n=gt(e),r=UT(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!QT(n,Date.now()-s))return;let o=zT(e),i=YT(o),a=Pt(i,"rsp.sock"),c=Pt(i,"rsp.pid"),u=Pt(q(o),"rsp-resident.pid.json"),l=Pt(o,".red","tmp","rsp","wake.lock");jT(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 zT(e){let t=e;for(;;){if(HT(Pt(t,".git")))return t;let n=JT(t);if(n===t)return e;t=n}}function YT(e){let t=GT("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=Pt(n,"red-skills",t);if(Pt(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return Pt(qT(),`red-skills-${r}`,t)}function QT(e,t){try{let n=WT(e,"utf8");kr(Buffer.byteLength(n));for(let r of n.split(/\r?\n/))if(r.trim())try{let s=JSON.parse(r),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 XT(e,t,n,r,s,o){let i=Buffer.concat([n.stdout,n.stderr]),a=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),c=Ws(r,s),{appendTelemetryEvent:u,RSP_ACCOUNTING_EVENTS_COLLECTION:l,RSP_TELEMETRY_INVOCATIONS_COLLECTION:f}=await Promise.resolve().then(()=>(Ge(),os));await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:et(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:a.length,emitted_bytes:i.length,...c,store_open_count:o?.storeOpenCount,store_elapsed_ms:o?.storeElapsedMs}),await u(e,{collection:f,ts:new Date().toISOString(),command:et(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.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}),n.degradation&&(await u(e,{collection:l,event_type:"invocation",ts:new Date().toISOString(),command:et(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:a.length,emitted_bytes:i.length,degradation_reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead}),await u(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:et(t),reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead,accounting_recorded:!0}))}function ZT(e,t,n,r,s){try{let o=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),a=Ws(r,s);Et(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:et(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a}),Et(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:et(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:o.length,...a,accounting_recorded:!0})}catch{}}var Nt=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let n=await this.open(),r=await n.mint(...t);return this.metrics=n.lastResponseMetrics?.(),r}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},bl=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function sb(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new bl,o=process.hrtime.bigint();try{if(e.command==="git"){let{isFastGitStatus:i,runFastGitStatus:a}=await Promise.resolve().then(()=>(Uu(),my));if(i(e.positional))return await le(e,await a(),o,s,n,t);let{runGitWrapper:c}=await Promise.resolve().then(()=>(un(),Ou)),u=await c(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await le(e,u,o,s,n,t)}if(e.command==="gh"){let{runGhWrapper:i}=await Promise.resolve().then(()=>(ul(),cl)),a=await i(e.positional,{level:e.level,store:s});return await le(e,a,o,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:i}=await Promise.resolve().then(()=>(pl(),fl)),a=await i(e.positional,{level:e.level,store:s});return await le(e,a,o,s,n,t)}if(e.command==="cat"){let{runCatWrapper:i}=await Promise.resolve().then(()=>(yl(),hl)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await le(e,a,o,s,n,t)}if(e.command==="exec"){let{runExecWrapper:i}=await Promise.resolve().then(()=>(hs(),gs)),a=await i(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await le(e,a,o,s)}}catch(i){return Cn(i)?(process.stdout.write(i.render()),2):await bs("wrapper failed",e.positional,i,n)}finally{await s.close()}return await bs("wrapper failed",e.positional,r,n)}async function ew(e=process.argv.slice(2)){let t=Ms("rsp"),n=Pd(e);if(n.kind==="version")return process.stdout.write(n.json?`${JSON.stringify(t)}
|
|
211
|
+
`:`${Bd(t)}
|
|
212
|
+
`),0;if(n.kind==="help")return process.stdout.write(gy(e)),0;let r;try{r=Id(e)}catch(h){if($d(h))return process.stdout.write(Ld(h)),2;throw h}if(r.command==="hook"&&r.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:h}=await Promise.resolve().then(()=>(_s(),wi));return await h()}if(r.command==="hook"&&r.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:h}=await Promise.resolve().then(()=>(_s(),wi));return await h()}if(r.command==="hook"&&r.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:h}=await Promise.resolve().then(()=>(fs(),Lu));return await h()}if(r.command==="hook"&&r.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:h}=await Promise.resolve().then(()=>(fs(),Lu));return await h()}if(r.command==="setup"){let{provisionRspRepoStore:h}=await Promise.resolve().then(()=>(fb(),db)),y=await h(process.cwd());return process.stdout.write(Ka(y)),0}if(r.command==="mcp"){let{runRspMcpServer:h}=await Promise.resolve().then(()=>(wb(),bb));return await h(),0}if(r.command==="wait"){let{runWait:h}=await Promise.resolve().then(()=>(Eu(),Su));return await h(r.positional)}if(r.command==="shell-init"){let h=r.positional[1];if(h!=="fish"&&h!=="bash"&&h!=="zsh")return process.stdout.write(D({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(()=>(kb(),Rb));return process.stdout.write(y(h)),0}let{resolveRspConfig:s}=await Promise.resolve().then(()=>(je(),Mp)),o=s(process.cwd(),process.env,r.storeUri);if(r.command==="doctor"){let{resolveResidentPaths:h}=await Promise.resolve().then(()=>(Ye(),Qt)),y=h(process.cwd()),w=await uy(o,y,Ns(r.positional,1));return process.stdout.write(ly(w)),w.exitCode}let i=qh(r.command);if(!o.enabled)return i?await Uh(r.positional):(process.stdout.write(`${pi()}
|
|
213
|
+
`),0);if(r.command==="git"&&_i(r.positional)){let h=process.hrtime.bigint();return await le(r,await Ri(),h,void 0,await Wu(process.cwd()),o)}let{resolveResidentPaths:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Ye(),Qt)),u=a(process.cwd());if(i&&r.command){let{overheadFamilyDisabled:h}=await Promise.resolve().then(()=>(V(),qs)),y=h(u.rootDir,r.command);if(y)return await Wh(r.positional,u.rootDir,y)}if(i&&Hh(o.measurementHoldoutShare))return await jh(r,u.rootDir,o.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:h}=await Promise.resolve().then(()=>(Zb(),Xb)),y=a(process.cwd()),w=ua(r.positional),k=s(process.cwd(),process.env,r.storeUri);return k.enabled?(await h({socketPath:w.socket??y.socketPath,pidPath:w["pid-file"]??y.pidPath,rootDir:y.rootDir,storeUri:k.storeUri,ttlDays:w["ttl-days"]??k.ttlDays,ephemeralTtlHours:w["ephemeral-ttl-hours"]??k.ephemeralTtlHours,byteBudget:w["byte-budget"]??k.byteBudget,telemetryTtlDays:w["telemetry-ttl-days"]??k.telemetryTtlDays,telemetryByteBudget:w["telemetry-byte-budget"]??k.telemetryByteBudget,telemetryDrainIntervalMs:w["telemetry-drain-interval-ms"]??k.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:w["telemetry-drain-timeout-ms"]??k.telemetryDrainTimeoutMs,idleMs:w["idle-ms"]??k.idleMs,residentVersion:w["resident-version"]??t.version,registryPath:w.registry??y.registryPath}),0):(process.stdout.write(`${pi()}
|
|
214
|
+
`),0)}if(r.command==="warm-resident"){let h=a(process.cwd()),y=ua(r.positional),w=s(process.cwd(),process.env,r.storeUri);if(!w.enabled)return 0;let{warmResidentServer:k}=await Promise.resolve().then(()=>(Ye(),Qt));return await k({...h,socketPath:y.socket??h.socketPath,wakeLockPath:y["wake-lock"]??h.wakeLockPath},{storeUri:w.storeUri,ttlDays:y["ttl-days"]??w.ttlDays,ephemeralTtlHours:y["ephemeral-ttl-hours"]??w.ephemeralTtlHours,byteBudget:y["byte-budget"]??w.byteBudget,telemetryTtlDays:y["telemetry-ttl-days"]??w.telemetryTtlDays,telemetryByteBudget:y["telemetry-byte-budget"]??w.telemetryByteBudget,telemetryDrainIntervalMs:y["telemetry-drain-interval-ms"]??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:y["telemetry-drain-timeout-ms"]??w.telemetryDrainTimeoutMs,idleMs:y["idle-ms"]??w.idleMs,clientVersion:t.version}),0}if(r.command==="proxy"){let{runProxy:h}=await Promise.resolve().then(()=>(ti(),ei));return await h(r.positional,{telemetryRoot:u.rootDir,level:r.level})}if(r.command==="status"||r.command==="sweep"){let{residentRegistryStatus:h,sweepResidentRegistry:y}=await Promise.resolve().then(()=>(Ye(),Qt)),w=r.command==="sweep"?await y(u):await h(u);if(r.command==="sweep"){let{sweepGhEtagCache:M}=await Promise.resolve().then(()=>(Br(),Pp));await M(u.rootDir,{maxBytes:o.ghEtagCacheMaxBytes})}let{overheadHealth:k}=await Promise.resolve().then(()=>(V(),qs)),T=k(u.rootDir,o.overhead);return process.stdout.write(Wf(w,T)),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:h}=await Promise.resolve().then(()=>(Wo(),Qm)),y=Md(r.positional);if(!y)return process.stdout.write(D({command:r.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let w=await h({path:y.path,params:y.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${r.positional.join(" ")}`,overheadCeiling:o.overhead});return process.stdout.write(w.stdout),w.stderr&&process.stderr.write(`${w.stderr}
|
|
215
|
+
`),w.status}if(r.command==="dashboard"){let h=await Qg(o);return process.stdout.write(Xg(h)),0}if(!r.storeUri&&o.storeUri.startsWith("file://")&&!JP(VP(o.storeUri)))return i?await sb(r,o,u.rootDir):(process.stdout.write(D({command:et(r)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let{residentConfigFor:l,residentElisionStore:f,reportResidentEntryDiagnostic:d}=await Promise.resolve().then(()=>(Xt(),Or)),m=(h=!0)=>Promise.resolve(f(process.cwd(),o,{ensureResident:h,paths:u})),p=()=>c(u,l(o,t.version)).catch(h=>void d(h)),b=()=>m(),_;try{if(r.command==="stats"){let{stats:h,telemetry:y}=await Pn(o,Ns(r.positional,30)),{overheadHealth:w}=await Promise.resolve().then(()=>(V(),qs));return process.stdout.write(Ja(h,y,Nd(r.positional),w(u.rootDir,o.overhead))),0}if(r.command==="gains"){let h=await b();_=()=>h.close();let y;try{y=await h.telemetryGains(Ns(r.positional,28))}catch(w){return process.stdout.write(D({command:`rsp ${r.positional.join(" ")}`.trim(),category:"real-error",error:w instanceof Error?w.message:"rsp gains unavailable",help:"rsp gains requires the shared RedDB store"})),1}return process.stdout.write(Jf(y)),0}if(r.command==="git"){if(fn(p()),_i(r.positional)){let T=process.hrtime.bigint();return await le(r,await Ri(),T,void 0,u.rootDir,o)}let{runGitWrapper:h}=await Promise.resolve().then(()=>(un(),Ou)),y=new Nt(()=>m(!1));_=()=>y.close();let w=process.hrtime.bigint(),k=await h(r.positional,{level:r.level,store:y,heavyGitByteThreshold:o.heavyGitByteThreshold});return await le(r,k,w,y,u.rootDir,o)}if(r.command==="gh"){fn(p());let{runGhWrapper:h}=await Promise.resolve().then(()=>(ul(),cl)),y=new Nt(()=>m(!1));_=()=>y.close();let w=process.hrtime.bigint(),k=await h(r.positional,{level:r.level,store:y});return await le(r,k,w,y,u.rootDir,o)}if(r.command==="vitest"||r.command==="cargo"){fn(p());let{runTestWrapper:h}=await Promise.resolve().then(()=>(pl(),fl)),y=new Nt(()=>m(!1));_=()=>y.close();let w=process.hrtime.bigint(),k=await h(r.positional,{level:r.level,store:y});return await le(r,k,w,y,u.rootDir,o)}if(r.command==="cat"){fn(p());let{runCatWrapper:h}=await Promise.resolve().then(()=>(yl(),hl)),y=new Nt(()=>m(!1));_=()=>y.close();let w=process.hrtime.bigint(),k=await h(r.positional,{level:r.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await le(r,k,w,y,u.rootDir,o)}if(r.command==="exec"){fn(p());let{runExecWrapper:h}=await Promise.resolve().then(()=>(hs(),gs)),y=new Nt(()=>m(!1));_=()=>y.close();let w=process.hrtime.bigint(),k=await h(r.positional,{level:r.level,store:y,heavyByteThreshold:o.heavyGitByteThreshold});return await le(r,k,w,y,u.rootDir,o)}if(r.command==="show"&&r.handle){let h=await b();_=()=>h.close();let y=await h.get(r.handle);if(y&&"original"in y&&y.original)return process.stdout.write(y.original),await ki(u.rootDir,r.handle,!0,y.original.length),0;if(y?.status==="expired"){let k=D({command:`rsp show ${r.handle}`,category:"real-error",error:`expired ${y.expired_at}`,help:y.command});return process.stdout.write(k),await ki(u.rootDir,r.handle,!1,k.length),1}let w=D({command:`rsp show ${r.handle}`,category:"real-error",error:"expired unknown",help:r.handle});return process.stdout.write(w),await ki(u.rootDir,r.handle,!1,w.length),1}return process.stdout.write(D({command:r.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(h){if(Cn(h))return process.stdout.write(h.render()),2;if(i)return await bs("wrapper failed",r.positional,h,u.rootDir);throw h}finally{await _?.()}}Ve();import.meta.url===`file://${process.argv[1]}`&&ew().then(e=>process.exit(e),e=>{Cn(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(D({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{ew as main,Ka as renderSetupResult,Ja as renderStats};
|