@reddb-io/red-skills 3.3.11 → 3.3.13
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 +1 -1
- package/dist/castle-mcp.bundle.min.mjs +341 -341
- package/dist/code-nav.bundle.min.mjs +1 -1
- package/dist/dev.bundle.min.mjs +594 -594
- package/dist/memory.bundle.min.mjs +1 -1
- package/dist/redskilled.bundle.min.mjs +71 -70
- package/dist/rsp.bundle.min.mjs +110 -110
- package/package.json +1 -1
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -1,158 +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 ew=Object.defineProperty;var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var B=(e,t)=>{for(var n in t)ew(e,n,{get:t[n],enumerable:!0})};function nw(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 rw(e=Ll){return Object.entries(e).map(([t,n])=>nw(t,n)).sort((t,n)=>n.separator.length-t.separator.length)}function sw(e){return/^-\d+(\.\d+)?$/.test(e)}function wn(e){return!(!e||e.startsWith("-")&&!sw(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 ow(e);case"number":return iw(e);case"array":return e.split(",").map(n=>vs(n.trim()));case"string":default:return e}}function ow(e){let t=e.toLowerCase().trim();return t==="true"||t==="yes"||t==="1"||t==="on"}function iw(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 aw(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 cw(e){let t=[],n=lw(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
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
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 r=
|
|
11
|
-
`))}return n}function Dl(e){let t=
|
|
12
|
-
`);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(n=>n.endsWith("\r")?n.slice(0,-1):n)}function
|
|
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
|
|
14
|
-
`),e.push(" order: ",ie(n.order.encoded,
|
|
15
|
-
`),e.push(" discriminator: ",ie(n.discriminator,
|
|
10
|
+
`));let r=dw(e.options);t.push(...r)}return t}function uw(e,t){let n=cw(e);return aw(n,t)}function lw(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 dw(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=bw(e.options??{},e.autoShort??!1),n=rw(e.separators??Ll);return{schema:e,parse(r){return fw(r,e,t,n)},help(){return uw(e,e.formatter)}}}function fw(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=hw(l,c,e,s,n,t);continue}if(l.startsWith("-")&&l.length>1&&!Sw(l)){c=yw(l,c,e,s,n,t);continue}let f=pw(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 _w(s,t,n),Rw(s,t,a),kw(s,t,n),s}function pw(e,t){if(tw.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(mw(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(gw(s,o,n))return{key:s,value:o,config:n}}}return null}function mw(e){return e?/^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(e):!1}function gw(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 hw(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 yw(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 bw(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=ww(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 ww(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 _w(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 Rw(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 kw(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 Sw(e){return/^-\d+(\.\d+)?$/.test(e)}var Ll,tw,Nl=g(()=>{Ll={"=":"data",":=":{to:"data",typed:!0},":":"meta"},tw=/^[a-z][a-z0-9+.-]*:\/\//i});function Ew(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 xw(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:Ew(t),separators:{},allowUnknown:!0}).parse([...e]),o={},i=xw(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 Tw(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=Tw(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=vw.exec(c)??Cw.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,vw,Cw,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}};vw=/^--([^=]+)(?:=([\s\S]*))?$/,Cw=/^-([^-=])(?:=([\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 Ow.test(e)}var Ow,Ml,Fl=g(()=>{Ow=/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,Ut,Hl,kn=g(()=>{Gl=["type","kind","event"],Ut="|",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 We(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 We(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Aw(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 We(t);let n="",r=1;for(;r<e.length;){Ul.lastIndex=r;let s=Ul.exec(e);if(s===null)break;if(s[0]==='"'){if(e.slice(s.index+1).trim()==="")return n+e.slice(r,s.index);throw We(t)}if(s[0]!=="\\")throw We(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 We(t);let a=Number.parseInt(i,16);if(a>=55296&&a<=57343)throw We(t);n+=String.fromCharCode(a),r+=4;break}default:throw We(t)}}throw We(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 We(n);t=s+2;continue}if(r===-1)throw We(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 Aw(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Pw(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Iw(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 Iw(e);if(typeof e=="string")return $w(e,t);throw R(0,"not a primitive")}function Lw(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function K(e){return Lw(e)?e:Os(e)}function $w(e,t){return Gi(e,t)?Os(e):e}function Gi(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Pw(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Os(e){let t='"',n=0;Wl.lastIndex=0;let r;for(;(r=Wl.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,Ul,Wl,Wt=g(()=>{it();G=",";Ul=/["\\\u0000-\u0008\u000a-\u001f]/g;Wl=/["\\\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();Wt();kn()});function Xl(e){if(!H(e)||Object.keys(e).length===0)return e;let t={};for(let[n,r]of Object.entries(e)){let s=Dw(r,1);if(s===void 0)return e;Le(t,n,s)}return t}function Dw(e,t){if(!H(e)||!Nw(e))return;let{order:n,discriminator:r,rows:s}=e;if(typeof n!="string"||typeof r!="string"||!Number.isSafeInteger(s)||s<0)throw Q(t);let o=Mw(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 Ql(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 Q(t);c.set(f,d)}if(c.size===0)throw Q(t);let u=new Map,l=o.map((f,d)=>{let m=c.get(f);if(m===void 0)throw Ui(t);let p=u.get(f)??0,b=m[p];if(b===void 0)throw Ui(t);return u.set(f,p+1),Bw(r,f,a[d],b,t)});for(let[f,d]of c)if((u.get(f)??0)!==d.length)throw Ui(t);return l}function Nw(e){return Object.prototype.hasOwnProperty.call(e,"order")||Object.prototype.hasOwnProperty.call(e,"discriminator")||Object.prototype.hasOwnProperty.call(e,"rows")}function Mw(e,t,n){if(!e.startsWith("cycle("))throw Q(n);let r=e.slice(6),s=r.indexOf(")*");if(s===-1)throw Q(n);let o=r.slice(0,s),i=r.slice(s+2);if(o===""||i.includes("+tail("))throw Q(n);let a=o.split(",").map(l=>Hw(l,n));if(a.some(l=>l===""))throw Q(n);let c=Gw(i,n),u=a.length*c;if(!Number.isSafeInteger(u))throw Q(n);if(u!==t)throw Ql(n);return Array.from({length:u},(l,f)=>a[f%a.length])}function Bw(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 Q(s);Le(o,i,a)}for(let[i,a]of Object.entries(Fw(r,s))){if(i===e||Object.prototype.hasOwnProperty.call(o,i))throw Q(s);Le(o,i,a)}return o}function Fw(e,t){let n={};for(let[r,s]of Object.entries(e))jw(n,r.split("."),s,t);return As(n,t)}function jw(e,t,n,r){if(t.some(o=>o===""))throw Q(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 Q(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 Q(t);return As(e[String(r)],t)}):Object.fromEntries(Object.entries(e).map(([n,r])=>[n,As(r,t)])):e}function Gw(e,t){if(e===""||e.length>1&&e.startsWith("0")||!/^[0-9]+$/.test(e))throw Q(t);let n=Number(e);if(!Number.isSafeInteger(n))throw Q(t);return n}function Hw(e,t){try{return decodeURIComponent(e)}catch{throw Q(t)}}function zl(e){return encodeURIComponent(e)}function Q(e){return R(e,"invalid cyclic array wire")}function Ql(e){return R(e,"cyclic array length mismatch")}function Ui(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)Vw(r,s,o);return r.join("")}function Uw(e){if(!Array.isArray(e)||e.length===0||!e.every(H))return;let t=Ww(e);if(t===void 0)return;let n=e.map(a=>a[t]),r=qw(n);if(r===void 0)return;let s=Jw(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)&&!Wi(f,l,u))return;o.get(c).push(u)}let i=[];for(let a of r.cycle){let c=o.get(a),u=zw(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 Ww(e){return Gl.find(t=>e.every(n=>typeof n[t]=="string"))}function qw(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 Jw(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(!Kw(o)||!e.every(i=>Object.prototype.hasOwnProperty.call(i,o))||!e.every(i=>qe(i[o])))break;n.push(o)}return n}function Vw(e,t,n){e.push(K(t),`:
|
|
14
|
+
`),e.push(" order: ",ie(n.order.encoded,Ut),`
|
|
15
|
+
`),e.push(" discriminator: ",ie(n.discriminator,Ut),`
|
|
16
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),
|
|
18
|
-
`);for(let s of r)e.push(" ",n.map(o=>ie(s[o],
|
|
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),`}:
|
|
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),Ut,"]{",n.map(K).join(Ut),`}:
|
|
18
|
+
`);for(let s of r)e.push(" ",n.map(o=>ie(s[o],Ut)).join(Ut),`
|
|
19
|
+
`)}function Kw(e){return e!==""&&qi(e)}function Wi(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)=>Wi(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(".")&&Wi(i,`${t}.${o}`,n,r));return r.delete(e),s}return!1}function zw(e){let t=Object.keys(e[0]??{});if(e.every(n=>Yw(Object.keys(n),t)))return t.every(qi)?t:void 0}function Yw(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();Wt();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=Qw(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 Qw(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 _=Zw(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 Zw(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();Wt()});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 n_(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?Xl(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}=e_(e,t,n,r);ld(s,i,a,c,r,o.number)}return s}function e_(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=t_(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=Xi(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 t_(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 n_(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=Xi(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 Xi(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 r_(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 l_(e,n,r,s+1,o)}function r_(e,t,n,r,s,o){if(e.fieldTree!==void 0&&c_(e.fieldTree))return s_(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 s_(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(a_(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=o_(u,f,t,n,r,s,o,i,a);xn(c,[u.key],d,a,n)}),c}function o_(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+u_(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=i_(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 i_(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 a_(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 c_(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 u_(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 l_(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(d_(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 d_(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 Xi(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(f_)){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 f_(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}var dd=g(()=>{it();Wt();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?m_(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
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
21
|
`),e.push(...c)}return}e.push(K(t),`:
|
|
22
22
|
`),fd(e,n,r+1,s);return}e.push(K(t),": ",ie(n,s.delimiter),`
|
|
23
23
|
`)}function ta(e,t,n,r,s,o){if(Je(r,0,o),n.length===0){t!==void 0?e.push(K(t),`: []
|
|
24
24
|
`):s?e.push(`[0]:
|
|
25
25
|
`):e.push(`[]
|
|
26
|
-
`);return}if(n.every(qe)){
|
|
27
|
-
`);return}let i=s?void 0:pd(n,o,r+1);if(i!==void 0){
|
|
26
|
+
`);return}if(n.every(qe)){Qi(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){Qi(e,t,n.length,i.fields,o.delimiter),e.push(`
|
|
28
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}
|
|
30
|
-
`);for(let a of n)vn(e,r+1),
|
|
29
|
+
`),e.push(...c)}return}Qi(e,t,n.length,void 0,o.delimiter),e.push(`
|
|
30
|
+
`);for(let a of n)vn(e,r+1),p_(e,a,r+1,o)}function p_(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
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
|
|
33
|
-
`),e.push(...i)}}function
|
|
32
|
+
`)}function Qi(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=g_(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 m_(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 g_(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?(h_(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=>y_(i,n,t.listDelimiter)).join(t.listDelimiter)}function h_(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 y_(e,t,n){return typeof e!="string"?ie(e,t):Gi(e,t)||e.includes(n)?Os(e):e}var gd=g(()=>{it();Wt();kn();dr();Hi();Ji()});var hr=g(()=>{kn();dd();dr();gd()});var hd=g(()=>{hr()});function R_(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 k_(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 S_(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 E_(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 x_(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 v_(e,t,n){if(e.startsWith("- "))throw P(t,"reserved line prefix");let r=R_(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=S_(e,t);if(s!==null)return s.continuation?(E_(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let o=k_(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 C_(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=v_(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 C_(e).flatMap(t=>t.rows.map(n=>x_(t.fields,n,0)))}function T_(e){if(!Ed.includes(e))throw P(0,"invalid header delimiter")}function bd(e,t,n=!1){return`[${`${n?"~":""}${e===G?"":e}`}]{${t}}:
|
|
34
34
|
`}function wd(e,t){return`[]<${e}>{${t}}:
|
|
35
|
-
`}function aa(e,t){return t.map(K).join(e)}function
|
|
36
|
-
`,p=()=>
|
|
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=
|
|
38
|
-
`},end(){return f?"":(f=!0,m())}}}var Ed,xd,vd,YI,
|
|
39
|
-
`)}function ca(e){let t={command:e.command,category:e.category,exit_code:e.exitCode
|
|
40
|
-
`).trim()}var Ve=g(()=>{"use strict";Fl();N()});function Ms(e){let t={app:e,version:
|
|
41
|
-
`,{encoding:"utf8",mode:384}),
|
|
35
|
+
`}function aa(e,t){return t.map(K).join(e)}function O_(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 A_(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 P_(e){return JSON.stringify([...e].sort())}function Sd(e,t){let n=P_(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}={}){T_(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=()=>A_(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=O_(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,zI,YI,Td=g(()=>{it();hr();Wt();Ed=[G,"|"," "],xd=8,vd=/^[A-Za-z0-9_-]+$/,zI=new TextEncoder,YI=new TextDecoder});var N=g(()=>{jl();it();hr();hr();hd();Td()});function L_(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??L_(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=$_(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 $_(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:q_(Tn("__RED_BUILD_VERSION__",()=>"3.3.13")??"0.0.0-dev"),gitSha:Tn("__RED_BUILD_GIT_SHA__",()=>"832f145c84843c71cf5379685dc5a58bdabcaf38")??"unknown",buildTime:Tn("__RED_BUILD_TIME__",()=>"2026-08-03T02:28:27-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 q_(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 J_,join as at,resolve as da}from"node:path";function z_(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function jd(e){return at(z_(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 Y_(e){return at(Gd(e),"red-skills.rdb")}function X_(e){return at(Hd(e),"red-skills.rdb")}function qd(e,t){let n=Y_(e);if(t(n))return n;let r=X_(e);if(t(r))throw Q_();return n}function Q_(){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 J_(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,V_,K_,fa,Ud,Wd,Re=g(()=>{Fd=".red",V_="MEMORY_ROOT",K_="RED_BRAIN_ROOT",fa=[V_,K_];Ud=".red/state/red-skills.rdb";Wd=".red/tmp/red-skills.rdb"});function J(e){return C(e,{keyedMapCollapse:!0})}var Z_,eR,IL,ct=g(()=>{N();Re();Z_=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],eR=[{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"}],IL=[...Z_,...eR]});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 tR(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=>tR(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:()=>cR,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:()=>Us,readOverheadLedger:()=>_r,readSelfStateFile:()=>Ws,readSelfStateFileSync:()=>dR,recordOverheadSample:()=>Rr,resetOverheadCounters:()=>lR,resetOverheadLedger:()=>uR,startChildProcessTimer:()=>ce});import{existsSync as nR,mkdirSync as rR,readFileSync as Xd,renameSync as sR,writeFileSync as oR}from"node:fs";import{readFile as iR}from"node:fs/promises";import{dirname as aR,join as Qd}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 Us(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 Qd(q(e),Zd)}function _r(e){try{let t=Xd(ba(e),"utf8"),n=gR(t);if(hR(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]??mR(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=fR(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 uR(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:pR(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 lR(){_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 Ws(e){let t=await iR(e,"utf8");return kr(Buffer.byteLength(t)),t}function dR(e){let t=Xd(e,"utf8");return kr(Buffer.byteLength(t)),t}function fR(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 pR(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 mR(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(!nR(Qd(e,".red")))return;rR(aR(n),{recursive:!0});let r=`${n}.${process.pid}.tmp`;oR(r,`${C(t)}
|
|
41
|
+
`,{encoding:"utf8",mode:384}),sR(r,n)}catch{}}function gR(e){try{return JSON.parse(e)}catch{return L(e)}}function hR(e){return!ga(e)||e.version!==1||!ga(e.families)?!1:Object.values(e.families).every(yR)}function yR(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,cR,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,cR=["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
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
43
|
`);return o<0?null:{frame:n.slice(0,o),dialect:r,rest:n.slice(o+1)}}let s=n.indexOf(`
|
|
44
44
|
|
|
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=
|
|
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=wR(e);if(n!==null)return n.endsWith(`
|
|
46
46
|
`)?`${n}
|
|
47
47
|
`:`${n}
|
|
48
48
|
|
|
49
49
|
`}return`${JSON.stringify(e)}
|
|
50
|
-
`}function
|
|
50
|
+
`}function wR(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":bR}function ff(e){lf.add(e)}var bR,lf,pf=g(()=>{N();bR="toon";lf=new Set});import{createHash as _R}from"node:crypto";import{constants as Ca}from"node:fs";import{mkdir as RR,open as kR}from"node:fs/promises";import{createConnection as SR}from"node:net";import{tmpdir as ER}from"node:os";import{dirname as xR,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=SR(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 RR(xR(e),{recursive:!0,mode:448});try{return await kR(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=_R("sha256").update(e.key).digest("hex").slice(0,20),r=c=>Er(c,e.socketFileName).length<vR,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(ER(),i);return r(a)||process.platform==="win32"?a:Er(CR,i)}var vR,CR,Js=g(()=>{pf();vR=108;CR="/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 TR,readdirSync as OR}from"node:fs";import{homedir as AR}from"node:os";import{basename as Pa,dirname as Aa,join as ke,resolve as Vs}from"node:path";function PR(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??TR,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&&$R(i))return a(Vs(i),"caller-entry");let c=[];for(let[u,l]of NR(i,t.rootDir,n,t.listDir??jR))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(PR(n))return n;throw new An(n)}function $R(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:DR(Vs(e))}function DR(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*NR(e,t,n,r){if(e){let o=Aa(Vs(e));yield[ke(o,Kt),"caller-sibling-bundle"];let i=IR.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 LR){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=MR(n);yield[ke(s,Kt),"bundle-cache"];for(let o of BR(s,r))yield[ke(s,o),"bundle-cache"]}function MR(e){if(e.RED_SKILLS_CACHE_DIR)return e.RED_SKILLS_CACHE_DIR;let t=e.XDG_CACHE_HOME||ke(e.HOME||AR(),".cache");return ke(t,"red-skills","bundles")}function BR(e,t){return t(e).filter(n=>Ia.test(n)).sort((n,r)=>FR(_f(r),_f(n)))}function _f(e){return Ia.exec(e)?.[1]??""}function FR(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 jR(e){try{return OR(e)}catch{return[]}}var lt,An,Kt,IR,Ia,LR,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})`:""}
|
|
51
51
|
searched:
|
|
52
52
|
${t.searched.map(n=>` ${n}`).join(`
|
|
53
|
-
`)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Kt="rsp.bundle.min.mjs",
|
|
54
|
-
`,{encoding:"utf8",mode:384}),await
|
|
53
|
+
`)}`),this.name="RspResidentEntryError",this.searched=t.searched,this.callerEntry=t.callerEntry}},Kt="rsp.bundle.min.mjs",IR=/^([a-z0-9-]+)-(.+)\.bundle\.min\.mjs$/,Ia=/^rsp-(.+)\.bundle\.min\.mjs$/,LR=["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 GR}from"node:fs";import{mkdir as Na,readFile as Tf,rename as HR,rm as Ke,stat as UR,writeFile as WR}from"node:fs/promises";import{dirname as zt,join as dt,resolve as Ma}from"node:path";import{fileURLToPath as qR}from"node:url";function ze(e){let t=nk(e)??Ma(e),n=tk(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 KR(e.socketPath);let r=zR(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:ik(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=QR(await Tf(e,"utf8"));return ak(t)?t:null}catch{return null}}async function Xs(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 WR(r,`${C(n)}
|
|
54
|
+
`,{encoding:"utf8",mode:384}),await HR(r,e)}async function Qs(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 ek(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()+VR(),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 VR(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:JR}async function KR(e){await Ke(e,{force:!0})}function zR(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}`,YR)})),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
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
|
|
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 QR(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 ZR(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 ZR(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Vt(e))return;await new Promise(r=>setTimeout(r,50))}}async function ek(e){if(!e.startsWith("file://"))return!1;try{return await UR(qR(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 tk(e){return bf({key:e,socketFileName:"rsp.sock"})}function nk(e){let t=Ma(e);for(let n=0;n<32;n++){try{let s=Da(dt(t,".git"));if(s!=null)return rk(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 rk(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 GR(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 sk(e,t.clientVersion),await ck(e),!1):!0:!1}async function sk(e,t){try{await On({socketPath:e,timeoutMs:200},{id:vf(),op:"handover",clientVersion:t})}catch{}}function Df(e,t){return!e||!t?!1:ok(e,t)>0}function ok(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 ik(e){return typeof e=="string"&&e.length>0?e:void 0}function ak(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 ck(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,JR,Lf,YR,Zs=g(()=>{N();Re();Js();Oa();La();La();Of=1,JR=5e3;Lf=yf;YR=8*1024});var Xt={};B(Xt,{RSP_ENTRY_UNRESOLVED:()=>lt,ResidentRspElisionStore:()=>Cr,RspResidentEntryError:()=>An,ensureResidentServer:()=>zs,kickResidentServer:()=>Ys,pingResident:()=>Yt,readResidentRegistry:()=>vr,removeResidentRegistry:()=>Qs,residentRegistryStatus:()=>xr,resolveResidentPaths:()=>ze,resolveRspEntry:()=>Ks,sweepResidentRegistry:()=>If,warmResidentServer:()=>Pf,writeResidentRegistry:()=>Xs});import{randomUUID as uk}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:uk()});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:lk}}function Ba(e,t){return dk(Math.max(0,e)/1e6*t)}function Tr(e){return`$${e.toFixed(6)}`}function dk(e){return Math.round(e*1e6)/1e6}var Bf,Ff,lk,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},lk="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
|
|
57
57
|
`),process.env.RSP_DEBUG==="1"&&e instanceof Error&&process.stderr.write(`${e.message}
|
|
58
|
-
`)),!0):!1}function Hf(e){return typeof e=="object"&&e!==null&&e.code===lt}var jf,
|
|
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(!
|
|
58
|
+
`)),!0):!1}function Hf(e){return typeof e=="object"&&e!==null&&e.code===lt}var jf,Qt=g(()=>{"use strict";la();Ye();jf=!1});function Xa(e){return e==="success"?0:e==="failure"?1:2}function Qa(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function ft(e,t,n){return{status:e,exitCode:Xa(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,Xf,Qf,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,Xf=1e4,Qf=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 yk,readFile as bk}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 wk(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 wk(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 _k(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 yk("/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 bk(`/proc/${e}/stat`,"utf8"),n=t.lastIndexOf(")");return n<0?null:t.slice(n+2).trim().split(/\s+/)}catch{return null}}async function _k(e){await new Promise(t=>setTimeout(t,e))}var pt=g(()=>{"use strict"});import{constants as Rk}from"node:os";async function rp(e){let t=e[1],n={timeoutMs:za.cmd,reason:"",signal:"SIGUSR1",notifyTimeoutMs:Xf,terminateGraceMs:Qf,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=Ek(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=Sk(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 kk(n),t==="cmd"&&(r.commandLine=s>=0?e.slice(s+1).join(" "):""),r}async function kk(e){if(!(e.signal in Rk.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 Sk(e,t){if(!/^[1-9][0-9]*$/.test(e))throw new Error(`invalid ${t}: ${e}`);return Number(e)}function Ek(e){return e.startsWith("SIG")?e:`SIG${e}`}var sp=g(()=>{"use strict";Zt();pt()});import{existsSync as Za,readFileSync as xk,statSync as vk}from"node:fs";import{basename as op,dirname as ro,isAbsolute as Ck,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=Ok(n),o=Tk(n,s);return o||(s??n)}function Tk(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 Ok(e){let t=e;for(;;){let n=ip(t,".git");if(Za(n))return Ik(n)?t:Ak(n)??t;let r=Lr(t,"..");if(r===t)return null;t=r}}function Ak(e){let t=Pk(e);if(!t)return null;let n=ro(t),r=ro(n);return op(n)!=="worktrees"||op(r)!==".git"?null:ro(r)}function Pk(e){let t;try{t=xk(e,"utf8")}catch{return null}let n=/^gitdir:\s*(.+)$/m.exec(t.trim());if(!n)return null;let r=n[1].trim();return Ck(r)?Lr(r):Lr(ro(e),r)}function Ik(e){try{return vk(e).isDirectory()}catch{return!1}}var ec=g(()=>{Re()});import{join as Lk}from"node:path";function Dk(e,t=process.env){return so(e,t)}function Dn(e,t=process.env){return Jd(Dk(e,t))}function ap(e,t=process.env){return Lk(Dn(e,t),$k)}var $k,tc=g(()=>{"use strict";Re();ec();$k="spool"});import{randomUUID as Nk}from"node:crypto";import{existsSync as Mk}from"node:fs";import{mkdir as Bk,readdir as Fk,readFile as jk,rename as Gk,rm as nc,writeFile as Hk}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}${Wk}`)}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(!Mk(n))return[];let r=await Fk(n).catch(()=>[]),s=[];for(let o of r.filter(i=>qk.some(a=>i.endsWith(a)))){let i=up(n,o),a=await Jk(i);if(!a){await nc(i,{force:!0});continue}if(!await Vk(a)){await nc(i,{force:!0});continue}s.push(a)}return s}async function Jk(e){let t;try{t=await jk(e,"utf8")}catch{return null}let n=t.trim();if(!n)return null;let r=Kk(n);return r&&Object.keys(r).length>0?r:null}async function Vk(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 Kk(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 Bk(Uk(e),{recursive:!0});let n=`${e}.tmp-${process.pid}-${Nk()}`;try{await Hk(n,t,"utf8"),await Gk(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 Wk,qk,Dr=g(()=>{"use strict";N();ct();Zt();tc();pt();Wk=".toon",qk=[".toon",".json"]});function Mn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Xe(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 zk}from"node:child_process";import{resolve as Yk}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 Qk(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 Qk(e,t,n){let r=Xe(t.wait),s=Xe(t.verdict);return await Zk(e.notifyCmd,n,e.notifyTimeoutMs,e.terminateGraceMs,{...process.env,RSP_WAIT_RESULT_JSON:JSON.stringify(t),RSP_WAIT_RESULT_FILE:e.resultFile?Yk(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 Zk(e,t,n,r,s){return await new Promise(o=>{let i=!1,a=!1,c=f=>{i||(i=!0,o(f))},u=zk(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 eS}from"node:path";async function mp(e){let{kind:t,entry:n,options:r,cwd:s}=e,o=tS(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:Xa(e.status)}function tS(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(eS(e),Fn(t,n))}function Fn(e,t){return t==="json"?`${JSON.stringify(e,null,2)}
|
|
60
60
|
`:`${J(e)}
|
|
61
|
-
`}var hp=g(()=>{"use strict";ct();Zt();Dr();pp()});import{createWriteStream as
|
|
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
|
|
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}
|
|
61
|
+
`}var hp=g(()=>{"use strict";ct();Zt();Dr();pp()});import{createWriteStream as nS,mkdirSync as rS}from"node:fs";import{readFile as sS,rm as oS}from"node:fs/promises";import{dirname as iS}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 aS(e){let t=e.toString("utf8");return Buffer.from(t,"utf8").equals(e)&&!cS(e)?{inline:t}:{inline:e.toString("base64"),inline_encoding:"base64"}}function cS(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,...aS(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 sS(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{rS(iS(this.spoolPath),{recursive:!0}),t=nS(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 oS(this.spoolPath,{force:!0}).catch(()=>{})}}});import{existsSync as uS,readFileSync as wD}from"node:fs";import{dirname as lS,join as dS}from"node:path";function _p(e,t){let n=e;for(let r=0;r<16;r++){let s=dS(n,t);if(uS(s))return s;let o=lS(n);if(o===n)break;n=o}return null}function fS(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 fS(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:()=>wS,sweepGhEtagCache:()=>fc,writeGhEtagEntry:()=>lc});import{existsSync as pS}from"node:fs";import{mkdir as mS,readdir as gS,rename as hS,rm as kp,stat as Sp,unlink as Ep,writeFile as yS}from"node:fs/promises";import{dirname as bS,join as jn}from"node:path";function fo(e){return jn(q(e),xp)}function po(e,t){return jn(fo(e),`${SS(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 Ws(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 RS(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 _S(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 Ws(t));if(ES(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=>pS(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 kS(a)||(await Op(a,{...i,key:o}),s+=1)}for(let o of n)await kp(o,{force:!0});return s}function wS(){ic.clear()}async function _S(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 RS(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 gS(e)}catch{return[]}}async function kS(e){try{return await Sp(e),!0}catch{return!1}}async function Op(e,t){await mS(bS(e),{recursive:!0});let n=`${e}.${process.pid}.${Date.now()}.tmp`;try{await yS(n,`${C(t)}
|
|
63
|
+
`,{encoding:"utf8",mode:384}),await hS(n,e)}catch(r){throw await kp(n,{force:!0}),r}}function SS(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 ES(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 xS,readFileSync as vS}from"node:fs";import{join as CS,resolve as Ip}from"node:path";function Fe(e,t,n){let r=_p(Ip(e),CS(".red","config.yaml")),s=r?vS(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(Qe(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(Qe(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??z(s,"rsp.telemetryDrainIntervalMs"),Lp),p=ue(Qe(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??z(s,"rsp.telemetryDrainTimeoutMs"),$p),b=TS(Qe(t.RSP_IDLE_MS)??z(s,"rsp.idleMs"),bo,Dp),_=ue(Qe(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??z(s,"rsp.heavyGitByteThreshold"),mt),h=OS(Qe(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??z(s,"rsp.measurement.holdoutShare"),Np),y=ue(Qe(t.RSP_GH_ETAG_CACHE_MAX_BYTES)??z(s,"rsp.ghEtagCacheMaxBytes"),Gn),w={maxOverheadMs:ue(Qe(t.RSP_MAX_OVERHEAD_MS)??z(s,"rsp.overhead.maxOverheadMs"),Bs),maxSelfStateBytes:ue(Qe(t.RSP_MAX_SELF_STATE_BYTES)??z(s,"rsp.overhead.maxSelfStateBytes"),Fs),netLossFloorBytes:ue(z(s,"rsp.overhead.netLossFloorBytes"),js),consecutiveBreaches:ue(Qe(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),xS)}`;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 TS(e,t,n){let r=ue(e,t);return Math.max(r,n)}function OS(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function Qe(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=Ud,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(()=>(Qt(),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 AS}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=AS(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:PS(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 IS(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 PS(e,t,n){return Z("wait interrupted",{attempts:t,last_poll_at:n??null,...e?{last_observation:gc(e)}:{}})}async function IS(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 Up=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 LS}from"node:crypto";import{appendFileSync as Kp,existsSync as $S,mkdirSync as zp}from"node:fs";import{mkdir as Yp,readdir as DS,readFile as Xp,rename as NS,rm as Qp,writeFile as kc}from"node:fs/promises";import{basename as _c,dirname as jr,join as Un,resolve as Wp}from"node:path";function ko(e){if(!e)return null;let t=Wp(e);for(;;){if($S(Un(t,".red")))return t;let n=Wp(Un(t,".."));if(n===t)break;t=n}return null}function gt(e){return Un(q(e),hc)}function So(e){return Un(q(e),yc)}function Ec(e){return Un(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,HS({spool_id:Rc(),event:BS(t)}),{encoding:"utf8",mode:384})}catch{}}function BS(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<=MS)return e;let o={...e};return delete o[t],Ee(o[n])===0&&(o[n]=s),o.estimated=!0,o}async function FS(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 WS(r)];return await Promise.all(r.map(o=>Qp(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 jS(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 jS(e){let t=[gt(e),So(e)],n=jr(t[0]);return(await DS(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&&GS(a))}).sort().map(s=>Un(n,s))}function GS(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 Qp(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 Xp(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function Wn(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 HS(e){return Jt().push(VS(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 NS(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 WS(e){let t=[];for(let n of e)t.push(...rm(await em(n)));return t}async function nm(e){let t=await Xp(Ec(e),"utf8").catch(()=>""),n=new Map;for(let r of qS(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:Wn(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=Wn(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}
|
|
64
64
|
${s}
|
|
65
|
-
`))Sc(o)&&
|
|
65
|
+
`))Sc(o)&&KS(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 qS(e){return JS(e).map(zS).filter(t=>t!==null)}function JS(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}
|
|
66
66
|
${s}
|
|
67
|
-
`))Sc(o)&&t.push(o)}catch{}}}return t}function Ro(e){return`legacy:${
|
|
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
|
|
69
|
-
`,"utf8"),await
|
|
67
|
+
`))Sc(o)&&t.push(o)}catch{}}}return t}function Ro(e){return`legacy:${LS("sha256").update(e).digest("hex").slice(0,24)}`}function VS(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 Wn(JSON.stringify(n))}function KS(e){return typeof e.spool_id=="string"&&sm(e)!==null}function zS(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 MS,om=g(()=>{"use strict";Re();N();_o();wc();MS=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(YS)}function YS(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 Ur=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 QS,readFile as ZS,readdir as im,rename as eE,writeFile as tE}from"node:fs/promises";import{homedir as nE}from"node:os";import{basename as rE,dirname as sE,join as Wr}from"node:path";import{fileURLToPath as oE}from"node:url";import{gunzipSync as iE,gzipSync as aE}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 cE(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=dE(),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:uE(o),storage_class:cm(s),recover:`rsp show ${s.handle}`}})}function uE(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:lE(n),original_bytes:e.length}:null}function lE(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=aE(e);return{key:cE(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=iE(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 dE(){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=Wr(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=pE(e.derivation_recipe),r=mE(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"&&fE(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 fE(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 pE(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 mE(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 ZS(e,"utf8")).trim();if(r==="")return vo();let s;try{s=JSON.parse(r)}catch{s=L(r)}if(gE(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 rE(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?Wr(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Wr(nE(),".cache","red-skills","bundles")),t=Wr(e,"reddb"),n;try{n=await im(t)}catch{return}n.sort().reverse();for(let r of n){let s=Wr(t,r,process.platform==="win32"?"red.exe":"red");if(XS(s)){process.env.REDDB_BIN=s;return}}}async function Jn(e,t){await QS(sE(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await tE(n,`${C(Cc(t))}
|
|
69
|
+
`,"utf8"),await eE(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 gE(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 oE(e)}var Do=g(()=>{"use strict";N();Ur();xo()});async function Rm(e,t){return hE?wE(e,t):yE?RE(e,t):bE(e,t)}async function bE(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 wE(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:_E(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*_E(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 RE(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:kE(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*kE(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var hE,yE,km=g(()=>{hE=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",yE=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as SE}from"node:fs";import{join as EE}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=EE(n,"bin",t);if(SE(o))return o;throw new Error(`reddb: binary "${t}" not found.
|
|
70
70
|
expected at: ${o}
|
|
71
71
|
override: set ${r}=/path/to/${t}
|
|
72
72
|
fix: re-run \`pnpm install\` (the postinstall script downloads it),
|
|
73
|
-
or check the postinstall log for a download error.`)}var Em=g(()=>{});import{fileURLToPath as
|
|
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(
|
|
73
|
+
or check the postinstall log for a download error.`)}var Em=g(()=>{});import{fileURLToPath as xE}from"node:url";import{dirname as vE,resolve as CE,join as SN}from"node:path";function AE(){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:AE(),packageRoot:OE,envVar:"REDDB_BIN"})}var TE,OE,vm=g(()=>{Em();TE=vE(xE(import.meta.url)),OE=CE(TE,"..")});var PE,IE,v,No,vt=g(()=>{PE=new TextEncoder,IE=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(PE.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(IE.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:/"?LE(e):$E(e)}function LE(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=DE(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 $E(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 DE(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 ME(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 BE(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 NE,Xr,Hc=g(()=>{vt();NE=new Set(["embedded"]),Xr=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&NE.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:BE(r.value)}async put(t,n,r,s={}){this._guard("put");let o=ME(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 Uc(e,t){return`${Wc(e)}.${FE(t)}`}function Wc(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 FE(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function jE(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 ${Uc(s,t)} = ${jE(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 ${Uc(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 ${Uc(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 ${Wc(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 ${Wc(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(`
|
|
75
75
|
|
|
76
76
|
`)){let l=u.split(`
|
|
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
|
|
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,`
|
|
77
|
+
`).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function GE(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 HE(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 ${HE(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 WE(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 Qr,zc=g(()=>{vt();Qr=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)} ${WE(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=GE(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 qE(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 JE(e){return Pm(JSON.stringify(e))}function VE(e){return JSON.stringify(e)}function KE(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?JE(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 (${VE(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=qE(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)} = ${KE(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 zE(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${Ct(n)}.${Ct(r)})`}return XE(e)}function YE(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,Xc=g(()=>{es=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){YE(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)} = ${zE(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 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 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 ZE(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,Qc=g(()=>{ts=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){QE(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)} = ${ZE(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(ex)}async function Nm(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${nx(t)}`)).rows??[]).some(r=>r.name===String(t))}function ex(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(tx).join(".")}function tx(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 nx(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(fx(n),n.kind==="embedded"){let r=dx(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=lx(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 ox(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:ax(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&ux(e)?{$uuid:e}:e}function ox(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 ix(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Bm):e.map(Bm)}function ax(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 cx(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 ux(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 cx(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 lx(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function dx(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 fx(e){if(e.kind!=="embedded")throw new v("EMBEDDED_ONLY",rx)}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 px(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 mx(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 rx,sx,Fm,Mm,Fo,eu,tu,Gm=g(()=>{km();vm();vt();Gc();Hc();qc();zc();Yc();Xc();Qc();Zc();Hc();qc();zc();Yc();Xc();Qc();Zc();Gc();rx="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",sx="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=sx,this.cache=new Xr(t,this.transport),this.queue=new Qr(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=ix(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 px(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 mx(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 gx}from"node:crypto";import{existsSync as Hm}from"node:fs";import{mkdir as hx,readFile as yx,rename as ru,rm as rs,stat as su}from"node:fs/promises";import{basename as bx,dirname as wx}from"node:path";async function Um(e){await(await an.open({...e,allowResidentOpen:!0})).close()}var an,Wm=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 hx(wx(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 yx(s,"utf8").catch(()=>"")).trim();if(!i)continue;let a=bx(s),c=gx("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:()=>Um,storageClassForCommand:()=>yt});var Go=g(()=>{"use strict";xo();Do();Do();Wm()});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=Xn(E,"raw"),S=Xn(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=_x(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 _x(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:Ox(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)/Bx()))),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,Xn(S,"raw").tokens-Xn(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=Lx(O);Di&&w.set(Di,(w.get(Di)??0)+1);let Ni=Nx(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=Ex(cr),ot=Sx(l),Mt=vx([...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:$x(w)},savings:{tokens:Fa(M,Te),measured_control_holdout:Rx(c,u),weekly_tokens_saved:Mx(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 Xn(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 Rx(e,t){let n=Tx(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(Cx(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:kx(o,i),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Jm(e){let t=Xn(e,"raw").tokens;if(t<=0)return null;let n=Xn(e,"emitted").tokens;return Math.max(0,t-n)/t}function kx(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 Sx(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 Ex(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:xx(n)}))}function xx(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 vx(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 Cx(e){return e.reduce((t,n)=>t+n,0)/e.length}function Tx(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function Ox(e){let t=Px();for(let n of e){if(A(n.event_type)==="show"||A(n.degradation_reason)!==""||n.elided!==!0)continue;let r=Ax(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 Ax(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Px(){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=>Ix(r.value)).filter(r=>Hn(r))}function Ix(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 Lx(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Dx(t.getUTCDay())}:${t.getUTCHours()}`:null}function $x(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 Dx(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Nx(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 Mx(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 Bx(){return 24*60*60*1e3}var zm=g(()=>{"use strict";Ur();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:()=>Wn,readAccountingLaneStats:()=>ou,readTelemetryGainsReport:()=>iu,readTelemetryStats:()=>Ho,takeTelemetrySpool:()=>FS,telemetryLegacySpoolPath:()=>So,telemetrySpoolCorrectionsPath:()=>Ec,telemetrySpoolPath:()=>gt});var Ge=g(()=>{"use strict";_o();om();zm()});var Xm={};B(Xm,{readGhConditionalJson:()=>me,readGhEtagCache:()=>mo,sweepGhEtagCache:()=>fc});import{spawn as Fx}from"node:child_process";import{createHash as jx,randomUUID as Gx}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=Hx(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 Wx(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=qx(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 Hx(e,t){return JSON.stringify({method:"GET",path:e,params:Ym(t)})}function Ux(e){return jx("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Wx(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=Fx("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 qx(e){let t=e.replace(/\r\n/g,`
|
|
80
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(`
|
|
81
81
|
|
|
82
82
|
`,o),a=i>=0?t.slice(o,i):t.slice(o),c=new Map;for(let u of a.split(`
|
|
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:
|
|
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
|
|
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");
|
|
87
|
-
`),r(127)}),t.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}function
|
|
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:Gx(),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 Uo=g(()=>{"use strict";Br();Br();V();Ge()});import{spawn as Jx}from"node:child_process";async function is(e,t){return await Vx(t,async n=>{let r=await zx(e,t.cwd,n);return r||await Kx(e,t.cwd,n)})}async function Vx(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 Kx(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=Jx("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 zx(e,t,n){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Yx(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=Xe(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(Xe(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 Yx(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=Xe(JSON.parse(r.stdout));if(Array.isArray(s.statusCheckRollup))return{status:0,stdout:r.stdout,stderr:r.stderr};let o=ee(Xe(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(Xe(JSON.parse(i.stdout)).statuses):[],u=a.status===0?tn(Xe(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 Qm=g(()=>{"use strict";Uo();co();pt()});function eg(e,t,n){let r=Date.now();return()=>Qx(e,t,n,r)}async function Qx(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(Zx),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||ev(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 Zx(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 ev(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}var sg=g(()=>{"use strict";Zt();Qm();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 tv(e){return Object.keys(e)}function Qn(e){return{...e,fields:tv(e.fields)}}var ag,cg,ug,nv,rv,sv,lg,uu=g(()=>{"use strict";ag="red.castle.lane.v1",cg="red.castle.state.v1",ug="red.castle.history.v1",nv="red.castle.validation.v2",rv="red.castle.envelope.v1",sv="red.castle.hitl-card.v1",lg=[Qn({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}}),Qn({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}}),Qn({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}}),Qn({schemaId:nv,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}}),Qn({schemaId:rv,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}}),Qn({schemaId:sv,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,Wo=g(()=>{"use strict";N();uu();XM=new Map(lg.map(e=>[e.schemaId,new Set(e.fields)]))});var dg=g(()=>{"use strict";ig();Wo()});var fg=g(()=>{"use strict"});var qo=g(()=>{"use strict"});var lu=g(()=>{"use strict";qo()});var Jo=g(()=>{"use strict"});import{appendFile as av,mkdir as cv,readFile as uv}from"node:fs/promises";import{dirname as lv,join as dv}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 fv(e){return{at:e.at,singleton:e.singleton,kind:e.kind,...e.payload===void 0?{}:{payload:JSON.stringify(e.payload)}}}function pv(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("singleton event tail must be a non-negative integer")}function mv(e){return dv(e.castleStateRoot,"singleton-events.toonl")}function fu(e,t={}){let n=t.fs??{appendFile:av,mkdir:cv,readFile:uv},r=t.clock??(()=>new Date().toISOString()),s=mv(e);return{path:s,async append(o){let i=pg({at:o.at??r(),...o});return await n.mkdir(lv(s),{recursive:!0}),await n.appendFile(s,Jt().push(fv(i)),"utf8"),i},async read(o={}){pv(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 DB,hg=g(()=>{"use strict";N();DB=24*60*60*1e3});var yg=g(()=>{"use strict";Wo()});var FB,jB,bg=g(()=>{"use strict";FB=15*6e4,jB=30*6e4});var wg=g(()=>{"use strict"});var hv,yv,UB,WB,_g=g(()=>{"use strict";hv=["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"],yv={pre_worktree:["cargo","gradle"]},UB=Object.values(yv).flat(),WB=new Set(hv)});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,bv),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 bv,Og=g(()=>{"use strict";bv="default"});var Ag=g(()=>{"use strict";Jo()});var Pg=g(()=>{"use strict"});var Ig=g(()=>{"use strict";gu();hu()});import{mkdir as wv,readFile as _v,rename as Rv,rm as kv,writeFile as Sv}from"node:fs/promises";import{dirname as Ev,join as xv}from"node:path";function Cv(e){if(!vv.test(e)||e==="."||e==="..")throw new Error(`invalid singleton name ${JSON.stringify(e)}`)}function Tv(e){try{return process.kill(e,0),!0}catch(t){return t.code!=="ESRCH"}}function Ov(e){return e.code==="ENOENT"}function Av(e){return e.code==="EEXIST"}function Pv(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 Cv(t),xv(e.castleStateRoot,"singletons",t,"lease.toon")}function Lg(e,t={}){let n=t.fs??{mkdir:wv,readFile:_v,rename:Rv,rm:kv,writeFile:Sv},r=t.clock??(()=>new Date().toISOString()),s=t.isPidAlive??Tv;async function o(a){try{return Pv(L(await n.readFile(a,"utf8")))}catch(c){if(Ov(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(Ev(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(!Av(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,vv,$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"}},vv=/^[a-z0-9][a-z0-9._-]{0,63}$/});var bu=g(()=>{"use strict"});var Dg=g(()=>{"use strict"});var Iv,Lv,$v,T1,Ng=g(()=>{"use strict";Iv={refreshCadenceS:270,tolerance:3},Lv=270,$v=2700,T1={...Iv,claimGraceS:Lv,recentCommitProtectionS:$v}});var Mg=g(()=>{"use strict"});function Bg(e){return e==="single-object"?"rest":"graphql"}function U(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,A1,jg=g(()=>{Fg=[U("issue view","single-object","rest","one issue by number; REST answers it in one request against the idle pool"),U("pr view","single-object","rest","one pull request by number, polled per Worker per iteration"),U("repo view","single-object","rest","one repository's own metadata"),U("run view","single-object","rest","one Actions run; the Actions API has no GraphQL surface either way"),U("release view","single-object","rest","one release by tag"),U("pr diff","single-object","rest","one pull request's diff, served by a REST media type"),U("issue list","multi-node","graphql","a connection of issues; one GraphQL query beats N REST pages"),U("pr list","multi-node","graphql","a connection of pull requests; one GraphQL query beats N REST pages"),U("pr checks","multi-node","graphql","every check context on one commit, which is a connection, not an object"),U("release list","multi-node","rest","Releases have no GraphQL connection gh reads; REST pages them","rest"),U("run list","multi-node","rest","the Actions API has no GraphQL surface, so a listing draws the request pool","rest"),U("label list","multi-node","graphql","a connection of labels inside one repository"),U("issue list (search)","multi-node","search","`--search` routes the listing through the search connection, metered 30/min"),U("pr list (search)","multi-node","search","`--search` routes the listing through the search connection, metered 30/min"),U("search issues","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),U("search prs","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),U("search repos","multi-repository","search","gh's `search` drives the REST search endpoints, metered 30/min","rest"),U("api graphql","multi-node","graphql","the caller wrote the query; `gh api graphql` is GraphQL by construction"),U("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")],A1=new Map(Fg.map(e=>[e.key,e]))});var Gg=g(()=>{});var Hg=g(()=>{});var Ug=g(()=>{});var Wg=g(()=>{jg();Gg();Hg();Ug()});import{execFile as Fv}from"node:child_process";import{promisify as jv}from"node:util";var EF,qg=g(()=>{"use strict";Wg();bu();EF=jv(Fv)});var Jg=g(()=>{"use strict";og();dg();fg();qo();mg();gg();hg();yg();Wo();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();qg()});import{EventEmitter as Gv}from"node:events";import{spawn as Hv}from"node:child_process";function Xo(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 Qo(e,t){return e.workflow_run!=null&&String(e.workflow_run.id)===t}var cs,wu,Uv,Wv,qv,Jv,Yo,_u=g(()=>{cs="github-webhook",wu="github.webhook.delivery";Uv="pull_request,pull_request_review,check_run,check_suite,workflow_run",Wv=3,qv=1e3,Jv=/no extension matched|unknown command|command not found/i,Yo=class extends Gv{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,qv).then(()=>{}),await this.stopping)}makeWakeSignalFor(n,r){return()=>{if(this._mode!=="webhook"||this._dead)return;let s=new AbortController,o=c=>{(n==="pr"?Xo(c,r):Qo(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=Hv(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");Jv.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>=Wv)return;let n=Math.min(500*Math.pow(2,this.restarts),5e3);this.restarts++,setTimeout(()=>this.spawnChild(),n).unref()}}});var Zo,Vg=g(()=>{"use strict";_u();_u();pt();Zo=class extends Yo{constructor(t){super(t,Ln)}}});import{EventEmitter as Vv}from"node:events";import{join as Kv}from"node:path";function ku(e){let t=so(e.cwd),n=Tg(Kv(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,Kg=g(()=>{"use strict";Jg();Vg();pt();ec();Ru=class extends Vv{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"?Xo(a,r):Qo(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 zg}from"node:crypto";import{mkdir as zv,rm as Yv}from"node:fs/promises";async function Xv(e,t=process.cwd()){let n;try{n=await rp(e)}catch(r){return await nC(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 Qa(n.kind)?await Qv({...n,kind:n.kind},t):(process.stdout.write(as()),2)}async function Qv(e,t){let n=e.kind,r=sc({id:zg(),kind:n,target:tC(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 zv(Dn(t),{recursive:!0}),await Nn(s,r);let l=await Zv(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 Yv(s,{force:!0}).catch(()=>{})}}async function Zv(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 eC(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 eC(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 tC(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 nC(e,t){let n=e.includes("--json")?"json":"toon",r=e.indexOf("--result-file"),s=r>=0?e[r+1]:void 0,o=Qa(e[1])?e[1]:"cmd",i=new Date().toISOString(),a=sc({id:zg(),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();Up();Zt();tc();sg();pt();Dr();cu();Kg();Dr();cu()});import{existsSync as aC}from"node:fs";import{join as cC}from"node:path";function uC(){for(let e of(process.env.PATH??"").split(":"))if(e&&aC(cC(e,"rsp")))return!0;return!1}function us(){return uC()?["rsp"]:[process.execPath,process.argv[1]]}var xu=g(()=>{"use strict"});var ei={};B(ei,{parseProxyCommandLine:()=>eh,rewriteProxyCommandLine:()=>Zg,runProxy:()=>fC});import{spawn as lC}from"node:child_process";function dC(e){return/[^\w@%+=:,./-]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}async function fC(e,t){let n="",r="",s=[],o=process.hrtime.bigint();try{if(n=eh(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Zg(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await pC(t.telemetryRoot,n,c),await Qg(n);throw c}for(let c of s)await mC(t.telemetryRoot,c);let i=await Qg(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 Zg(e,t="lossless",n=us()){let r=_C(e),s=[];return{commandLine:r.map((i,a)=>{if(i.kind==="operator"||wC(r,a)==="|")return i.text;let c=gC(i.text,t,n);return c?(s.push(c.match),c.text):i.text}).join(""),matches:s}}function eh(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 pC(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 mC(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 Qg(e){let t=lC(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 gC(e,t,n){let r=e.match(/^\s*/)?.[0]??"",s=e.match(/\s*$/)?.[0]??"",o=e.trim();if(!o)return null;let i=kC(o);if(!i)return null;let a=bC(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=hC(c);if(!l)return null;let f=i.slice(0,a).map(p=>p.raw),d=t==="lossless"?[]:[`--${t}`],m=[...f,...n.map(dC),...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 hC(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}:yC(t,n)}function yC(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 bC(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 wC(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function _C(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=RC(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 RC(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 kC(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();Ur();xu();Ge()});function rh(e,t={}){let n=SC(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=>OC(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)+CC(d.tokens,r,n.length)+TC(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 SC(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let o=s.index??e.length;t.push(th(r++,n,o,e.slice(n,o).replace(/\r$/,""))),n=o+1}return(n<e.length||e.length===0)&&t.push(th(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function th(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:EC(r),tokens:xC(r),numbers:vC(r),length:r.length}}function EC(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 xC(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function vC(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function CC(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 TC(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function Cu(e){let t=nh(e),n=nh(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 nh(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 OC(e,t,n,r){return e<r&&n<t}var sh=g(()=>{"use strict"});var Ou={};B(Ou,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>mt,GIT_LOG_MACHINE_FIELDS:()=>ih,StructuredUsageError:()=>ni,cleanStatusPayload:()=>lh,recoveryInstruction:()=>He,renderGitContract:()=>ah,runGitWrapper:()=>PC});import{spawn as AC}from"node:child_process";async function PC(e,t){let n=ch(e),r=uh(n.argv),s=await DC(r,n.argv.slice(1));return ah(e,s,t)}async function ah(e,t,n){let r=ch(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=uh(r.argv),o;try{o=NC(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(IC(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=e0(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)}
|
|
88
88
|
`;return{stdout:Buffer.from(`${C(a.payload)}
|
|
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
|
|
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
|
|
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
|
|
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=
|
|
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
|
|
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 ch(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 IC(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!LC(e)||r.level!=="lossless")return!0;let s=ZC(r.heavyGitByteThreshold,mt);return Buffer.byteLength(t)<=s}function LC(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function uh(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 $C(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${ih.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 DC(e,t){let n=AC("git",$C(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 NC(e,t,n,r){switch(e){case"status":return MC(t,n,r);case"log":return qC(t,n,r);case"diff":return JC(t,n,r);case"commit":return Tt(VC(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Tt(KC(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return zC(t,n,r);case"branch":return YC(t,n,r);case"show":return XC(t,n,r)}}function MC(e,t,n){let r="",s=[],o=!1,i=!1;for(let u of BC(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=GC(u),o=!0;continue}let l=FC(u);if(l){o=!0,s.push(l);continue}let f=jC(u);f&&(o=!0,s.push(f))}if(s.length===0){if(!i||o)return lh(e.join(" "),r);throw new ri("git-status-unparseable")}let a=ae(s,n),c=dh(a,"state");return Tt({command:e.join(" "),branch:r,rows:a,summary:WC(a.length,s.length,c,n)},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function BC(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function FC(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 jC(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?ls(HC(e.slice(3),t),t):null}function ls(e,t){let n=oh(t[0]??"."),r=oh(t[1]??".");return{path:UC(e),index:n,worktree:r,state:QC(`${n}${r}`)}}function oh(e){return e===" "?".":e}function GC(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function HC(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let n=e.lastIndexOf(" -> ");return n>=0?e.slice(n+4):e}function UC(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function WC(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 lh(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 qC(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 JC(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 VC(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 KC(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 zC(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=dh(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 YC(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 XC(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
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
|
|
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=
|
|
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 QC(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function dh(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function ZC(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function e0(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 ih,ni,ri,un=g(()=>{"use strict";V();N();je();wr();Ve();je();ih=["%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:()=>bh,NORMALIZE_ANSI:()=>oi,NORMALIZE_BLANK_LINES:()=>ci,NORMALIZE_CR_PROGRESS:()=>ii,NORMALIZE_JSON_TOON:()=>yh,NORMALIZE_TRAILING_WHITESPACE:()=>ai,crushJsonArrayItems:()=>ds,formatCodexNormalizeDecision:()=>Sh,formatNormalizeDecision:()=>kh,hookDecisionFromClaudePostExecJson:()=>wh,hookDecisionFromCodexPostExecJson:()=>_h,normalizeOutput:()=>ui,renderGenericJsonLane:()=>Pu,runClaudePostExecHook:()=>r0,runCodexPostExecHook:()=>s0,transcodeJsonToToon:()=>hh});import{readFileSync as si}from"node:fs";function hh(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=c0(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=gh(t.minTokens,t0),i=gh(t.maxItems,n0);if(!(s>i&&p0(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:m0(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=u0(e),s=new Set;r&&e.forEach((a,c)=>{Iu(a)!==r&&s.add(c)});let o=l0(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 bh)t=n.apply(t);return t}async function wh(e,t){return await Rh(e,t)}async function _h(e,t){return await Rh(e,t)}async function Rh(e,t){let n=a0(e),r=g0(n,["cwd"])||t.cwd;if(!await(t.isEnabled??i0)(r))return{kind:"passthrough",reason:"disabled"};let o=h0(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 kh(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Sh(e){return{stdout:"",status:0}}async function r0(e){let t=e?si(e,"utf8"):si(0,"utf8"),n=await wh(t,{cwd:process.cwd()}),r=kh(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function s0(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}function o0(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&&fh(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&fh(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function fh(e){return e>=32&&e<=63}function i0(e){return Fe(e,process.env).enabled}function a0(e){try{let t=JSON.parse(e);return Zn(t)?t:{}}catch{return{}}}function c0(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 u0(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}:${ph(e[t])}`).join("|"):ph(e)}function l0(e,t){let n=new Set,r=new Map;e.forEach((s,o)=>{if(!(t&&Iu(s)!==t))for(let[i,a]of Eh(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 d0(s))n.add(o);for(let o of f0(s))n.add(o)}return n}function d0(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=mh(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),o=mh(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 f0(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 Eh(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])=>Eh(r,t?`${t}.${n}`:n)):[]}function ph(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function mh(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 p0(e){return Math.ceil(e.length/4)}function gh(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function m0(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 g0(e,t){let n=e;for(let r of t){if(!Zn(n))return"";n=n[r]}return typeof n=="string"?n:""}function h0(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,yh,t0,n0,bh,fs=g(()=>{"use strict";N();je();oi={id:"ansi",apply:o0},ii={id:"cr-progress",apply:e=>e.split(`
|
|
97
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
98
|
`)},ai={id:"trailing-whitespace",apply:e=>e.split(`
|
|
99
99
|
`).map(t=>t.replace(/[ \t]+$/,"")).join(`
|
|
100
100
|
`)},ci={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
|
|
101
101
|
|
|
102
|
-
`)};
|
|
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
|
|
104
|
-
`,status:0}}async function
|
|
102
|
+
`)};yh={id:"json-to-toon",apply:e=>hh(e)},t0=200,n0=15;bh=[oi,ii,ai,ci,yh]});var gs={};B(gs,{parseExecCommandLine:()=>Ah,renderExecContract:()=>Oh,runExecWrapper:()=>R0});import{isUtf8 as y0}from"node:buffer";import{spawn as b0}from"node:child_process";async function R0(e,t){let n=Ah(e),r=await k0(n);return await Oh(n,r,t)}async function Oh(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=S0(r),i=o.kind==="text"?Buffer.from(o.text):r,a=U0(n.heavyByteThreshold,w0);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"?x0(o.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):v0(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 Ah(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 k0(e){let t=b0(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 S0(e){return y0(e)?{kind:"text",text:E0(e.toString("utf8"))}:{kind:"bytes"}}function E0(e){let t=e;for(let n of[oi,ii,ai,ci])t=n.apply(t);return t}function x0(e,t,n,r,s,o=N0,i=ds){let c=Math.max(1,Math.floor((r==="terse"?Th:_0)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=D0(e,c,l,o),d=C0(e),m=T0(d,e,u,c,l,f.kind==="ok"?f.lines:[],i),p=Ph(s,d,t,H0(u),n,m.summary),b=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Mh(f.error)}:m.degradation;return{text:Nh(p),degradation:b}}function v0(e,t,n,r){let s=Math.max(1,Math.floor(Th/2)),o={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Nh(Ph(r,"bytes",t,0,n,o))}}function Ph(e,t,n,r,s,o){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:o,recovery:{original:He(s)}}}function C0(e){let t=e.trim();return t?Lh(t)?"json":$h(e)?"jsonl":M0(e)?"unified-diff":Dh(e)?"tabular":B0(e)?"log-like":F0(e)?"prose":"untyped":"untyped"}function T0(e,t,n,r,s,o,i=ds){switch(e){case"json":return O0(t,i);case"jsonl":return{summary:A0(t)};case"unified-diff":return{summary:P0(t)};case"tabular":return{summary:I0(t)};case"log-like":return{summary:L0(t,o)};case"prose":return{summary:$0(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Ih(n,r,s,o)}}}function O0(e,t){let n=Lh(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:vh(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Mh(r)}}}return{summary:vh(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 vh(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Ot),item_keys:Du(e)}}function A0(e){let t=$h(e)??[],n=j0(t,"level");return{records:t.length,keys:Du(t),levels:n,first:Ot(t[0]),last:Ot(t.at(-1))}}function P0(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 I0(e){let t=Dh(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Ih(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function L0(e,t){let n=ps(e);return{entries:n.length,levels:G0(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 $0(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 Ih(e,t,n,r){let s=Ch(e.subarray(0,t)),o=Ch(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 D0(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function N0(e,t){return rh(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Lh(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 $h(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 M0(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 Dh(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 B0(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 F0(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 j0(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 G0(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<=xh?t:`${t.slice(0,xh-1)}\u2026`}function Nh(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 Mh(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 Ch(e){return e.toString("utf8").replace(/�$/g,"")}function H0(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 U0(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var w0,_0,Th,xh,hs=g(()=>{"use strict";V();N();sh();un();fs();Ve();w0=8*1024,_0=2*1024,Th=1024,xh=240});var wi={};B(wi,{RSP_WRAPPER_CAPABILITIES:()=>ws,_testOnlyResetBinaryState:()=>eT,formatCodexHookDecision:()=>Yh,formatHookDecision:()=>zh,hookDecisionFromClaudePreExecJson:()=>iT,hookDecisionFromCodexPreExecJson:()=>aT,rewriteCommand:()=>Vh,rewriteTableFromCapabilities:()=>Jh,runClaudePreExecHook:()=>cT,runCodexPreExecHook:()=>uT});import{accessSync as Y0,constants as X0,existsSync as Q0,readFileSync as yi}from"node:fs";import{fileURLToPath as Z0}from"node:url";function eT(){hi=void 0,Nu=!1}function tT(){let e=(process.env.PATH??"").split(":");for(let t of e)if(t)try{return Y0(`${t}/rsp`,X0.X_OK),!0}catch{}return!1}function nT(e){return hi===void 0&&(hi=e()),hi}function rT(){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 Jh(e){let t=new Map;for(let n of e)t.set(CT(n.command),["rsp",...n.wrapper]);return t}function Vh(e,t=us()){let n=bT(e);if(n)return n;let r=hT(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=oT(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=>yT(s,u.command));if(!i)return gi(e,t);let a=[...t,...i.wrapper,...s.slice(i.command.length)],c=ty(r.redirectSuffix);return{kind:"rewrite",command:[...a.map(At),...c].join(" "),capabilityId:i.id}}function oT(e,t){let n=e.tokens.map(i=>i.text),r=n[0],s=ty(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 iT(e,t){return await Kh(e,t)}async function aT(e,t){return await Kh(e,t)}async function Kh(e,t){return(await Bu(e,t,"pre-exec")).decision}async function Bu(e,t,n){let r=oy(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=Ue(s,["cwd"])||Ue(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??lT)(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(!nT(t.resolveBinary??tT)){rT();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?wT(a,f):(t.rewrite??(p=>Vh(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 fT(o,t.wakeResident??dT),{decision:d,telemetryRoot:o,event:er({hook:n,command:a,decision:d,reason:d.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:m})}}function zh(e){return e.kind==="rewrite"?Xh(e.command):{stdout:"",status:0}}function Yh(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 cT(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;Zh("claude-pre-exec",r);let s=zh(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),Qh("claude-pre-exec",t,n)),ey("claude-pre-exec",n),0}}async function uT(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;Zh("codex-pre-exec",r);let s=Yh(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return bi(process.cwd(),Qh("codex-pre-exec",t,n)),ey("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 Qh(e,t,n){let r=oy(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 lT(e){return Fe(e,process.env).enabled}async function dT(e){let t=Fe(e,process.env);if(!t.enabled||!gT(t))return;let n=ze(e);await Ys(n,mT(t))}async function fT(e,t){try{await Promise.resolve(t(e))}catch(n){pT(n)}}function Zh(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
|
|
105
105
|
`);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
|
|
106
|
-
`)}}function
|
|
107
|
-
`)}function
|
|
108
|
-
`)}function Fu(e){return e instanceof Error?e.name||"Error":typeof e}function
|
|
109
|
-
`)}function
|
|
106
|
+
`)}}function ey(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Fu(t)}
|
|
107
|
+
`)}function pT(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 mT(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 gT(e){if(!e.storeUri.startsWith("file://"))return!0;try{return Q0(Z0(e.storeUri))}catch{return!1}}function Mu(e){return Ue(e,["tool_input","command"])||Ue(e,["tool_input","cmd"])||Ue(e,["tool_input","args","command"])||Ue(e,["input","command"])||Ue(e,["input","cmd"])||Ue(e,["arguments","command"])||Ue(e,["arguments","cmd"])||Ue(e,["command"])||Ue(e,["cmd"])}function hT(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 yT(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function bT(e){let t=ju(e.trim()).map(n=>n.text);return nn(t)?{kind:"passthrough",reason:sT}:null}function ty(e){return e.map(t=>t.text)}function At(e){return/[^\w@%+=:,./-]/.test(e)?Gu(e):e}function wT(e,t){let n=RT(e);return n?{kind:"passthrough",reason:n}:{kind:"rewrite",command:`${t.map(At).join(" ")} proxy -- ${Gu(e.trim())}`,capabilityId:"proxy:universal"}}function _T(e){if(!process.argv[1])return!1;let t=ju(e);return t[0]?.text===process.execPath&&t[1]?.text===process.argv[1]}function RT(e){let t=e.trim();if(!t)return"missing-command";if(ry(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"||_T(t))return"opt-out";if(n&&ny.has(n))return"interactive"}function gi(e,t){let n=e.trim();return kT(n)?{kind:"rewrite",command:`${t.map(At).join(" ")} exec -- ${Gu(n)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function kT(e){return!(!e||!ST(e)||!ET(e)||ry(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||xT(e,"rsp")||sy(e,ny)||vT(e))}function ST(e){return/&&|[;|]/.test(e)}function ry(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 ET(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 sy(e,t){return Gr(e).some(n=>{let r=Hr(n)[0];return r?t.has(r):!1})}function xT(e,t){return sy(e,new Set([t]))}function vT(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 CT(e){return e.join("\0")}function oy(e){try{let t=JSON.parse(e);return iy(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Ue(e,t){let n=e;for(let r of t){if(!iy(n))return"";n=n[r]}return typeof n=="string"?n:""}function iy(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var hi,Nu,ws,jG,sT,ny,_s=g(()=>{"use strict";Ur();je();Ye();Qt();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"]}],jG=Jh(ws),sT="lossless-gh-json-jq";ny=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var py={};B(py,{fastTelemetryRoot:()=>Uu,isFastGitStatus:()=>_i,runFastGitStatus:()=>Ri});import{spawnSync as dy}from"node:child_process";import{existsSync as fy,readdirSync as NT}from"node:fs";function _i(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Ri(){if(MT(process.cwd()))return{stdout:Hu(),stderr:Buffer.alloc(0),status:0,signal:null};if(dy("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Hu(),stderr:Buffer.alloc(0),status:0,signal:null};let t=dy("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 Uu(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ye(),Xt));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 MT(e){try{return!fy(`${e}/.git`)||fy(`${e}/.git/index`)?!1:NT(e).every(t=>t===".git")}catch{return!1}}var Wu=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 hy(e,t,n,r={}){eO(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=tO(["id","number",...n]).map(d=>nO(ZT[d],6)).join(`
|
|
110
110
|
`),u=o.map(({alias:d,number:m})=>[` ${d}: ${e}(number: ${m}) {`,c," }"].join(`
|
|
111
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
|
|
113
|
-
`)}}function
|
|
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,
|
|
112
|
+
`);return{kind:e,query:f,aliases:o,labelAliases:i}}function yy(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(_y(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:Ry(u?.message)||"not found"}})}function by(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: ${gy(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: ${gy(n)}, clientMutationId: ${It(String(o.number))} }) { clientMutationId }`)}}),{aliases:r,query:["mutation RspEditLabels {",...s,"}"].join(`
|
|
113
|
+
`)}}function wy(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,Ry(i.message)||"mutation failed")}return s}function eO(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 tO(e){return[...new Set(e)]}function nO(e,t){let n=" ".repeat(t);return e.split(`
|
|
115
115
|
`).map(r=>`${n}${r}`).join(`
|
|
116
|
-
`)}function It(e){return JSON.stringify(e)}function
|
|
117
|
-
`),subIssues:"subIssues(first: 100) { nodes { number } }"}});import{spawn as
|
|
118
|
-
`))}async function
|
|
119
|
-
`),stderr:Buffer.from(n),status:t,signal:null,payload:e}}function
|
|
116
|
+
`)}function It(e){return JSON.stringify(e)}function gy(e){return`[${e.map(It).join(", ")}]`}function tr(e){return _y(e)?e:{}}function _y(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ry(e){return typeof e=="string"?e:""}var ZT,ky=g(()=>{ZT={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 sO,spawnSync as oO}from"node:child_process";function Ku(e){return e[0]==="gh"&&["issues","prs","edit-labels","link-sub-issues"].includes(e[1]??"")}async function xy(e,t={}){let n=wO(e),r=n.repo??t.repo??process.env.GH_REPO??RO();if(!r||!r.includes("/"))return Xu(e,"repository is required; pass --repo owner/repo");let s=t.exec??kO,o=Math.max(1,Math.floor(t.restConcurrency??Ey));return n.verb==="issues"||n.verb==="prs"?await cO(n,r,s,o,e):n.verb==="edit-labels"?await lO(n,r,s,o,e):await fO(n,r,s,o,e)}async function cO(e,t,n,r,s){let o=e.verb==="issues"?"issue":"pullRequest",i=vy(e),a=[],c=[];for(let l of Yu(e.numbers,100)){let f=hy(o,l,i.query),d=await zu(n,t,f.query);if(Zu(d))return await uO(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(...yy(f,Lt(d.stdout)).map(m=>({number:m.number,value:m.error?{error:m.error}:mO(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 uO(e,t,n,r,s){let o=vy(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(Cy)){let d=W(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:hO(tt(Lt(m.stdout)),tt(Lt(p.stdout)))}}return{number:u,value:gO(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 lO(e,t,n,r,s){if(e.add.length===0&&e.remove.length===0)return Xu(s,"pass --add and/or --remove");let o=[...new Set([...e.add,...e.remove])],[i,a]=await Promise.all([Ty(e.numbers,t,n,r),nr(o,r,async d=>{let m=await n(["api",`repos/${t}/labels/${encodeURIComponent(d)}`]);return{name:d,nodeId:W(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,Qu(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=by(d,e.add.map(_=>c.get(_)),e.remove.map(_=>c.get(_))),p=await zu(n,t,m.query);if(Zu(p))return await dO(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,Oy(e.numbers,l),"graphql")}async function dO(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 fO(e,t,n,r,s){if(e.numbers.length<2)return Xu(s,"pass a parent and at least one child issue");let[o,...i]=e.numbers,a=await Ty(e.numbers,t,n,r),c=a[0],u=c?.nodeId;if(!u)return sr(s,i,Qu(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=wy({number:o,nodeId:u},d),p=await zu(n,t,m.query);if(Zu(p))return await pO(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,Oy(i,l),"graphql")}async function pO(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??Ey}:{},order:[...t],issues:n,summary:`${t.length-o}/${t.length} mutated`})}function vy(e){if(e.verb==="issues"){let n=e.fields.length>0?e.fields:["title","state","labels","body"];return Sy(n,iO),{output:n,query:n}}let t=e.fields.length>0?e.fields:["title","state","mergeable","checks"];return Sy(t,aO),{output:t,query:t.map(n=>["checkRollup","statusCheckRollup"].includes(n)?"checks":n)}}function Sy(e,t){let n=e.find(r=>!t.has(r));if(n)throw new Error(`unknown GitHub batch field: ${n}`)}function mO(e,t,n){let r={};for(let s of n)s==="labels"?r.labels=Ju(t.labels).map(o=>W(o.name)).filter(Boolean):["checks","checkRollup","statusCheckRollup"].includes(s)?r[s]=bO(t.commits):s==="state"||s==="mergeable"?r[s]=W(t[s]).toLowerCase():s!=="id"&&s!=="subIssues"&&(r[s]=Ay(t[s]));return"number"in r||(r.number=el(t.number)),r}function gO(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=>W(i.name)).filter(Boolean)}else if(Cy(s))r[s]=tt(t.restCheckRollup);else if(s==="state")r.state=W(t.state).toLowerCase();else if(s==="mergeable"){let o=t.mergeable;r.mergeable=typeof o=="boolean"?o?"mergeable":"conflicting":"unknown"}else r[s]=Ay(t[s]);return"number"in r||(r.number=el(t.number)),r}function hO(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:W(o.name),state:(W(o.conclusion)||W(o.status)).toLowerCase()})),...r.map(o=>({name:W(o.context),state:W(o.state).toLowerCase()}))];return{state:W(t.state).toLowerCase()||yO(s.map(o=>o.state)),contexts:s}}function yO(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 Cy(e){return["checks","checkRollup","statusCheckRollup"].includes(e)}function bO(e){let t=Ju(e).at(-1),n=tt(tt(t?.commit).statusCheckRollup);return{state:W(n.state).toLowerCase(),contexts:Ju(n.contexts).map(r=>({name:W(r.name)||W(r.context),state:(W(r.conclusion)||W(r.status)||W(r.state)).toLowerCase()}))}}async function zu(e,t,n){let[r,s]=_O(t);return await e(["api","graphql","-f",`query=${n}`,"-F",`owner=${r}`,"-F",`repo=${s}`])}async function Ty(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=W(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 wO(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 Xu(e,t){return Si({command:Ei(e),category:"usage",error:t,help:"rsp gh --help",exit_code:2},2)}function Qu(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 Oy(e,t){return Qu(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
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
|
|
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 Ay(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 _O(e){let t=e.indexOf("/");return[e.slice(0,t),e.slice(t+1)]}function Ei(e){return`rsp ${e.join(" ")}`}function RO(){let e=oO("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 kO(e){let t=sO("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 W(e){return typeof e=="string"?e:""}var Ey,iO,aO,Py=g(()=>{"use strict";V();N();ky();Ey=4,iO=new Set(["number","title","state","labels","body"]),aO=new Set(["number","title","state","mergeable","checks","checkRollup","statusCheckRollup","body"])});var cl={};B(cl,{renderGhContract:()=>My,runGhWrapper:()=>TO});import{spawn as SO}from"node:child_process";async function TO(e,t){if(Ku(e))return await xy(e);let n=By(e),r=await AO(n);return My(e,r,t)}async function My(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=By(e),s=ks(t.stdout),o=BO(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=JO(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=VO(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)}
|
|
122
122
|
`;return{stdout:Buffer.from(`${C(u.payload)}
|
|
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
|
|
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 By(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=Ly(l[++m]??""):p.startsWith("--fields=")?u=Ly(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 OO(d),d}function Iy(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?xO[t]:EO[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function Ly(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function OO(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=CO[t];for(let r of e.fields)if(!n.includes(r))throw new xi(e,`unknown field: ${r}`,n)}async function AO(e){if(e.action==="combined")return await PO(e);let t=IO(e);if(!t)return await MO(Iy(e));let n=await me({...t,command:["gh",...Iy(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await LO(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function PO(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=jy(ks(n.stdout));return{stdout:JSON.stringify({view:i,checks:[],comments:{comments:be(ks(s.stdout)).map(DO)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function IO(e){let t=Gy(e.passthrough),n=NO(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 LO(e,t){let n=ks(t);switch(`${e.kind}:${e.action}`){case"pr:list":return be(n).map(Fy);case"pr:view":return jy(n);case"issue:list":return be(n).filter(r=>!pn(r.pull_request)).map($y);case"issue:view":return $y(n);case"run:list":return{items:be(j(n).workflow_runs).map(Dy),total:he(j(n),"total_count")};case"run:view":{let r=Dy(n),s=Gy(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($O):[]}}default:return n}}function Fy(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 jy(e){return Fy(e)}function $y(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 Dy(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 $O(e){let t=j(e);return{name:x(t,"name"),status:x(t,"status").toUpperCase(),conclusion:x(t,"conclusion").toUpperCase(),log:""}}function DO(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 Gy(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 NO(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 MO(e){let t=SO("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 BO(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=>Hy(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)} ${Ny(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 FO(e,t,j(n));case"issue:list":{let s=tl(n,"issues"),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,"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)} ${Ny(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return ir({...r,issue:WO(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=>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,"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:qO(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 FO(e,t,n){let r=Uy(j(n.view),{...e,action:"view",wide:!0}),s=ae(be(n.checks).map(jO),e.query),o=j(n.comments).comments,i=ae(be(o).map(GO).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 jO(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 GO(e){return{author:Vy(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:HO(t),[n]:[],aggregate:r,summary:`0 ${UO(t)}`},s)}function HO(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 Hy(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=Hy(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 Wy(e,t){let n={number:he(e,"number"),title:x(e,"title"),state:Ss(e),labels:Jy(e.labels)};return al(n,e,t,["author","url","updated"]),n}function WO(e,t){let n=Wy(e,t);return n.body=vi(e,"body",ol,t.full),n}function qy(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 qO(e,t){let n=qy(e,t),r=be(e.jobs).map(s=>({name:x(s,"name"),status:Ss(s),conclusion:x(s,"conclusion"),log:vi(s,"log",vO,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 JO(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 VO(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 Ny(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=Vy(t.author):s==="labels"?e.labels=Jy(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 Jy(e){return Array.isArray(e)?e.map(t=>pn(t)?x(t,"name"):String(t)).filter(Boolean):[]}function Vy(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 EO,xO,ol,vO,CO,xi,ul=g(()=>{"use strict";V();N();Uo();Py();un();wr();Ve();EO={"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"]},xO={"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,vO=160,CO={"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:()=>Ky,runTestWrapper:()=>QO});import{spawn as KO}from"node:child_process";async function QO(e,t){let n=br(e),r=await rA(n.argv);return await Ky(e,r,t)}async function Ky(e,t,n){let r=br(e),o=zy(r.argv)==="vitest"?sA(t.stdout):oA(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 ${cA(o.durationSeconds)}`,c=ae(o.failures,r.query);if(n.level==="terse")return await ZO(r.argv,t,{...o,failures:c},i,a,n,r.query);let u=[],l,f=0;for(let p of c){let b=await iA(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 ZO(e,t,n,r,s,o,i){let a=eA(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 eA(e){let t=[],n=YO;for(let r of e.slice(0,XO)){let s=tA(r.excerpt,Math.min(zO,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function tA(e,t){if(t<=0)return"";let n=e.split(`
|
|
125
125
|
`),r=n.length<=2?e:`${n[0]}
|
|
126
126
|
\u2026
|
|
127
|
-
${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function
|
|
128
|
-
`).filter(Boolean).map(c=>
|
|
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
|
|
130
|
-
\u2026 elided ${i} bytes (+${r.length}) \u2014 ${He(s)}`,handle:s,bytesElided:r.length}}function
|
|
131
|
-
`):""}function
|
|
132
|
-
`),status:1,signal:null}}return
|
|
133
|
-
`;if(!i&&Buffer.byteLength(c)<=
|
|
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
|
|
127
|
+
${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function zy(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 nA(e){if(zy(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 rA(e){let t=nA(e),n=KO(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 sA(e){let t=Yy(e);if(!$t(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Dt(t.numTotalTests),o=Dt(t.numFailedTests),i=uA(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:aA(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 oA(e){let t=e.split(`
|
|
128
|
+
`).filter(Boolean).map(c=>Yy(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 iA(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 Yy(e){try{return JSON.parse(e)}catch{return null}}function aA(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
|
|
131
|
+
`):""}function cA(e){return`${Number(e.toFixed(1))}s`}function uA(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,zO,YO,XO,pl=g(()=>{"use strict";V();N();un();wr();Ve();ll=320,zO=160,YO=ll,XO=3});var hl={};B(hl,{parseCatCommand:()=>gl,renderCatContract:()=>yA,runCatWrapper:()=>hA});import{isUtf8 as lA}from"node:buffer";import{readFile as dA}from"node:fs/promises";import{extname as fA}from"node:path";async function hA(e,t){let n=gl(e),r;try{r=await dA(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 nb(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await tb(e,n,r,t)}async function yA(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 nb(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await tb(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=eb(t[++i],ml);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=eb(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 tb(e,t,n,r){let s=n.toString("utf8"),o=_A(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>Zy(r.heavyByteThreshold,Xy)||o.truncated;if(!Qy(t.file)&&!i)return{stdout:Buffer.from(o.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=Qy(t.file)?bA(e,t.file,n,s,r.level,o):wA(e,t.file,n,s,o),c=`${C(a)}
|
|
133
|
+
`;if(!i&&Buffer.byteLength(c)<=Zy(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 bA(e,t,n,r,s,o){let i=Ci(r),a=s==="terse"?mA:pA,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:RA(i),content:{head:u,tail:l,truncated:o.truncated||u.length+l.length<i.length}}}function wA(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 _A(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
|
|
135
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
136
|
`)}${r&&i.length>0?`
|
|
137
|
-
`:""}`,truncated:i.length<s.length}}function
|
|
138
|
-
`);return t.at(-1)===""?t.slice(0,-1):t}function
|
|
139
|
-
`),s=
|
|
137
|
+
`:""}`,truncated:i.length<s.length}}function RA(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&&!kA(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 nb(e){return e.includes(0)||!lA(e)}function Qy(e){return gA.has(fA(e).toLowerCase())}function kA(e){return["for","if","switch","while"].includes(e)}function Zy(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function eb(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var Xy,ml,pA,mA,gA,yl=g(()=>{"use strict";N();un();Ve();Xy=8*1024,ml=10,pA=8,mA=2,gA=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var lb={};B(lb,{REPO_STORE_PATH:()=>_l,mergeRspBlock:()=>ab,provisionRspRepoStore:()=>IA});import{constants as SA}from"node:fs";import{access as EA,copyFile as xA,mkdir as sb,readFile as vA,rename as CA,writeFile as ob}from"node:fs/promises";import{dirname as TA,join as Es,resolve as OA}from"node:path";async function IA(e,t={}){let n=OA(e),r=Es(n,".red"),s=Es(r,"config.yaml"),o=Es(n,_l);await sb(r,{recursive:!0}),await sb(TA(o),{recursive:!0});let i="";try{i=await vA(s,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=ab(i,{enabled:!0,ttlDays:t.ttlDays??Ne,ephemeralTtlHours:t.ephemeralTtlHours??Me,byteBudget:t.byteBudget??Be,heavyGitByteThreshold:t.heavyGitByteThreshold??mt}),c=a!==i;c&&await ob(s,a,"utf8");let u=!await wl(o),l=!1,f=!1;if(u){let m=Es(n,AA),p=Es(n,PA);if(await wl(m))await CA(m,o),f=!0;else if(await wl(p))await xA(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=LA(a,_l);return d!==a&&await ob(s,d,"utf8"),{configPath:s,storePath:o,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function ab(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=cb(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
|
|
140
140
|
`)}
|
|
141
141
|
`}let o=Rl(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(o)].join(`
|
|
142
142
|
`)}
|
|
143
|
-
`}function
|
|
144
|
-
`),r=
|
|
143
|
+
`}function cb(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Sl(r)&&kl(r)===0&&ub(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 ub(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Ti(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function LA(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
144
|
+
`),r=cb(n,"plugins");if(r===-1)return e;let s=Rl(n,r,0),o=ib(n,"memory",r+1,s,2);if(o===-1)return e;let i=Rl(n,o,2),a=[...n],c=ib(a,"storePath",o+1,i,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(i,0,` storePath: ${t}`),`${a.join(`
|
|
145
145
|
`)}
|
|
146
|
-
`}function
|
|
147
|
-
`}function
|
|
146
|
+
`}function ib(e,t,n,r,s){for(let o=n;o<r;o++){let i=e[o];if(Sl(i)&&kl(i)===s&&ub(i)===t)return o}return-1}async function wl(e){try{return await EA(e,SA.F_OK),!0}catch{return!1}}var _l,AA,PA,db=g(()=>{"use strict";Re();je();_l=mc,AA=Wd,PA=".red/memory/graph.rdb"});var yb={};B(yb,{runRspMcpServer:()=>DA});import{createInterface as $A}from"node:readline";async function DA(){let e=Fe(process.cwd(),process.env),t=$A({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 NA(r,e);mb({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){mb({jsonrpc:"2.0",id:typeof gb(n)?.id>"u"?null:gb(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function NA(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:pb(t)}]};if(!t.enabled)return{content:[{type:"text",text:pb(t)}],isError:!0};let r=WA(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(MA(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await BA(n.arguments,r)}]}}return{}}function mn(e){return`${J(e)}
|
|
147
|
+
`}function MA(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function BA(e,t){let n=jA(e?.payload);try{return await FA(n,e,t)}catch(r){if(process.env.RSP_DEBUG==="1")throw r;return hb(n)}}async function FA(e,t,n){let r=GA(t?.level),s=await Pu(e,{level:r,command:"rsp mcp compress",store:n});if(s.detected)return hb(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 HA(o,i.length,a,r)}function jA(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function GA(e){return e==="terse"?"terse":"brief"}function HA(e,t,n,r){let s=r==="terse"?1024:2048,o=Buffer.from(e),i=Math.max(1,Math.floor(s/2)),a=fb(o.subarray(0,i)),c=fb(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 hb(e){return e.endsWith(`
|
|
148
148
|
`)?e:`${e}
|
|
149
|
-
`}function
|
|
150
|
-
`)}function
|
|
151
|
-
`)}function
|
|
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
|
|
154
|
-
`,{encoding:"utf8",mode:384}),await
|
|
155
|
-
`)}}async function
|
|
149
|
+
`}function fb(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 WA(e){return Ga(process.cwd(),e)}function pb(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 mb(e){process.stdout.write(`${JSON.stringify(e)}
|
|
150
|
+
`)}function gb(e){try{return JSON.parse(e)}catch{return null}}var bb=g(()=>{"use strict";ct();je();V();fs();Qt()});var _b={};B(_b,{renderShellInit:()=>qA});function qA(e,t=ws){if(e==="fish")return JA(t);if(e==="bash"||e==="zsh")return VA(e,t);throw new Error(`unsupported shell: ${e}`)}function JA(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 VA(e,t){let n=zA(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=>wb(i)).join("|");s.push(` ${o}) command rsp ${e} "$@" ;;`)}for(let[o,i]of KA(r)){let a=i.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${YA(u)}' ]`).join(" && ")).join(" || ");s.push(` ${wb(o)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function KA(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 zA(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 wb(e){return e.replace(/[\\|)&;]/g,"\\$&")}function YA(e){return e.replace(/'/g,"'\\''")}function XA(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Rb=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"&&QA(t.chosenOption)&&ZA(t.outcome)&&eP(t.cost)}function QA(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function ZA(e){return e==="success"||e==="failure"||e==="escalated"}function eP(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 kb=g(()=>{});import{createHash as tP}from"node:crypto";function $b(e,t){return new vl(e,t)}function Sb(e){let t=Number(e.red_entity_id??e.rid),n=Cl(e.properties??e.PROPERTIES),r=Db(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 Eb(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=Nb(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 sP(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 Db(e){let t=e==="contact"?"person":e;if(nP.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Nb(e){if(rP.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function oP(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function xb(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 vb(e,t){return hn(e)[t]}function Cb(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Tb(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Ob(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 iP(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function aP(e){return tP("sha256").update(JSON.stringify(e)).digest("hex")}function cP(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Ab(e){return`artifact-hash:${e}`}function Pb(e,t,n){return`connection:${e}:${t}:${n}`}function Ib(){return"model-tier-bandit:v1"}function uP(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Lb(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Mb(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+Lb(n,a)*3+Lb(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 lP(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=Bb({...Mb(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return gn(s)}function Bb(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 dP(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 fP(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 pP(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var st,nP,rP,vl,Fb=g(()=>{"use strict";kb();st={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},nP=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),rP=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(vb(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=hn(n);return await this.search(Cb(r,"query"),Tb(r,"limit")??10,Ob(r.options))}if(t==="think"){let r=hn(n);return await this.think(Cb(r,"query"),Tb(r,"limit")??8,Ob(r.options))}if(t==="link")return await this.link(hn(n));if(t==="backlinks")return await this.backlinks(vb(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:pP(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=Db(ye(t.kind)||"note"),o=iP(Array.isArray(t.tags)?t.tags.map(String):[]),i=Date.now(),a=aP([s,n,r,o,ye(t.sourcePath),ye(t.sourceSession)]),c=await this.kv().get(Ab(a));if(c!=null){let p=await this.getArtifact(Number(c));if(p)return p}let u=`${cP(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=Sb(d);if(!m)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Ab(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(Sb).filter(xl)}async search(t,n,r={}){let s=uP(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=Mb(u,s),f=Bb({...l,connections:lP(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:dP(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 fP(t,s)}async link(t){let n=await this.getArtifact(xb(t.from)),r=await this.getArtifact(xb(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=Nb(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=Eb(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Pb(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(Eb).filter(xl)}async eventKpis(t){let n=(await this.listArtifacts()).filter(o=>o.kind==="event"),r=oP(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(sP).filter(xl).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Ib());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Ib(),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(Pb(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(st.kv)}}});var Xb={};B(Xb,{runResidentServer:()=>RP});import{randomUUID as ar}from"node:crypto";import{execFileSync as mP,spawn as gP}from"node:child_process";import{existsSync as hP}from"node:fs";import{mkdir as Jb,rename as yP,rm as jb,writeFile as Vb}from"node:fs/promises";import{createServer as bP}from"node:net";import{dirname as Pl,join as Ii}from"node:path";import{fileURLToPath as wP,pathToFileURL as _P}from"node:url";async function RP(e){await Jb(Pl(e.socketPath),{recursive:!0});let t=$P();LP();let n=e.telemetryDrainTimeoutMs??Kb,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=bP(k=>{l.add(k),k.once("close",()=>l.delete(k)),p(),GP(k,async(T,M)=>{p();let Te=await HP(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=IP(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 Vb(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 Xs(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 jb(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 jb(e.pidPath,{force:!0}),await Qs(y)}async function CP(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),xP),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 Jb(Pl(a),{recursive:!0}),await Vb(c,`${J(u)}
|
|
154
|
+
`,{encoding:"utf8",mode:384}),await yP(c,a)}async function Tl(e,t=Kb,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Yb(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 TP(e){let t=[];for(let n of vP){let r=await OP(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await AP(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${zb(n)}`))}return t}async function OP(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 AP(e,t,n){let r=PP(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${zb(t)}`)}function PP(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 zb(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function IP(e){return e&&clearTimeout(e),setTimeout(()=>{Li(),process.exit(0)},EP)}function LP(){Gb||(Gb=!0,process.on("exit",()=>Li()))}function $P(){if(process.platform==="win32")return;let t=gP(process.execPath,["-e",`
|
|
156
156
|
const { execFileSync } = require("node:child_process");
|
|
157
157
|
const parentPid = Number(process.argv[1]);
|
|
158
158
|
const known = new Set();
|
|
@@ -193,23 +193,23 @@ const timer = setInterval(() => {
|
|
|
193
193
|
clearInterval(timer);
|
|
194
194
|
process.exit(0);
|
|
195
195
|
}, 500);
|
|
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
|
|
198
|
-
`}function
|
|
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
|
|
200
|
-
`)}function
|
|
201
|
-
`}async function
|
|
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
|
|
203
|
-
`);let s=await
|
|
204
|
-
`),await
|
|
205
|
-
`),r(127)}),n.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}async function
|
|
196
|
+
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Li(){for(let e of DP())try{process.kill(e,"SIGTERM")}catch{}}function DP(){if(process.platform==="win32")return[];let e="";try{e=mP("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 NP(e){if(e.collection!==Se)return e;let t=await Hb(e.raw_text,Wb(e.raw_bytes)),n=await Hb(e.emitted_text,Wb(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 Hb(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=kP)try{return await Yb((async()=>({tokens:(await MP())("cl100k_base").encode(e).length,estimated:!1}))(),SP,"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 MP(){return Ub??=import(_P(BP()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Ub}function BP(){let e=Pl(wP(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=>hP(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Wb(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 Yb(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 FP(e){try{return JSON.parse(e)}catch{return e}}function jP(e){return qb(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>qb(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 qb(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function GP(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 HP(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 WP(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 $b(s,t).request(n,r)}function WP(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var kP,SP,Kb,EP,xP,vP,Al,Gb,Ub,Qb=g(()=>{"use strict";Re();Zs();Js();ct();Go();Fb();Ge();je();kP=256*1024,SP=500,Kb=2e3,EP=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),xP="rsp-status-summary.json",vP=[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 TP(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=Wn(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 CP(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 NP(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"?FP(n):n;return jP(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})}};Gb=!1});ji();Ve();var Ad={"store-uri":{kind:"value",coerce:e=>e},brief:{kind:"boolean"},terse:{kind:"boolean"},query:{kind:"value",coerce:e=>e}},D_={json:{kind:"boolean"}},N_={help:{kind:"boolean",aliases:["h"]}},M_={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,B_);return t==="--version"?{kind:"version",json:lr(n,D_).values.json===!0}:F_(e)?{kind:"help"}:{kind:"command"}}var B_={commands:{"--version":{aliases:["-v"]},run:{}},default:"run",keepArgvOnDefault:!0};function F_(e){return Gt(e,N_).values.help===!0}function Id(e){let{values:t,rest:n}=G_(e),r=n[0];if(r!==void 0&&r!=="--"&&r.startsWith("--"))throw Ds.unknownFlag(r);let s=Fi(n,M_).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:j_})}},j_=Object.keys(Ad).map(e=>`--${e}`);function G_(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 H_={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,H_).values}var Dd={since:{kind:"value",coerce:W_},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 W_(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 qP}from"node:fs";import{fileURLToPath as JP}from"node:url";ct();wr();V();Ye();import{existsSync as rC}from"node:fs";import{fileURLToPath as sC}from"node:url";ct();ja();V();import{existsSync as fk}from"node:fs";import{fileURLToPath as pk}from"node:url";async function Pn(e,t){let n={stats:mk(e.telemetryByteBudget),telemetry:qa(t)};if(!e.storeUri.startsWith("file://"))return n;let r=pk(e.storeUri);if(!fk(r))return n;let{residentElisionStore:s}=await Promise.resolve().then(()=>(Qt(),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=Wf()){return`${J(Va(e,t,n,r))}
|
|
197
|
+
`}function Uf(e,t){return`${J({...e,overhead:qf(t)})}
|
|
198
|
+
`}function Wf(){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=Wf()){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:gk(t.savings),dollars_saved_estimate_usd_display:hk(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:Wa(t.health.degradation_rate),show_hit_rate_display:Wa(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:Wa(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:Ua(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:Ua(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:Ua(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 mk(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 gk(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 hk(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 Ua(e){return e==null?"none":String(e)}function Wa(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}async function Yg(e){let{stats:t,telemetry:n}=await Pn(e,30),[r,s]=await Promise.all([oC(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},iC(e));return`${J(n)}
|
|
201
|
+
`}async function oC(e){if(!e.storeUri.startsWith("file://"))return[];let t=sC(e.storeUri);if(!rC(t))return[];let{residentElisionStore:n}=await Promise.resolve().then(()=>(Qt(),Or)),r=n(process.cwd(),e);try{return await r.recoveryHandles(5)}catch{return[]}finally{await r.close()}}function iC(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 TT}from"node:fs";import{fileURLToPath as OT}from"node:url";Ge();import{spawn as li}from"node:child_process";async function Fh(e,t,n){let r=process.hrtime.bigint(),s=await jh(e.positional),o=Number(process.hrtime.bigint()-r)/1e6;return W0(t,e,s,o,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function jh(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 Gh(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 qh(t);if(r){let o=q0(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 Hh(e,t,n){let r=await jh(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 qh(e)}function pi(){return"rsp is not enabled in this directory; run /red-setup"}function Wh(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 W0(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 q0(e,t,n){let r=t[0]??"unknown",s=J0(n)||e;return{reason:Bh(n)==="ENOENT"||Bh(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:K0(n)??1,stderrHead:V0(s,240)}}function J0(e){return e instanceof Error?ys(e.message):ys(String(e??""))}function V0(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 Bh(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function K0(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 qh(e){if(e[0]==="exec"||e[0]==="proxy")return await z0(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 z0(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
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
|
|
208
|
-
`}async function
|
|
207
|
+
`),r(127)}),n.on("close",(s,o)=>{if(o){process.kill(process.pid,o),r(128);return}r(s??0)})})}async function cy(e,t,n){let r=[],s=!e.enabled;if(r.push(s?X("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):X("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(X("hook_wiring","skipped because rsp is disabled"),X("proxy_mode","skipped because rsp is disabled"),X("resident_liveness","skipped because rsp is disabled"),X("store_provisioning","skipped because rsp is disabled"),X("recent_degradation_rate","skipped because rsp is disabled"),X("overhead_budget","skipped because rsp is disabled")),ay("disabled",r,n);r.push(await AT(e)),r.push(e.proxyEnabled?X("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(),Xt));if(r.push(PT(await o(t))),r.push(IT(e)),ly(e)){let{telemetry:i}=await Pn(e,n);r.push(LT(i,n))}else r.push(X("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return r.push($T(kt(process.cwd(),e.overhead))),ay(r.some(i=>!i.pass)?"fail":"pass",r,n)}function uy(e){let{exitCode:t,...n}=e;return`${J({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
|
|
208
|
+
`}async function AT(e){try{if(e.proxyEnabled)return X("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"?X("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 PT(e){return e.state==="registered-alive-socket-healthy"?X("resident_liveness","resident registry points at a healthy socket"):dn("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function IT(e){return e.storeUri.startsWith("file://")?ly(e)?X("store_provisioning","rsp store exists for this directory"):dn("store_provisioning","rsp store is not provisioned","rsp setup"):X("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function LT(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return X("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})`,DT(s,t))}function $T(e){return e.verdict==="green"?X("overhead_budget",e.summary):dn("overhead_budget",e.summary,"rsp status")}function DT(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 ly(e){if(!e.storeUri.startsWith("file://"))return!0;try{return TT(OT(e.storeUri))}catch{return!1}}function X(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 ay(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)}}Wu();function my(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${BT(t).join(`
|
|
209
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)}
|
|
210
|
+
`}function BT(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 FT}from"node:child_process";import{createHash as jT}from"node:crypto";import{existsSync as GT,readFileSync as HT,statSync as UT}from"node:fs";import{tmpdir as WT}from"node:os";import{dirname as qT,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&&VT(s,o);let c=JT(e,t,a);return Rr(s,c,i),r?fn(XT(s,e,t,c,i,r.lastResponseMetrics())):QT(s,e,t,c,i),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function JT(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 VT(e,t){try{let n=gt(e),r=UT(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!YT(n,Date.now()-s))return;let o=KT(e),i=zT(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");FT(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 KT(e){let t=e;for(;;){if(GT(Pt(t,".git")))return t;let n=qT(t);if(n===t)return e;t=n}}function zT(e){let t=jT("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(WT(),`red-skills-${r}`,t)}function YT(e,t){try{let n=HT(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=Us(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 QT(e,t,n,r,s){try{let o=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),a=Us(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 rb(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(()=>(Wu(),py));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 Zb(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
211
|
`:`${Bd(t)}
|
|
212
|
-
`),0;if(n.kind==="help")return process.stdout.write(
|
|
213
|
-
`),0);if(r.command==="git"&&_i(r.positional)){let h=process.hrtime.bigint();return await le(r,await Ri(),h,void 0,await
|
|
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(),
|
|
215
|
-
`),w.status}if(r.command==="dashboard"){let h=await
|
|
212
|
+
`),0;if(n.kind==="help")return process.stdout.write(my(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(()=>(db(),lb)),y=await h(process.cwd());return process.stdout.write(Ka(y)),0}if(r.command==="mcp"){let{runRspMcpServer:h}=await Promise.resolve().then(()=>(bb(),yb));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(()=>(Rb(),_b));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(),Xt)),y=h(process.cwd()),w=await cy(o,y,Ns(r.positional,1));return process.stdout.write(uy(w)),w.exitCode}let i=Wh(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 Uu(process.cwd()),o)}let{resolveResidentPaths:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Ye(),Xt)),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 Hh(r.positional,u.rootDir,y)}if(i&&Gh(o.measurementHoldoutShare))return await Fh(r,u.rootDir,o.measurementHoldoutShare);if(r.command==="server"){let{runResidentServer:h}=await Promise.resolve().then(()=>(Qb(),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(),Xt));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(),Xt)),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(Uf(w,T)),0}if(r.command==="gh-api-json"){let{readGhConditionalJson:h}=await Promise.resolve().then(()=>(Uo(),Xm)),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 Yg(o);return process.stdout.write(Xg(h)),0}if(!r.storeUri&&o.storeUri.startsWith("file://")&&!qP(JP(o.storeUri)))return i?await rb(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(()=>(Qt(),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]}`&&Zb().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{Zb as main,Ka as renderSetupResult,Ja as renderStats};
|