@reddb-io/red-skills 2.62.0 → 2.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,89 +1,90 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Tl=Object.defineProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var N=(e,t)=>{for(var n in t)Tl(e,n,{get:t[n],enumerable:!0})};async function qi(e,t){return vl?Dl(e,t):Pl?Cl(e,t):Ol(e,t)}async function Ol(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((i,o)=>{r.stdin.write(s,a=>a?o(a):i())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(s=>{r.on("exit",i=>s(i??0))})}}}function Dl(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:$l(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*$l(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 Cl(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(i){await s.write(i)},end(){try{s.close()}catch{}}},stdout:Il(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Il(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var vl,Pl,Hi=E(()=>{vl=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Pl=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Nl}from"node:fs";import{join as Al}from"node:path";function Wi(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 i=Al(n,"bin",t);if(Nl(i))return i;throw new Error(`reddb: binary "${t}" not found.
3
+ var ad=Object.defineProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var $=(e,t)=>{for(var n in t)ad(e,n,{get:t[n],enumerable:!0})};async function go(e,t){return cd?dd(e,t):ud?md(e,t):ld(e,t)}async function ld(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((i,o)=>{r.stdin.write(s,a=>a?o(a):i())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(s=>{r.on("exit",i=>s(i??0))})}}}function dd(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:fd(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*fd(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 md(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(i){await s.write(i)},end(){try{s.close()}catch{}}},stdout:pd(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*pd(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var cd,ud,ho=E(()=>{cd=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",ud=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as gd}from"node:fs";import{join as hd}from"node:path";function yo(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 i=hd(n,"bin",t);if(gd(i))return i;throw new Error(`reddb: binary "${t}" not found.
4
4
  expected at: ${i}
5
5
  override: set ${r}=/path/to/${t}
6
6
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
7
- or check the postinstall log for a download error.`)}var Vi=E(()=>{});import{fileURLToPath as Bl}from"node:url";import{dirname as Ll,resolve as Ml,join as vb}from"node:path";function Fl(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ki(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Wi({name:Fl(),packageRoot:Ul,envVar:"REDDB_BIN"})}var jl,Ul,zi=E(()=>{Vi();jl=Ll(Bl(import.meta.url)),Ul=Ml(jl,"..")});var Gl,Jl,k,On,Be=E(()=>{Gl=new TextEncoder,Jl=new TextDecoder("utf-8"),k=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},On=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 k("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((i,o)=>{this.pending.set(r,{resolve:i,reject:o}),this.child.stdin.write(Gl.encode(s+`
8
- `)).catch(a=>{this.pending.delete(r),o(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 i=0;i<t.length;i++)if(t[i]===10){let o=t.subarray(s,i);this.#n(Jl.decode(o)),s=i+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(i){this.#e(`malformed server response: ${i.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 k(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 k("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function Ar(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:/"?ql(e):Hl(e)}function ql(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 k("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let r=n.searchParams,s=(r.get("proto")||"").toLowerCase(),i=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return i?{kind:"embedded",path:i,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=Wl(s),a=n.port?Number(n.port):Nr(o),c=n.username?decodeURIComponent(n.username):void 0,u=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:i||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 Hl(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(i){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${i.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):Nr(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 k("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Nr(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 k("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Wl(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 k("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Nr(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 Br=E(()=>{Be()});function Kl(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Yi(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Yi(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Yi(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 zl(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 Vl,Ut,Lr=E(()=>{Be();Vl=new Set(["embedded"]),Ut=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Vl.has(this._transport))throw new k("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:zl(r.value)}async put(t,n,r,s={}){this._guard("put");let i=Kl(r);await this._client.call("cache.put",{namespace:t,key:n,value:i,...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 Mr(e,t){return`${jr(e)}.${Yl(t)}`}function jr(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new k("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Yl(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Ql(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 Qi(e){return`'${String(e).replace(/'/g,"''")}'`}var gt,Ur=E(()=>{Be();gt=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Qi).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Mr(s,t)} = ${Ql(n)}${o}${i}`})}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 ${Mr(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 ${Mr(r,t)}`}),i=s.affected??s.affected_rows??0;return{affected:i,deleted:i>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 k("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${jr(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:s.length>0?o.filter(c=>String(c.key).startsWith(s)):o}}async invalidateTags(t,n={}){let r=n.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Qi).join(", ")}] FROM ${jr(r)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new k("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 i=s.toString()?`?${s}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${i}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new k("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
7
+ or check the postinstall log for a download error.`)}var wo=E(()=>{});import{fileURLToPath as yd}from"node:url";import{dirname as wd,resolve as bd,join as A_}from"node:path";function Sd(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function bo(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:yo({name:Sd(),packageRoot:Rd,envVar:"REDDB_BIN"})}var _d,Rd,_o=E(()=>{wo();_d=wd(yd(import.meta.url)),Rd=bd(_d,"..")});var kd,Ed,k,Mn,Me=E(()=>{kd=new TextEncoder,Ed=new TextDecoder("utf-8"),k=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},Mn=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 k("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((i,o)=>{this.pending.set(r,{resolve:i,reject:o}),this.child.stdin.write(kd.encode(s+`
8
+ `)).catch(a=>{this.pending.delete(r),o(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 i=0;i<t.length;i++)if(t[i]===10){let o=t.subarray(s,i);this.#n(Ed.decode(o)),s=i+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(i){this.#e(`malformed server response: ${i.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 k(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 k("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function zr(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:/"?xd(e):Td(e)}function xd(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 k("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let r=n.searchParams,s=(r.get("proto")||"").toLowerCase(),i=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return i?{kind:"embedded",path:i,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=vd(s),a=n.port?Number(n.port):Kr(o),c=n.username?decodeURIComponent(n.username):void 0,u=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:i||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 Td(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(i){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${i.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):Kr(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 k("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Kr(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 k("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function vd(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 k("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Kr(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 Yr=E(()=>{Me()});function Pd(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Ro(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Ro(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Ro(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 Dd(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 Od,Ht,Qr=E(()=>{Me();Od=new Set(["embedded"]),Ht=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Od.has(this._transport))throw new k("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:Dd(r.value)}async put(t,n,r,s={}){this._guard("put");let i=Pd(r);await this._client.call("cache.put",{namespace:t,key:n,value:i,...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 Zr(e,t){return`${Xr(e)}.${Cd(t)}`}function Xr(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new k("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Cd(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Id(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 So(e){return`'${String(e).replace(/'/g,"''")}'`}var Rt,es=E(()=>{Me();Rt=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(So).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Zr(s,t)} = ${Id(n)}${o}${i}`})}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 ${Zr(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 ${Zr(r,t)}`}),i=s.affected??s.affected_rows??0;return{affected:i,deleted:i>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 k("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${Xr(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:s.length>0?o.filter(c=>String(c.key).startsWith(s)):o}}async invalidateTags(t,n={}){let r=n.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(So).join(", ")}] FROM ${Xr(r)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new k("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 i=s.toString()?`?${s}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${i}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new k("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
9
9
 
10
10
  `)){let l=u.split(`
11
- `).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Xl(e,t,n){let{waitMs:r,group:s=null,count:i=null}=n??{};if(!Number.isInteger(r)||r<0)throw new k("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=Se(e),a=Se(t),c=s!=null?` GROUP ${Se(s)}`:"",u=i!=null?Gr(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function Se(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Gr(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new k("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Zl(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function ed(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new k("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Zl(e.priority)}`),e.key!=null&&(t+=` KEY ${Jr(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Jr(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function td(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Jr(e):JSON.stringify(e)}function Jr(e){return`'${String(e).replace(/'/g,"''")}'`}function Fr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Ft,qr=E(()=>{Be();Ft=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${Se(t)}`})}push(t,n,r={}){let s=ed(r);return this.client.call("query",{sql:`QUEUE PUSH ${Se(t)} ${td(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${Se(t)}${Gr(n)}`});return Fr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${Se(t)}${Gr(n)}`});return Fr(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${Se(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${Se(t)}`})}async readWait(t,n,r={}){let s=Xl(t,n,r),i=await this.client.call("query",{sql:s});return Fr(i)}}});function Xi(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function nd(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new k("INVALID_ARGUMENT","limit must be a positive integer");return e}function Dn(e){return String(e).split(".").map(Zi).join(".")}function Zi(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function rd(e){return eo(JSON.stringify(e))}function sd(e){return JSON.stringify(e)}function id(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?rd(e):eo(e)}function eo(e){return`'${String(e).replace(/'/g,"''")}'`}var Gt,Hr=E(()=>{Be();Gt=class{constructor(t){this.db=t}async insert(t,n){Xi(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Dn(t)} DOCUMENT VALUES (${sd(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new k("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 k("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=nd(n.limit),s=n.orderBy??n.order_by??"rid ASC",i=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${Dn(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Xi(r,"documents.patch patch");let s=Object.entries(r);if(s.length===0)throw new k("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new k("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${Zi(c)} = ${id(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Dn(t)} SET ${i} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new k("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 ${Dn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function od(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${Le(n)}.${Le(r)})`}return cd(e)}function ad(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 Le(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 cd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):to(e)}function to(e){return`'${String(e).replace(/'/g,"''")}'`}var Jt,Wr=E(()=>{Jt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){ad(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(to).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${Le(s)} ${Le(t)} = ${od(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${Le(r)} ${Le(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${Le(r)} ${Le(t)}`})}}});function ud(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 ht(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 ld(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):no(e)}function no(e){return`'${String(e).replace(/'/g,"''")}'`}var qt,Vr=E(()=>{qt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){ud(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(no).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${ht(s)}.${ht(t)} = ${ld(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${ht(r)}.${ht(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${ht(r)}.${ht(t)}`})}}});async function so(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(dd)}async function io(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${md(t)}`)).rows??[]).some(r=>r.name===String(t))}function dd(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function ro(e){return String(e).split(".").map(fd).join(".")}function fd(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function md(e){return`'${String(e).replace(/'/g,"''")}'`}var Ht,Kr=E(()=>{Be();Ht=class e{constructor(t,n,r=null,s=[],i=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=s,this.params=i}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 k("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(ro).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${ro(this.collection)}${n}`,i=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?i:i.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function yt(e,t={}){let n=Ar(e);if(kd(n),n.kind==="embedded"){let r=Sd(n,t.auth);if(r.token||r.username)throw new k("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=Rd(n),i=t.binary??Ki(),o=await qi(i,s),a=new On(o);return await a.call("version",{}),new Yr(a,{transport:"embedded"})}}function ao(e){return hd(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:wd(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&_d(e)?{$uuid:e}:e}function hd(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new k("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new k("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new k("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function yd(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ao):e.map(ao)}function wd(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 bd(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 _d(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function $n(e){if(Array.isArray(e))return e.map($n);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return bd(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]=$n(s);return n}return e}function Rd(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Sd(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 kd(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",pd)}function Qr(){return new k(oo,`${oo}: nested transactions are not supported on one connection`)}function uo(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Ed(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${co} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function xd(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new k("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${co} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new k("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var pd,gd,co,oo,Cn,zr,Yr,Xr=E(()=>{Hi();zi();Be();Br();Lr();Ur();qr();Hr();Wr();Vr();Kr();Lr();Ur();qr();Hr();Wr();Vr();Kr();Br();pd="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",gd="1.0",co="1.0.9",oo="NESTED_TX_NOT_SUPPORTED";Cn=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 Qr()}},zr=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Qr();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new k("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new k("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new k("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Cn(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){uo(n,r)}throw n}}},Yr=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=gd,this.cache=new Ut(t,this.transport),this.queue=new Ft(t),this.queues=this.queue,this.documents=new Gt(this);let r=new gt(t);this.kv=Object.assign((s="kv_default")=>new gt(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 Jt(t,s),this.vault=(s="red.vault")=>new qt(t,s),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new k("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=yd(n);return r==null?this.client.call("query",{sql:t}).then($n):this.client.call("query",{sql:t,params:r}).then($n)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return Ed(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 xd(r,n.length)}tx(){return new zr(this)}async transaction(t){if(this.inTransaction)throw Qr();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 Cn(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){uo(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return io(this,t)}list(){return so(this)}from(t){return new Ht(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{isAbsolute as m_,join as wt,resolve as p_}from"node:path";function vd(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function lo(e){return wt(vd(e),Td)}function fo(e){return wt(lo(e),"state")}function Pd(e){return wt(lo(e),"tmp")}function F(e){return wt(fo(e),"rsp")}function Od(e){return wt(fo(e),"red-skills.rdb")}function Dd(e){return wt(Pd(e),"red-skills.rdb")}function go(e,t){let n=Od(e);if(t(n))return n;let r=Dd(e);return t(r)?r:n}var Td,mo,po,ke=E(()=>{Td=".red";mo=".red/state/red-skills.rdb";po=".red/tmp/red-skills.rdb"});function R(e,t){return new Wt(e,t)}function P(e,t){return new Ze(e,t)}function bt(e){return e instanceof Ze?e:e instanceof Wt?new Ze(e.line,e.reason):new Ze(0,String(e&&e.message?e.message:e))}var Wt,Ze,Vt=E(()=>{Wt=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},Ze=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});function In(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 oe(e){return R(e,"invalid quoted string")}function ae(e,t){if(e==="")return"";if(e.startsWith('"'))return ho(e,t);if(e.includes('"'))throw oe(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:$d(e)?Number(e):e}function Ee(e,t){let n=e.trim();if(n.startsWith('"'))return[ho(n,t),!0];if(n.includes('"')||/\s/.test(n))throw R(t,"expected non-empty field name");return[n,!1]}function ho(e,t){if(e[0]!=='"')throw oe(t);let n="",r=1;for(;r<e.length;){let s=e[r];if(r+=1,s==='"'){if(e.slice(r).trim()==="")return n;throw oe(t)}if(s==="\\"){let i=e[r];switch(r+=1,i){case'"':n+='"';break;case"\\":n+="\\";break;case"n":n+=`
13
- `;break;case"r":n+="\r";break;case"t":n+=" ";break;case"u":{let o=e.slice(r,r+4);if(!/^[0-9a-fA-F]{4}$/.test(o))throw oe(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw oe(t);n+=String.fromCharCode(a),r+=4;break}default:throw oe(t)}continue}if(s<" "&&s!==" ")throw oe(t);n+=s}throw oe(t)}function et(e,t,n){if(e==="")return[];let r=[],s=0,i=!1,o=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(o){o=!1;continue}c==="\\"&&i?o=!0:c==='"'?i=!i:c===t&&!i&&(r.push(e.slice(s,a).trim()),s=a+1)}if(i||o)throw oe(n);return r.push(e.slice(s).trim()),r}function G(e,t,n){let r=!1,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"&&r)s=!0;else if(o==='"')r=!r;else if(o===t&&!r)return i}if(r||s)throw oe(n);return-1}function $d(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Cd(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Id(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 Kt(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function ce(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Id(e);if(typeof e=="string")return Ad(e,t);throw R(0,"not a primitive")}function Nd(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function te(e){return Nd(e)?e:yo(e)}function Ad(e,t){return Bd(e,t)?yo(e):e}function Bd(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Cd(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function yo(e){let t='"';for(let n of e)switch(n){case'"':t+='\\"';break;case"\\":t+="\\\\";break;case`
14
- `:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:n<" "?t+=`\\u${n.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=n}return`${t}"`}function _t(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var $,Zr=E(()=>{Vt();$=","});function Ld(e={}){return{indent:Math.max(1,e.indent??os),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Md(e,t){let n=[],r=!1;return In(e).forEach((s,i)=>{let o=i+1;if(s.trim()===""){r=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw R(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw R(o,"invalid indentation");n.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:r}),r=!1}),n}function ue(e,t){let n=Ld(t),r=Md(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw R(s.number,"invalid indentation");let i=r.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=us(s.content,G(s.content,":",s.number))}catch(l){if(n.strict)throw ss(l,s.number);u=void 0}if(u!==void 0)return Fd(u,r,n)}if(i&&G(s.content,":",s.number)===-1)return ae(s.content.trim(),s.number);let o={index:0},a=as(r,o,0,n),c=r[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function as(e,t,n,r){let s={};for(;t.index<e.length;){let i=e[t.index];if(i.depth<n)break;if(i.depth>n)throw R(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=jd(e,t,n,r);_o(s,o,a,c,r,i.number)}return s}function jd(e,t,n,r){let s=e[t.index],i=s.content,o=G(i,":",s.number);if(o===-1)throw R(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=G(a,"[",s.number),l=G(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=Hd(a)}catch(g){if(r.strict)throw ss(g,s.number);t.index+=1;let b=es(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:b}}if(c.trim()!=="")throw R(s.number,"expected keyed map rows");let p=Ud(h,e,t,n+1,r);return{key:h.key,quoted:h.keyQuoted,value:p}}if(u!==-1){let h;try{h=us(a,o)}catch(g){if(r.strict)throw ss(g,s.number);t.index+=1;let b=es(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:b}}if(h.key===""&&!h.keyQuoted)throw R(s.number,"expected non-empty field name");let p=cs(h,c,e,t,n,r);return{key:h.key,quoted:h.keyQuoted,value:p}}let[d,f]=Ee(a,s.number);if(d===""&&!f)throw R(s.number,"expected non-empty field name");t.index+=1;let y=es(e,t,n,c,s.number,r);return{key:d,quoted:f,value:y}}function es(e,t,n,r,s,i){let o=r.trim();if(o==="[]")return[];if(o!=="")return ae(o,s);let a=e[t.index];return a!==void 0&&a.depth>n?as(e,t,n+1,i):{}}function Ud(e,t,n,r,s){let i={};for(n.index+=1;n.index<t.length;){let o=t[n.index];if(o.depth<r)break;if(o.depth>r)throw R(o.number,"invalid indentation");if(o.blankBefore&&s.strict)throw R(o.number,"blank line inside keyed map");let a=G(o.content,":",o.number);if(a===-1)throw R(o.number,"expected `key: value`");let[c,u]=Ee(o.content.slice(0,a),o.number);if(c===""&&!u)throw R(o.number,"expected non-empty field name");let l=et(o.content.slice(a+1).trim(),e.delimiter,o.number);if(l.length!==e.fields.length)throw R(o.number,"keyed map row length mismatch");let d={};e.fields.forEach((f,y)=>{zt(d,f,ae(l[y],o.number),s,o.number)}),_o(i,c,u,d,s,o.number),n.index+=1}return i}function Fd(e,t,n){let r=t[0],s=G(r.content,":",r.number);if(s===-1)throw R(r.number,"expected `key: value`");let i=r.content.slice(s+1),o={index:0},a=cs(e,i,t,o,0,n),c=t[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function cs(e,t,n,r,s,i){let o=n[r.index].number,a=t.trim();if(r.index+=1,e.fields!==void 0){if(a!=="")throw R(o,"expected tabular rows");return Gd(e,e.fields,n,r,s+1,i)}if(a!==""){let c=et(a,e.delimiter,o).map(u=>ae(u,o));if(c.length!==e.len)throw R(o,"array length mismatch");return c}return Jd(e,n,r,s+1,i)}function Gd(e,t,n,r,s,i){let o=[];for(;o.length<e.len;){let c=n[r.index];if(c===void 0)throw ns(n,r.index);if(c.depth<s)break;if(c.depth>s)throw R(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw R(c.number,"blank line inside array");if(!wo(c.content,e.delimiter,c.number))break;let u=et(c.content,e.delimiter,c.number);if(u.length!==t.length)throw R(c.number,"array row length mismatch");let l={};t.forEach((d,f)=>{zt(l,d,ae(u[f],c.number),i,c.number)}),o.push(l),r.index+=1}if(o.length!==e.len)throw ns(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&wo(a.content,e.delimiter,a.number))throw R(a.number,"array length mismatch");return o}function wo(e,t,n){let r=G(e,":",n);if(r===-1)return!0;let s=G(e,t,n);return s===-1?!1:s<r}function Jd(e,t,n,r,s){let i=[];for(;i.length<e.len;){let a=t[n.index];if(a===void 0||a.depth<r)throw ns(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");i.push(qd(t,n,r,s))}let o=t[n.index];if(o!==void 0&&o.depth>=r)throw R(o.number,"array length mismatch");return i}function qd(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw R(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=G(i,":",s.number),a;try{a=us(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return cs(a,c,e,t,n,r)}}if(G(i,":",s.number)!==-1){let o=[{number:s.number,depth:n+1,content:i,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=n)break;o.push(a),t.index+=1}return as(o,{index:0},n+1,r)}return t.index+=1,ae(i,s.number)}function ns(e,t){let n=e[t]??e[e.length-1];return R(n===void 0?1:n.number,"array length mismatch")}function us(e,t){if(t===-1)throw R(0,"array header missing colon");let n=e.slice(0,t),r=G(n,"[",0);if(r===-1)throw R(0,"invalid array header");let s,i;try{[s,i]=Ee(n.slice(0,r),0)}catch{throw R(0,"invalid array header")}let o=n.slice(r+1),a=o.indexOf("]");if(a===-1)throw R(0,"invalid array header");let c=o.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),d;switch(c.slice(u.length)){case"":d=",";break;case" ":d=" ";break;case"|":d="|";break;default:throw R(0,"invalid array header")}let f=o.slice(a+1),y;if(f==="")y=void 0;else if(f.startsWith("{")&&f.endsWith("}")&&f.length>=2)try{y=bo(f.slice(1,-1),d)}catch(h){throw R(0,h.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw R(0,"invalid array header");return{key:s,keyQuoted:i,len:l,delimiter:d,fields:y}}function Hd(e){let t=G(e,"{",0);if(t===-1||!e.endsWith("}"))throw R(0,"invalid keyed map header");let n,r;try{[n,r]=Ee(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;try{s=bo(e.slice(t+1,-1),$)}catch(i){throw R(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:n,keyQuoted:r,delimiter:$,fields:s}}function bo(e,t){let n=[],r=0;function s(a,c){let u=0;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 f=e[r];if(f==='"'){i();continue}if(f===t||f==="{"||f==="}")break;r+=1}let[d]=Ee(e.slice(l,r),0);if(d==="")throw R(0,"invalid array header");if(u+=1,e[r]==="{"){r+=1;let f=n.length;if(s([...a,d],!0),e[r]!=="}"||n.length===f)throw R(0,"invalid array header");r+=1}else n.push([...a,d]);if(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===0)throw R(0,"invalid array header")}function i(){for(r+=1;r<e.length;){let a=e[r];if(r+=1,a==="\\")r+=1;else if(a==='"')return}}if(s([],!1),r!==e.length)throw R(0,"invalid array header");let o=new Set;for(let a=0;a<n.length;a+=1)for(let c=a+1;c<n.length;c+=1)if(Wd(n[a],n[c])||rs(n[a],n[c])||rs(n[c],n[a]))throw R(0,"duplicate key");for(let a of n){let c=a.join("\0");if(o.has(c))throw R(0,"duplicate key");o.add(c)}return n}function Wd(e,t){return e.length===t.length&&rs(e,t)}function rs(e,t){return t.every((n,r)=>e[r]===n)}function ss(e,t){return R(t,e.reason??String(e.message))}function _o(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(Vd)){zt(e,o,r,s,i);return}}zt(e,[t],r,s,i)}function zt(e,t,n,r,s){let i=t[0],o=Object.prototype.hasOwnProperty.call(e,i);if(t.length===1){if(o&&r.strict)throw R(s,"duplicate key");_t(e,i,n);return}if(o&&!Rt(e[i])){if(r.strict)throw R(s,"path expansion conflict");_t(e,i,{})}else o||_t(e,i,{});zt(e[i],t.slice(1),n,r,s)}function Vd(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function Rt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function D(e,t={}){let n={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},r=[];return Array.isArray(e)?ls(r,void 0,e,0,!1,n):Rt(e)?Ro(r,e,0,n):r.push(ce(e,$)),r.join("")}function Yt(e,t){e.push(" ".repeat(t*os))}function Ro(e,t,n,r){for(let[s,i]of Object.entries(t))Yt(e,n),is(e,s,i,n,r)}function is(e,t,n,r,s){if(Array.isArray(n)){ls(e,t,n,r,!1,s);return}if(Rt(n)){let i=s.keyedMapCollapse?zd(n,s):void 0;if(i!==void 0){e.push(te(t),"{",i.fields.map(ds).join($),`}:
15
- `);for(let[o,a]of Object.entries(n))Yt(e,r+1),e.push(te(o),": ",i.paths.map(c=>ce(xo(a,c),$)).join($),`
16
- `);return}e.push(te(t),`:
17
- `),Ro(e,n,r+1,s);return}e.push(te(t),": ",ce(n,$),`
18
- `)}function ls(e,t,n,r,s,i){if(n.length===0){t!==void 0?e.push(te(t),`: []
11
+ `).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Ad(e,t,n){let{waitMs:r,group:s=null,count:i=null}=n??{};if(!Number.isInteger(r)||r<0)throw new k("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=xe(e),a=xe(t),c=s!=null?` GROUP ${xe(s)}`:"",u=i!=null?ns(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function xe(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function ns(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new k("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Nd(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function $d(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new k("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Nd(e.priority)}`),e.key!=null&&(t+=` KEY ${rs(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${rs(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Bd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?rs(e):JSON.stringify(e)}function rs(e){return`'${String(e).replace(/'/g,"''")}'`}function ts(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Wt,ss=E(()=>{Me();Wt=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${xe(t)}`})}push(t,n,r={}){let s=$d(r);return this.client.call("query",{sql:`QUEUE PUSH ${xe(t)} ${Bd(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${xe(t)}${ns(n)}`});return ts(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${xe(t)}${ns(n)}`});return ts(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${xe(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${xe(t)}`})}async readWait(t,n,r={}){let s=Ad(t,n,r),i=await this.client.call("query",{sql:s});return ts(i)}}});function ko(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function Ld(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new k("INVALID_ARGUMENT","limit must be a positive integer");return e}function jn(e){return String(e).split(".").map(Eo).join(".")}function Eo(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Md(e){return xo(JSON.stringify(e))}function jd(e){return JSON.stringify(e)}function Ud(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Md(e):xo(e)}function xo(e){return`'${String(e).replace(/'/g,"''")}'`}var Vt,is=E(()=>{Me();Vt=class{constructor(t){this.db=t}async insert(t,n){ko(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${jn(t)} DOCUMENT VALUES (${jd(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new k("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 k("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=Ld(n.limit),s=n.orderBy??n.order_by??"rid ASC",i=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${jn(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){ko(r,"documents.patch patch");let s=Object.entries(r);if(s.length===0)throw new k("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new k("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${Eo(c)} = ${Ud(u)}`).join(", "),a=(await this.db.query(`UPDATE ${jn(t)} SET ${i} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new k("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 ${jn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function Jd(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${je(n)}.${je(r)})`}return Gd(e)}function Fd(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 je(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 Gd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):To(e)}function To(e){return`'${String(e).replace(/'/g,"''")}'`}var Kt,os=E(()=>{Kt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){Fd(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(To).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${je(s)} ${je(t)} = ${Jd(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${je(r)} ${je(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${je(r)} ${je(t)}`})}}});function qd(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 St(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function Hd(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):vo(e)}function vo(e){return`'${String(e).replace(/'/g,"''")}'`}var zt,as=E(()=>{zt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){qd(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(vo).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${St(s)}.${St(t)} = ${Hd(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${St(r)}.${St(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${St(r)}.${St(t)}`})}}});async function Po(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Wd)}async function Do(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Kd(t)}`)).rows??[]).some(r=>r.name===String(t))}function Wd(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Oo(e){return String(e).split(".").map(Vd).join(".")}function Vd(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Kd(e){return`'${String(e).replace(/'/g,"''")}'`}var Yt,cs=E(()=>{Me();Yt=class e{constructor(t,n,r=null,s=[],i=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=s,this.params=i}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 k("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(Oo).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Oo(this.collection)}${n}`,i=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?i:i.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function kt(e,t={}){let n=zr(e);if(sf(n),n.kind==="embedded"){let r=rf(n,t.auth);if(r.token||r.username)throw new k("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=nf(n),i=t.binary??bo(),o=await go(i,s),a=new Mn(o);return await a.call("version",{}),new ls(a,{transport:"embedded"})}}function Io(e){return Qd(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:Xd(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&tf(e)?{$uuid:e}:e}function Qd(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new k("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new k("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new k("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function Zd(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Io):e.map(Io)}function Xd(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 ef(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 tf(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Un(e){if(Array.isArray(e))return e.map(Un);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return ef(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]=Un(s);return n}return e}function nf(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function rf(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 sf(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",zd)}function ds(){return new k(Co,`${Co}: nested transactions are not supported on one connection`)}function No(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function of(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Ao} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function af(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new k("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Ao} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new k("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var zd,Yd,Ao,Co,Jn,us,ls,fs=E(()=>{ho();_o();Me();Yr();Qr();es();ss();is();os();as();cs();Qr();es();ss();is();os();as();cs();Yr();zd="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Yd="1.0",Ao="1.0.9",Co="NESTED_TX_NOT_SUPPORTED";Jn=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 ds()}},us=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw ds();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new k("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new k("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new k("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Jn(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){No(n,r)}throw n}}},ls=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Yd,this.cache=new Ht(t,this.transport),this.queue=new Wt(t),this.queues=this.queue,this.documents=new Vt(this);let r=new Rt(t);this.kv=Object.assign((s="kv_default")=>new Rt(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 Kt(t,s),this.vault=(s="red.vault")=>new zt(t,s),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new k("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=Zd(n);return r==null?this.client.call("query",{sql:t}).then(Un):this.client.call("query",{sql:t,params:r}).then(Un)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return of(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 af(r,n.length)}tx(){return new us(this)}async transaction(t){if(this.inTransaction)throw ds();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 Jn(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){No(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return Do(this,t)}list(){return Po(this)}from(t){return new Yt(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{isAbsolute as bR,join as Et,resolve as _R}from"node:path";function uf(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function $o(e){return Et(uf(e),cf)}function Bo(e){return Et($o(e),"state")}function lf(e){return Et($o(e),"tmp")}function F(e){return Et(Bo(e),"rsp")}function df(e){return Et(Bo(e),"red-skills.rdb")}function ff(e){return Et(lf(e),"red-skills.rdb")}function jo(e,t){let n=df(e);if(t(n))return n;let r=ff(e);return t(r)?r:n}var cf,Lo,Mo,Te=E(()=>{cf=".red";Lo=".red/state/red-skills.rdb";Mo=".red/tmp/red-skills.rdb"});function R(e,t){return new Qt(e,t)}function O(e,t){return new et(e,t)}function xt(e){return e instanceof et?e:e instanceof Qt?new et(e.line,e.reason):new et(0,String(e&&e.message?e.message:e))}var Qt,et,Zt=E(()=>{Qt=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},et=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});function Fn(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 de(e){return R(e,"invalid quoted string")}function fe(e,t){if(e==="")return"";if(e.startsWith('"'))return Uo(e,t);if(e.includes('"'))throw de(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:mf(e)?Number(e):e}function ve(e,t){let n=e.trim();if(n.startsWith('"'))return[Uo(n,t),!0];if(n.includes('"')||/\s/.test(n))throw R(t,"expected non-empty field name");return[n,!1]}function Uo(e,t){if(e[0]!=='"')throw de(t);let n="",r=1;for(;r<e.length;){let s=e[r];if(r+=1,s==='"'){if(e.slice(r).trim()==="")return n;throw de(t)}if(s==="\\"){let i=e[r];switch(r+=1,i){case'"':n+='"';break;case"\\":n+="\\";break;case"n":n+=`
13
+ `;break;case"r":n+="\r";break;case"t":n+=" ";break;case"u":{let o=e.slice(r,r+4);if(!/^[0-9a-fA-F]{4}$/.test(o))throw de(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw de(t);n+=String.fromCharCode(a),r+=4;break}default:throw de(t)}continue}if(s<" "&&s!==" ")throw de(t);n+=s}throw de(t)}function tt(e,t,n){if(e==="")return[];let r=[],s=0,i=!1,o=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(o){o=!1;continue}c==="\\"&&i?o=!0:c==='"'?i=!i:c===t&&!i&&(r.push(e.slice(s,a).trim()),s=a+1)}if(i||o)throw de(n);return r.push(e.slice(s).trim()),r}function G(e,t,n){let r=!1,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"&&r)s=!0;else if(o==='"')r=!r;else if(o===t&&!r)return i}if(r||s)throw de(n);return-1}function mf(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function pf(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function gf(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 Xt(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function me(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return gf(e);if(typeof e=="string")return yf(e,t);throw R(0,"not a primitive")}function hf(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function ie(e){return hf(e)?e:Jo(e)}function yf(e,t){return wf(e,t)?Jo(e):e}function wf(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||pf(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Jo(e){let t='"';for(let n of e)switch(n){case'"':t+='\\"';break;case"\\":t+="\\\\";break;case`
14
+ `:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:n<" "?t+=`\\u${n.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=n}return`${t}"`}function Tt(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var C,ms=E(()=>{Zt();C=","});function bf(e={}){return{indent:Math.max(1,e.indent??_s),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function _f(e,t){let n=[],r=!1;return Fn(e).forEach((s,i)=>{let o=i+1;if(s.trim()===""){r=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw R(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw R(o,"invalid indentation");n.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:r}),r=!1}),n}function Z(e,t){let n=bf(t),r=_f(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw R(s.number,"invalid indentation");let i=r.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=ks(s.content,G(s.content,":",s.number))}catch(l){if(n.strict)throw ws(l,s.number);u=void 0}if(u!==void 0)return kf(u,r,n)}if(i&&G(s.content,":",s.number)===-1)return fe(s.content.trim(),s.number);let o={index:0},a=Rs(r,o,0,n),c=r[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function Rs(e,t,n,r){let s={};for(;t.index<e.length;){let i=e[t.index];if(i.depth<n)break;if(i.depth>n)throw R(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=Rf(e,t,n,r);qo(s,o,a,c,r,i.number)}return s}function Rf(e,t,n,r){let s=e[t.index],i=s.content,o=G(i,":",s.number);if(o===-1)throw R(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=G(a,"[",s.number),l=G(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let y;try{y=vf(a)}catch(g){if(r.strict)throw ws(g,s.number);t.index+=1;let b=ps(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:b}}if(c.trim()!=="")throw R(s.number,"expected keyed map rows");let m=Sf(y,e,t,n+1,r);return{key:y.key,quoted:y.keyQuoted,value:m}}if(u!==-1){let y;try{y=ks(a,o)}catch(g){if(r.strict)throw ws(g,s.number);t.index+=1;let b=ps(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:b}}if(y.key===""&&!y.keyQuoted)throw R(s.number,"expected non-empty field name");let m=Ss(y,c,e,t,n,r);return{key:y.key,quoted:y.keyQuoted,value:m}}let[f,d]=ve(a,s.number);if(f===""&&!d)throw R(s.number,"expected non-empty field name");t.index+=1;let h=ps(e,t,n,c,s.number,r);return{key:f,quoted:d,value:h}}function ps(e,t,n,r,s,i){let o=r.trim();if(o==="[]")return[];if(o!=="")return fe(o,s);let a=e[t.index];return a!==void 0&&a.depth>n?Rs(e,t,n+1,i):{}}function Sf(e,t,n,r,s){let i={};for(n.index+=1;n.index<t.length;){let o=t[n.index];if(o.depth<r)break;if(o.depth>r)throw R(o.number,"invalid indentation");if(o.blankBefore&&s.strict)throw R(o.number,"blank line inside keyed map");let a=G(o.content,":",o.number);if(a===-1)throw R(o.number,"expected `key: value`");let[c,u]=ve(o.content.slice(0,a),o.number);if(c===""&&!u)throw R(o.number,"expected non-empty field name");let l=tt(o.content.slice(a+1).trim(),e.delimiter,o.number);if(l.length!==e.fields.length)throw R(o.number,"keyed map row length mismatch");let f={};e.fields.forEach((d,h)=>{en(f,d,fe(l[h],o.number),s,o.number)}),qo(i,c,u,f,s,o.number),n.index+=1}return i}function kf(e,t,n){let r=t[0],s=G(r.content,":",r.number);if(s===-1)throw R(r.number,"expected `key: value`");let i=r.content.slice(s+1),o={index:0},a=Ss(e,i,t,o,0,n),c=t[o.index];if(c!==void 0)throw R(c.number,"expected end of document");return a}function Ss(e,t,n,r,s,i){let o=n[r.index].number,a=t.trim();if(r.index+=1,e.fields!==void 0){if(a!=="")throw R(o,"expected tabular rows");return Ef(e,e.fields,n,r,s+1,i)}if(a!==""){let c=tt(a,e.delimiter,o).map(u=>fe(u,o));if(c.length!==e.len)throw R(o,"array length mismatch");return c}return xf(e,n,r,s+1,i)}function Ef(e,t,n,r,s,i){let o=[];for(;o.length<e.len;){let c=n[r.index];if(c===void 0)throw hs(n,r.index);if(c.depth<s)break;if(c.depth>s)throw R(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw R(c.number,"blank line inside array");if(!Fo(c.content,e.delimiter,c.number))break;let u=tt(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)=>{en(l,f,fe(u[d],c.number),i,c.number)}),o.push(l),r.index+=1}if(o.length!==e.len)throw hs(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&Fo(a.content,e.delimiter,a.number))throw R(a.number,"array length mismatch");return o}function Fo(e,t,n){let r=G(e,":",n);if(r===-1)return!0;let s=G(e,t,n);return s===-1?!1:s<r}function xf(e,t,n,r,s){let i=[];for(;i.length<e.len;){let a=t[n.index];if(a===void 0||a.depth<r)throw hs(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");i.push(Tf(t,n,r,s))}let o=t[n.index];if(o!==void 0&&o.depth>=r)throw R(o.number,"array length mismatch");return i}function Tf(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw R(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=G(i,":",s.number),a;try{a=ks(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return Ss(a,c,e,t,n,r)}}if(G(i,":",s.number)!==-1){let o=[{number:s.number,depth:n+1,content:i,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=n)break;o.push(a),t.index+=1}return Rs(o,{index:0},n+1,r)}return t.index+=1,fe(i,s.number)}function hs(e,t){let n=e[t]??e[e.length-1];return R(n===void 0?1:n.number,"array length mismatch")}function ks(e,t){if(t===-1)throw R(0,"array header missing colon");let n=e.slice(0,t),r=G(n,"[",0);if(r===-1)throw R(0,"invalid array header");let s,i;try{[s,i]=ve(n.slice(0,r),0)}catch{throw R(0,"invalid array header")}let o=n.slice(r+1),a=o.indexOf("]");if(a===-1)throw R(0,"invalid array header");let c=o.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=o.slice(a+1),h;if(d==="")h=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{h=Go(d.slice(1,-1),f)}catch(y){throw R(0,y.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw R(0,"invalid array header");return{key:s,keyQuoted:i,len:l,delimiter:f,fields:h}}function vf(e){let t=G(e,"{",0);if(t===-1||!e.endsWith("}"))throw R(0,"invalid keyed map header");let n,r;try{[n,r]=ve(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;try{s=Go(e.slice(t+1,-1),C)}catch(i){throw R(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:n,keyQuoted:r,delimiter:C,fields:s}}function Go(e,t){let n=[],r=0;function s(a,c){let u=0;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 d=e[r];if(d==='"'){i();continue}if(d===t||d==="{"||d==="}")break;r+=1}let[f]=ve(e.slice(l,r),0);if(f==="")throw R(0,"invalid array header");if(u+=1,e[r]==="{"){r+=1;let d=n.length;if(s([...a,f],!0),e[r]!=="}"||n.length===d)throw R(0,"invalid array header");r+=1}else n.push([...a,f]);if(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===0)throw R(0,"invalid array header")}function i(){for(r+=1;r<e.length;){let a=e[r];if(r+=1,a==="\\")r+=1;else if(a==='"')return}}if(s([],!1),r!==e.length)throw R(0,"invalid array header");let o=new Set;for(let a=0;a<n.length;a+=1)for(let c=a+1;c<n.length;c+=1)if(Of(n[a],n[c])||ys(n[a],n[c])||ys(n[c],n[a]))throw R(0,"duplicate key");for(let a of n){let c=a.join("\0");if(o.has(c))throw R(0,"duplicate key");o.add(c)}return n}function Of(e,t){return e.length===t.length&&ys(e,t)}function ys(e,t){return t.every((n,r)=>e[r]===n)}function ws(e,t){return R(t,e.reason??String(e.message))}function qo(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(Pf)){en(e,o,r,s,i);return}}en(e,[t],r,s,i)}function en(e,t,n,r,s){let i=t[0],o=Object.prototype.hasOwnProperty.call(e,i);if(t.length===1){if(o&&r.strict)throw R(s,"duplicate key");Tt(e,i,n);return}if(o&&!vt(e[i])){if(r.strict)throw R(s,"path expansion conflict");Tt(e,i,{})}else o||Tt(e,i,{});en(e[i],t.slice(1),n,r,s)}function Pf(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function vt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function P(e,t={}){let n={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},r=[];return Array.isArray(e)?Es(r,void 0,e,0,!1,n):vt(e)?Ho(r,e,0,n):r.push(me(e,C)),r.join("")}function tn(e,t){e.push(" ".repeat(t*_s))}function Ho(e,t,n,r){for(let[s,i]of Object.entries(t))tn(e,n),bs(e,s,i,n,r)}function bs(e,t,n,r,s){if(Array.isArray(n)){Es(e,t,n,r,!1,s);return}if(vt(n)){let i=s.keyedMapCollapse?Cf(n,s):void 0;if(i!==void 0){e.push(ie(t),"{",i.fields.map(xs).join(C),`}:
15
+ `);for(let[o,a]of Object.entries(n))tn(e,r+1),e.push(ie(o),": ",i.paths.map(c=>me(zo(a,c),C)).join(C),`
16
+ `);return}e.push(ie(t),`:
17
+ `),Ho(e,n,r+1,s);return}e.push(ie(t),": ",me(n,C),`
18
+ `)}function Es(e,t,n,r,s,i){if(n.length===0){t!==void 0?e.push(ie(t),`: []
19
19
  `):s?e.push(`[0]:
20
20
  `):e.push(`[]
21
- `);return}if(n.every(Kt)){ts(e,t,n.length,void 0),e.push(" "),e.push(n.map(a=>ce(a,$)).join($)),e.push(`
22
- `);return}let o=s?void 0:So(n,i);if(o!==void 0){ts(e,t,n.length,o.fields),e.push(`
23
- `);for(let a of n)Yt(e,r+1),e.push(o.paths.map(c=>ce(xo(a,c),$)).join($)),e.push(`
24
- `);return}ts(e,t,n.length,void 0),e.push(`
25
- `);for(let a of n)Yt(e,r+1),Kd(e,a,r+1,i)}function Kd(e,t,n,r){if(Array.isArray(t)){e.push("- "),ls(e,void 0,t,n,!0,r);return}if(Rt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
26
- `);return}e.push("- "),is(e,s[0][0],s[0][1],n+1,r);for(let[i,o]of s.slice(1))Yt(e,n+1),is(e,i,o,n+1,r);return}e.push("- ",ce(t,$),`
27
- `)}function ts(e,t,n,r){t!==void 0&&e.push(te(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(ds).join($),"}"),e.push(":")}function So(e,t){let n=ko(e.map(r=>({value:r})),t);return n===void 0?void 0:{fields:n,paths:Eo(n)}}function zd(e,t){let n=Object.values(e);if(!(n.length<2))return So(n,t)}function ko(e,t){let n=e[0]?.value;if(!Rt(n))return;let r=Object.keys(n).map(s=>({key:s}));if(r.length!==0){for(let{value:s}of e)if(!Rt(s)||Object.keys(s).length!==r.length||r.some(o=>!Object.prototype.hasOwnProperty.call(s,o.key)))return;for(let s of r){let i=e.map(({value:a})=>({value:a[s.key]}));if(i.every(({value:a})=>Kt(a)))continue;if(!t.nestedTabularHeaders)return;let o=ko(i,t);if(o===void 0)return;s.children=o}return r}}function Eo(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children===void 0?[r]:Eo(n.children,r)})}function xo(e,t){let n=e;for(let r of t)n=n[r];return n}function ds(e){return e.children===void 0?te(e.key):`${te(e.key)}{${e.children.map(ds).join($)}}`}var os,Qt=E(()=>{Vt();Zr();os=2});var To=E(()=>{Qt()});function Qd(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 Lo(e,t){if(!Bo.test(e))throw P(t,"invalid tag")}function Xd(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n);if(!Bo.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 Zd(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),i=s.startsWith("~"),o=i?s.slice(1):s;if(!i&&o.startsWith("="))return null;if(!No.includes(o)&&o!=="")throw P(t,"invalid header delimiter");let a=o===""?$:o,c=n.slice(r+1),u=null;if(!i&&c.startsWith("<")){let f=c.indexOf(">");if(f===-1)throw P(t,"invalid tag");if(u=c.slice(1,f),Lo(u,t),o!=="")throw P(t,"invalid header delimiter");c=c.slice(f+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw P(t,"invalid header");let l=c.slice(1,-2),d;try{d=et(l,a,t).map(f=>Ee(f,t)[0])}catch(f){throw bt(f)}if(d.length===0||d.some(f=>f===""))throw P(t,"invalid header fields");return{delimiter:a,fields:d,fieldText:l,continuation:i,tag:u}}function ef(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 vo(e,t,n,r){let s;try{s=et(e,t,r)}catch(i){throw bt(i)}if(s.length!==n)throw P(r,"row arity mismatch");for(let i of s)try{ae(i,r)}catch(o){throw bt(o)}return s}function tf(e,t,n){let r={};return e.forEach((s,i)=>{try{_t(r,s,ae(t[i],n))}catch(o){throw bt(o)}}),r}function nf(e,t,n){if(e.startsWith("- "))throw P(t,"reserved line prefix");let r=Qd(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=Zd(e,t);if(s!==null)return s.continuation?(ef(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=Xd(e,t);if(i!==null){let o=n?.taggedLanes?.get(i.tag);if(o===void 0)throw P(t,"unknown tag");return{kind:"tagged-row",tag:i.tag,cells:vo(i.cellsText,o.delimiter,o.fields.length,t)}}if(n===null||n.delimiter===void 0)throw P(t,"row before header");return{kind:"row",cells:vo(e,n.delimiter,n.fields.length,t)}}function rf(e,t={}){let n=[],r=new Map,s=[],i=[],o=null,a=!1,c=!1;function u(y,h){let p=i.at(-1);if(p!==void 0&&p.lane===y.lane&&p.delimiter===y.delimiter&&p.fieldText===y.fieldText){p.rows.push(h);return}i.push({lane:y.lane,delimiter:y.delimiter,fields:y.fields,fieldText:y.fieldText,rows:[h]})}function l(){o!==null&&s.push({delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,lane:o.lane,rows:o.rows})}function d(y,h,p){let g=r.get(y);if(g===void 0){if(r.size>=Ao)throw P(p,"too many tagged lanes");g={segments:[],current:null},r.set(y,g),n.push(y)}else g.current!==null&&g.segments.push(g.current);g.current={lane:y,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(In(e).forEach((y,h)=>{let p=h+1;if(y==="")return;let g=o===null?{taggedLanes:r}:{delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,rowCount:o.rows.length,taggedLanes:r},b=nf(y,p,g);if(b.kind==="trailer"){l(),o=null;return}if(b.kind!=="continuation"){if(b.kind==="tag-header"){c=!0,d(b.header.tag,b.header,p);return}if(b.kind==="header"){l(),a||(n.push(null),a=!0),o={lane:null,delimiter:b.header.delimiter,fields:b.header.fields,fieldText:b.header.fieldText,rows:[]};return}if(b.kind==="tagged-row"){c=!0;let w=r.get(b.tag).current;w.rows.push(b.cells),u(w,b.cells);return}if(o===null)throw P(p,"row before header");o.rows.push(b.cells),u(o,b.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let f=[];l();for(let y of n){if(y===null){f.push(...s);continue}let h=r.get(y);f.push(...h.segments),h.current!==null&&f.push(h.current)}return t.preserveInterleaving===!0?i:f}function Nn(e){return rf(e).flatMap(t=>t.rows.map(n=>tf(t.fields,n,0)))}function sf(e){if(!No.includes(e))throw P(0,"invalid header delimiter")}function Po(e,t,n=!1){return`[${`${n?"~":""}${e===$?"":e}`}]{${t}}:
28
- `}function Oo(e,t){return`[]<${e}>{${t}}:
29
- `}function fs(e,t){return t.map(te).join(e)}function of(e){if(!Array.isArray(e)||e.length===0)throw P(0,"TOONL header requires fields");return e.map(t=>{let n;try{[n]=Ee(String(t),0)}catch(r){throw bt(r)}if(n==="")throw P(0,"TOONL header requires fields");return n})}function Do(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function $o(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw P(0,"TOONL continuation cadence must be positive")}function af(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function Co(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=>!Kt(e[n])))throw P(0,"TOONL rows must be flat objects");return t}function cf(e){return JSON.stringify([...e].sort())}function Io(e,t){let n=cf(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function An({delimiter:e=$,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){sf(e),$o(n),$o(r);let s=null,i="",o=new Map,a=0,c=0,u=0,l=new Map,d=!1,f={continuationEveryRows:n,continuationEveryBytes:r},y=()=>s===null||!t?"":`[=${a}]
30
- `,h=()=>af(f,c,u)?(c=0,u=0,Po(e,i,!0)):"",p=g=>{Lo(g,0);let b=l.get(g);if(b===void 0){if(l.size>=Ao)throw P(0,"too many tagged lanes");b={fields:null,fieldsByShape:new Map},l.set(g,b)}return b};return{push(g){if(d)throw P(0,"TOONL encoder is closed");let b=Io(Co(g),o),w="";(s===null||s.length!==b.length||s.some((v,C)=>v!==b[C]))&&(w+=y(),s=b,i=fs(e,s),a=0,c=0,u=0,w+=Po(e,i));let T=s.map(v=>ce(g[v],e));w+=h();let x=`${T.join(e)}
31
- `;return w+=x,a+=1,c+=1,u+=x.length,w},declareLane(g,b){if(d)throw P(0,"TOONL encoder is closed");let w=of(b),T=fs($,w),x=p(g);return Do(x.fields,w)?"":(x.fields=w,Oo(g,T))},pushTagged(g,b){if(d)throw P(0,"TOONL encoder is closed");let w=p(g),T=Io(Co(b),w.fieldsByShape),x=fs($,T),v=T.map(L=>ce(b[L],$)),C="";return Do(w.fields,T)||(w.fields=T,C+=Oo(g,x)),`${C}${g}:${v.join($)}
32
- `},end(){return d?"":(d=!0,y())}}}var No,Ao,Bo,v_,P_,Mo=E(()=>{Vt();Qt();Zr();No=[$,"|"," "],Ao=8,Bo=/^[A-Za-z0-9_-]+$/,v_=new TextEncoder,P_=new TextDecoder});var le=E(()=>{Vt();Qt();Qt();To();Mo()});function xe(e){return D(e,{keyedMapCollapse:!0})}var uf,lf,tR,Bn=E(()=>{le();ke();uf=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],lf=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/afk-history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.jsonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.jsonl",toonPath:".red/tmp/afk-supervisor.log.jsonl",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.json",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.json",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/tmp/statusline-cache.json",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/tmp/statusline-repo-cache.json",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"}],tR=[...uf,...lf]});function ps(e,t,n=Uo){let r=Math.max(0,Math.floor(e)),s=n in Fo?n:Uo,i=Fo[s],o=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:o,tokens_saved_high:a,dollars_saved_estimate_usd:ms(r,i),dollars_saved_low_usd:o==null?null:ms(o,i),dollars_saved_high_usd:a==null?null:ms(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:ff}}function ms(e,t){return mf(Math.max(0,e)/1e6*t)}function Xt(e){return`$${e.toFixed(6)}`}function mf(e){return Math.round(e*1e6)/1e6}var Uo,Fo,ff,gs=E(()=>{"use strict";Uo="gpt-5",Fo={"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},ff="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as pf,readFileSync as oR}from"node:fs";import{dirname as gf,join as hf}from"node:path";function Go(e,t){let n=e;for(let r=0;r<16;r++){let s=hf(n,t);if(pf(s))return s;let i=gf(n);if(i===n)break;n=i}return null}function yf(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Ln(e,t){let n=[];for(let r of e.split(`
33
- `)){let s=r.replace(/\r$/,""),i=s.trim();if(!i||i.startsWith("#"))continue;let o=s.indexOf(":");if(o<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,o).trim();if(!c)continue;let u=s.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(d=>d.key).join(".")===t)return yf(u)}}var Jo=E(()=>{});import{createConnection as wf}from"node:net";async function kt(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=wf(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>s(new Error("resident rsp server timed out"))),i.destroy()},n);function u(l){o||(o=!0,clearTimeout(c),l())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
34
- `)}),i.on("data",l=>{a+=l.toString("utf8");let d=a.indexOf(`
35
- `);if(d<0)return;let f=a.slice(0,d);u(()=>{try{r(JSON.parse(f))}catch(y){s(y)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var hs=E(()=>{});import{createHash as bf,randomUUID as Ko}from"node:crypto";import{spawn as zo}from"node:child_process";import{constants as ys}from"node:fs";import{readFileSync as _f}from"node:fs";import{mkdir as Mn,open as Rf,readFile as Yo,rename as Sf,rm as de,stat as kf,writeFile as Ef}from"node:fs/promises";import{tmpdir as xf}from"node:os";import{dirname as Me,join as Y,resolve as jn}from"node:path";import{fileURLToPath as Qo}from"node:url";function je(e){let t=Lf(e)??jn(e),n=Bf(t),r=F(t);return{rootDir:t,socketPath:Y(n,"rsp.sock"),pidPath:Y(n,"rsp.pid"),lockPath:Y(n,"rsp.lock"),wakeLockPath:Y(t,".red","tmp","rsp.wake.lock"),summaryPath:Y(r,"rsp-status-summary.json"),registryPath:Y(r,"rsp-resident.pid.json")}}async function Un(e,t){if(await Mn(Me(e.socketPath),{recursive:!0,mode:448}),await Wo(e.socketPath,t))return;await Ho(e,t);let n=await na(e.lockPath);if(n)try{if(await Wo(e.socketPath,t))return;await Ho(e,t),await Of(e.socketPath);let r=Df(e,t);await qo(e.socketPath,r);return}finally{await n.close(),await de(e.lockPath,{force:!0})}await qo(e.socketPath)}async function tt(e,t=200){try{return await Zo(e,t)!=null}catch{return!1}}async function Zo(e,t=200){let n=await kt({socketPath:e,timeoutMs:t},{id:Ko(),op:"ping"});return n.ok?oa(n.value)?{version:Ff(n.value.version)}:{}:null}async function Fn(e,t){if(await Mn(Me(e.socketPath),{recursive:!0,mode:448}),await tt(e.socketPath,50))return!1;let n=await na(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=sa(t);return zo(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 ea(e,t){try{await Un(e,t)}finally{await de(e.wakeLockPath,{force:!0})}}async function en(e){try{let t=If(await Yo(e,"utf8"));return Gf(t)?t:null}catch{return null}}async function Gn(e,t){let n={version:Xo,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 Mn(Me(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await Ef(r,`${D(n)}
36
- `,{encoding:"utf8",mode:384}),await Sf(r,e)}async function Jn(e,t=process.pid){try{let n=await en(e);if(n&&n.pid!==t)return;await de(e,{force:!0})}catch{}}async function Zt(e){let t=await en(e.registryPath);if(!t)try{return await Yo(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Et(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await tt(t.socket_path,100);return n&&await Af(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 ta(e){let t=await Zt(e);return t.state==="registered-dead"||t.state==="invalid"?(await de(e.registryPath,{force:!0}),await Zt(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await ra(t.entry.pid),await de(e.registryPath,{force:!0}),await de(t.entry.socket_path,{force:!0}),await Zt(e)):t}async function qo(e,t){let n=Date.now()+Pf(),r;for(;Date.now()<n;){if(await tt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(ws("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(ws("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?ws("resident rsp server did not start",t):"resident rsp server did not start")}function Pf(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:vf}async function Of(e){await de(e,{force:!0})}async function na(e){await Mn(Me(e),{recursive:!0,mode:448});try{return await Rf(e,ys.O_CREAT|ys.O_EXCL|ys.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Df(e,t){let[n,r]=sa(t),s=process.env.RSP_DEBUG==="1",i,o="",a=zo(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=>{i=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{o=Cf(`${o}${c}`,$f)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function ws(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:
21
+ `);return}if(n.every(Xt)){gs(e,t,n.length,void 0),e.push(" "),e.push(n.map(a=>me(a,C)).join(C)),e.push(`
22
+ `);return}let o=s?void 0:Wo(n,i);if(o!==void 0){gs(e,t,n.length,o.fields),e.push(`
23
+ `);for(let a of n)tn(e,r+1),e.push(o.paths.map(c=>me(zo(a,c),C)).join(C)),e.push(`
24
+ `);return}gs(e,t,n.length,void 0),e.push(`
25
+ `);for(let a of n)tn(e,r+1),Df(e,a,r+1,i)}function Df(e,t,n,r){if(Array.isArray(t)){e.push("- "),Es(e,void 0,t,n,!0,r);return}if(vt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
26
+ `);return}e.push("- "),bs(e,s[0][0],s[0][1],n+1,r);for(let[i,o]of s.slice(1))tn(e,n+1),bs(e,i,o,n+1,r);return}e.push("- ",me(t,C),`
27
+ `)}function gs(e,t,n,r){t!==void 0&&e.push(ie(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(xs).join(C),"}"),e.push(":")}function Wo(e,t){let n=Vo(e.map(r=>({value:r})),t);return n===void 0?void 0:{fields:n,paths:Ko(n)}}function Cf(e,t){let n=Object.values(e);if(!(n.length<2))return Wo(n,t)}function Vo(e,t){let n=e[0]?.value;if(!vt(n))return;let r=Object.keys(n).map(s=>({key:s}));if(r.length!==0){for(let{value:s}of e)if(!vt(s)||Object.keys(s).length!==r.length||r.some(o=>!Object.prototype.hasOwnProperty.call(s,o.key)))return;for(let s of r){let i=e.map(({value:a})=>({value:a[s.key]}));if(i.every(({value:a})=>Xt(a)))continue;if(!t.nestedTabularHeaders)return;let o=Vo(i,t);if(o===void 0)return;s.children=o}return r}}function Ko(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children===void 0?[r]:Ko(n.children,r)})}function zo(e,t){let n=e;for(let r of t)n=n[r];return n}function xs(e){return e.children===void 0?ie(e.key):`${ie(e.key)}{${e.children.map(xs).join(C)}}`}var _s,nn=E(()=>{Zt();ms();_s=2});var Yo=E(()=>{nn()});function Af(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let n=e.slice(2,-1);if(!/^[0-9]+$/.test(n))throw O(t,"invalid trailer count");return Number.parseInt(n,10)}function aa(e,t){if(!oa.test(e))throw O(t,"invalid tag")}function Nf(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n);if(!oa.test(r)){if(/^[A-Za-z0-9_-]/.test(r)&&/^[^,[\]|{}:\t ]+$/.test(r))throw O(t,"invalid tag");return null}return{tag:r,cellsText:e.slice(n+1)}}function $f(e,t){if(!e.startsWith("["))return null;let n=e.slice(1),r=n.indexOf("]");if(r===-1)throw O(t,"invalid header");let s=n.slice(0,r),i=s.startsWith("~"),o=i?s.slice(1):s;if(!i&&o.startsWith("="))return null;if(!sa.includes(o)&&o!=="")throw O(t,"invalid header delimiter");let a=o===""?C:o,c=n.slice(r+1),u=null;if(!i&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw O(t,"invalid tag");if(u=c.slice(1,d),aa(u,t),o!=="")throw O(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw O(t,"invalid header");let l=c.slice(1,-2),f;try{f=tt(l,a,t).map(d=>ve(d,t)[0])}catch(d){throw xt(d)}if(f.length===0||f.some(d=>d===""))throw O(t,"invalid header fields");return{delimiter:a,fields:f,fieldText:l,continuation:i,tag:u}}function Bf(e,t,n){if(e===null||e.delimiter===void 0)throw O(n,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw O(n,"continuation header mismatch")}function Qo(e,t,n,r){let s;try{s=tt(e,t,r)}catch(i){throw xt(i)}if(s.length!==n)throw O(r,"row arity mismatch");for(let i of s)try{fe(i,r)}catch(o){throw xt(o)}return s}function Lf(e,t,n){let r={};return e.forEach((s,i)=>{try{Tt(r,s,fe(t[i],n))}catch(o){throw xt(o)}}),r}function Mf(e,t,n){if(e.startsWith("- "))throw O(t,"reserved line prefix");let r=Af(e,t);if(r!==null){if(n===null||n.delimiter===void 0)throw O(t,"trailer without header");if(n.rowCount!==r)throw O(t,"trailer count mismatch");return{kind:"trailer"}}let s=$f(e,t);if(s!==null)return s.continuation?(Bf(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=Nf(e,t);if(i!==null){let o=n?.taggedLanes?.get(i.tag);if(o===void 0)throw O(t,"unknown tag");return{kind:"tagged-row",tag:i.tag,cells:Qo(i.cellsText,o.delimiter,o.fields.length,t)}}if(n===null||n.delimiter===void 0)throw O(t,"row before header");return{kind:"row",cells:Qo(e,n.delimiter,n.fields.length,t)}}function jf(e,t={}){let n=[],r=new Map,s=[],i=[],o=null,a=!1,c=!1;function u(h,y){let m=i.at(-1);if(m!==void 0&&m.lane===h.lane&&m.delimiter===h.delimiter&&m.fieldText===h.fieldText){m.rows.push(y);return}i.push({lane:h.lane,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[y]})}function l(){o!==null&&s.push({delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,lane:o.lane,rows:o.rows})}function f(h,y,m){let g=r.get(h);if(g===void 0){if(r.size>=ia)throw O(m,"too many tagged lanes");g={segments:[],current:null},r.set(h,g),n.push(h)}else g.current!==null&&g.segments.push(g.current);g.current={lane:h,delimiter:y.delimiter,fields:y.fields,fieldText:y.fieldText,rows:[]},g.delimiter=y.delimiter,g.fields=y.fields,g.fieldText=y.fieldText}if(Fn(e).forEach((h,y)=>{let m=y+1;if(h==="")return;let g=o===null?{taggedLanes:r}:{delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,rowCount:o.rows.length,taggedLanes:r},b=Mf(h,m,g);if(b.kind==="trailer"){l(),o=null;return}if(b.kind!=="continuation"){if(b.kind==="tag-header"){c=!0,f(b.header.tag,b.header,m);return}if(b.kind==="header"){l(),a||(n.push(null),a=!0),o={lane:null,delimiter:b.header.delimiter,fields:b.header.fields,fieldText:b.header.fieldText,rows:[]};return}if(b.kind==="tagged-row"){c=!0;let w=r.get(b.tag).current;w.rows.push(b.cells),u(w,b.cells);return}if(o===null)throw O(m,"row before header");o.rows.push(b.cells),u(o,b.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let h of n){if(h===null){d.push(...s);continue}let y=r.get(h);d.push(...y.segments),y.current!==null&&d.push(y.current)}return t.preserveInterleaving===!0?i:d}function Gn(e){return jf(e).flatMap(t=>t.rows.map(n=>Lf(t.fields,n,0)))}function Uf(e){if(!sa.includes(e))throw O(0,"invalid header delimiter")}function Zo(e,t,n=!1){return`[${`${n?"~":""}${e===C?"":e}`}]{${t}}:
28
+ `}function Xo(e,t){return`[]<${e}>{${t}}:
29
+ `}function Ts(e,t){return t.map(ie).join(e)}function Jf(e){if(!Array.isArray(e)||e.length===0)throw O(0,"TOONL header requires fields");return e.map(t=>{let n;try{[n]=ve(String(t),0)}catch(r){throw xt(r)}if(n==="")throw O(0,"TOONL header requires fields");return n})}function ea(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function ta(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw O(0,"TOONL continuation cadence must be positive")}function Ff(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function na(e){if(e===null||typeof e!="object"||Array.isArray(e))throw O(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw O(0,"TOONL output requires object rows");if(t.some(n=>!Xt(e[n])))throw O(0,"TOONL rows must be flat objects");return t}function Gf(e){return JSON.stringify([...e].sort())}function ra(e,t){let n=Gf(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function qn({delimiter:e=C,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){Uf(e),ta(n),ta(r);let s=null,i="",o=new Map,a=0,c=0,u=0,l=new Map,f=!1,d={continuationEveryRows:n,continuationEveryBytes:r},h=()=>s===null||!t?"":`[=${a}]
30
+ `,y=()=>Ff(d,c,u)?(c=0,u=0,Zo(e,i,!0)):"",m=g=>{aa(g,0);let b=l.get(g);if(b===void 0){if(l.size>=ia)throw O(0,"too many tagged lanes");b={fields:null,fieldsByShape:new Map},l.set(g,b)}return b};return{push(g){if(f)throw O(0,"TOONL encoder is closed");let b=ra(na(g),o),w="";(s===null||s.length!==b.length||s.some((v,I)=>v!==b[I]))&&(w+=h(),s=b,i=Ts(e,s),a=0,c=0,u=0,w+=Zo(e,i));let T=s.map(v=>me(g[v],e));w+=y();let x=`${T.join(e)}
31
+ `;return w+=x,a+=1,c+=1,u+=x.length,w},declareLane(g,b){if(f)throw O(0,"TOONL encoder is closed");let w=Jf(b),T=Ts(C,w),x=m(g);return ea(x.fields,w)?"":(x.fields=w,Xo(g,T))},pushTagged(g,b){if(f)throw O(0,"TOONL encoder is closed");let w=m(g),T=ra(na(b),w.fieldsByShape),x=Ts(C,T),v=T.map(M=>me(b[M],C)),I="";return ea(w.fields,T)||(w.fields=T,I+=Xo(g,x)),`${I}${g}:${v.join(C)}
32
+ `},end(){return f?"":(f=!0,h())}}}var sa,ia,oa,AR,NR,ca=E(()=>{Zt();nn();ms();sa=[C,"|"," "],ia=8,oa=/^[A-Za-z0-9_-]+$/,AR=new TextEncoder,NR=new TextDecoder});var X=E(()=>{Zt();nn();nn();Yo();ca()});function K(e){return P(e,{keyedMapCollapse:!0})}var qf,Hf,aS,rn=E(()=>{X();Te();qf=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],Hf=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/afk-history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.jsonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.jsonl",toonPath:".red/tmp/afk-supervisor.log.jsonl",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.json",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.json",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/tmp/statusline-cache.json",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/tmp/statusline-repo-cache.json",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"}],aS=[...qf,...Hf]});function Os(e,t,n=la){let r=Math.max(0,Math.floor(e)),s=n in da?n:la,i=da[s],o=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:o,tokens_saved_high:a,dollars_saved_estimate_usd:vs(r,i),dollars_saved_low_usd:o==null?null:vs(o,i),dollars_saved_high_usd:a==null?null:vs(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:Vf}}function vs(e,t){return Kf(Math.max(0,e)/1e6*t)}function sn(e){return`$${e.toFixed(6)}`}function Kf(e){return Math.round(e*1e6)/1e6}var la,da,Vf,Ps=E(()=>{"use strict";la="gpt-5",da={"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},Vf="estimate derived from byte-based token estimate when token counts are estimated"});function zf(e){return e==="no-op"?0:e==="usage"?2:1}function A(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??zf(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=Yf(e.diagnostics,3)),Buffer.from(`${P(t)}
33
+ `)}function oe(e,t,n){let s=([n,t].find(o=>o.trim())??"").trim(),i=s.toLowerCase();return/\bgh\b/.test(e)&&(i.includes("gh_token")||i.includes("not logged in")||i.includes("authentication"))?{command:e,category:"real-error",error:on(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&i.includes("rate limit")?{command:e,category:"real-error",error:on(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:i.includes("not a git repository")?{command:e,category:"real-error",error:on(s)||"not a git repository",help:"git status",diagnostics:s}:i.includes("repository not found")||i.includes("could not resolve host")?{command:e,category:"real-error",error:on(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:on(s)||"command failed",help:`${e} --help`,diagnostics:s}}function Hn(e,t,n,r){return A({command:e,category:"usage",error:`unknown flag: ${t}`,help:r,validFlags:n})}function on(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Yf(e,t){return e.split(/\r?\n/).slice(0,t).join(`
34
+ `).trim()}var nt=E(()=>{"use strict";X()});import{existsSync as Qf,readFileSync as pS}from"node:fs";import{dirname as Zf,join as Xf}from"node:path";function fa(e,t){let n=e;for(let r=0;r<16;r++){let s=Xf(n,t);if(Qf(s))return s;let i=Zf(n);if(i===n)break;n=i}return null}function em(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Wn(e,t){let n=[];for(let r of e.split(`
35
+ `)){let s=r.replace(/\r$/,""),i=s.trim();if(!i||i.startsWith("#"))continue;let o=s.indexOf(":");if(o<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,o).trim();if(!c)continue;let u=s.slice(o+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 em(u)}}var ma=E(()=>{});import{createConnection as tm}from"node:net";async function Pt(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=tm(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>s(new Error("resident rsp server timed out"))),i.destroy()},n);function u(l){o||(o=!0,clearTimeout(c),l())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
36
+ `)}),i.on("data",l=>{a+=l.toString("utf8");let f=a.indexOf(`
37
+ `);if(f<0)return;let d=a.slice(0,f);u(()=>{try{r(JSON.parse(d))}catch(h){s(h)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var Ds=E(()=>{});import{createHash as nm,randomUUID as wa}from"node:crypto";import{spawn as ba}from"node:child_process";import{constants as Cs}from"node:fs";import{readFileSync as rm}from"node:fs";import{mkdir as Vn,open as sm,readFile as _a,rename as im,rm as pe,stat as om,writeFile as am}from"node:fs/promises";import{tmpdir as cm}from"node:os";import{dirname as Ue,join as ee,resolve as Kn}from"node:path";import{fileURLToPath as Ra}from"node:url";function Je(e){let t=_m(e)??Kn(e),n=bm(t),r=F(t);return{rootDir:t,socketPath:ee(n,"rsp.sock"),pidPath:ee(n,"rsp.pid"),lockPath:ee(n,"rsp.lock"),wakeLockPath:ee(t,".red","tmp","rsp.wake.lock"),summaryPath:ee(r,"rsp-status-summary.json"),registryPath:ee(r,"rsp-resident.pid.json")}}async function zn(e,t){if(await Vn(Ue(e.socketPath),{recursive:!0,mode:448}),await ha(e.socketPath,t))return;await ga(e,t);let n=await Ta(e.lockPath);if(n)try{if(await ha(e.socketPath,t))return;await ga(e,t),await fm(e.socketPath);let r=mm(e,t);await pa(e.socketPath,r);return}finally{await n.close(),await pe(e.lockPath,{force:!0})}await pa(e.socketPath)}async function rt(e,t=200){try{return await ka(e,t)!=null}catch{return!1}}async function ka(e,t=200){let n=await Pt({socketPath:e,timeoutMs:t},{id:wa(),op:"ping"});return n.ok?Da(n.value)?{version:Em(n.value.version)}:{}:null}async function Yn(e,t){if(await Vn(Ue(e.socketPath),{recursive:!0,mode:448}),await rt(e.socketPath,50))return!1;let n=await Ta(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=Oa(t);return ba(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 Ea(e,t){try{await zn(e,t)}finally{await pe(e.wakeLockPath,{force:!0})}}async function cn(e){try{let t=hm(await _a(e,"utf8"));return xm(t)?t:null}catch{return null}}async function Qn(e,t){let n={version:Sa,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 Vn(Ue(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await am(r,`${P(n)}
38
+ `,{encoding:"utf8",mode:384}),await im(r,e)}async function Zn(e,t=process.pid){try{let n=await cn(e);if(n&&n.pid!==t)return;await pe(e,{force:!0})}catch{}}async function an(e){let t=await cn(e.registryPath);if(!t)try{return await _a(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Dt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await rt(t.socket_path,100);return n&&await wm(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 xa(e){let t=await an(e);return t.state==="registered-dead"||t.state==="invalid"?(await pe(e.registryPath,{force:!0}),await an(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await va(t.entry.pid),await pe(e.registryPath,{force:!0}),await pe(t.entry.socket_path,{force:!0}),await an(e)):t}async function pa(e,t){let n=Date.now()+dm(),r;for(;Date.now()<n;){if(await rt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Is("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Is("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Is("resident rsp server did not start",t):"resident rsp server did not start")}function dm(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:lm}async function fm(e){await pe(e,{force:!0})}async function Ta(e){await Vn(Ue(e),{recursive:!0,mode:448});try{return await sm(e,Cs.O_CREAT|Cs.O_EXCL|Cs.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function mm(e,t){let[n,r]=Oa(t),s=process.env.RSP_DEBUG==="1",i,o="",a=ba(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=>{i=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{o=gm(`${o}${c}`,pm)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function Is(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:
37
39
  ${s}`),r.join(`
38
- `)}function Cf(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function If(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return ue(t)}}async function Ho(e,t){try{let n=await en(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Et(n.pid)){await de(e.registryPath,{force:!0});return}if(await tt(n.socket_path,100))return;if(ia(t.clientVersion,n.resident_version)&&(await Nf(n.pid,1500),!Et(n.pid))){await de(e.registryPath,{force:!0});return}await ra(n.pid),await de(e.registryPath,{force:!0})}catch{}}function Et(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function ra(e){if(!Et(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Et(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Nf(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Et(e))return;await new Promise(r=>setTimeout(r,50))}}async function Af(e){if(!e.startsWith("file://"))return!1;try{return await kf(Qo(e)),!1}catch(t){return t.code==="ENOENT"}}function sa(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?jn(process.argv[1]):Qo(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Bf(e){let t=bf("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=Y(n,"red-skills",t);if(Y(s,"rsp.sock").length<Tf)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return Y(xf(),`red-skills-${r}`,t)}function Lf(e){let t=jn(e);for(let n=0;n<32;n++){try{let s=bs(Y(t,".git"));if(s!=null)return Mf(t,s)??t;if(bs(Y(t,".git","HEAD"))!=null||bs(Y(t,".red","config.yaml"))!=null)return t}catch{}let r=Me(t);if(r===t)return null;t=r}return null}function Mf(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=jn(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?Me(Me(Me(r))):null}function bs(e){try{return _f(e,"utf8")}catch{return null}}async function Wo(e,t){let n=await Zo(e).catch(()=>null);return n?ia(t.clientVersion,n.version)?(await jf(e,t.clientVersion),await Jf(e),!1):!0:!1}async function jf(e,t){try{await kt({socketPath:e,timeoutMs:200},{id:Ko(),op:"handover",clientVersion:t})}catch{}}function ia(e,t){return!e||!t?!1:Uf(e,t)>0}function Uf(e,t){let n=Vo(e),r=Vo(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Vo(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 oa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ff(e){return typeof e=="string"&&e.length>0?e:void 0}function Gf(e){return oa(e)&&e.version===Xo&&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 Jf(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await tt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Tf,Xo,vf,$f,qn=E(()=>{le();ke();hs();Tf=108,Xo=1,vf=5e3;$f=8*1024});var da={};N(da,{DEFAULT_RSP_BYTE_BUDGET:()=>De,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Oe,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ve,DEFAULT_RSP_IDLE_MS:()=>Vn,DEFAULT_RSP_STORE_PATH:()=>_s,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Wn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>ca,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>ua,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>Hn,DEFAULT_RSP_TTL_DAYS:()=>Pe,MIN_RSP_IDLE_MS:()=>la,resolveRspConfig:()=>$e});import{existsSync as qf,readFileSync as Hf}from"node:fs";import{join as Wf,resolve as aa}from"node:path";function $e(e,t,n){let r=Go(aa(e),Wf(".red","config.yaml")),s=r?Hf(r,"utf8"):"",i=Ln(s,"rsp.enabled")==="true",o=Ln(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=Te(fe(s,"rsp.ttlDays"),Pe),u=Te(tn(t.RSP_EPHEMERAL_TTL_HOURS)??fe(s,"rsp.ephemeralTtlHours"),Oe),l=Te(fe(s,"rsp.byteBudget"),De),d=Te(fe(s,"rsp.telemetryTtlDays"),Hn),f=Te(fe(s,"rsp.telemetryByteBudget")??fe(s,"rsp.byteBudget"),Wn),y=Te(tn(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??fe(s,"rsp.telemetryDrainIntervalMs"),ca),h=Te(tn(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??fe(s,"rsp.telemetryDrainTimeoutMs"),ua),p=Vf(tn(t.RSP_IDLE_MS)??fe(s,"rsp.idleMs"),Vn,la),g=Te(tn(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??fe(s,"rsp.heavyGitByteThreshold"),ve),b=je(e).rootDir,w=n??t.RSP_STORE_URI??`file://${go(aa(b),qf)}`;return{enabled:i,proxyEnabled:a,storeUri:w,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:d,telemetryByteBudget:f,telemetryDrainIntervalMs:y,telemetryDrainTimeoutMs:h,idleMs:p,heavyGitByteThreshold:g}}function fe(e,t){let n=Ln(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Te(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Vf(e,t,n){let r=Te(e,t);return Math.max(r,n)}function tn(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var ve,_s,Pe,Oe,De,Hn,Wn,ca,ua,Vn,la,me=E(()=>{"use strict";Jo();ke();qn();ve=8*1024,_s=mo,Pe=7,Oe=6,De=64*1024*1024,Hn=90,Wn=4*1024*1024,ca=3e4,ua=2e3,Vn=5*6e4,la=5e3});var un={};N(un,{DEFAULT_RSP_BYTE_BUDGET:()=>De,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Oe,DEFAULT_RSP_TTL_DAYS:()=>Pe,RSP_ELISION_COLLECTION:()=>J,RspElisionStore:()=>cn,ensureReddbBinaryFromWarmCache:()=>va,storageClassForCommand:()=>rt});import{createHash as er}from"node:crypto";import{spawnSync as an}from"node:child_process";import{existsSync as xs}from"node:fs";import{mkdir as _a,readFile as Ra,readdir as Sa,rename as Yn,rm as nn,stat as Rs,writeFile as Kf}from"node:fs/promises";import{homedir as zf}from"node:os";import{basename as ka,dirname as Ea,join as rn}from"node:path";import{fileURLToPath as Yf}from"node:url";import{gunzipSync as Qf,gzipSync as Xf}from"node:zlib";function fa(e,t){return`el:${er("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 nt(e){return`record:${e.slice(3)}`}function xt(e){return`expired:${e.slice(3)}`}function Ss(){return"index:v1"}function Zf(e){return`blob:${e}`}function em(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function rt(e){let t=e.trim().split(/\s+/).filter(Boolean),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":tr(t)?"re-executable":"ephemeral"}return"ephemeral"}function Kn(e){return nr(e.storage_class)?e.storage_class:rt(e.command)}function tm(e){return nr(e.storage_class)?e.storage_class:rt(e.command)}function ma(e){let t=om(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=tm(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 pa(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 Tt(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 ga(e,t){let n=process.cwd(),r=an("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=an("git",["hash-object","-w","--stdin"],{cwd:n,input:e,encoding:"buffer"});if(s.status!==0)return null;let i=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(i)?{kind:"git-blob",command:t,cwd:n,object_ids:[i],working_tree_fingerprint:nm(n),original_bytes:e.length}:null}function nm(e){let t=ks(e,["rev-parse","HEAD"])||"unborn",n=ks(e,["write-tree"])||"no-index",r=ks(e,["status","--porcelain=v1","-z"])||"";return er("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function ks(e,t){let n=an("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function ha(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!tr(n))return null;let r=xa(process.cwd(),n,e.length);return!r||vt(r)!==vt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:n,original_bytes:e.length,content_hash:vt(e)}}function tr(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 vt(e){return er("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function ya(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 wa(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 ba(e,t,n){let r=Xf(e);return{key:Zf(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function rm(e){try{let t=Qf(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function sm(e){let t=e.object_ids[0];if(!t)return null;let n=an("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 im(e){if(!tr(e.argv))return null;let t=xa(e.cwd,e.argv,e.original_bytes);return t?vt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
39
- `,"utf8"),t]):null}function xa(e,t,n){let r=t[0];if(!r)return null;let s=an(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 om(){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 Xn(e){return/^el:[a-f0-9]{12}$/.test(e)}function Zn(e){return/^blob:[a-f0-9]{64}$/.test(e)}function am(e){if(!sn(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let n=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:n,options:{includeSuperseded:e.includeSuperseded===!0,scope:sn(e.scope)?e.scope:void 0,ranking:sn(e.ranking)?e.ranking:void 0}}}function cm(e){if(!sn(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let 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 sn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function um(e,t,n){let r=[],s=new Set([".git","node_modules",".red",...n]);async function i(o){if(r.length>=t)return;let a=await Sa(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let u=rn(o,c.name);c.isDirectory()?await i(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 i(e),r}function lm(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,s=sn(r)?r:{},i=String(e.label??e.LABEL??s.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??i),c=`${i} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(n),rid:n,label:i,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function Es(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Qn(e){if(!Q(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=fm(e.derivation_recipe),r=mm(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&Zn(s);return e.collection===J&&typeof e.handle=="string"&&Xn(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Ps(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&Zn(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&dm(e.loss)&&(e.storage_class===void 0||nr(e.storage_class))}function Ta(e){return!Q(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!Q(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&Xn(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||nr(t.storage_class))&&(n===void 0||typeof n=="string"&&Zn(n))})}function Ts(e){return Q(e)&&typeof e.key=="string"&&Zn(e.key)&&Ps(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 vs(e){return Q(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function dm(e){return Q(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function nr(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function fm(e){return Q(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 mm(e){return Q(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&tr(e.argv)&&typeof e.original_bytes=="number"&&Ps(e.content_hash)}function Ps(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function Q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function pm(e){try{let n=await Ra(e,"utf8");if(n.trim()==="")return zn();let r=JSON.parse(n);if(ym(r))return{...r,blobs:r.blobs??{}}}catch(n){if(n.code==="ENOENT"){let s=zn();return await on(e,s),s}let r=zn();return await on(e,r),r}let t=zn();return await on(e,t),t}async function gm(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function hm(e){return ka(e)==="red-skills.rdb"}async function va(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?rn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):rn(zf(),".cache","red-skills","bundles")),t=rn(e,"reddb"),n;try{n=await Sa(t)}catch{return}n.sort().reverse();for(let r of n){let s=rn(t,r,process.platform==="win32"?"red.exe":"red");if(xs(s)){process.env.REDDB_BIN=s;return}}}async function on(e,t){await _a(Ea(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Kf(n,`${JSON.stringify(t)}
40
- `,"utf8"),await Yn(n,e)}function zn(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function ym(e){return Q(e)&&e.version===1&&Q(e.records)&&Object.values(e.records).every(Qn)&&(e.blobs===void 0||Q(e.blobs)&&Object.values(e.blobs).every(Ts))&&Q(e.tombstones)&&Object.values(e.tombstones).every(vs)&&Ta(e.index)}function wm(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Yf(e)}var J,cn,st=E(()=>{"use strict";Xr();me();J="rsp_elisions_v1",cn=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=wm(t.uri),r=await gm(n),s=new e(r,{uri:t.uri,ttlDays:Es(t.ttlDays,Pe),ephemeralTtlHours:Es(t.ephemeralTtlHours,Oe),byteBudget:Es(t.byteBudget,De),now:t.now??(()=>new Date)});return hm(r)?(await va(),await _a(Ea(r),{recursive:!0}),s.db=await yt(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await pm(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(),i=s.toISOString(),o=fa(r,n),a=nt(o),c=rt(n.command),u=c==="derivable"?ga(r,n.command):null,l=c==="re-executable"?ha(r,n.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=pa(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),y=vt(r),h=d==="ephemeral"?ba(r,y,i):null,p=ya(r,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:J,handle:o,original_bytes:r.length,stored_bytes:p,command:n.command,created_at:i,expires_at:f,loss:n.loss,storage_class:d,content_hash:y,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[xt(o)],this.document.records[a]=g,this.upsertIndex({handle:o,key:a,bytes:p,raw_bytes:r.length,command:n.command,created_at:i,expires_at:f,storage_class:d,blob_key:h?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!Xn(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[nt(t)];if(!Qn(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:nt(r.handle),bytes:wa(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Kn(r),blob_key:r.blob_key},r.expires_at),await this.flush(),i}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:J,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Kn(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:Tt(n),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget,storage_classes:ma(n)}}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 o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=Tt(s);for(s.sort((o,a)=>o.created_at.localeCompare(a.created_at));i>this.opts.byteBudget&&s.length>0;){let o=s.shift();this.expireEntry(o,n),i=Tt(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[xt(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[xt(t)];return vs(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return sm(t.derivation_recipe);if(t.reexecution_recipe)return im(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return Ts(n)?rm(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 on(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Rs(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")),i={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}},o=Buffer.byteLength(`${JSON.stringify(i)}
41
- `,"utf8");o>this.opts.byteBudget||o>=t||(this.document=i,await on(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(J)}async kvGet(t){let 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===J);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${J}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${J}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${J}`),await this.db.query(`CREATE KV IF NOT EXISTS ${J}`)}}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=fa(r,n),a=nt(o),c=rt(n.command),u=c==="derivable"?ga(r,n.command):null,l=c==="re-executable"?ha(r,n.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=pa(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),y=vt(r),h=d==="ephemeral"?ba(r,y,i):null,p=ya(r,u,l,h);h&&!Ts(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:J,handle:o,original_bytes:r.length,stored_bytes:p,command:n.command,created_at:i,expires_at:f,loss:n.loss,storage_class:d,content_hash:y,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(xt(o)),await this.kv().put(a,g);let w=(await this.readRedDbIndex()).records.filter(T=>T.handle!==o);return w.push({handle:o,key:a,bytes:p,raw_bytes:r.length,command:n.command,created_at:i,expires_at:f,storage_class:d,blob_key:h?.key}),await this.pruneRedDb({version:1,records:w},!0),await this.assertRedDbMintPersisted(o,p),o}async getRedDb(t){if(!Xn(t))return null;let n=await this.kvGet(xt(t));if(vs(n))return n;let r=await this.kvGet(nt(t));if(!Qn(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:nt(r.handle),bytes:wa(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Kn(r),blob_key:r.blob_key},r.expires_at),i}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:J,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Kn(r)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Tt(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:ma(t.records)}}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=am(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=cm(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 um(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await Ra(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=ka(s),c=er("sha256").update("resident-memory-v1\0").update(s).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:o,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}},d=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),f=Number(d.rows[0]?.red_entity_id??d.rows[0]?.rid);Number.isFinite(f)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,f),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),i=r.rows.map(o=>lm(o,s)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,n)));return{hits:i,context_md:i.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
42
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Ss());return Ta(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Ss(),t)}async pruneRedDb(t,n=!1){let r=this.opts.now().getTime(),s=new Date(r).toISOString(),i=[];for(let c of t.records)Date.parse(c.expires_at)<=r?await this.expireRedDbEntry(c,c.expires_at):i.push(c);let o=Tt(i);for(i.sort((c,u)=>c.created_at.localeCompare(u.created_at));o>this.opts.byteBudget&&i.length>0;){let c=i.shift();await this.expireRedDbEntry(c,s),o=Tt(i)}let a={version:1,records:i};return(n||i.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(i),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await Rs(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()}`,i=`${this.path}.${s}.compact`,o=`${this.path}.${s}.old`;await nn(i,{force:!0}),await nn(o,{force:!0});let a=await yt(`file://${i}`);try{for(let u of r){await a.query(`CREATE KV IF NOT EXISTS ${em(u.name)}`);let l=a.kv(u.name);for(let d of u.items)await l.put(d.key,d.value)}}finally{await a.close()}let c=await Rs(i).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=n){await nn(i,{force:!0});return}await this.db.close(),this.db=void 0;try{await Yn(this.path,o),await Yn(i,this.path),await nn(o,{force:!0})}catch(u){throw!xs(this.path)&&xs(o)&&await Yn(o,this.path),await nn(i,{force:!0}),u}finally{this.db=await yt(`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(i=>i.model!=="kv"))return null;let r=[],s=!1;for(let i of n){let o=String(i.name??"").trim();if(o===J){r.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(o).list({limit:1e4});if(a.items.length>=1e4)return null;r.push({name:o,items:a.items})}return s||r.push(await this.snapshotRedDbElisions(t)),r}async snapshotRedDbElisions(t){let n=[{key:Ss(),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 i=await this.kvGet(s);i!=null&&n.push({key:s,value:i})}return{name:J,items:n}}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(xt(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(nt(t));if(!Qn(r))throw new Error(`rsp resident failed to persist elision record ${t}`);let i=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!i||i.bytes!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var pn={};N(pn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>X,RSP_DECISIONS_COLLECTION:()=>q,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Fe,RSP_TELEMETRY_INDEX_COLLECTION:()=>fn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ge,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>ja,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Ua,RSP_TELEMETRY_SPOOL_FILE:()=>Ma,appendTelemetryEvent:()=>Ie,appendTelemetryEventSync:()=>mn,drainTelemetrySpool:()=>As,parseTelemetryEvent:()=>Ct,readAccountingLaneStats:()=>Bs,readTelemetryGainsReport:()=>Ls,readTelemetryStats:()=>ar,takeTelemetrySpool:()=>xm,telemetryLegacySpoolPath:()=>or,telemetrySpoolCorrectionsPath:()=>Ns,telemetrySpoolPath:()=>Ce});import{randomUUID as Ds,createHash as bm}from"node:crypto";import{appendFileSync as Ia,existsSync as _m,mkdirSync as Na}from"node:fs";import{mkdir as Aa,readdir as Rm,readFile as Ba,rename as Sm,rm as La,writeFile as $s}from"node:fs/promises";import{basename as Os,dirname as dn,join as $t,resolve as Pa}from"node:path";function ir(e){if(!e)return null;let t=Pa(e);for(;;){if(_m($t(t,".red")))return t;let n=Pa($t(t,".."));if(n===t)break;t=n}return null}function Ce(e){return $t(F(e),Ma)}function or(e){return $t(F(e),ja)}function Ns(e){return $t(F(e),Ua)}async function Ie(e,t){mn(e,t)}function mn(e,t){try{let n=ir(e);if(!n)return;let r=Ce(n);Na(dn(r),{recursive:!0}),Ia(r,Pm({spool_id:Ds(),event:Em(t)}),{encoding:"utf8",mode:384})}catch{}}function Em(e){return Oa(Oa(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Oa(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=km)return e;let i={...e};return delete i[t],pe(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function xm(e){let t=ir(e);if(!t)return[];let n=Ce(t);await Aa(dn(n),{recursive:!0}).catch(()=>{});let r=await Ja(t),s=[...await qa(t),...await Dm(r)];return await Promise.all(r.map(i=>La(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function As(e,t){let n=ir(e);if(!n)return;let r=Ce(n);await Aa(dn(r),{recursive:!0}).catch(()=>{}),await Om(n);for(let s of await Tm(n))await Da(n,s,t);for(let s of await qa(n))await Fa(n,s,t,!0);for(let s of await Ja(n))await Da(n,s,t)}async function Tm(e){let t=[Ce(e),or(e)],n=dn(t[0]);return(await Rm(n).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${Os(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${Os(c)}.`));if(!i)return!1;let o=`${Os(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&vm(a))}).sort().map(s=>$t(n,s))}function vm(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Da(e,t,n){try{let r=await Ga(t);for(let s of Ha(r))await Fa(e,s,n,!1)}finally{await La(t,{force:!0})}}async function Fa(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&$a(e,{correction_id:Ds(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}$a(e,{correction_id:Ds(),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 Ga(e){let t="";for(let n=0;n<5;n++){let r=await Ba(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function Ct(e){try{let t=JSON.parse(e);return!cr(t)||t.collection!==X&&t.collection!==q&&t.collection!==ge&&t.collection!==Fe?null:t}catch{return null}}function Pm(e){return An().push(Im(e))}function $a(e,t){try{let n=ir(e);if(!n)return;let r=Ns(n);Na(dn(r),{recursive:!0});let s=An();Ia(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 Ja(e){let t=[Ce(e),or(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await Sm(r,s),await $s(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return n}async function Om(e){await Promise.all([$s(Ce(e),"",{flag:"a"}),$s(or(e),"",{flag:"a"})]).catch(()=>{})}async function Dm(e){let t=[];for(let n of e)t.push(...Ha(await Ga(n)));return t}async function qa(e){let t=await Ba(Ns(e),"utf8").catch(()=>""),n=new Map;for(let r of $m(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:Ct(r.event_json)??void 0})).filter(r=>r.event!==void 0)}function Ha(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s){try{let i=JSON.parse(s);if(cr(i)){let o=Ct(JSON.stringify(i));t.push(o?{spool_id:rr(JSON.stringify(i)),event:o}:{spool_id:rr(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n){t.push({spool_id:rr(s),raw_line:s});continue}try{for(let i of Nn(`${n}
40
+ `)}function gm(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function hm(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return Z(t)}}async function ga(e,t){try{let n=await cn(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Dt(n.pid)){await pe(e.registryPath,{force:!0});return}if(await rt(n.socket_path,100))return;if(Pa(t.clientVersion,n.resident_version)&&(await ym(n.pid,1500),!Dt(n.pid))){await pe(e.registryPath,{force:!0});return}await va(n.pid),await pe(e.registryPath,{force:!0})}catch{}}function Dt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function va(e){if(!Dt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Dt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function ym(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Dt(e))return;await new Promise(r=>setTimeout(r,50))}}async function wm(e){if(!e.startsWith("file://"))return!1;try{return await om(Ra(e)),!1}catch(t){return t.code==="ENOENT"}}function Oa(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?Kn(process.argv[1]):Ra(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function bm(e){let t=nm("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=ee(n,"red-skills",t);if(ee(s,"rsp.sock").length<um)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ee(cm(),`red-skills-${r}`,t)}function _m(e){let t=Kn(e);for(let n=0;n<32;n++){try{let s=As(ee(t,".git"));if(s!=null)return Rm(t,s)??t;if(As(ee(t,".git","HEAD"))!=null||As(ee(t,".red","config.yaml"))!=null)return t}catch{}let r=Ue(t);if(r===t)return null;t=r}return null}function Rm(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=Kn(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?Ue(Ue(Ue(r))):null}function As(e){try{return rm(e,"utf8")}catch{return null}}async function ha(e,t){let n=await ka(e).catch(()=>null);return n?Pa(t.clientVersion,n.version)?(await Sm(e,t.clientVersion),await Tm(e),!1):!0:!1}async function Sm(e,t){try{await Pt({socketPath:e,timeoutMs:200},{id:wa(),op:"handover",clientVersion:t})}catch{}}function Pa(e,t){return!e||!t?!1:km(e,t)>0}function km(e,t){let n=ya(e),r=ya(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function ya(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 Da(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Em(e){return typeof e=="string"&&e.length>0?e:void 0}function xm(e){return Da(e)&&e.version===Sa&&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 Tm(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await rt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var um,Sa,lm,pm,Xn=E(()=>{X();Te();Ds();um=108,Sa=1,lm=5e3;pm=8*1024});var $a={};$($a,{DEFAULT_RSP_BYTE_BUDGET:()=>Ie,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Ce,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Pe,DEFAULT_RSP_IDLE_MS:()=>nr,DEFAULT_RSP_STORE_PATH:()=>Ns,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>tr,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Ia,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>Aa,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>er,DEFAULT_RSP_TTL_DAYS:()=>De,MIN_RSP_IDLE_MS:()=>Na,resolveRspConfig:()=>Ae});import{existsSync as vm,readFileSync as Om}from"node:fs";import{join as Pm,resolve as Ca}from"node:path";function Ae(e,t,n){let r=fa(Ca(e),Pm(".red","config.yaml")),s=r?Om(r,"utf8"):"",i=Wn(s,"rsp.enabled")==="true",o=Wn(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=Oe(ge(s,"rsp.ttlDays"),De),u=Oe(un(t.RSP_EPHEMERAL_TTL_HOURS)??ge(s,"rsp.ephemeralTtlHours"),Ce),l=Oe(ge(s,"rsp.byteBudget"),Ie),f=Oe(ge(s,"rsp.telemetryTtlDays"),er),d=Oe(ge(s,"rsp.telemetryByteBudget")??ge(s,"rsp.byteBudget"),tr),h=Oe(un(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ge(s,"rsp.telemetryDrainIntervalMs"),Ia),y=Oe(un(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ge(s,"rsp.telemetryDrainTimeoutMs"),Aa),m=Dm(un(t.RSP_IDLE_MS)??ge(s,"rsp.idleMs"),nr,Na),g=Oe(un(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ge(s,"rsp.heavyGitByteThreshold"),Pe),b=Je(e).rootDir,w=n??t.RSP_STORE_URI??`file://${jo(Ca(b),vm)}`;return{enabled:i,proxyEnabled:a,storeUri:w,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:h,telemetryDrainTimeoutMs:y,idleMs:m,heavyGitByteThreshold:g}}function ge(e,t){let n=Wn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Oe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Dm(e,t,n){let r=Oe(e,t);return Math.max(r,n)}function un(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Pe,Ns,De,Ce,Ie,er,tr,Ia,Aa,nr,Na,he=E(()=>{"use strict";ma();Te();Xn();Pe=8*1024,Ns=Lo,De=7,Ce=6,Ie=64*1024*1024,er=90,tr=4*1024*1024,Ia=3e4,Aa=2e3,nr=5*6e4,Na=5e3});var hn={};$(hn,{DEFAULT_RSP_BYTE_BUDGET:()=>Ie,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Ce,DEFAULT_RSP_TTL_DAYS:()=>De,RSP_ELISION_COLLECTION:()=>q,RspElisionStore:()=>gn,ensureReddbBinaryFromWarmCache:()=>Qa,storageClassForCommand:()=>it});import{createHash as ur}from"node:crypto";import{spawnSync as pn}from"node:child_process";import{existsSync as js}from"node:fs";import{mkdir as qa,readFile as Ha,readdir as Wa,rename as ir,rm as ln,stat as $s,writeFile as Cm}from"node:fs/promises";import{homedir as Im}from"node:os";import{basename as Va,dirname as Ka,join as dn}from"node:path";import{fileURLToPath as Am}from"node:url";import{gunzipSync as Nm,gzipSync as $m}from"node:zlib";function Ba(e,t){return`el:${ur("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 st(e){return`record:${e.slice(3)}`}function Ct(e){return`expired:${e.slice(3)}`}function Bs(){return"index:v1"}function Bm(e){return`blob:${e}`}function Lm(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function it(e){let t=e.trim().split(/\s+/).filter(Boolean),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":lr(t)?"re-executable":"ephemeral"}return"ephemeral"}function rr(e){return dr(e.storage_class)?e.storage_class:it(e.command)}function Mm(e){return dr(e.storage_class)?e.storage_class:it(e.command)}function La(e){let t=Gm(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=Mm(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 Ma(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 It(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 ja(e,t){let n=process.cwd(),r=pn("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=pn("git",["hash-object","-w","--stdin"],{cwd:n,input:e,encoding:"buffer"});if(s.status!==0)return null;let i=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(i)?{kind:"git-blob",command:t,cwd:n,object_ids:[i],working_tree_fingerprint:jm(n),original_bytes:e.length}:null}function jm(e){let t=Ls(e,["rev-parse","HEAD"])||"unborn",n=Ls(e,["write-tree"])||"no-index",r=Ls(e,["status","--porcelain=v1","-z"])||"";return ur("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function Ls(e,t){let n=pn("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function Ua(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!lr(n))return null;let r=za(process.cwd(),n,e.length);return!r||At(r)!==At(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:n,original_bytes:e.length,content_hash:At(e)}}function lr(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 At(e){return ur("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function Ja(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 Fa(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 Ga(e,t,n){let r=$m(e);return{key:Bm(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=Nm(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function Jm(e){let t=e.object_ids[0];if(!t)return null;let n=pn("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 Fm(e){if(!lr(e.argv))return null;let t=za(e.cwd,e.argv,e.original_bytes);return t?At(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
41
+ `,"utf8"),t]):null}function za(e,t,n){let r=t[0];if(!r)return null;let s=pn(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 Gm(){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 ar(e){return/^el:[a-f0-9]{12}$/.test(e)}function cr(e){return/^blob:[a-f0-9]{64}$/.test(e)}function qm(e){if(!fn(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:fn(e.scope)?e.scope:void 0,ranking:fn(e.ranking)?e.ranking:void 0}}}function Hm(e){if(!fn(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 fn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Wm(e,t,n){let r=[],s=new Set([".git","node_modules",".red",...n]);async function i(o){if(r.length>=t)return;let a=await Wa(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let u=dn(o,c.name);c.isDirectory()?await i(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 i(e),r}function Vm(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,s=fn(r)?r:{},i=String(e.label??e.LABEL??s.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??i),c=`${i} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(n),rid:n,label:i,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function Ms(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function or(e){if(!te(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=zm(e.derivation_recipe),r=Ym(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&cr(s);return e.collection===q&&typeof e.handle=="string"&&ar(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Fs(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&cr(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Km(e.loss)&&(e.storage_class===void 0||dr(e.storage_class))}function Ya(e){return!te(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!te(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&ar(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||dr(t.storage_class))&&(n===void 0||typeof n=="string"&&cr(n))})}function Us(e){return te(e)&&typeof e.key=="string"&&cr(e.key)&&Fs(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 Js(e){return te(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Km(e){return te(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function dr(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function zm(e){return te(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 Ym(e){return te(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&lr(e.argv)&&typeof e.original_bytes=="number"&&Fs(e.content_hash)}function Fs(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function te(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Qm(e){try{let n=await Ha(e,"utf8");if(n.trim()==="")return sr();let r=JSON.parse(n);if(ep(r))return{...r,blobs:r.blobs??{}}}catch(n){if(n.code==="ENOENT"){let s=sr();return await mn(e,s),s}let r=sr();return await mn(e,r),r}let t=sr();return await mn(e,t),t}async function Zm(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Xm(e){return Va(e)==="red-skills.rdb"}async function Qa(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?dn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):dn(Im(),".cache","red-skills","bundles")),t=dn(e,"reddb"),n;try{n=await Wa(t)}catch{return}n.sort().reverse();for(let r of n){let s=dn(t,r,process.platform==="win32"?"red.exe":"red");if(js(s)){process.env.REDDB_BIN=s;return}}}async function mn(e,t){await qa(Ka(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await Cm(n,`${JSON.stringify(t)}
42
+ `,"utf8"),await ir(n,e)}function sr(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function ep(e){return te(e)&&e.version===1&&te(e.records)&&Object.values(e.records).every(or)&&(e.blobs===void 0||te(e.blobs)&&Object.values(e.blobs).every(Us))&&te(e.tombstones)&&Object.values(e.tombstones).every(Js)&&Ya(e.index)}function tp(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Am(e)}var q,gn,ot=E(()=>{"use strict";fs();he();q="rsp_elisions_v1",gn=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=tp(t.uri),r=await Zm(n),s=new e(r,{uri:t.uri,ttlDays:Ms(t.ttlDays,De),ephemeralTtlHours:Ms(t.ephemeralTtlHours,Ce),byteBudget:Ms(t.byteBudget,Ie),now:t.now??(()=>new Date)});return Xm(r)?(await Qa(),await qa(Ka(r),{recursive:!0}),s.db=await kt(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Qm(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(),i=s.toISOString(),o=Ba(r,n),a=st(o),c=it(n.command),u=c==="derivable"?ja(r,n.command):null,l=c==="re-executable"?Ua(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ma(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),h=At(r),y=f==="ephemeral"?Ga(r,h,i):null,m=Ja(r,u,l,y);y&&!this.document.blobs[y.key]&&(this.document.blobs[y.key]=y,this.dirty=!0);let g={collection:q,handle:o,original_bytes:r.length,stored_bytes:m,command:n.command,created_at:i,expires_at:d,loss:n.loss,storage_class:f,content_hash:h,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:y?.key}};return delete this.document.tombstones[Ct(o)],this.document.records[a]=g,this.upsertIndex({handle:o,key:a,bytes:m,raw_bytes:r.length,command:n.command,created_at:i,expires_at:d,storage_class:f,blob_key:y?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!ar(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[st(t)];if(!or(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:st(r.handle),bytes:Fa(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:rr(r),blob_key:r.blob_key},r.expires_at),await this.flush(),i}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:q,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:rr(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:It(n),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget,storage_classes:La(n)}}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 o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=It(s);for(s.sort((o,a)=>o.created_at.localeCompare(a.created_at));i>this.opts.byteBudget&&s.length>0;){let o=s.shift();this.expireEntry(o,n),i=It(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[Ct(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[Ct(t)];return Js(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return Jm(t.derivation_recipe);if(t.reexecution_recipe)return Fm(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return Us(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 mn(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await $s(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")),i={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}},o=Buffer.byteLength(`${JSON.stringify(i)}
43
+ `,"utf8");o>this.opts.byteBudget||o>=t||(this.document=i,await mn(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(q)}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===q);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${q}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${q}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${q}`),await this.db.query(`CREATE KV IF NOT EXISTS ${q}`)}}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=Ba(r,n),a=st(o),c=it(n.command),u=c==="derivable"?ja(r,n.command):null,l=c==="re-executable"?Ua(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=Ma(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),h=At(r),y=f==="ephemeral"?Ga(r,h,i):null,m=Ja(r,u,l,y);y&&!Us(await this.kvGet(y.key))&&await this.kv().put(y.key,y);let g={collection:q,handle:o,original_bytes:r.length,stored_bytes:m,command:n.command,created_at:i,expires_at:d,loss:n.loss,storage_class:f,content_hash:h,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:y?.key}};await this.kv().delete(Ct(o)),await this.kv().put(a,g);let w=(await this.readRedDbIndex()).records.filter(T=>T.handle!==o);return w.push({handle:o,key:a,bytes:m,raw_bytes:r.length,command:n.command,created_at:i,expires_at:d,storage_class:f,blob_key:y?.key}),await this.pruneRedDb({version:1,records:w},!0),await this.assertRedDbMintPersisted(o,m),o}async getRedDb(t){if(!ar(t))return null;let n=await this.kvGet(Ct(t));if(Js(n))return n;let r=await this.kvGet(st(t));if(!or(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:st(r.handle),bytes:Fa(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:rr(r),blob_key:r.blob_key},r.expires_at),i}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:q,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:rr(r)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:It(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:La(t.records)}}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=qm(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Hm(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 Wm(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await Ha(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=Va(s),c=ur("sha256").update("resident-memory-v1\0").update(s).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:o,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),i=r.rows.map(o=>Vm(o,s)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,n)));return{hits:i,context_md:i.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
44
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Bs());return Ya(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Bs(),t)}async pruneRedDb(t,n=!1){let r=this.opts.now().getTime(),s=new Date(r).toISOString(),i=[];for(let c of t.records)Date.parse(c.expires_at)<=r?await this.expireRedDbEntry(c,c.expires_at):i.push(c);let o=It(i);for(i.sort((c,u)=>c.created_at.localeCompare(u.created_at));o>this.opts.byteBudget&&i.length>0;){let c=i.shift();await this.expireRedDbEntry(c,s),o=It(i)}let a={version:1,records:i};return(n||i.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(i),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await $s(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()}`,i=`${this.path}.${s}.compact`,o=`${this.path}.${s}.old`;await ln(i,{force:!0}),await ln(o,{force:!0});let a=await kt(`file://${i}`);try{for(let u of r){await a.query(`CREATE KV IF NOT EXISTS ${Lm(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 $s(i).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=n){await ln(i,{force:!0});return}await this.db.close(),this.db=void 0;try{await ir(this.path,o),await ir(i,this.path),await ln(o,{force:!0})}catch(u){throw!js(this.path)&&js(o)&&await ir(o,this.path),await ln(i,{force:!0}),u}finally{this.db=await kt(`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(i=>i.model!=="kv"))return null;let r=[],s=!1;for(let i of n){let o=String(i.name??"").trim();if(o===q){r.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(o).list({limit:1e4});if(a.items.length>=1e4)return null;r.push({name:o,items:a.items})}return s||r.push(await this.snapshotRedDbElisions(t)),r}async snapshotRedDbElisions(t){let n=[{key:Bs(),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 i=await this.kvGet(s);i!=null&&n.push({key:s,value:i})}return{name:q,items:n}}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ct(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(st(t));if(!or(r))throw new Error(`rsp resident failed to persist elision record ${t}`);let i=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!i||i.bytes!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Rn={};$(Rn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ne,RSP_DECISIONS_COLLECTION:()=>H,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ge,RSP_TELEMETRY_INDEX_COLLECTION:()=>bn,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>we,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>uc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>lc,RSP_TELEMETRY_SPOOL_FILE:()=>cc,appendTelemetryEvent:()=>$e,appendTelemetryEventSync:()=>_n,drainTelemetrySpool:()=>zs,parseTelemetryEvent:()=>Mt,readAccountingLaneStats:()=>Ys,readTelemetryGainsReport:()=>Qs,readTelemetryStats:()=>hr,takeTelemetrySpool:()=>cp,telemetryLegacySpoolPath:()=>gr,telemetrySpoolCorrectionsPath:()=>Ks,telemetrySpoolPath:()=>Ne});import{randomUUID as qs,createHash as np}from"node:crypto";import{appendFileSync as rc,existsSync as rp,mkdirSync as sc}from"node:fs";import{mkdir as ic,readdir as sp,readFile as oc,rename as ip,rm as ac,writeFile as Hs}from"node:fs/promises";import{basename as Gs,dirname as wn,join as Lt,resolve as Za}from"node:path";function pr(e){if(!e)return null;let t=Za(e);for(;;){if(rp(Lt(t,".red")))return t;let n=Za(Lt(t,".."));if(n===t)break;t=n}return null}function Ne(e){return Lt(F(e),cc)}function gr(e){return Lt(F(e),uc)}function Ks(e){return Lt(F(e),lc)}async function $e(e,t){_n(e,t)}function _n(e,t){try{let n=pr(e);if(!n)return;let r=Ne(n);sc(wn(r),{recursive:!0}),rc(r,dp({spool_id:qs(),event:ap(t)}),{encoding:"utf8",mode:384})}catch{}}function ap(e){return Xa(Xa(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Xa(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=op)return e;let i={...e};return delete i[t],ye(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function cp(e){let t=pr(e);if(!t)return[];let n=Ne(t);await ic(wn(n),{recursive:!0}).catch(()=>{});let r=await mc(t),s=[...await pc(t),...await mp(r)];return await Promise.all(r.map(i=>ac(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function zs(e,t){let n=pr(e);if(!n)return;let r=Ne(n);await ic(wn(r),{recursive:!0}).catch(()=>{}),await fp(n);for(let s of await up(n))await ec(n,s,t);for(let s of await pc(n))await dc(n,s,t,!0);for(let s of await mc(n))await ec(n,s,t)}async function up(e){let t=[Ne(e),gr(e)],n=wn(t[0]);return(await sp(n).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${Gs(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${Gs(c)}.`));if(!i)return!1;let o=`${Gs(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&lp(a))}).sort().map(s=>Lt(n,s))}function lp(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function ec(e,t,n){try{let r=await fc(t);for(let s of gc(r))await dc(e,s,n,!1)}finally{await ac(t,{force:!0})}}async function dc(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&tc(e,{correction_id:qs(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}tc(e,{correction_id:qs(),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 fc(e){let t="";for(let n=0;n<5;n++){let r=await oc(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function Mt(e){try{let t=JSON.parse(e);return!yr(t)||t.collection!==ne&&t.collection!==H&&t.collection!==we&&t.collection!==Ge?null:t}catch{return null}}function dp(e){return qn().push(hp(e))}function tc(e,t){try{let n=pr(e);if(!n)return;let r=Ks(n);sc(wn(r),{recursive:!0});let s=qn();rc(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 mc(e){let t=[Ne(e),gr(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await ip(r,s),await Hs(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return n}async function fp(e){await Promise.all([Hs(Ne(e),"",{flag:"a"}),Hs(gr(e),"",{flag:"a"})]).catch(()=>{})}async function mp(e){let t=[];for(let n of e)t.push(...gc(await fc(n)));return t}async function pc(e){let t=await oc(Ks(e),"utf8").catch(()=>""),n=new Map;for(let r of pp(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:Mt(r.event_json)??void 0})).filter(r=>r.event!==void 0)}function gc(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s){try{let i=JSON.parse(s);if(yr(i)){let o=Mt(JSON.stringify(i));t.push(o?{spool_id:fr(JSON.stringify(i)),event:o}:{spool_id:fr(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n){t.push({spool_id:fr(s),raw_line:s});continue}try{for(let i of Gn(`${n}
43
45
  ${s}
44
- `))Cs(i)&&Nm(i)&&t.push({spool_id:i.spool_id,event:Wa(i)})}catch{s.startsWith("{")&&t.push({spool_id:rr(s),raw_line:s})}}}return t}function $m(e){return Cm(e).map(Am).filter(t=>t!==null)}function Cm(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let i=JSON.parse(s);Cs(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let i of Nn(`${n}
46
+ `))Ws(i)&&yp(i)&&t.push({spool_id:i.spool_id,event:hc(i)})}catch{s.startsWith("{")&&t.push({spool_id:fr(s),raw_line:s})}}}return t}function pp(e){return gp(e).map(wp).filter(t=>t!==null)}function gp(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let i=JSON.parse(s);Ws(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let i of Gn(`${n}
45
47
  ${s}
46
- `))Cs(i)&&t.push(i)}catch{}}}return t}function rr(e){return`legacy:${bm("sha256").update(e).digest("hex").slice(0,24)}`}function Im(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 Wa(e){let{spool_id:t,...n}=e;return Ct(JSON.stringify(n))}function Nm(e){return typeof e.spool_id=="string"&&Wa(e)!==null}function Am(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 Cs(e){return cr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}async function ar(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await Va(e,s),o=(await ln(e,q)).filter(m=>Ot(m)>=s),a=i.filter(m=>O(m.event_type)!=="show"&&O(m.degradation_reason)===""),c=i.filter(m=>O(m.event_type)==="show"),u=i.filter(m=>O(m.degradation_reason)!==""),l=0,d=0,f=0,y=0,h=!1,p=new Map,g=new Map,b=[],w=0,T=0,x=0;for(let m of a){m.elided===!0&&l++;let _=pe(m.raw_bytes),ie=pe(m.emitted_bytes),_e=Math.max(0,_-ie),Re=sr(m,"raw"),ee=sr(m,"emitted"),Ne=Math.max(0,Re.tokens-ee.tokens);h||=(m.estimated===!0||Re.estimated||ee.estimated)&&Ne>0,d+=_,f+=ie,y+=Ne;let Ye=it(m).slice(0,10);Ye&&p.set(Ye,(p.get(Ye)??0)+Ne);let Qe=O(m.command)||"unknown",Ae=g.get(Qe)??{command:Qe,invocations:0,bytes_saved:0,tokens_saved:0};Ae.invocations++,Ae.bytes_saved+=_e,Ae.tokens_saved+=Ne,g.set(Qe,Ae);let Xe=Dt(m.wrapper_ms);Xe!=null&&b.push(Xe),w+=pe(m.store_open_count);let jt=Dt(m.store_elapsed_ms);jt!=null&&(T+=jt,x++)}let v=new Map,C=new Map,L=[],z=null;for(let m of u){let _=O(m.degradation_reason)||O(m.reason)||"unknown",ie=O(m.wrapper_family)||Is(O(m.command));v.set(_,(v.get(_)??0)+1),C.set(ie,(C.get(ie)??0)+1);let _e=it(m);L.push({timestamp:_e,family:ie,command:O(m.command)||"unknown",reason:_,exit_code:Dt(m.wrapper_exit_code),stderr_head:O(m.stderr_head)||null}),(!z||_e>z.timestamp)&&(z={timestamp:_e,reason:_,command:O(m.command)||"unknown"})}let Z=a.length+u.length,pt=c.filter(m=>m.hit===!0).length,U=ps(y,h),Mt=Bm(o);return{window_days:r,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:d,emitted_bytes:f,bytes_saved:Math.max(0,d-f),tokens_saved:y,tokens_saved_estimated:U.tokens_saved_estimated,token_estimate_range_pct:U.token_estimate_range_pct,tokens_saved_low:U.tokens_saved_low,tokens_saved_high:U.tokens_saved_high,dollars_saved_estimate_usd:U.dollars_saved_estimate_usd,dollars_saved_low_usd:U.dollars_saved_low_usd,dollars_saved_high_usd:U.dollars_saved_high_usd,pricing_model_family:U.pricing_model_family,pricing_input_usd_per_million_tokens:U.pricing_input_usd_per_million_tokens,pricing_note:U.pricing_note,daily_tokens_saved:[...p.entries()].sort(([m],[_])=>m.localeCompare(_)).map(([m,_])=>({date:m,tokens_saved:_})),top_commands:[...g.values()].sort((m,_)=>_.bytes_saved-m.bytes_saved||_.tokens_saved-m.tokens_saved||m.command.localeCompare(_.command))},health:{degradations:u.length,degradation_rate:Z===0?0:u.length/Z,show_total:c.length,show_hits:pt,show_misses:Math.max(0,c.length-pt),show_hit_rate:c.length===0?0:Ue(pt/c.length),by_reason:[...v.entries()].sort((m,_)=>_[1]-m[1]||m[0].localeCompare(_[0])).map(([m,_])=>({reason:m,count:_})),by_family:[...C.entries()].sort((m,_)=>_[1]-m[1]||m[0].localeCompare(_[0])).map(([m,_])=>({family:m,count:_})),recent_failures:L.sort((m,_)=>_.timestamp.localeCompare(m.timestamp)).slice(0,20),most_recent:z},latency:{wrapper_ms_p50:Pt(b,.5),wrapper_ms_p95:Pt(b,.95),store_open_count_sum:w,store_elapsed_ms_sum:Ue(T),store_elapsed_ms_avg:x===0?null:Ue(T/x)},decisions:Mt}}function Bm(e){let t=0,n=0,r=0,s=0,i=new Map;for(let o of e){let a=O(o.decision);if(a==="contributed"?t++:a==="failed-open"?r++:n++,o.quota_free===!0&&(s+=Math.max(1,pe(o.saved_units))),a!=="contributed"){let c=O(o.reason)||"unknown";i.set(c,(i.get(c)??0)+1)}}return{seen:e.length,contributed:t,passed:n,failed_open:r,quota_free_saved_units:s,contribution_rate:e.length===0?0:Ue(t/e.length),top_pass_reasons:[...i.entries()].sort((o,a)=>a[1]-o[1]||o[0].localeCompare(a[0])).map(([o,a])=>({reason:o,count:a}))}}async function Bs(e,t,n=new Date){let s=(await ln(e,X)).filter(i=>Ot(i)<=n.getTime()||it(i)==="");return{records:s.length,bytes:s.reduce((i,o)=>i+Buffer.byteLength(JSON.stringify(o),"utf8"),0),oldest:s.reduce((i,o)=>{let a=it(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:Lm(s)}}async function Ls(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:28,s=n.toISOString(),i=new Date(n.getTime()-r*24*60*60*1e3).toISOString(),o=Date.parse(i),a=await Va(e,o),c=a.filter(m=>O(m.event_type)!=="show"&&O(m.degradation_reason)===""),u=a.filter(m=>O(m.degradation_reason)!==""),l=[...c,...u].map(Ot).filter(m=>Number.isFinite(m)&&m>0),d=l.length===0?null:Math.min(...l),f=d==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-d)/Wm()))),y=[],h=new Map,p=new Map,g=new Map,b=new Map,w=new Map,T=new Map,x=0,v=!1,C=0,L=null,z=0,Z=0;for(let m of c){let _=it(m),ie=_.slice(0,10),_e=_.slice(0,16),Re=Is(O(m.command)),ee=Math.max(0,sr(m,"raw").tokens-sr(m,"emitted").tokens);x+=ee,v||=m.estimated===!0&&ee>0;let Ne=Math.max(0,pe(m.raw_bytes)-pe(m.emitted_bytes)),Ye=Dt(m.wrapper_ms);if(Ye!=null){y.push(Ye);let jt=h.get(Re)??[];jt.push(Ye),h.set(Re,jt)}ie&&p.set(ie,(p.get(ie)??0)+1),_e&&g.set(_e,(g.get(_e)??0)+1);let Qe=Fm(_);Qe&&b.set(Qe,(b.get(Qe)??0)+1);let Ae=qm(_);Ae&&w.set(Ae,(w.get(Ae)??0)+ee);let Xe=T.get(Re)??{command_family:Re,invocations:0,tokens_saved:0,bytes_saved:0};Xe.invocations++,Xe.tokens_saved+=ee,Xe.bytes_saved+=Ne,T.set(Re,Xe),m.elided===!0&&C++,(m.store_open_count!=null||m.store_elapsed_ms!=null)&&(z++,pe(m.store_open_count)>0&&Z++),ee>0&&(!L||ee>L.tokens_saved||ee===L.tokens_saved&&Ne>L.bytes_saved)&&(L={timestamp:_,command_family:Re,tokens_saved:ee,bytes_saved:Ne})}let pt=u.map(m=>({timestamp:it(m),command_family:Is(O(m.command)),reason:O(m.degradation_reason)||O(m.reason)||"unknown"})).sort((m,_)=>m.timestamp.localeCompare(_.timestamp)),U=new Map;for(let m of pt)U.set(m.reason,(U.get(m.reason)??0)+1);let Mt=[...g.entries()].sort((m,_)=>_[1]-m[1]||m[0].localeCompare(_[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:f,since:i,until:s,label:`window: ${r}d, data: ${f}d`,empty:c.length===0&&u.length===0,invocations:c.length,degradations:u.length},latency:{global:Ca(y),by_command_family:[...h.entries()].sort((m,_)=>_[1].length-m[1].length||m[0].localeCompare(_[0])).map(([m,_])=>({command_family:m,count:_.length,...Ca(_)}))},throughput:{requests_per_day:[...p.entries()].sort(([m],[_])=>m.localeCompare(_)).map(([m,_])=>({date:m,requests:_})),active_minute_avg:g.size===0?null:Ue([...g.values()].reduce((m,_)=>m+_,0)/g.size),peak_minute:Mt?{minute:Mt[0],requests:Mt[1]}:null,hour_weekday_heatmap:Gm(b)},savings:{tokens:ps(x,v),weekly_tokens_saved:Hm(w),elision_rate:c.length===0?0:Ue(C/c.length),top_commands_by_tokens_saved:[...T.values()].sort((m,_)=>_.tokens_saved-m.tokens_saved||_.bytes_saved-m.bytes_saved||m.command_family.localeCompare(_.command_family)).slice(0,10),top_commands_by_invocation_count:[...T.values()].sort((m,_)=>_.invocations-m.invocations||_.tokens_saved-m.tokens_saved||m.command_family.localeCompare(_.command_family)).slice(0,10),single_biggest_elision:L},health:{degradation_timeline:pt,degradations_by_reason:[...U.entries()].sort((m,_)=>_[1]-m[1]||m[0].localeCompare(_[0])).map(([m,_])=>({reason:m,count:_})),cold_boots:z===0?null:Z,warm_hits:z===0?null:Math.max(0,z-Z)}}}async function Va(e,t){let n=(await ln(e,X)).filter(i=>Ot(i)>=t);if(n.length>0)return n;let r=(await ln(e,ge)).filter(i=>Ot(i)>=t).map(i=>({...i,event_type:"invocation"})),s=(await ln(e,Fe)).filter(i=>Ot(i)>=t).map(i=>({...i,event_type:"invocation",degradation_reason:O(i.reason)||"unknown"}));return[...r,...s]}function sr(e,t){let n=Dt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=pe(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function Lm(e){let t=jm();for(let n of e){if(O(n.event_type)==="show"||O(n.degradation_reason)!==""||n.elided!==!0)continue;let r=Mm(n.storage_class)??rt(O(n.command));t[r].records+=1;let s=pe(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function Mm(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function jm(){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 ln(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=>Um(r.value)).filter(r=>cr(r))}function Um(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Ot(e){let t=Date.parse(it(e));return Number.isFinite(t)?t:0}function it(e){return O(e.created_at)||O(e.ts)||""}function O(e){return typeof e=="string"?e:""}function pe(e){return Dt(e)??0}function Dt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Pt(e,t){if(e.length===0)return null;let n=[...e].sort((s,i)=>s-i),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return Ue(n[r])}function Ca(e){return{wrapper_ms_p50:Pt(e,.5),wrapper_ms_p90:Pt(e,.9),wrapper_ms_p95:Pt(e,.95),wrapper_ms_p99:Pt(e,.99)}}function Ue(e){return Math.round(e*100)/100}function Is(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function Fm(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Jm(t.getUTCDay())}:${t.getUTCHours()}`:null}function Gm(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 Jm(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function qm(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 Hm(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:Ue((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function Wm(){return 24*60*60*1e3}function cr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ma,ja,Ua,X,q,ge,Fe,fn,km,he=E(()=>{"use strict";ke();le();st();gs();Ma="rsp-telemetry.spool.toonl",ja="rsp-telemetry.spool.jsonl",Ua="rsp-telemetry.spool.corrections.toonl",X="rsp_accounting_events_v1",q="rsp_decisions_v1",ge="rsp_telemetry_invocations_v1",Fe="rsp_telemetry_degradations_v1",fn="rsp_telemetry_index_v1",km=64*1024});var Ka=E(()=>{"use strict";hs()});var hn={};N(hn,{ResidentRspElisionStore:()=>gn,ensureResidentServer:()=>Un,kickResidentServer:()=>Fn,pingResident:()=>tt,readResidentRegistry:()=>en,removeResidentRegistry:()=>Jn,residentRegistryStatus:()=>Zt,resolveResidentPaths:()=>je,sweepResidentRegistry:()=>ta,warmResidentServer:()=>ea,writeResidentRegistry:()=>Gn});import{randomUUID as Vm}from"node:crypto";function za(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var gn,ot=E(()=>{"use strict";Ka();qn();gn=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?za(n)&&n.status==="expired"?n:!za(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){this.opts.ensureResident!==!1&&await Un(this.paths,this.config);let n=await kt(this.paths,{...t,id:Vm()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Gs={};N(Gs,{RSP_WRAPPER_CAPABILITIES:()=>bn,formatCodexHookDecision:()=>ec,formatHookDecision:()=>Za,hookDecisionFromClaudePreExecJson:()=>Xm,hookDecisionFromCodexPreExecJson:()=>Zm,rewriteCommand:()=>Qa,rewriteTableFromCapabilities:()=>Ya,runClaudePreExecHook:()=>ep,runCodexPreExecHook:()=>tp});import{readFileSync as fr}from"node:fs";import{existsSync as Km}from"node:fs";import{fileURLToPath as zm}from"node:url";function Ya(e){let t=new Map;for(let n of e)t.set(bp(n.command),["rsp",...n.wrapper]);return t}function Qa(e){let t=lp(e);if(t)return t;let n=cp(e);if(!n)return lr(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&dc(r[0]))return lr(e);let s=Qm(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return lr(e);let i=[...bn].sort((c,u)=>u.command.length-c.command.length).find(c=>up(r,c.command));if(!i)return lr(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=oc(n.redirectSuffix);return{kind:"rewrite",command:[...o.map(wn),...a].join(" "),capabilityId:i.id}}function Qm(e){let t=e.tokens.map(s=>s.text),n=t[0],r=oc(e.redirectSuffix);return n==="cat"&&t.length===2&&ur(t[1])?{kind:"rewrite",command:["rsp","cat",wn(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&ur(t[1])?{kind:"rewrite",command:["rsp","cat",`--${n}`,"10",wn(t[1]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&ur(t[3])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[2],wn(t[3]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&ur(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),wn(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function ur(e){return!!e&&!e.startsWith("-")}async function Xm(e,t){return await Xa(e,t)}async function Zm(e,t){return await Xa(e,t)}async function Xa(e,t){return(await js(e,t,"pre-exec")).decision}async function js(e,t,n){let r=fc(e);if(!r.ok){let f={kind:"passthrough",reason:r.reason};return{decision:f,telemetryRoot:t.cwd,event:yn({hook:n,command:"",decision:f,reason:r.reason})}}let s=r.payload,i=ne(s,["cwd"])||ne(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??np)(i)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:i,event:yn({hook:n,command:Ms(s),decision:f,reason:"disabled"})}}let a=Ms(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:i,event:yn({hook:n,command:a,decision:f,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=$e(i,process.env).proxyEnabled?fp(a):(t.rewrite??Qa)(a),d=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let f=l.reason?l:{...l,reason:"unsupported-command"};return{decision:f,telemetryRoot:i,event:yn({hook:n,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:d})}}return await sp(i,t.wakeResident??rp),{decision:l,telemetryRoot:i,event:yn({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:d})}}function Za(e){return e.kind==="rewrite"?tc(e.command):{stdout:"",status:0}}function ec(e){return e.kind==="rewrite"?tc(e.command):{stdout:"",status:0}}function tc(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
47
- `,status:0}}async function ep(e){let t="";try{t=e?fr(e,"utf8"):fr(0,"utf8");let n=await js(t,{cwd:process.cwd()},"claude-pre-exec");mr(n.telemetryRoot,n.event);let r=n.decision;rc("claude-pre-exec",r);let s=Za(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return mr(process.cwd(),nc("claude-pre-exec",t,n)),sc("claude-pre-exec",n),0}}async function tp(e){let t="";try{t=e?fr(e,"utf8"):fr(0,"utf8");let n=await js(t,{cwd:process.cwd()},"codex-pre-exec");mr(n.telemetryRoot,n.event);let r=n.decision;rc("codex-pre-exec",r);let s=ec(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return mr(process.cwd(),nc("codex-pre-exec",t,n)),sc("codex-pre-exec",n),0}}function mr(e,t){Ie(e,t).catch(()=>{})}function yn(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:lc(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function nc(e,t,n){let r=fc(t),s=r.ok?Ms(r.payload):"";return{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:lc(s),decision:"failed-open",reason:"hook-exception",error:Us(n)}}function np(e){return $e(e,process.env).enabled}async function rp(e){let t=$e(e,process.env);if(!t.enabled||!ap(t))return;let n=je(e);await Fn(n,op(t))}async function sp(e,t){try{await Promise.resolve(t(e))}catch(n){ip(n)}}function rc(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
48
+ `))Ws(i)&&t.push(i)}catch{}}}return t}function fr(e){return`legacy:${np("sha256").update(e).digest("hex").slice(0,24)}`}function hp(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 hc(e){let{spool_id:t,...n}=e;return Mt(JSON.stringify(n))}function yp(e){return typeof e.spool_id=="string"&&hc(e)!==null}function wp(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 Ws(e){return yr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}async function hr(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await yc(e,s),o=(await yn(e,H)).filter(p=>$t(p)>=s),a=i.filter(p=>D(p.event_type)!=="show"&&D(p.degradation_reason)===""),c=i.filter(p=>D(p.event_type)==="show"),u=i.filter(p=>D(p.degradation_reason)!==""),l=0,f=0,d=0,h=0,y=!1,m=new Map,g=new Map,b=[],w=0,T=0,x=0;for(let p of a){p.elided===!0&&l++;let _=ye(p.raw_bytes),le=ye(p.emitted_bytes),ke=Math.max(0,_-le),Ee=mr(p,"raw"),se=mr(p,"emitted"),Be=Math.max(0,Ee.tokens-se.tokens);y||=(p.estimated===!0||Ee.estimated||se.estimated)&&Be>0,f+=_,d+=le,h+=Be;let Qe=at(p).slice(0,10);Qe&&m.set(Qe,(m.get(Qe)??0)+Be);let Ze=D(p.command)||"unknown",Le=g.get(Ze)??{command:Ze,invocations:0,bytes_saved:0,tokens_saved:0};Le.invocations++,Le.bytes_saved+=ke,Le.tokens_saved+=Be,g.set(Ze,Le);let Xe=Bt(p.wrapper_ms);Xe!=null&&b.push(Xe),w+=ye(p.store_open_count);let qt=Bt(p.store_elapsed_ms);qt!=null&&(T+=qt,x++)}let v=new Map,I=new Map,M=[],Q=null;for(let p of u){let _=D(p.degradation_reason)||D(p.reason)||"unknown",le=D(p.wrapper_family)||Vs(D(p.command));v.set(_,(v.get(_)??0)+1),I.set(le,(I.get(le)??0)+1);let ke=at(p);M.push({timestamp:ke,family:le,command:D(p.command)||"unknown",reason:_,exit_code:Bt(p.wrapper_exit_code),stderr_head:D(p.stderr_head)||null}),(!Q||ke>Q.timestamp)&&(Q={timestamp:ke,reason:_,command:D(p.command)||"unknown"})}let re=a.length+u.length,_t=c.filter(p=>p.hit===!0).length,J=Os(h,y),Gt=bp(o);return{window_days:r,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:f,emitted_bytes:d,bytes_saved:Math.max(0,f-d),tokens_saved:h,tokens_saved_estimated:J.tokens_saved_estimated,token_estimate_range_pct:J.token_estimate_range_pct,tokens_saved_low:J.tokens_saved_low,tokens_saved_high:J.tokens_saved_high,dollars_saved_estimate_usd:J.dollars_saved_estimate_usd,dollars_saved_low_usd:J.dollars_saved_low_usd,dollars_saved_high_usd:J.dollars_saved_high_usd,pricing_model_family:J.pricing_model_family,pricing_input_usd_per_million_tokens:J.pricing_input_usd_per_million_tokens,pricing_note:J.pricing_note,daily_tokens_saved:[...m.entries()].sort(([p],[_])=>p.localeCompare(_)).map(([p,_])=>({date:p,tokens_saved:_})),top_commands:[...g.values()].sort((p,_)=>_.bytes_saved-p.bytes_saved||_.tokens_saved-p.tokens_saved||p.command.localeCompare(_.command))},health:{degradations:u.length,degradation_rate:re===0?0:u.length/re,show_total:c.length,show_hits:_t,show_misses:Math.max(0,c.length-_t),show_hit_rate:c.length===0?0:Fe(_t/c.length),by_reason:[...v.entries()].sort((p,_)=>_[1]-p[1]||p[0].localeCompare(_[0])).map(([p,_])=>({reason:p,count:_})),by_family:[...I.entries()].sort((p,_)=>_[1]-p[1]||p[0].localeCompare(_[0])).map(([p,_])=>({family:p,count:_})),recent_failures:M.sort((p,_)=>_.timestamp.localeCompare(p.timestamp)).slice(0,20),most_recent:Q},latency:{wrapper_ms_p50:Nt(b,.5),wrapper_ms_p95:Nt(b,.95),store_open_count_sum:w,store_elapsed_ms_sum:Fe(T),store_elapsed_ms_avg:x===0?null:Fe(T/x)},decisions:Gt}}function bp(e){let t=0,n=0,r=0,s=0,i=new Map;for(let o of e){let a=D(o.decision);if(a==="contributed"?t++:a==="failed-open"?r++:n++,o.quota_free===!0&&(s+=Math.max(1,ye(o.saved_units))),a!=="contributed"){let c=D(o.reason)||"unknown";i.set(c,(i.get(c)??0)+1)}}return{seen:e.length,contributed:t,passed:n,failed_open:r,quota_free_saved_units:s,contribution_rate:e.length===0?0:Fe(t/e.length),top_pass_reasons:[...i.entries()].sort((o,a)=>a[1]-o[1]||o[0].localeCompare(a[0])).map(([o,a])=>({reason:o,count:a}))}}async function Ys(e,t,n=new Date){let s=(await yn(e,ne)).filter(i=>$t(i)<=n.getTime()||at(i)==="");return{records:s.length,bytes:s.reduce((i,o)=>i+Buffer.byteLength(JSON.stringify(o),"utf8"),0),oldest:s.reduce((i,o)=>{let a=at(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:_p(s)}}async function Qs(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:28,s=n.toISOString(),i=new Date(n.getTime()-r*24*60*60*1e3).toISOString(),o=Date.parse(i),a=await yc(e,o),c=a.filter(p=>D(p.event_type)!=="show"&&D(p.degradation_reason)===""),u=a.filter(p=>D(p.degradation_reason)!==""),l=[...c,...u].map($t).filter(p=>Number.isFinite(p)&&p>0),f=l.length===0?null:Math.min(...l),d=f==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-f)/Pp()))),h=[],y=new Map,m=new Map,g=new Map,b=new Map,w=new Map,T=new Map,x=0,v=!1,I=0,M=null,Q=0,re=0;for(let p of c){let _=at(p),le=_.slice(0,10),ke=_.slice(0,16),Ee=Vs(D(p.command)),se=Math.max(0,mr(p,"raw").tokens-mr(p,"emitted").tokens);x+=se,v||=p.estimated===!0&&se>0;let Be=Math.max(0,ye(p.raw_bytes)-ye(p.emitted_bytes)),Qe=Bt(p.wrapper_ms);if(Qe!=null){h.push(Qe);let qt=y.get(Ee)??[];qt.push(Qe),y.set(Ee,qt)}le&&m.set(le,(m.get(le)??0)+1),ke&&g.set(ke,(g.get(ke)??0)+1);let Ze=Ep(_);Ze&&b.set(Ze,(b.get(Ze)??0)+1);let Le=vp(_);Le&&w.set(Le,(w.get(Le)??0)+se);let Xe=T.get(Ee)??{command_family:Ee,invocations:0,tokens_saved:0,bytes_saved:0};Xe.invocations++,Xe.tokens_saved+=se,Xe.bytes_saved+=Be,T.set(Ee,Xe),p.elided===!0&&I++,(p.store_open_count!=null||p.store_elapsed_ms!=null)&&(Q++,ye(p.store_open_count)>0&&re++),se>0&&(!M||se>M.tokens_saved||se===M.tokens_saved&&Be>M.bytes_saved)&&(M={timestamp:_,command_family:Ee,tokens_saved:se,bytes_saved:Be})}let _t=u.map(p=>({timestamp:at(p),command_family:Vs(D(p.command)),reason:D(p.degradation_reason)||D(p.reason)||"unknown"})).sort((p,_)=>p.timestamp.localeCompare(_.timestamp)),J=new Map;for(let p of _t)J.set(p.reason,(J.get(p.reason)??0)+1);let Gt=[...g.entries()].sort((p,_)=>_[1]-p[1]||p[0].localeCompare(_[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:d,since:i,until:s,label:`window: ${r}d, data: ${d}d`,empty:c.length===0&&u.length===0,invocations:c.length,degradations:u.length},latency:{global:nc(h),by_command_family:[...y.entries()].sort((p,_)=>_[1].length-p[1].length||p[0].localeCompare(_[0])).map(([p,_])=>({command_family:p,count:_.length,...nc(_)}))},throughput:{requests_per_day:[...m.entries()].sort(([p],[_])=>p.localeCompare(_)).map(([p,_])=>({date:p,requests:_})),active_minute_avg:g.size===0?null:Fe([...g.values()].reduce((p,_)=>p+_,0)/g.size),peak_minute:Gt?{minute:Gt[0],requests:Gt[1]}:null,hour_weekday_heatmap:xp(b)},savings:{tokens:Os(x,v),weekly_tokens_saved:Op(w),elision_rate:c.length===0?0:Fe(I/c.length),top_commands_by_tokens_saved:[...T.values()].sort((p,_)=>_.tokens_saved-p.tokens_saved||_.bytes_saved-p.bytes_saved||p.command_family.localeCompare(_.command_family)).slice(0,10),top_commands_by_invocation_count:[...T.values()].sort((p,_)=>_.invocations-p.invocations||_.tokens_saved-p.tokens_saved||p.command_family.localeCompare(_.command_family)).slice(0,10),single_biggest_elision:M},health:{degradation_timeline:_t,degradations_by_reason:[...J.entries()].sort((p,_)=>_[1]-p[1]||p[0].localeCompare(_[0])).map(([p,_])=>({reason:p,count:_})),cold_boots:Q===0?null:re,warm_hits:Q===0?null:Math.max(0,Q-re)}}}async function yc(e,t){let n=(await yn(e,ne)).filter(i=>$t(i)>=t);if(n.length>0)return n;let r=(await yn(e,we)).filter(i=>$t(i)>=t).map(i=>({...i,event_type:"invocation"})),s=(await yn(e,Ge)).filter(i=>$t(i)>=t).map(i=>({...i,event_type:"invocation",degradation_reason:D(i.reason)||"unknown"}));return[...r,...s]}function mr(e,t){let n=Bt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=ye(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function _p(e){let t=Sp();for(let n of e){if(D(n.event_type)==="show"||D(n.degradation_reason)!==""||n.elided!==!0)continue;let r=Rp(n.storage_class)??it(D(n.command));t[r].records+=1;let s=ye(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function Rp(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Sp(){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 yn(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=>kp(r.value)).filter(r=>yr(r))}function kp(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function $t(e){let t=Date.parse(at(e));return Number.isFinite(t)?t:0}function at(e){return D(e.created_at)||D(e.ts)||""}function D(e){return typeof e=="string"?e:""}function ye(e){return Bt(e)??0}function Bt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Nt(e,t){if(e.length===0)return null;let n=[...e].sort((s,i)=>s-i),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return Fe(n[r])}function nc(e){return{wrapper_ms_p50:Nt(e,.5),wrapper_ms_p90:Nt(e,.9),wrapper_ms_p95:Nt(e,.95),wrapper_ms_p99:Nt(e,.99)}}function Fe(e){return Math.round(e*100)/100}function Vs(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function Ep(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Tp(t.getUTCDay())}:${t.getUTCHours()}`:null}function xp(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 Tp(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function vp(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 Op(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:Fe((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function Pp(){return 24*60*60*1e3}function yr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var cc,uc,lc,ne,H,we,Ge,bn,op,be=E(()=>{"use strict";Te();X();ot();Ps();cc="rsp-telemetry.spool.toonl",uc="rsp-telemetry.spool.jsonl",lc="rsp-telemetry.spool.corrections.toonl",ne="rsp_accounting_events_v1",H="rsp_decisions_v1",we="rsp_telemetry_invocations_v1",Ge="rsp_telemetry_degradations_v1",bn="rsp_telemetry_index_v1",op=64*1024});var wc=E(()=>{"use strict";Ds()});var kn={};$(kn,{ResidentRspElisionStore:()=>Sn,ensureResidentServer:()=>zn,kickResidentServer:()=>Yn,pingResident:()=>rt,readResidentRegistry:()=>cn,removeResidentRegistry:()=>Zn,residentRegistryStatus:()=>an,resolveResidentPaths:()=>Je,sweepResidentRegistry:()=>xa,warmResidentServer:()=>Ea,writeResidentRegistry:()=>Qn});import{randomUUID as Dp}from"node:crypto";function bc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Sn,ct=E(()=>{"use strict";wc();Xn();Sn=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?bc(n)&&n.status==="expired"?n:!bc(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){this.opts.ensureResident!==!1&&await zn(this.paths,this.config);let n=await Pt(this.paths,{...t,id:Dp()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var ni={};$(ni,{RSP_WRAPPER_CAPABILITIES:()=>Tn,formatCodexHookDecision:()=>Ec,formatHookDecision:()=>kc,hookDecisionFromClaudePreExecJson:()=>$p,hookDecisionFromCodexPreExecJson:()=>Bp,rewriteCommand:()=>Rc,rewriteTableFromCapabilities:()=>_c,runClaudePreExecHook:()=>Lp,runCodexPreExecHook:()=>Mp});import{readFileSync as Rr}from"node:fs";import{existsSync as Cp}from"node:fs";import{fileURLToPath as Ip}from"node:url";function _c(e){let t=new Map;for(let n of e)t.set(ng(n.command),["rsp",...n.wrapper]);return t}function Rc(e){let t=Vp(e);if(t)return t;let n=Hp(e);if(!n)return br(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&$c(r[0]))return br(e);let s=Np(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return br(e);let i=[...Tn].sort((c,u)=>u.command.length-c.command.length).find(c=>Wp(r,c.command));if(!i)return br(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=Dc(n.redirectSuffix);return{kind:"rewrite",command:[...o.map(xn),...a].join(" "),capabilityId:i.id}}function Np(e){let t=e.tokens.map(s=>s.text),n=t[0],r=Dc(e.redirectSuffix);return n==="cat"&&t.length===2&&wr(t[1])?{kind:"rewrite",command:["rsp","cat",xn(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&wr(t[1])?{kind:"rewrite",command:["rsp","cat",`--${n}`,"10",xn(t[1]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&wr(t[3])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[2],xn(t[3]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&wr(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),xn(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function wr(e){return!!e&&!e.startsWith("-")}async function $p(e,t){return await Sc(e,t)}async function Bp(e,t){return await Sc(e,t)}async function Sc(e,t){return(await Xs(e,t,"pre-exec")).decision}async function Xs(e,t,n){let r=Bc(e);if(!r.ok){let d={kind:"passthrough",reason:r.reason};return{decision:d,telemetryRoot:t.cwd,event:En({hook:n,command:"",decision:d,reason:r.reason})}}let s=r.payload,i=ae(s,["cwd"])||ae(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??jp)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:En({hook:n,command:Zs(s),decision:d,reason:"disabled"})}}let a=Zs(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:i,event:En({hook:n,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=Ae(i,process.env).proxyEnabled?zp(a):(t.rewrite??Rc)(a),f=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let d=l.reason?l:{...l,reason:"unsupported-command"};return{decision:d,telemetryRoot:i,event:En({hook:n,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:f})}}return await Jp(i,t.wakeResident??Up),{decision:l,telemetryRoot:i,event:En({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function kc(e){return e.kind==="rewrite"?xc(e.command):{stdout:"",status:0}}function Ec(e){return e.kind==="rewrite"?xc(e.command):{stdout:"",status:0}}function xc(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
49
+ `,status:0}}async function Lp(e){let t="";try{t=e?Rr(e,"utf8"):Rr(0,"utf8");let n=await Xs(t,{cwd:process.cwd()},"claude-pre-exec");Sr(n.telemetryRoot,n.event);let r=n.decision;vc("claude-pre-exec",r);let s=kc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Sr(process.cwd(),Tc("claude-pre-exec",t,n)),Oc("claude-pre-exec",n),0}}async function Mp(e){let t="";try{t=e?Rr(e,"utf8"):Rr(0,"utf8");let n=await Xs(t,{cwd:process.cwd()},"codex-pre-exec");Sr(n.telemetryRoot,n.event);let r=n.decision;vc("codex-pre-exec",r);let s=Ec(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Sr(process.cwd(),Tc("codex-pre-exec",t,n)),Oc("codex-pre-exec",n),0}}function Sr(e,t){$e(e,t).catch(()=>{})}function En(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:Nc(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function Tc(e,t,n){let r=Bc(t),s=r.ok?Zs(r.payload):"";return{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:Nc(s),decision:"failed-open",reason:"hook-exception",error:ei(n)}}function jp(e){return Ae(e,process.env).enabled}async function Up(e){let t=Ae(e,process.env);if(!t.enabled||!qp(t))return;let n=Je(e);await Yn(n,Gp(t))}async function Jp(e,t){try{await Promise.resolve(t(e))}catch(n){Fp(n)}}function vc(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
48
50
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
49
- `)}}function sc(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${Us(t)}
50
- `)}function ip(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${Us(e)}
51
- `)}function Us(e){return e instanceof Error?e.name||"Error":typeof e}function op(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 ap(e){if(!e.storeUri.startsWith("file://"))return!0;try{return Km(zm(e.storeUri))}catch{return!1}}function Ms(e){return ne(e,["tool_input","command"])||ne(e,["tool_input","cmd"])||ne(e,["tool_input","args","command"])||ne(e,["input","command"])||ne(e,["input","cmd"])||ne(e,["arguments","command"])||ne(e,["arguments","cmd"])||ne(e,["command"])||ne(e,["cmd"])}function cp(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=ic(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&dc(i.text)))return null;let r=[],s=[];for(let i of n){if(i.text.includes(">")||i.text.includes("<")){if(i.quoted||i.text!=="2>/dev/null"&&i.text!=="2>&1")return null;s.push(i);continue}r.push(i)}return r.length===0?null:{tokens:r,redirectSuffix:s}}function ic(e){let t=[],n="",r=!1,s=null,i=()=>{!n&&!r||(t.push({text:n,quoted:r}),n="",r=!1)};for(let o=0;o<e.length;o+=1){let a=e[o];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&o+1<e.length){o+=1,n+=e[o];continue}n+=a;continue}if(a==="'"||a==='"'){s=a,r=!0;continue}if(a==="\\"&&o+1<e.length){o+=1,n+=e[o];continue}if(/[ \t]/.test(a)){i();continue}n+=a}return s?[]:(i(),t)}function up(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function lp(e){let t=ic(e.trim()).map(n=>n.text);return dr(t)?{kind:"passthrough",reason:Ym}:null}function dr(e){return e[0]==="gh"&&e.some(dp)}function dp(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function oc(e){return e.map(t=>t.text)}function wn(e){return/[^\w@%+=:,./-]/.test(e)?Fs(e):e}function fp(e){let t=mp(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${Fs(e.trim())}`,capabilityId:"proxy:universal"}}function mp(e){let t=e.trim();if(!t)return"missing-command";if(cc(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=gr(pr(t)[0]??"")[0];if(n==="rsp")return"opt-out";if(n&&ac.has(n))return"interactive"}function lr(e){let t=e.trim();return pp(t)?{kind:"rewrite",command:`rsp exec -- ${Fs(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function pp(e){return!(!e||!gp(e)||!hp(e)||cc(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||yp(e,"rsp")||uc(e,ac)||wp(e))}function gp(e){return/&&|[;|]/.test(e)}function cc(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 hp(e){return pr(e).some(t=>{let n=gr(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 uc(e,t){return pr(e).some(n=>{let r=gr(n)[0];return r?t.has(r):!1})}function yp(e,t){return uc(e,new Set([t]))}function wp(e){return pr(e).some(t=>{let n=gr(t);return n[0]==="grep"&&n.includes("-q")})}function pr(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function gr(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Fs(e){return`'${e.replace(/'/g,"'\\''")}'`}function lc(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:dr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:dr(t)&&t[1]?`gh ${t[1]} json-jq`:dr(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 dc(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function bp(e){return e.join("\0")}function fc(e){try{let t=JSON.parse(e);return mc(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function ne(e,t){let n=e;for(let r of t){if(!mc(n))return"";n=n[r]}return typeof n=="string"?n:""}function mc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var bn,rS,Ym,ac,hr=E(()=>{"use strict";me();ot();he();bn=[{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:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],rS=Ya(bn),Ym="lossless-gh-json-jq";ac=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var qs={};N(qs,{NORMALIZATION_ALLOWLIST:()=>Sc,NORMALIZE_ANSI:()=>hc,NORMALIZE_BLANK_LINES:()=>bc,NORMALIZE_CR_PROGRESS:()=>yc,NORMALIZE_JSON_TOON:()=>Rc,NORMALIZE_TRAILING_WHITESPACE:()=>wc,formatCodexNormalizeDecision:()=>vc,formatNormalizeDecision:()=>Tc,hookDecisionFromClaudePostExecJson:()=>kc,hookDecisionFromCodexPostExecJson:()=>Ec,normalizeOutput:()=>It,renderGenericJsonLane:()=>_n,runClaudePostExecHook:()=>Sp,runCodexPostExecHook:()=>kp,transcodeJsonToToon:()=>_c});import{readFileSync as yr}from"node:fs";function _c(e,t){let n=t?.encode??D,r=t?.decode??ue,s=e.trimEnd();if(!s)return e;let i;try{i=JSON.parse(s)}catch{return e}let o;try{o=n(i)}catch{return e}let a;try{a=r(o)}catch{return e}return Js(i,a)?o.trimEnd():e}async function _n(e,t={}){let n=vp(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:D(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,i=gc(t.minTokens,_p),o=gc(t.maxItems,Rp);if(!(s>o&&Cp(e)>=i))return{output:D(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c=Pp(r,o),u={items:c},l=`items: ${c.length} of ${s} kept`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let f=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,y=D(u).trimEnd();return{output:[l,f,y].filter(Boolean).join(`
52
- `),detected:!0,lossy:!0,totalItems:s,keptItems:c.length,handle:d}}function It(e){let t=e;for(let n of Sc)t=n.apply(t);return t}async function kc(e,t){return await xc(e,t)}async function Ec(e,t){return await xc(e,t)}async function xc(e,t){let n=Tp(e),r=Ip(n,["cwd"])||t.cwd;if(!await(t.isEnabled??xp)(r))return{kind:"passthrough",reason:"disabled"};let i=Np(n,"tool_response");if(!i)return{kind:"passthrough",reason:"missing-output"};if(typeof i.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=i.output,c=(t.normalize??It)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Tc(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function vc(e){return{stdout:"",status:0}}async function Sp(e){let t=e?yr(e,"utf8"):yr(0,"utf8"),n=await kc(t,{cwd:process.cwd()}),r=Tc(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function kp(e){let t=e?yr(e,"utf8"):yr(0,"utf8"),n=await Ec(t,{cwd:process.cwd()}),r=vc(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Ep(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 i=e.charCodeAt(n);if(i===7){n++;break}if(i===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(s===91){for(n+=2;n<e.length&&pc(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&pc(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function pc(e){return e>=32&&e<=63}function xp(e){return $e(e,process.env).enabled}function Tp(e){try{let t=JSON.parse(e);return Ge(t)?t:{}}catch{return{}}}function vp(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Ge(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 Pp(e,t){if(e.length<=t)return[...e];let n=new Set,r=Math.max(1,Math.floor(t*.2));for(let i=0;i<r;i++)n.add(i),n.add(e.length-1-i);for(let i=0;i<e.length;i++)Op(e[i])&&n.add(i);for(let i of Dp(e))n.add(i);for(let i of $p(e))n.add(i);let s=Math.max(1,Math.floor(e.length/Math.max(1,t-n.size)));for(let i=0;n.size<t&&i<s;i++)for(let o=i;n.size<t&&o<e.length;o+=s)n.add(o);return[...n].sort((i,o)=>i-o).slice(0,t).map(i=>e[i])}function Op(e){if(!Ge(e))return!1;let t=e.level;if(typeof t=="string"&&t.toLowerCase()==="error"||Object.prototype.hasOwnProperty.call(e,"error")&&e.error)return!0;let n=e.status;return typeof n=="number"&&n>=400}function Dp(e){let t=new Map;e.forEach((r,s)=>{if(Ge(r))for(let[i,o]of Object.entries(r)){if(typeof o!="number"||!Number.isFinite(o))continue;let a=t.get(i)??[];a.push({index:s,value:o}),t.set(i,a)}});let n=new Set;for(let r of t.values()){if(r.length<3)continue;let s=r.reduce((a,c)=>a+c.value,0)/r.length,i=r.reduce((a,c)=>a+Math.pow(c.value-s,2),0)/r.length,o=Math.sqrt(i);if(o!==0)for(let a of r)Math.abs(a.value-s)>o*2&&n.add(a.index)}return[...n]}function $p(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],s=e[n];if(!(!Ge(r)||!Ge(s)))for(let[i,o]of Object.entries(s)){if(typeof o!="number"||!Number.isFinite(o))continue;let a=r[i];typeof a!="number"||!Number.isFinite(a)||(a===0?Math.abs(o)>10:Math.abs((o-a)/a)>=2)&&t.add(n)}}return[...t]}function Cp(e){return Math.ceil(e.length/4)}function gc(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Ip(e,t){let n=e;for(let r of t){if(!Ge(n))return"";n=n[r]}return typeof n=="string"?n:""}function Np(e,t){let n=e[t];return Ge(n)?n:null}function Ge(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Js(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 o=t;return e.length!==o.length?!1:e.every((a,c)=>Js(a,o[c]))}let n=e,r=t,s=Object.keys(n),i=Object.keys(r);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&Js(n[o],r[o]))}var hc,yc,wc,bc,Rc,_p,Rp,Sc,Rn=E(()=>{"use strict";le();me();hc={id:"ansi",apply:Ep},yc={id:"cr-progress",apply:e=>e.split(`
51
+ `)}}function Oc(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${ei(t)}
52
+ `)}function Fp(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${ei(e)}
53
+ `)}function ei(e){return e instanceof Error?e.name||"Error":typeof e}function Gp(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 qp(e){if(!e.storeUri.startsWith("file://"))return!0;try{return Cp(Ip(e.storeUri))}catch{return!1}}function Zs(e){return ae(e,["tool_input","command"])||ae(e,["tool_input","cmd"])||ae(e,["tool_input","args","command"])||ae(e,["input","command"])||ae(e,["input","cmd"])||ae(e,["arguments","command"])||ae(e,["arguments","cmd"])||ae(e,["command"])||ae(e,["cmd"])}function Hp(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=Pc(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&$c(i.text)))return null;let r=[],s=[];for(let i of n){if(i.text.includes(">")||i.text.includes("<")){if(i.quoted||i.text!=="2>/dev/null"&&i.text!=="2>&1")return null;s.push(i);continue}r.push(i)}return r.length===0?null:{tokens:r,redirectSuffix:s}}function Pc(e){let t=[],n="",r=!1,s=null,i=()=>{!n&&!r||(t.push({text:n,quoted:r}),n="",r=!1)};for(let o=0;o<e.length;o+=1){let a=e[o];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&o+1<e.length){o+=1,n+=e[o];continue}n+=a;continue}if(a==="'"||a==='"'){s=a,r=!0;continue}if(a==="\\"&&o+1<e.length){o+=1,n+=e[o];continue}if(/[ \t]/.test(a)){i();continue}n+=a}return s?[]:(i(),t)}function Wp(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function Vp(e){let t=Pc(e.trim()).map(n=>n.text);return _r(t)?{kind:"passthrough",reason:Ap}:null}function _r(e){return e[0]==="gh"&&e.some(Kp)}function Kp(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Dc(e){return e.map(t=>t.text)}function xn(e){return/[^\w@%+=:,./-]/.test(e)?ti(e):e}function zp(e){let t=Yp(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${ti(e.trim())}`,capabilityId:"proxy:universal"}}function Yp(e){let t=e.trim();if(!t)return"missing-command";if(Ic(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=Er(kr(t)[0]??"")[0];if(n==="rsp")return"opt-out";if(n&&Cc.has(n))return"interactive"}function br(e){let t=e.trim();return Qp(t)?{kind:"rewrite",command:`rsp exec -- ${ti(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Qp(e){return!(!e||!Zp(e)||!Xp(e)||Ic(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||eg(e,"rsp")||Ac(e,Cc)||tg(e))}function Zp(e){return/&&|[;|]/.test(e)}function Ic(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 Xp(e){return kr(e).some(t=>{let n=Er(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 Ac(e,t){return kr(e).some(n=>{let r=Er(n)[0];return r?t.has(r):!1})}function eg(e,t){return Ac(e,new Set([t]))}function tg(e){return kr(e).some(t=>{let n=Er(t);return n[0]==="grep"&&n.includes("-q")})}function kr(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Er(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function ti(e){return`'${e.replace(/'/g,"'\\''")}'`}function Nc(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:_r(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:_r(t)&&t[1]?`gh ${t[1]} json-jq`:_r(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 $c(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function ng(e){return e.join("\0")}function Bc(e){try{let t=JSON.parse(e);return Lc(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function ae(e,t){let n=e;for(let r of t){if(!Lc(n))return"";n=n[r]}return typeof n=="string"?n:""}function Lc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Tn,d0,Ap,Cc,xr=E(()=>{"use strict";he();ct();be();Tn=[{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:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],d0=_c(Tn),Ap="lossless-gh-json-jq";Cc=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var oi={};$(oi,{NORMALIZATION_ALLOWLIST:()=>qc,NORMALIZE_ANSI:()=>vr,NORMALIZE_BLANK_LINES:()=>Dr,NORMALIZE_CR_PROGRESS:()=>Or,NORMALIZE_JSON_TOON:()=>Gc,NORMALIZE_TRAILING_WHITESPACE:()=>Pr,crushJsonArrayItems:()=>vn,formatCodexNormalizeDecision:()=>zc,formatNormalizeDecision:()=>Kc,hookDecisionFromClaudePostExecJson:()=>Hc,hookDecisionFromCodexPostExecJson:()=>Wc,normalizeOutput:()=>Cr,renderGenericJsonLane:()=>si,runClaudePostExecHook:()=>ig,runCodexPostExecHook:()=>og,transcodeJsonToToon:()=>Fc});import{readFileSync as Tr}from"node:fs";function Fc(e,t){let n=t?.encode??P,r=t?.decode??Z,s=e.trimEnd();if(!s)return e;let i;try{i=JSON.parse(s)}catch{return e}let o;try{o=n(i)}catch{return e}let a;try{a=r(o)}catch{return e}return ri(i,a)?o.trimEnd():e}async function si(e,t={}){let n=lg(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:P(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,i=Jc(t.minTokens,rg),o=Jc(t.maxItems,sg);if(!(s>o&&gg(e)>=i))return{output:P(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??vn)(r,o)}catch(m){return{output:P(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:hg(m)}}}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 h=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,y=P(l).trimEnd();return{output:[f,h,y].filter(Boolean).join(`
54
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function vn(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=dg(e),s=new Set;r&&e.forEach((a,c)=>{ii(a)!==r&&s.add(c)});let i=fg(e,r);for(let a of s)n.add(a);for(let a of i)n.add(a);let o=[...n].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:o.map(a=>e[a]),total:e.length,kept:o.length,dropped:e.length-o.length,shapeOutliers:[...s].filter(a=>o.includes(a)).length,valueOutliers:[...i].filter(a=>o.includes(a)).length}}function Cr(e){let t=e;for(let n of qc)t=n.apply(t);return t}async function Hc(e,t){return await Vc(e,t)}async function Wc(e,t){return await Vc(e,t)}async function Vc(e,t){let n=ug(e),r=yg(n,["cwd"])||t.cwd;if(!await(t.isEnabled??cg)(r))return{kind:"passthrough",reason:"disabled"};let i=wg(n,"tool_response");if(!i)return{kind:"passthrough",reason:"missing-output"};if(typeof i.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=i.output,c=(t.normalize??Cr)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Kc(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function zc(e){return{stdout:"",status:0}}async function ig(e){let t=e?Tr(e,"utf8"):Tr(0,"utf8"),n=await Hc(t,{cwd:process.cwd()}),r=Kc(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function og(e){let t=e?Tr(e,"utf8"):Tr(0,"utf8"),n=await Wc(t,{cwd:process.cwd()}),r=zc(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function ag(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 i=e.charCodeAt(n);if(i===7){n++;break}if(i===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(s===91){for(n+=2;n<e.length&&Mc(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Mc(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Mc(e){return e>=32&&e<=63}function cg(e){return Ae(e,process.env).enabled}function ug(e){try{let t=JSON.parse(e);return jt(t)?t:{}}catch{return{}}}function lg(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return jt(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 dg(e){let t=new Map;for(let s of e){let i=ii(s);t.set(i,(t.get(i)??0)+1)}let[n,r]=[...t.entries()].sort((s,i)=>i[1]-s[1]||s[0].localeCompare(i[0]))[0]??[];return typeof n=="string"&&typeof r=="number"&&r>e.length/2?n:null}function ii(e){return Array.isArray(e)?"array":jt(e)?Object.keys(e).sort().map(t=>`${t}:${jc(e[t])}`).join("|"):jc(e)}function fg(e,t){let n=new Set,r=new Map;e.forEach((s,i)=>{if(!(t&&ii(s)!==t))for(let[o,a]of Yc(s)){let c=r.get(o)??[];c.push({index:i,value:a}),r.set(o,c)}});for(let s of r.values()){for(let i of mg(s))n.add(i);for(let i of pg(s))n.add(i)}return n}function mg(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=Uc(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),i=Uc(s);if(i===0)return t.filter(c=>c.value===r).length/t.length<.8?[]:t.filter(c=>c.value!==r).map(c=>c.index);let o=i*8;return t.filter(a=>Math.abs(a.value-r)>o).map(a=>a.index)}function pg(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 Yc(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:jt(e)?Object.entries(e).flatMap(([n,r])=>Yc(r,t?`${t}.${n}`:n)):[]}function jc(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Uc(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 gg(e){return Math.ceil(e.length/4)}function Jc(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function hg(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 yg(e,t){let n=e;for(let r of t){if(!jt(n))return"";n=n[r]}return typeof n=="string"?n:""}function wg(e,t){let n=e[t];return jt(n)?n:null}function jt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ri(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 o=t;return e.length!==o.length?!1:e.every((a,c)=>ri(a,o[c]))}let n=e,r=t,s=Object.keys(n),i=Object.keys(r);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&ri(n[o],r[o]))}var vr,Or,Pr,Dr,Gc,rg,sg,qc,On=E(()=>{"use strict";X();he();vr={id:"ansi",apply:ag},Or={id:"cr-progress",apply:e=>e.split(`
53
55
  `).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(`
54
- `)},wc={id:"trailing-whitespace",apply:e=>e.split(`
56
+ `)},Pr={id:"trailing-whitespace",apply:e=>e.split(`
55
57
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
56
- `)},bc={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
58
+ `)},Dr={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
57
59
 
58
- `)};Rc={id:"json-to-toon",apply:e=>_c(e)},_p=200,Rp=15;Sc=[hc,yc,wc,bc,Rc]});var Nc={};N(Nc,{REPO_STORE_PATH:()=>Ws,mergeRspBlock:()=>$c,provisionRspRepoStore:()=>qp});import{constants as Ap}from"node:fs";import{access as Bp,copyFile as Lp,mkdir as Pc,readFile as Mp,rename as jp,writeFile as Oc}from"node:fs/promises";import{dirname as Up,join as Sn,resolve as Fp}from"node:path";async function qp(e,t={}){let n=Fp(e),r=Sn(n,".red"),s=Sn(r,"config.yaml"),i=Sn(n,Ws);await Pc(r,{recursive:!0}),await Pc(Up(i),{recursive:!0});let o="";try{o=await Mp(s,"utf8")}catch(y){if(y.code!=="ENOENT")throw y}let a=$c(o,{enabled:!0,ttlDays:t.ttlDays??Pe,ephemeralTtlHours:t.ephemeralTtlHours??Oe,byteBudget:t.byteBudget??De,heavyGitByteThreshold:t.heavyGitByteThreshold??ve}),c=a!==o;c&&await Oc(s,a,"utf8");let u=!await Hs(i),l=!1,d=!1;if(u){let y=Sn(n,Gp),h=Sn(n,Jp);if(await Hs(y))await jp(y,i),d=!0;else if(await Hs(h))await Lp(h,i),l=!0;else{let{RspElisionStore:p}=await Promise.resolve().then(()=>(st(),un)),g=process.env.REDDB_BIN;try{await(await p.open({uri:`file://${i}`,ttlDays:t.ttlDays??Pe,ephemeralTtlHours:t.ephemeralTtlHours??Oe,byteBudget:t.byteBudget??De,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let f=Hp(a,Ws);return f!==a&&await Oc(s,f,"utf8"),{configPath:s,storePath:i,configChanged:c||f!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:d}}function $c(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${wr(t.ttlDays,Pe)}`,` ephemeralTtlHours: ${wr(t.ephemeralTtlHours,Oe)}`,` byteBudget: ${wr(t.byteBudget,De)}`,` heavyGitByteThreshold: ${wr(t.heavyGitByteThreshold,ve)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
59
- `),s=Cc(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
60
+ `)};Gc={id:"json-to-toon",apply:e=>Fc(e)},rg=200,sg=15;qc=[vr,Or,Pr,Dr,Gc]});var ru={};$(ru,{REPO_STORE_PATH:()=>ci,mergeRspBlock:()=>eu,provisionRspRepoStore:()=>Og});import{constants as bg}from"node:fs";import{access as _g,copyFile as Rg,mkdir as Qc,readFile as Sg,rename as kg,writeFile as Zc}from"node:fs/promises";import{dirname as Eg,join as Pn,resolve as xg}from"node:path";async function Og(e,t={}){let n=xg(e),r=Pn(n,".red"),s=Pn(r,"config.yaml"),i=Pn(n,ci);await Qc(r,{recursive:!0}),await Qc(Eg(i),{recursive:!0});let o="";try{o=await Sg(s,"utf8")}catch(h){if(h.code!=="ENOENT")throw h}let a=eu(o,{enabled:!0,ttlDays:t.ttlDays??De,ephemeralTtlHours:t.ephemeralTtlHours??Ce,byteBudget:t.byteBudget??Ie,heavyGitByteThreshold:t.heavyGitByteThreshold??Pe}),c=a!==o;c&&await Zc(s,a,"utf8");let u=!await ai(i),l=!1,f=!1;if(u){let h=Pn(n,Tg),y=Pn(n,vg);if(await ai(h))await kg(h,i),f=!0;else if(await ai(y))await Rg(y,i),l=!0;else{let{RspElisionStore:m}=await Promise.resolve().then(()=>(ot(),hn)),g=process.env.REDDB_BIN;try{await(await m.open({uri:`file://${i}`,ttlDays:t.ttlDays??De,ephemeralTtlHours:t.ephemeralTtlHours??Ce,byteBudget:t.byteBudget??Ie,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=Pg(a,ci);return d!==a&&await Zc(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function eu(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Ir(t.ttlDays,De)}`,` ephemeralTtlHours: ${Ir(t.ephemeralTtlHours,Ce)}`,` byteBudget: ${Ir(t.byteBudget,Ie)}`,` heavyGitByteThreshold: ${Ir(t.heavyGitByteThreshold,Pe)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
61
+ `),s=tu(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
60
62
  `)}
61
- `}let i=Vs(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
63
+ `}let i=ui(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
62
64
  `)}
63
- `}function Cc(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(zs(r)&&Ks(r)===0&&Ic(r)===t)return n}return-1}function Vs(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(zs(e[s])&&Ks(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Ks(e){return(e.match(/^ */)?.[0]??"").length}function zs(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Ic(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function wr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Hp(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
64
- `),r=Cc(n,"plugins");if(r===-1)return e;let s=Vs(n,r,0),i=Dc(n,"memory",r+1,s,2);if(i===-1)return e;let o=Vs(n,i,2),a=[...n],c=Dc(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
65
+ `}function tu(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(di(r)&&li(r)===0&&nu(r)===t)return n}return-1}function ui(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(di(e[s])&&li(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function li(e){return(e.match(/^ */)?.[0]??"").length}function di(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function nu(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Ir(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Pg(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
66
+ `),r=tu(n,"plugins");if(r===-1)return e;let s=ui(n,r,0),i=Xc(n,"memory",r+1,s,2);if(i===-1)return e;let o=ui(n,i,2),a=[...n],c=Xc(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
65
67
  `)}
66
- `}function Dc(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(zs(o)&&Ks(o)===s&&Ic(o)===t)return i}return-1}async function Hs(e){try{return await Bp(e,Ap.F_OK),!0}catch{return!1}}var Ws,Gp,Jp,Ac=E(()=>{"use strict";ke();me();Ws=_s,Gp=po,Jp=".red/memory/graph.rdb"});var Fc={};N(Fc,{runRspMcpServer:()=>Vp});import{createInterface as Wp}from"node:readline";async function Vp(){let e=$e(process.cwd(),process.env),t=Wp({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 Kp(r,e);jc({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){jc({jsonrpc:"2.0",id:typeof Uc(n)?.id>"u"?null:Uc(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function Kp(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:Mc(t)}]};if(!t.enabled)return{content:[{type:"text",text:Mc(t)}],isError:!0};let r=eg(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.accountingStats(t.telemetryByteBudget))}]};if(n?.name==="rsp_show"){let s=String(n.arguments?.handle??""),i=await r.get(s);return i?"status"in i?{content:[{type:"text",text:JSON.stringify(i)}],isError:!0}:{content:[{type:"text",text:i.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await zp(n.arguments,r)}]}}return{}}async function zp(e,t){let n=Yp(e?.payload),r=Qp(e?.level),s=await _n(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return Bc(s.output);let i=It(n);if(r==="brief"&&Buffer.byteLength(i)<=2*1024)return Bc(i);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return Xp(i,o.length,a,r)}function Yp(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function Qp(e){return e==="terse"?"terse":"brief"}function Xp(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=Lc(i.subarray(0,o)),c=Lc(i.subarray(Math.max(0,i.length-o))),u=["payload summary",`bytes: ${t}`,`lines: ${Zp(i)}`,"head:",a];return c&&c!==a&&u.push("tail:",c),u.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${u.join(`
67
- `)}
68
- `}function Bc(e){return e.endsWith(`
68
+ `}function Xc(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(di(o)&&li(o)===s&&nu(o)===t)return i}return-1}async function ai(e){try{return await _g(e,bg.F_OK),!0}catch{return!1}}var ci,Tg,vg,su=E(()=>{"use strict";Te();he();ci=Ns,Tg=Mo,vg=".red/memory/graph.rdb"});var uu={};$(uu,{runRspMcpServer:()=>Cg});import{createInterface as Dg}from"node:readline";async function Cg(){let e=Ae(process.cwd(),process.env),t=Dg({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 Ig(r,e);au({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){au({jsonrpc:"2.0",id:typeof cu(n)?.id>"u"?null:cu(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function Ig(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:ou(t)}]};if(!t.enabled)return{content:[{type:"text",text:ou(t)}],isError:!0};let r=Ug(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:ut({tool:"rsp_stats",...await r.accountingStats(t.telemetryByteBudget)})}]};if(n?.name==="rsp_show"){let s=String(n.arguments?.handle??""),i=await r.get(s);return i?"status"in i?{content:[{type:"text",text:ut({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:i.status,expired_at:i.expired_at,help:[i.command]})}],isError:!0}:{content:[{type:"text",text:ut({tool:"rsp_show",handle:s,found:!0,bytes:i.original.length,text:i.original.toString("utf8")})}]}:{content:[{type:"text",text:ut(Ag(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await Ng(n.arguments,r)}]}}return{}}function ut(e){return`${K(e)}
69
+ `}function Ag(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function Ng(e,t){let n=$g(e?.payload),r=Bg(e?.level),s=await si(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return Mg(s.output);let i=Cr(n);if(r==="brief"&&Buffer.byteLength(i)<=2*1024)return ut({tool:"rsp_compress",level:r,detected:"text",bytes:Buffer.byteLength(n),text:i});let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return Lg(i,o.length,a,r)}function $g(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function Bg(e){return e==="terse"?"terse":"brief"}function Lg(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=iu(i.subarray(0,o)),c=iu(i.subarray(Math.max(0,i.length-o)));return ut({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:jg(i),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function Mg(e){return e.endsWith(`
69
70
  `)?e:`${e}
70
- `}function Lc(e){return e.toString("utf8").replace(/�$/g,"")}function Zp(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 eg(e){return new gn(je(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs})}function Mc(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function jc(e){process.stdout.write(`${JSON.stringify(e)}
71
- `)}function Uc(e){try{return JSON.parse(e)}catch{return null}}var Gc=E(()=>{"use strict";me();Rn();ot()});var Hc={};N(Hc,{readGhConditionalJson:()=>H});import{spawn as tg}from"node:child_process";import{createHash as ng,randomUUID as rg}from"node:crypto";import{mkdir as sg,readFile as ig,rename as og,writeFile as ag}from"node:fs/promises";import{dirname as cg,join as ug}from"node:path";async function H(e){let t=e.cwd??process.cwd(),n=e.telemetryRoot??t,r=dg(e.path,e.params),s=fg(r),i=await gg(n),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[d,f]of Jc(e.params))a.push("-f",`${d}=${String(f)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await mg(a,t,e.env),u=pg(c.stdout);if(u.statusCode===304&&!!o)return await Ys(n,e.command??`gh api ${e.path}`,!0),{status:0,stdout:o.body,stderr:c.stderr,etag:o.etag,quotaFree:!0};if(u.statusCode>=200&&u.statusCode<300){let d=u.headers.get("etag");return d&&(i.entries[s]={key:s,request:r,etag:d,body:u.body,updated_at:new Date().toISOString()},await hg(n,i)),await Ys(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:d??void 0,quotaFree:!1}}return await Ys(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function Jc(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function dg(e,t){return JSON.stringify({method:"GET",path:e,params:Jc(t)})}function fg(e){return ng("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function mg(e,t,n){return await new Promise(r=>{let s=tg("gh",e,{cwd:t,env:n?{...process.env,...n}:process.env,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>r({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{r({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}function pg(e){let t=e.replace(/\r\n/g,`
71
+ `}function iu(e){return e.toString("utf8").replace(/�$/g,"")}function jg(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 Ug(e){return new Sn(Je(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs})}function ou(e){return ut({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",help:e.enabled?[]:["/red-setup"]})}function au(e){process.stdout.write(`${JSON.stringify(e)}
72
+ `)}function cu(e){try{return JSON.parse(e)}catch{return null}}var lu=E(()=>{"use strict";rn();he();On();ct()});var mu={};$(mu,{readGhConditionalJson:()=>W});import{spawn as Jg}from"node:child_process";import{createHash as Fg,randomUUID as Gg}from"node:crypto";import{mkdir as qg,readFile as Hg,rename as Wg,writeFile as Vg}from"node:fs/promises";import{dirname as Kg,join as zg}from"node:path";async function W(e){let t=e.cwd??process.cwd(),n=e.telemetryRoot??t,r=Qg(e.path,e.params),s=Zg(r),i=await th(n),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[f,d]of du(e.params))a.push("-f",`${f}=${String(d)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await Xg(a,t,e.env),u=eh(c.stdout);if(u.statusCode===304&&!!o)return await fi(n,e.command??`gh api ${e.path}`,!0),{status:0,stdout:o.body,stderr:c.stderr,etag:o.etag,quotaFree:!0};if(u.statusCode>=200&&u.statusCode<300){let f=u.headers.get("etag");return f&&(i.entries[s]={key:s,request:r,etag:f,body:u.body,updated_at:new Date().toISOString()},await nh(n,i)),await fi(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:f??void 0,quotaFree:!1}}return await fi(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function du(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function Qg(e,t){return JSON.stringify({method:"GET",path:e,params:du(t)})}function Zg(e){return Fg("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Xg(e,t,n){return await new Promise(r=>{let s=Jg("gh",e,{cwd:t,env:n?{...process.env,...n}:process.env,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>r({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{r({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}function eh(e){let t=e.replace(/\r\n/g,`
72
73
  `),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]),i=r.index+r[0].length,o=t.indexOf(`
73
74
 
74
75
  `,i),a=o>=0?t.slice(i,o):t.slice(i),c=new Map;for(let u of a.split(`
75
- `)){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:o>=0?t.slice(o+2):""}}async function gg(e){try{let t=JSON.parse(await ig(qc(e),"utf8"));if(yg(t))return t}catch{}return{version:1,entries:{}}}async function hg(e,t){let n=qc(e);await sg(cg(n),{recursive:!0});let r=`${n}.${process.pid}.${Date.now()}.tmp`;await ag(r,`${JSON.stringify(t)}
76
- `,{encoding:"utf8",mode:384}),await og(r,n)}function qc(e){return ug(F(e),lg)}async function Ys(e,t,n){await Ie(e,{collection:q,id:rg(),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})}function yg(e){return Qs(e)&&e.version===1&&Qs(e.entries)&&Object.values(e.entries).every(wg)}function wg(e){return Qs(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Qs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var lg,br=E(()=>{"use strict";ke();he();lg="gh-etag-cache.json"});var Zc={};N(Zc,{renderWaitHelp:()=>ni,runWait:()=>xg});import{spawn as si}from"node:child_process";import{existsSync as ti}from"node:fs";import{mkdir as bg,readdir as _g,readFile as Rg,rm as zc,writeFile as Sg}from"node:fs/promises";import{join as xn,resolve as Xs}from"node:path";import{randomUUID as kg}from"node:crypto";async function xg(e,t=process.cwd()){let n=vg(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(ni()),0;if(n.kind==="ls")return process.stdout.write(`${xe({waits:await Mg(t)})}
77
- `),0;if(!Tg(n.kind))return process.stdout.write(ni()),2;let r=n.kind,s={id:kg(),target:Gg(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:Eg[n.kind],status:"running"},i=xn(await ri(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await bg(await ri(t),{recursive:!0}),await Yc(i,s),o=await Pg({...n,kind:r},t,i,s),process.stdout.write(`${xe(Fg(r,s,o))}
78
- `),await Ug(n.options),o.exitCode}finally{await zc(i,{force:!0})}}function Tg(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function ni(){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.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after a verdict.',""].join(`
79
- `)}function vg(e){let t=e[1],n={timeoutMs:Wc.cmd,reason:"",signal:"SIGUSR1"},r={kind:t,options:n};if(!t||t==="--help"||t==="-h")return{...r,kind:"help"};if(t==="ls")return r;if(t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...r,kind:void 0};n.timeoutMs=Wc[t];let s=e.indexOf("--"),i=s>=0?s:e.length;for(let o=2;o<i;o++){let a=e[o];a==="--timeout"?n.timeoutMs=Qc(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=Hg(e[++o]??""):a==="--notify-cmd"?n.notifyCmd=e[++o]??"":t==="run"&&a==="--branch"?r.branch=e[++o]??"":t==="run"&&a==="--latest"?r.latest=!0:t==="release"&&a==="--tag"?r.tagGlob=e[++o]??"":!a.startsWith("--")&&!r.target&&(r.target=a)}return t==="cmd"&&(r.commandLine=s>=0?e.slice(s+1).join(" "):""),r}async function Pg(e,t,n,r){switch(e.kind){case"cmd":return await Og(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await Zs(Dg(e.target??"",t,{emptyChecksGraceMs:Kc("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,Kc("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await Zs(()=>Cg(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await Zs(()=>Ng(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function Og(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=si(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),En(r,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${Xc(t)}`})},t);c.once("error",l=>{clearTimeout(u),En(r,s,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,d)=>{if(clearTimeout(u),o)return;let f=l===0;En(r,s,f?"success":"failure"),a({status:f?"success":"failure",exitCode:f?0:1,summary:f?"command exited successfully":`command exited with ${d??l??"unknown"}`,details:{status:l??null,signal:d??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function Zs(e,t,n,r,s){let i=Date.now()+t,o=0;for(;Date.now()<i;){let a=await e();if(a.status!=="running"&&a.status!=="indeterminate")return await En(r,s,a.status),a;let c=Math.min(n*4,Math.round(n*Math.pow(1.25,o++)))+Math.floor(Math.random()*1e3);await Kg(Math.min(c,Math.max(0,i-Date.now())))}return await En(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Xc(t)}`}}function Dg(e,t,n){let r=Date.now();return()=>$g(e,t,n,r)}async function $g(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await Rr(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return{status:"indeterminate",exitCode:2,summary:s.stderr||"gh pr view failed"};let i=ii(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(Jg),u=c.filter(d=>d==="failure").length,l=c.filter(d=>d==="pending").length;if(String(i.state)!=="OPEN")return at("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return at("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return{status:"running",exitCode:2,summary:`PR #${e} has ${l} pending checks`};if(o.length===0){let d=Date.now()-r;return a==="UNKNOWN"||d<n.emptyChecksGraceMs?{status:"running",exitCode:2,summary:`PR #${e} has no registered checks yet`,details:{checks:0,mergeable:a,empty_checks_elapsed_ms:d}}:at("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?{status:"running",exitCode:2,summary:`PR #${e} mergeability is still unknown`,details:{checks:o.length,mergeable:a}}:at("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function Cg(e,t){let n=e.target??(e.latest&&e.branch?await Ig(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await Rr(["run","view",n,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh run view failed"};let s=ii(r.stdout),i=String(s.status??"").toLowerCase(),o=String(s.conclusion??"").toLowerCase();return i!=="completed"?{status:"running",exitCode:2,summary:`run ${n} is ${i||"pending"}`}:o==="success"?at("success",`run ${n} succeeded`,Vc(s)):at("failure",`run ${n} concluded ${o||"unknown"}`,Vc(s))}async function Ig(e,t){let n=await Rr(["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 ct(s)&&s.databaseId!=null?String(s.databaseId):""}async function Ng(e,t,n){let r=await Rr(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh release list failed"};let s=JSON.parse(r.stdout),o=(Array.isArray(s)?s.filter(ct):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||Wg(e,c))&&u>=t});return o?at("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):{status:"running",exitCode:2,summary:"no matching release is published yet"}}async function Rr(e,t){let n=await Ag(e,t);return n||await new Promise(r=>{let s=si("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>r({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{r({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}async function Ag(e,t){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Bg(e[2],t);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await H({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let r=Nt(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:kn(r,"database_id")||kn(r,"id"),status:M(r,"status").toUpperCase(),conclusion:M(r,"conclusion").toUpperCase(),workflowName:M(r,"workflow_name")||M(r,"name"),headBranch:M(r,"head_branch"),url:M(r,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=ei(e,"--branch"),r=ei(e,"--limit")??"20",s=await H({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:r},cwd:t,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let i=_r(Nt(JSON.parse(s.stdout)).workflow_runs).map(o=>({databaseId:kn(o,"database_id")||kn(o,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:s.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=ei(e,"--limit")??"20",r=await H({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=_r(JSON.parse(r.stdout)).map(i=>({tagName:M(i,"tag_name"),publishedAt:M(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(s),stderr:r.stderr}}return null}async function Bg(e,t){let n=await H({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,command:`gh pr view ${e}`});if(n.status!==0)return n;let r=Nt(JSON.parse(n.stdout));if(Array.isArray(r.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let s=M(Nt(r.head),"sha"),[i,o]=s?await Promise.all([H({path:`repos/{owner}/{repo}/commits/${s}/status`,cwd:t,command:`gh pr view ${e} status`}),H({path:`repos/{owner}/{repo}/commits/${s}/check-runs`,cwd:t,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],a=i.status===0?_r(Nt(JSON.parse(i.stdout)).statuses):[],c=o.status===0?_r(Nt(JSON.parse(o.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,o.stderr].filter(Boolean).join(`
80
- `),stdout:JSON.stringify({number:kn(r,"number"),state:M(r,"state").toUpperCase(),mergeable:Lg(r),statusCheckRollup:[...a.map(u=>({conclusion:M(u,"state").toUpperCase()})),...c.map(u=>({status:M(u,"status").toUpperCase(),conclusion:M(u,"conclusion").toUpperCase()}))],url:M(r,"html_url")})}}function Lg(e){let t=M(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}async function Mg(e){let t=await ri(e);if(!ti(t))return[];let n=await _g(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=xn(t,s),o=qg(await Rg(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Vg(a)){await zc(i,{force:!0});continue}r.push(o)}return r}async function ri(e){return xn(await jg(e),".red","tmp","waits")}async function jg(e){let t=Xs(e);for(;;){if(ti(xn(t,".red"))||ti(xn(t,".git")))return t;let n=Xs(t,"..");if(n===t)return Xs(e);t=n}}async function En(e,t,n){await Yc(e,{...t,status:n}).catch(()=>{})}async function Yc(e,t){await Sg(e,`${xe(t)}
81
- `,"utf8")}async function Ug(e){if(e.signalPid&&Number.isInteger(e.signalPid)&&e.signalPid>0)try{process.kill(e.signalPid,e.signal)}catch{}e.notifyCmd?.trim()&&await new Promise(t=>{let n=si(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function Fg(e,t,n){return{wait:{id:t.id,target:t.target,kind:e,status:n.status,reason:t.reason,started_at:t.started_at,completed_at:new Date().toISOString(),poll_tier:t.poll_tier},verdict:{exit_code:n.exitCode,summary:n.summary,...n.details?{details:n.details}:{}}}}function at(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function Gg(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??""}`}function Jg(e){let t=ct(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 Vc(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 ii(e){let t=JSON.parse(e);if(!ct(t))throw new Error("expected JSON object");return t}function qg(e){let t=e.trim();if(!t)return{};try{return ii(t)}catch{let n=ue(t);if(!ct(n))throw new Error("expected structured object");return n}}function ct(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Nt(e){return ct(e)?e:{}}function _r(e){return Array.isArray(e)?e.filter(ct):[]}function M(e,t){let n=e[t];return typeof n=="string"?n:""}function kn(e,t){let n=e[t];return typeof n=="number"?n:0}function ei(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function Qc(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 Kc(e,t){let n=process.env[e];if(!n)return t;try{return Qc(n)}catch{return t}}function Hg(e){return e.startsWith("SIG")?e:`SIG${e}`}function Xc(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function Wg(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Vg(e){try{return process.kill(e,0),!0}catch{return!1}}async function Kg(e){await new Promise(t=>setTimeout(t,e))}var Wc,Eg,eu=E(()=>{"use strict";le();Bn();br();Wc={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},Eg={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var nu={};N(nu,{renderShellInit:()=>zg});function zg(e,t=bn){if(e==="fish")return Yg(t);if(e==="bash"||e==="zsh")return Qg(e,t);throw new Error(`unsupported shell: ${e}`)}function Yg(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(kr))].map(n=>` abbr --add --position command -- ${n} '${th(`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(`
82
- `)}function Qg(e,t){let n=Zg(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Sr("git",n.get("git")??[]),...Sr("gh",n.get("gh")??[]),...Sr("vitest",n.get("vitest")??[]),...Sr("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(`
83
- `)}function Sr(e,t){if(t.length===0)return[];if(t.some(i=>i.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(i=>i.command.slice(1)).filter(i=>i.length===1).map(i=>i[0]).filter(kr),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(kr)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let i=n.map(o=>tu(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of Xg(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${eh(u)}' ]`).join(" && ")).join(" || ");s.push(` ${tu(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Xg(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 Zg(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!kr(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function kr(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function tu(e){return e.replace(/[\\|)&;]/g,"\\$&")}function eh(e){return e.replace(/'/g,"'\\''")}function th(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var ru=E(()=>{"use strict";hr()});function oi(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"&&nh(t.chosenOption)&&rh(t.outcome)&&sh(t.cost)}function nh(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function rh(e){return e==="success"||e==="failure"||e==="escalated"}function sh(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 su=E(()=>{});import{createHash as ih}from"node:crypto";function hu(e,t){return new ci(e,t)}function iu(e){let t=Number(e.red_entity_id??e.rid),n=ui(e.properties??e.PROPERTIES),r=yu(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),i=String(n.title??e.label??e.LABEL??s),o=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:i,content:o,tags:a,created_at:Number(n.created_at??c),updated_at:Number(n.updated_at??n.created_at??c),hash:String(n.hash??"")}}}function ou(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=wu(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:ui(e.properties??e.PROPERTIES)}}function ch(e){let t=Number(e.red_entity_id??e.rid),n=ui(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!oi(n)?null:{rid:t,event:n}}function ui(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Er(e)?e:{}}function yu(e){let t=e==="contact"?"person":e;if(oh.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function wu(e){if(ah.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function uh(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function au(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function lt(e){return Er(e)?e:{}}function cu(e,t){return lt(e)[t]}function uu(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function lu(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function du(e){let t=lt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function W(e){return typeof e=="string"&&e.length>0?e:void 0}function Er(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ai(e){return e!=null}function lh(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function dh(e){return ih("sha256").update(JSON.stringify(e)).digest("hex")}function fh(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function fu(e){return`artifact-hash:${e}`}function mu(e,t,n){return`connection:${e}:${t}:${n}`}function pu(){return"model-tier-bandit:v1"}function mh(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function gu(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function bu(e,t){let n=e.properties.title.toLowerCase(),r=e.properties.content.toLowerCase(),s=e.properties.tags.map(o=>o.toLowerCase()),i=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+gu(n,a)*3+gu(r,a),0),tags:t.reduce((o,a)=>o+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(i===a?3:i.includes(a)||a.includes(i)?1:0),0)}}function ph(e,t,n,r){let s=0;for(let i of n){let o=i.from_rid===e.rid?i.to_rid:i.to_rid===e.rid?i.from_rid:null;if(o==null)continue;let a=r.get(o);if(!a)continue;let c=_u({...bu(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return ut(s)}function _u(e){return{...e,lexical:ut(e.lexical),tags:ut(e.tags),kind:ut(e.kind),connections:ut(e.connections),vector:ut(e.vector),total:ut(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function ut(e){return Math.round(e*1e3)/1e3}function gh(e,t){if(e.length<=220)return e;let n=e.toLowerCase(),r=t.map(i=>n.indexOf(i)).filter(i=>i>=0).sort((i,o)=>i-o)[0]??0,s=Math.max(0,r-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function hh(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,i)=>({ref:`B${i+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:n,missing_evidence:r}}function yh(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var ye,oh,ah,ci,Ru=E(()=>{"use strict";su();ye={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},oh=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),ah=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),ci=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(lt(n));if(t==="getArtifact")return await this.getArtifact(cu(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=lt(n);return await this.search(uu(r,"query"),lu(r,"limit")??10,du(r.options))}if(t==="think"){let r=lt(n);return await this.think(uu(r,"query"),lu(r,"limit")??8,du(r.options))}if(t==="link")return await this.link(lt(n));if(t==="backlinks")return await this.backlinks(cu(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(lt(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 ${ye.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ye.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ye.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:yh(t.map(r=>r.kind))}}async capture(t){let n=W(t.title)||"Untitled artifact",r=W(t.content);if(!r)throw new Error("brain capture requires content");let s=yu(W(t.kind)||"note"),i=lh(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=dh([s,n,r,i,W(t.sourcePath),W(t.sourceSession)]),c=await this.kv().get(fu(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${fh(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:W(t.sourceAgent),source_runner:W(t.sourceRunner),source_session:W(t.sourceSession),source_path:W(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Er(t.metadata)?t.metadata:void 0},f=(await this.db.query(`INSERT INTO ${ye.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!f)throw new Error("INSERT artifact returned no row");let y=iu(f);if(!y)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(fu(a),y.rid),await this.materializeTagConnections(y),y}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 ${ye.artifacts}`)).rows.map(iu).filter(ai)}async search(t,n,r={}){let s=mh(t),i=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!i.has(u.rid)).map(u=>{let l=bu(u,s),d=_u({...l,connections:ph(u,s,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:gh(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 hh(t,s)}async link(t){let n=await this.getArtifact(au(t.from)),r=await this.getArtifact(au(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=wu(W(t.kind)||"related_to"),i=await this.findConnection(n.rid,r.rid,s);if(i!=null){let l=(await this.listConnections()).find(d=>d.rid===i);if(l)return l}let o={reason:W(t.reason),confidence:W(t.confidence)||"explicit",created_at:Date.now(),metadata:Er(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${ye.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=ou(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(mu(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 ${ye.connections}`)).rows.map(ou).filter(ai)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=uh(W(t.interval)||"day"),s=W(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(!oi(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${ye.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 ${ye.outcomeEvents}`)).rows.map(ch).filter(ai).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(pu());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(pu(),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(mu(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(ye.kv)}}});var Nu={};N(Nu,{runResidentServer:()=>xh});import{randomUUID as At}from"node:crypto";import{execFileSync as wh,spawn as bh}from"node:child_process";import{existsSync as _h}from"node:fs";import{mkdir as Pu,rename as Rh,rm as Su,writeFile as Ou}from"node:fs/promises";import{createServer as Sh}from"node:net";import{dirname as mi,join as xr}from"node:path";import{fileURLToPath as kh,pathToFileURL as Eh}from"node:url";async function xh(e){await Pu(mi(e.socketPath),{recursive:!0});let t=Mh();Lh();let n=e.telemetryDrainTimeoutMs??Du,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??Vn,a,c,u=!1,l=new Set,d=e.telemetryDrainIntervalMs??3e4,f=Sh(x=>{l.add(x),x.once("close",()=>l.delete(x)),h(),Hh(x,async v=>{h();let C=await Wh(r,v,e.storeUri,e.residentVersion??"0.0.0-dev"),L={id:v.id,ok:!0,value:C,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};Iu(x,L),v.op==="handover"&&setImmediate(()=>y())})});function y(){i=!0,u=!0,c=Bh(c),f.close();for(let x of l)x.destroy()}function h(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{y()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(x=>{let v=()=>{Tr(),f.close();for(let C of l)C.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,v),{signal:x,handler:v}});await new Promise((x,v)=>{f.once("error",v),f.listen(e.socketPath,()=>{f.off("error",v),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let v=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(v)&&v>0&&await new Promise(Z=>setTimeout(Z,v));let C=await cn.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),L=Number(process.hrtime.bigint()-x)/1e6,z=new fi(C,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??Hn,byteBudget:e.telemetryByteBudget??e.byteBudget??Wn});if(i){await C.close();return}if(await li(z,n),i){await C.close();return}r={kind:"ready",store:C,telemetry:z,storeOpenCount:1,storeElapsedMs:L},s=setInterval(()=>{let Z=r.kind==="ready"?r:void 0;Z&&li(Z.telemetry,n)},d),s.unref(),h()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},h()}),e.pidPath&&await Ou(e.pidPath,`${process.pid}
84
- `,{encoding:"utf8",mode:384});let b=e.residentVersion??"0.0.0-dev",w=e.registryPath??xr(F(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await Gn(w,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:b})}catch{}await new Promise(x=>f.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await Su(e.socketPath,{force:!0});let T=r;T.kind==="ready"&&(await li(T.telemetry,n,u),await T.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:v}of g)process.off(x,v);t?.kill("SIGTERM"),Tr(),e.pidPath&&await Su(e.pidPath,{force:!0}),await Jn(w)}async function $h(e,t,n=new Date){let r=await ar(e,1,n),s=n.toISOString().slice(0,10),i=r.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,o=r.savings.tokens_saved>0?i/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=xr(F(t),Oh),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:i,dollars_saved_today_usd:Math.round(o*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 Pu(mi(a),{recursive:!0}),await Ou(c,`${xe(u)}
85
- `,{encoding:"utf8",mode:384}),await Rh(c,a)}async function li(e,t=Du,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Cu(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
86
- `)}}async function Ch(e){let t=[];for(let n of Dh){let r=await Ih(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await Nh(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${$u(n)}`))}return t}async function Ih(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 i=(await e.list()).find(o=>o.name===t);if(i&&i.model!=="kv")return{ok:!1,previousModel:i.model};throw n}}async function Nh(e,t,n){let r=Ah(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${$u(t)}`)}function Ah(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 $u(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Bh(e){return e&&clearTimeout(e),setTimeout(()=>{Tr(),process.exit(0)},Ph)}function Lh(){ku||(ku=!0,process.on("exit",()=>Tr()))}function Mh(){if(process.platform==="win32")return;let t=bh(process.execPath,["-e",`
76
+ `)){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:o>=0?t.slice(o+2):""}}async function th(e){try{let t=JSON.parse(await Hg(fu(e),"utf8"));if(rh(t))return t}catch{}return{version:1,entries:{}}}async function nh(e,t){let n=fu(e);await qg(Kg(n),{recursive:!0});let r=`${n}.${process.pid}.${Date.now()}.tmp`;await Vg(r,`${JSON.stringify(t)}
77
+ `,{encoding:"utf8",mode:384}),await Wg(r,n)}function fu(e){return zg(F(e),Yg)}async function fi(e,t,n){await $e(e,{collection:H,id:Gg(),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})}function rh(e){return mi(e)&&e.version===1&&mi(e.entries)&&Object.values(e.entries).every(sh)}function sh(e){return mi(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function mi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Yg,Ar=E(()=>{"use strict";Te();be();Yg="gh-etag-cache.json"});var Ru={};$(Ru,{renderWaitHelp:()=>wi,runWait:()=>dh});import{spawn as _i}from"node:child_process";import{existsSync as yi}from"node:fs";import{mkdir as ih,readdir as oh,readFile as ah,rm as yu,writeFile as ch}from"node:fs/promises";import{join as In,resolve as pi}from"node:path";import{randomUUID as uh}from"node:crypto";async function dh(e,t=process.cwd()){let n=mh(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(wi()),0;if(n.kind==="ls")return process.stdout.write(`${K({waits:await Eh(t)})}
78
+ `),0;if(!fh(n.kind))return process.stdout.write(wi()),2;let r=n.kind,s={id:uh(),target:Oh(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:lh[n.kind],status:"running"},i=In(await bi(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await ih(await bi(t),{recursive:!0}),await wu(i,s),o=await ph({...n,kind:r},t,i,s),process.stdout.write(`${K(vh(r,s,o))}
79
+ `),await Th(n.options),o.exitCode}finally{await yu(i,{force:!0})}}function fh(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function wi(){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.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after a verdict.',""].join(`
80
+ `)}function mh(e){let t=e[1],n={timeoutMs:pu.cmd,reason:"",signal:"SIGUSR1"},r={kind:t,options:n};if(!t||t==="--help"||t==="-h")return{...r,kind:"help"};if(t==="ls")return r;if(t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...r,kind:void 0};n.timeoutMs=pu[t];let s=e.indexOf("--"),i=s>=0?s:e.length;for(let o=2;o<i;o++){let a=e[o];a==="--timeout"?n.timeoutMs=bu(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=Ch(e[++o]??""):a==="--notify-cmd"?n.notifyCmd=e[++o]??"":t==="run"&&a==="--branch"?r.branch=e[++o]??"":t==="run"&&a==="--latest"?r.latest=!0:t==="release"&&a==="--tag"?r.tagGlob=e[++o]??"":!a.startsWith("--")&&!r.target&&(r.target=a)}return t==="cmd"&&(r.commandLine=s>=0?e.slice(s+1).join(" "):""),r}async function ph(e,t,n,r){switch(e.kind){case"cmd":return await gh(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await gi(hh(e.target??"",t,{emptyChecksGraceMs:hu("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,hu("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await gi(()=>wh(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await gi(()=>_h(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function gh(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=_i(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),Cn(r,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${_u(t)}`})},t);c.once("error",l=>{clearTimeout(u),Cn(r,s,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,f)=>{if(clearTimeout(u),o)return;let d=l===0;Cn(r,s,d?"success":"failure"),a({status:d?"success":"failure",exitCode:d?0:1,summary:d?"command exited successfully":`command exited with ${f??l??"unknown"}`,details:{status:l??null,signal:f??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function gi(e,t,n,r,s){let i=Date.now()+t,o=0;for(;Date.now()<i;){let a=await e();if(a.status!=="running"&&a.status!=="indeterminate")return await Cn(r,s,a.status),a;let c=Math.min(n*4,Math.round(n*Math.pow(1.25,o++)))+Math.floor(Math.random()*1e3);await Nh(Math.min(c,Math.max(0,i-Date.now())))}return await Cn(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${_u(t)}`}}function hh(e,t,n){let r=Date.now();return()=>yh(e,t,n,r)}async function yh(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await $r(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return{status:"indeterminate",exitCode:2,summary:s.stderr||"gh pr view failed"};let i=Ri(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(Ph),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(i.state)!=="OPEN")return lt("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return lt("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return{status:"running",exitCode:2,summary:`PR #${e} has ${l} pending checks`};if(o.length===0){let f=Date.now()-r;return a==="UNKNOWN"||f<n.emptyChecksGraceMs?{status:"running",exitCode:2,summary:`PR #${e} has no registered checks yet`,details:{checks:0,mergeable:a,empty_checks_elapsed_ms:f}}:lt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?{status:"running",exitCode:2,summary:`PR #${e} mergeability is still unknown`,details:{checks:o.length,mergeable:a}}:lt("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function wh(e,t){let n=e.target??(e.latest&&e.branch?await bh(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await $r(["run","view",n,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh run view failed"};let s=Ri(r.stdout),i=String(s.status??"").toLowerCase(),o=String(s.conclusion??"").toLowerCase();return i!=="completed"?{status:"running",exitCode:2,summary:`run ${n} is ${i||"pending"}`}:o==="success"?lt("success",`run ${n} succeeded`,gu(s)):lt("failure",`run ${n} concluded ${o||"unknown"}`,gu(s))}async function bh(e,t){let n=await $r(["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 dt(s)&&s.databaseId!=null?String(s.databaseId):""}async function _h(e,t,n){let r=await $r(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh release list failed"};let s=JSON.parse(r.stdout),o=(Array.isArray(s)?s.filter(dt):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||Ih(e,c))&&u>=t});return o?lt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):{status:"running",exitCode:2,summary:"no matching release is published yet"}}async function $r(e,t){let n=await Rh(e,t);return n||await new Promise(r=>{let s=_i("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>r({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{r({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}async function Rh(e,t){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await Sh(e[2],t);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await W({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let r=Ut(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Dn(r,"database_id")||Dn(r,"id"),status:j(r,"status").toUpperCase(),conclusion:j(r,"conclusion").toUpperCase(),workflowName:j(r,"workflow_name")||j(r,"name"),headBranch:j(r,"head_branch"),url:j(r,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=hi(e,"--branch"),r=hi(e,"--limit")??"20",s=await W({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:r},cwd:t,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let i=Nr(Ut(JSON.parse(s.stdout)).workflow_runs).map(o=>({databaseId:Dn(o,"database_id")||Dn(o,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:s.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=hi(e,"--limit")??"20",r=await W({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=Nr(JSON.parse(r.stdout)).map(i=>({tagName:j(i,"tag_name"),publishedAt:j(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(s),stderr:r.stderr}}return null}async function Sh(e,t){let n=await W({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,command:`gh pr view ${e}`});if(n.status!==0)return n;let r=Ut(JSON.parse(n.stdout));if(Array.isArray(r.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let s=j(Ut(r.head),"sha"),[i,o]=s?await Promise.all([W({path:`repos/{owner}/{repo}/commits/${s}/status`,cwd:t,command:`gh pr view ${e} status`}),W({path:`repos/{owner}/{repo}/commits/${s}/check-runs`,cwd:t,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],a=i.status===0?Nr(Ut(JSON.parse(i.stdout)).statuses):[],c=o.status===0?Nr(Ut(JSON.parse(o.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,o.stderr].filter(Boolean).join(`
81
+ `),stdout:JSON.stringify({number:Dn(r,"number"),state:j(r,"state").toUpperCase(),mergeable:kh(r),statusCheckRollup:[...a.map(u=>({conclusion:j(u,"state").toUpperCase()})),...c.map(u=>({status:j(u,"status").toUpperCase(),conclusion:j(u,"conclusion").toUpperCase()}))],url:j(r,"html_url")})}}function kh(e){let t=j(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}async function Eh(e){let t=await bi(e);if(!yi(t))return[];let n=await oh(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=In(t,s),o=Dh(await ah(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Ah(a)){await yu(i,{force:!0});continue}r.push(o)}return r}async function bi(e){return In(await xh(e),".red","tmp","waits")}async function xh(e){let t=pi(e);for(;;){if(yi(In(t,".red"))||yi(In(t,".git")))return t;let n=pi(t,"..");if(n===t)return pi(e);t=n}}async function Cn(e,t,n){await wu(e,{...t,status:n}).catch(()=>{})}async function wu(e,t){await ch(e,`${K(t)}
82
+ `,"utf8")}async function Th(e){if(e.signalPid&&Number.isInteger(e.signalPid)&&e.signalPid>0)try{process.kill(e.signalPid,e.signal)}catch{}e.notifyCmd?.trim()&&await new Promise(t=>{let n=_i(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function vh(e,t,n){return{wait:{id:t.id,target:t.target,kind:e,status:n.status,reason:t.reason,started_at:t.started_at,completed_at:new Date().toISOString(),poll_tier:t.poll_tier},verdict:{exit_code:n.exitCode,summary:n.summary,...n.details?{details:n.details}:{}}}}function lt(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function Oh(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??""}`}function Ph(e){let t=dt(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 gu(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 Ri(e){let t=JSON.parse(e);if(!dt(t))throw new Error("expected JSON object");return t}function Dh(e){let t=e.trim();if(!t)return{};try{return Ri(t)}catch{let n=Z(t);if(!dt(n))throw new Error("expected structured object");return n}}function dt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ut(e){return dt(e)?e:{}}function Nr(e){return Array.isArray(e)?e.filter(dt):[]}function j(e,t){let n=e[t];return typeof n=="string"?n:""}function Dn(e,t){let n=e[t];return typeof n=="number"?n:0}function hi(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function bu(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 hu(e,t){let n=process.env[e];if(!n)return t;try{return bu(n)}catch{return t}}function Ch(e){return e.startsWith("SIG")?e:`SIG${e}`}function _u(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function Ih(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Ah(e){try{return process.kill(e,0),!0}catch{return!1}}async function Nh(e){await new Promise(t=>setTimeout(t,e))}var pu,lh,Su=E(()=>{"use strict";X();rn();Ar();pu={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},lh={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Eu={};$(Eu,{renderShellInit:()=>$h});function $h(e,t=Tn){if(e==="fish")return Bh(t);if(e==="bash"||e==="zsh")return Lh(e,t);throw new Error(`unsupported shell: ${e}`)}function Bh(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(Lr))].map(n=>` abbr --add --position command -- ${n} '${Jh(`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(`
83
+ `)}function Lh(e,t){let n=jh(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Br("git",n.get("git")??[]),...Br("gh",n.get("gh")??[]),...Br("vitest",n.get("vitest")??[]),...Br("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(`
84
+ `)}function Br(e,t){if(t.length===0)return[];if(t.some(i=>i.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(i=>i.command.slice(1)).filter(i=>i.length===1).map(i=>i[0]).filter(Lr),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(Lr)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let i=n.map(o=>ku(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of Mh(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Uh(u)}' ]`).join(" && ")).join(" || ");s.push(` ${ku(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Mh(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 jh(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Lr(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function Lr(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function ku(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Uh(e){return e.replace(/'/g,"'\\''")}function Jh(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var xu=E(()=>{"use strict";xr()});function Si(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"&&Fh(t.chosenOption)&&Gh(t.outcome)&&qh(t.cost)}function Fh(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Gh(e){return e==="success"||e==="failure"||e==="escalated"}function qh(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 Tu=E(()=>{});import{createHash as Hh}from"node:crypto";function Mu(e,t){return new Ei(e,t)}function vu(e){let t=Number(e.red_entity_id??e.rid),n=xi(e.properties??e.PROPERTIES),r=ju(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),i=String(n.title??e.label??e.LABEL??s),o=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:i,content:o,tags:a,created_at:Number(n.created_at??c),updated_at:Number(n.updated_at??n.created_at??c),hash:String(n.hash??"")}}}function Ou(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=Uu(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:xi(e.properties??e.PROPERTIES)}}function Kh(e){let t=Number(e.red_entity_id??e.rid),n=xi(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Si(n)?null:{rid:t,event:n}}function xi(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Mr(e)?e:{}}function ju(e){let t=e==="contact"?"person":e;if(Wh.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function Uu(e){if(Vh.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function zh(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Pu(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function mt(e){return Mr(e)?e:{}}function Du(e,t){return mt(e)[t]}function Cu(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Iu(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Au(e){let t=mt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function V(e){return typeof e=="string"&&e.length>0?e:void 0}function Mr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ki(e){return e!=null}function Yh(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Qh(e){return Hh("sha256").update(JSON.stringify(e)).digest("hex")}function Zh(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Nu(e){return`artifact-hash:${e}`}function $u(e,t,n){return`connection:${e}:${t}:${n}`}function Bu(){return"model-tier-bandit:v1"}function Xh(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Lu(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function Ju(e,t){let n=e.properties.title.toLowerCase(),r=e.properties.content.toLowerCase(),s=e.properties.tags.map(o=>o.toLowerCase()),i=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+Lu(n,a)*3+Lu(r,a),0),tags:t.reduce((o,a)=>o+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(i===a?3:i.includes(a)||a.includes(i)?1:0),0)}}function ey(e,t,n,r){let s=0;for(let i of n){let o=i.from_rid===e.rid?i.to_rid:i.to_rid===e.rid?i.from_rid:null;if(o==null)continue;let a=r.get(o);if(!a)continue;let c=Fu({...Ju(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return ft(s)}function Fu(e){return{...e,lexical:ft(e.lexical),tags:ft(e.tags),kind:ft(e.kind),connections:ft(e.connections),vector:ft(e.vector),total:ft(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function ft(e){return Math.round(e*1e3)/1e3}function ty(e,t){if(e.length<=220)return e;let n=e.toLowerCase(),r=t.map(i=>n.indexOf(i)).filter(i=>i>=0).sort((i,o)=>i-o)[0]??0,s=Math.max(0,r-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function ny(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,i)=>({ref:`B${i+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:n,missing_evidence:r}}function ry(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var _e,Wh,Vh,Ei,Gu=E(()=>{"use strict";Tu();_e={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Wh=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Vh=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Ei=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(mt(n));if(t==="getArtifact")return await this.getArtifact(Du(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=mt(n);return await this.search(Cu(r,"query"),Iu(r,"limit")??10,Au(r.options))}if(t==="think"){let r=mt(n);return await this.think(Cu(r,"query"),Iu(r,"limit")??8,Au(r.options))}if(t==="link")return await this.link(mt(n));if(t==="backlinks")return await this.backlinks(Du(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(mt(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 ${_e.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${_e.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${_e.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:ry(t.map(r=>r.kind))}}async capture(t){let n=V(t.title)||"Untitled artifact",r=V(t.content);if(!r)throw new Error("brain capture requires content");let s=ju(V(t.kind)||"note"),i=Yh(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Qh([s,n,r,i,V(t.sourcePath),V(t.sourceSession)]),c=await this.kv().get(Nu(a));if(c!=null){let y=await this.getArtifact(Number(c));if(y)return y}let u=`${Zh(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:V(t.sourceAgent),source_runner:V(t.sourceRunner),source_session:V(t.sourceSession),source_path:V(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Mr(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${_e.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 h=vu(d);if(!h)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Nu(a),h.rid),await this.materializeTagConnections(h),h}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 ${_e.artifacts}`)).rows.map(vu).filter(ki)}async search(t,n,r={}){let s=Xh(t),i=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!i.has(u.rid)).map(u=>{let l=Ju(u,s),f=Fu({...l,connections:ey(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:ty(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 ny(t,s)}async link(t){let n=await this.getArtifact(Pu(t.from)),r=await this.getArtifact(Pu(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=Uu(V(t.kind)||"related_to"),i=await this.findConnection(n.rid,r.rid,s);if(i!=null){let l=(await this.listConnections()).find(f=>f.rid===i);if(l)return l}let o={reason:V(t.reason),confidence:V(t.confidence)||"explicit",created_at:Date.now(),metadata:Mr(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${_e.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Ou(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put($u(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 ${_e.connections}`)).rows.map(Ou).filter(ki)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=zh(V(t.interval)||"day"),s=V(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(!Si(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${_e.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 ${_e.outcomeEvents}`)).rows.map(Kh).filter(ki).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Bu());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Bu(),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($u(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(_e.kv)}}});var nl={};$(nl,{runResidentServer:()=>dy});import{randomUUID as Jt}from"node:crypto";import{execFileSync as sy,spawn as iy}from"node:child_process";import{existsSync as oy}from"node:fs";import{mkdir as Yu,rename as ay,rm as qu,writeFile as Qu}from"node:fs/promises";import{createServer as cy}from"node:net";import{dirname as Pi,join as jr}from"node:path";import{fileURLToPath as uy,pathToFileURL as ly}from"node:url";async function dy(e){await Yu(Pi(e.socketPath),{recursive:!0});let t=Ey();ky();let n=e.telemetryDrainTimeoutMs??Zu,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??nr,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=cy(x=>{l.add(x),x.once("close",()=>l.delete(x)),y(),Cy(x,async v=>{y();let I=await Iy(r,v,e.storeUri,e.residentVersion??"0.0.0-dev"),M={id:v.id,ok:!0,value:I,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};tl(x,M),v.op==="handover"&&setImmediate(()=>h())})});function h(){i=!0,u=!0,c=Sy(c),d.close();for(let x of l)x.destroy()}function y(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{h()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(x=>{let v=()=>{Ur(),d.close();for(let I of l)I.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,v),{signal:x,handler:v}});await new Promise((x,v)=>{d.once("error",v),d.listen(e.socketPath,()=>{d.off("error",v),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let v=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(v)&&v>0&&await new Promise(re=>setTimeout(re,v));let I=await gn.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),M=Number(process.hrtime.bigint()-x)/1e6,Q=new Oi(I,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??er,byteBudget:e.telemetryByteBudget??e.byteBudget??tr});if(i){await I.close();return}if(await Ti(Q,n),i){await I.close();return}r={kind:"ready",store:I,telemetry:Q,storeOpenCount:1,storeElapsedMs:M},s=setInterval(()=>{let re=r.kind==="ready"?r:void 0;re&&Ti(re.telemetry,n)},f),s.unref(),y()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},y()}),e.pidPath&&await Qu(e.pidPath,`${process.pid}
85
+ `,{encoding:"utf8",mode:384});let b=e.residentVersion??"0.0.0-dev",w=e.registryPath??jr(F(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await Qn(w,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:b})}catch{}await new Promise(x=>d.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await qu(e.socketPath,{force:!0});let T=r;T.kind==="ready"&&(await Ti(T.telemetry,n,u),await T.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:v}of g)process.off(x,v);t?.kill("SIGTERM"),Ur(),e.pidPath&&await qu(e.pidPath,{force:!0}),await Zn(w)}async function yy(e,t,n=new Date){let r=await hr(e,1,n),s=n.toISOString().slice(0,10),i=r.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,o=r.savings.tokens_saved>0?i/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=jr(F(t),gy),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:i,dollars_saved_today_usd:Math.round(o*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 Yu(Pi(a),{recursive:!0}),await Qu(c,`${K(u)}
86
+ `,{encoding:"utf8",mode:384}),await ay(c,a)}async function Ti(e,t=Zu,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await el(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
87
+ `)}}async function wy(e){let t=[];for(let n of hy){let r=await by(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await _y(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Xu(n)}`))}return t}async function by(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 i=(await e.list()).find(o=>o.name===t);if(i&&i.model!=="kv")return{ok:!1,previousModel:i.model};throw n}}async function _y(e,t,n){let r=Ry(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Xu(t)}`)}function Ry(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 Xu(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Sy(e){return e&&clearTimeout(e),setTimeout(()=>{Ur(),process.exit(0)},py)}function ky(){Hu||(Hu=!0,process.on("exit",()=>Ur()))}function Ey(){if(process.platform==="win32")return;let t=iy(process.execPath,["-e",`
87
88
  const { execFileSync } = require("node:child_process");
88
89
  const parentPid = Number(process.argv[1]);
89
90
  const known = new Set();
@@ -124,64 +125,50 @@ const timer = setInterval(() => {
124
125
  clearInterval(timer);
125
126
  process.exit(0);
126
127
  }, 500);
127
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Tr(){for(let e of jh())try{process.kill(e,"SIGTERM")}catch{}}function jh(){if(process.platform==="win32")return[];let e="";try{e=wh("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]),i=Number(r[2]),o=r[3]??"";i===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(s)}return t}async function Uh(e){if(e.collection!==ge)return e;let t=await Eu(e.raw_text,Tu(e.raw_bytes)),n=await Eu(e.emitted_text,Tu(e.emitted_bytes)),{raw_text:r,emitted_text:s,...i}=e;return{...i,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function Eu(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Th)try{return await Cu((async()=>({tokens:(await Fh())("cl100k_base").encode(e).length,estimated:!1}))(),vh,"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 Fh(){return xu??=import(Eh(Gh()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await xu}function Gh(){let e=mi(kh(import.meta.url)),n=[xr(e,"..","node_modules","js-tiktoken","dist","index.js"),xr(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>_h(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Tu(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function A(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function di(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Cu(e,t,n){let r;try{return await Promise.race([e,new Promise((s,i)=>{r=setTimeout(()=>i(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function Jh(e){try{return JSON.parse(e)}catch{return e}}function qh(e){return vu(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>vu(t)&&(t.collection===X||t.collection===q||t.collection===ge||t.collection===Fe)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function vu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Hh(e,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",r=>{n+=r;let s=n.indexOf(`
128
- `);if(s<0)return;let i=n.slice(0,s);e.pause(),(async()=>{let o;try{o=JSON.parse(i),await t(o)}catch(a){let u={id:o?.id??At(),ok:!1,error:a instanceof Error?a.message:String(a)};Iu(e,u)}finally{e.end()}})()})}function Iu(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
129
- `)}catch{}}async function Wh(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==="accounting-stats"){let i=s.redDb();if(!i)throw new Error("rsp accounting stats require the shared RedDB store");return await Bs(i,t.byteBudget)}if(t.op==="telemetry-stats"){let i=s.redDb();if(!i)throw new Error("rsp telemetry stats require the shared RedDB store");return await ar(i,t.sinceDays)}if(t.op==="telemetry-gains"){let i=s.redDb();if(!i)throw new Error("rsp telemetry gains require the shared RedDB store");return await Ls(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Kh(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await Vh(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Vh(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await hu(s,t).request(n,r)}function Kh(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Th,vh,Du,Ph,Oh,Dh,fi,ku,xu,Au=E(()=>{"use strict";ke();qn();Bn();st();Ru();he();me();Th=256*1024,vh=500,Du=2e3,Ph=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),Oh="rsp-status-summary.json",Dh=[X,q,ge,Fe,fn],fi=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 Ch(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),s=r.records.length,i=[...r.records];for(let a of n)i.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 As(this.opts.rootDir,async a=>{let c=Ct(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(u),!0}try{let u=await this.writeEvent(t,c);i.push(u);let l=await this.writeAccountingMirror(t,c);return l&&i.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:A(c.command)||"unknown",source_id:A(c.id),source_collection:A(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return i.push(l),!0}});let o=i.length>s;await this.prune(t,{version:1,records:i},o),await $h(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,s=typeof n.created_at=="string"?n.created_at:r.toISOString(),i=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof n.id=="string"&&n.id.trim()!==""?n.id:At(),a={...await Uh(n),id:o,created_at:s,expires_at:i};return await t.kv(n.collection).put(o,a),{collection:n.collection,key:o,created_at:s,expires_at:i,bytes:n.collection===X?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===X||n.accounting_recorded===!0?null:n.collection===ge?await this.writeEvent(t,{collection:X,id:`mirror:${A(n.id)||At()}`,created_at:A(n.created_at)||A(n.ts)||new Date().toISOString(),event_type:"invocation",command:A(n.command)||"unknown",command_class:di(A(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===Fe?await this.writeEvent(t,{collection:X,id:`mirror:${A(n.id)||At()}`,created_at:A(n.created_at)||A(n.ts)||new Date().toISOString(),event_type:"invocation",command:A(n.command)||"unknown",command_class:di(A(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:A(n.reason)||"unknown",wrapper_family:A(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:A(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Fe,id:At(),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:X,id:`mirror:${At()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:di(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(fn).get("index:v1"),r=typeof n=="string"?Jh(n):n;return qh(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(fn).put("index:v1",n)}async prune(t,n,r=!1){let s=Date.now(),i=[];for(let a of n.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):i.push(a);let o=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&i.length>0;){let a=i.shift();o-=a.bytes,await t.kv(a.collection).delete(a.key)}(r||i.length<n.records.length)&&await this.writeIndex(t,{version:1,records:i})}};ku=!1});var hi={};N(hi,{parseProxyCommandLine:()=>ju,rewriteProxyCommandLine:()=>Mu,runProxy:()=>Yh});import{spawn as zh}from"node:child_process";async function Yh(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=ju(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Mu(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await Qh(t.telemetryRoot,n,c),await Bu(n);throw c}for(let c of s)await Xh(t.telemetryRoot,c);let o=await Bu(r||n),a=Number(process.hrtime.bigint()-i)/1e6;return await Ie(t.telemetryRoot,{collection:ge,ts:new Date().toISOString(),command:n,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),o}function Mu(e,t="lossless"){let n=sy(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||ry(n,o)==="|")return i.text;let a=Zh(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function ju(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 Qh(e,t,n){await Ie(e,{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:gi(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function Xh(e,t){await Ie(e,{collection:q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function Bu(e){let t=zh(e,{shell:!0,stdio:"inherit"});return await new Promise(n=>{t.on("error",r=>{process.stderr.write(`${r instanceof Error?r.message:String(r)}
130
- `),n(127)}),t.on("close",(r,s)=>{if(s){process.kill(process.pid,s),n(128);return}n(r??0)})})}function Zh(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=oy(s);if(!i)return null;let o=ny(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(y=>y.value);if(vr(c))return{text:e,match:{command:a.map(y=>y.raw).join(" "),commandFamily:gi(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=ey(a);if(!u)return null;let l=i.slice(0,o).map(y=>y.raw),d=t==="lossless"?[]:[`--${t}`],f=[...l,"rsp",...d,...u.wrapperWords].join(" ");return{text:`${n}${f}${r}`,match:{command:a.map(y=>y.raw).join(" "),commandFamily:gi(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function ey(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}:ty(t,n)}function ty(e,t){return e[0]==="cat"&&e.length===2&&pi(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&pi(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])&&pi(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function pi(e){return!!e&&!e.startsWith("-")}function ny(e){let t=0;for(;t<e.length&&Lu(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Lu(e[t].value);)t+=1;return t}function ry(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function sy(e){let t=[],n=0,r,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(r){o===r&&(r=void 0);continue}if(o==="'"||o==='"'){r=o;continue}let a=iy(e,i);a&&(i>n&&t.push({kind:"segment",text:e.slice(n,i)}),t.push({kind:"operator",text:a}),i+=a.length-1,n=i+1)}return n<e.length&&t.push({kind:"segment",text:e.slice(n)}),t}function iy(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 oy(e){let t=[],n="",r="",s,i=!1,o=!1,a=()=>{o&&(t.push({raw:n,value:r}),n="",r="",o=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(i){n+=u,r+=u,i=!1,o=!0;continue}if(u==="\\"){n+=u,i=!0,o=!0;continue}if(s){n+=u,u===s?s=void 0:r+=u,o=!0;continue}if(u==="'"||u==='"'){n+=u,s=u,o=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;n+=u,r+=u,o=!0}return s||i?null:(a(),t)}function gi(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:vr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:vr(t)&&t[1]?`gh ${t[1]} json-jq`:vr(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 vr(e){return e[0]==="gh"&&e.some(ay)}function ay(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Lu(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var yi=E(()=>{"use strict";he()});function Je(e){let t=[],n;for(let r=0;r<e.length;r++){let s=e[r];if(s==="--query"){n=e[++r];continue}if(s.startsWith("--query=")){n=s.slice(8);continue}t.push(s)}return{argv:t,query:n?.trim()||void 0}}function Uu(e,t){if(!t)return!0;let n=wi(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function j(e,t){return t?e.filter(n=>Uu(n,t)):[...e]}function Bt(e,t){if(!t)return e;let r=e.split(`
131
- `).filter(s=>s&&Uu(s,t));return r.length>0?`${r.join(`
132
- `)}
133
- `:""}function qe(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function wi(e){return Array.isArray(e)?e.map(wi).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(wi).join(" "):String(e??"")}var Pr=E(()=>{"use strict"});var bi={};N(bi,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>ve,GIT_LOG_MACHINE_FIELDS:()=>Fu,recoveryInstruction:()=>re,renderGitContract:()=>Gu,runGitWrapper:()=>uy});import{spawn as cy}from"node:child_process";async function uy(e,t){let n=Ju(e),r=qu(n.argv),s=await my(r,n.argv.slice(1));return Gu(e,s,t)}async function Gu(e,t,n){let r=Ju(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Bt(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let s=qu(r.argv),i=py(s,r.argv,t.stdout,r.query);if(i===`git empty
134
- `)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=D(i);if(ly(s,o,r.full,n))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let a=xy(i);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let c=Buffer.byteLength(o),u=await n.store?.mint(Buffer.from(o),{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 ${re(u)}
135
- `;return{stdout:Buffer.from(`${D(a.payload)}
136
- ${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(o)}}function re(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Ju(e){let t=Je(e),n=[],r=!1;for(let s of t.argv){if(s==="--full"){r=!0;continue}n.push(s)}return{argv:n,query:t.query,full:r}}function ly(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!dy(e)||r.level!=="lossless")return!0;let s=Ey(r.heavyGitByteThreshold,ve);return Buffer.byteLength(t)<=s}function dy(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function qu(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 fy(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Fu.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 my(e,t){let n=cy("git",fy(e,t),{stdio:["ignore","pipe","pipe"]}),r=[],s=[];return n.stdout.on("data",i=>r.push(i)),n.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{n.on("error",o),n.on("close",(a,c)=>{i({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function py(e,t,n,r){switch(e){case"status":return gy(t,n,r);case"log":return hy(t,n,r);case"diff":return yy(t,n,r);case"commit":return He(wy(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return He(by(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return _y(t,n,r);case"branch":return Ry(t,n,r);case"show":return Sy(t,n,r)}}function gy(e,t,n){let r="",s=[];for(let a of t.split("\0")){if(!a)continue;if(a.startsWith("# branch.head ")){r=a.slice(14);continue}if(!a.startsWith("1 "))continue;let c=a.split(" "),u=c[1]??"..",l=c.slice(8).join(" ");s.push({path:l,index:u[0]??".",worktree:u[1]??".",state:ky(u)})}if(s.length===0)return`git empty
137
- `;let i=j(s,n),o=Hu(i,"state");return He({command:e.join(" "),branch:r,rows:i,summary:`${n?`${i.length}/${s.length}`:i.length} changes: ${o.added??0} added, ${o.modified??0} modified, ${o.deleted??0} deleted`},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function hy(e,t,n){let r=t.split("\0").filter(Boolean).map(i=>{let o=i.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),s=j(r,n);return He({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 yy(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)}}),i=j(s,n),o=i.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 He({command:e.join(" "),files:i,summary:`${n?`${i.length}/${s.length}`:i.length} files, +${o.added} -${o.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function wy(e,t){let n=t.split(`
138
- `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),i=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(i?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:d,summary:`commit ${c} on ${a}: ${u} files, +${l} -${d}`}}function by(e,t){let n=t.split(`
139
- `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,d=""]=c.split(" "),[f,y]=(l??"").split(":");return{flag:u??"",from:f??"",to:y??"",summary:d}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:s,summary:`pushed ${o} -> ${r} +${a} commits`}}function _y(e,t,n){let r=t.split(`
140
- `),s=[],i=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){i={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!i)continue;if(c.startsWith("author ")){i.author=c.slice(7);continue}if(c.startsWith("filename ")){i.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),d=i.commit.slice(0,12);l&&l.commit===d&&l.author===i.author&&l.path===i.path&&l.line_end+1===i.finalLine?l.line_end=i.finalLine:s.push({line_start:i.finalLine,line_end:i.finalLine,author:i.author,commit:d,path:i.path}),i=null}let o=j(s,n),a=Hu(o,"author");return He({command:e.join(" "),ranges:o,authors:a,summary:`${n?`${o.length}/${s.length}`:o.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function Ry(e,t,n){let r=t.split(`
141
- `).filter(Boolean).map(o=>{let[a,c,u,l,d,f]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:d||null,subject:f??""}}),s=j(r,n),i=s.find(o=>o.current)?.name??"";return He({command:e.join(" "),branches:s,summary:`${n?`${s.length}/${r.length}`:s.length} branches${i?`, current ${i}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function Sy(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,i=r>=0&&s>=0?t.slice(r+1,s):"",o=s>=0?t.slice(s+1):t,[a,c,u,l,d,f=""]=i.split(""),y=[];for(let w of o.split(`
142
- `)){let T=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(w);if(!T)continue;let x=T[3]??"";y.push({path:(T[1]??"").trim(),changed:Number(T[2]??0),added:[...x].filter(v=>v==="+").length,deleted:[...x].filter(v=>v==="-").length,binary:x.startsWith("Bin")})}let h=j(y,n),p=0,g=0,b=0;for(let w of h)p+=typeof w.changed=="number"?w.changed:0,g+=typeof w.added=="number"?w.added:0,b+=typeof w.deleted=="number"?w.deleted:0;return He({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:d??"",body_lines:f.trim()?f.trim().split(`
143
- `).length:0,files:h,summary:`${n?`${h.length}/${y.length}`:h.length} files, ${p} changed, +${g} -${b}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function He(e,t,n){return t?qe(e,n):e}function ky(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Hu(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function Ey(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function xy(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 Fu,dt=E(()=>{"use strict";le();me();Pr();me();Fu=["%h","%an","%as","%s"]});var Ei={};N(Ei,{renderGhContract:()=>Yu,runGhWrapper:()=>Dy});import{spawn as Ty}from"node:child_process";async function Dy(e,t){let n=Qu(e),r=await $y(n);return Yu(e,r,t)}async function Yu(e,t,n){let r=Je(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Bt(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let s=Qu(e),i=Tn(t.stdout),o=jy(s,e,i);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=Wy(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let h=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:s.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=h}let c=a?.target.truncated.handle||void 0,u=D(o);if(n.level!=="terse")return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let l=Vy(o);if(!l)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(u),f=await n.store?.mint(Buffer.from(u),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!f)throw new Error("terse gh output requires an elision store");let y=`\u2026 elided ${l.rowsElided} rows (+${d}) \u2014 ${re(f)}
144
- `;return{stdout:Buffer.from(`${D(l.payload)}
145
- ${y}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l.payload,mintedHandle:f,bytesElided:d,rowsElided:l.rowsElided,rawOutput:Buffer.from(u)}}function Qu(e){let t=Je(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 i=[],o=!1,a=!1;for(let u of t.argv.slice(3))u==="--full"?o=!0:u==="--wide"?a=!0:i.push(u);return{kind:n,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:o,wide:a,passthrough:i,query:t.query}}function Wu(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?Py[t]:vy[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function $y(e){if(e.action==="combined")return await Cy(e);let t=Iy(e);if(!t)return await My(Wu(e));let n=await H({...t,command:["gh",...Wu(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await Ny(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function Cy(e){let t=e.target??"",[n,r,s]=await Promise.all([H({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),H({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),H({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),i=[n,r,s].find(a=>(a.status??0)!==0);if(i)return{stdout:i.stdout,stderr:i.stderr,status:i.status,signal:null};let o=Zu(Tn(n.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:V(Tn(s.stdout)).map(By)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function Iy(e){let t=el(e.passthrough),n=Ly(e.passthrough,"--limit")??30,r=Ri(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:Ri(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 Ny(e,t){let n=Tn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return V(n).map(Xu);case"pr:view":return Zu(n);case"issue:list":return V(n).filter(r=>!ft(r.pull_request)).map(Vu);case"issue:view":return Vu(n);case"run:list":return V(I(n).workflow_runs).map(Ku);case"run:view":{let r=Ku(n),s=el(e.passthrough);if(!s)return r;let i=await H({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...r,jobs:i.status===0?V(I(Tn(i.stdout)).jobs).map(Ay):[]}}default:return n}}function Xu(e){let t=I(e);return{number:se(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:ki(t.user),labels:V(t.labels).map(n=>({name:S(n,"name")})),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body"),baseRefName:S(I(t.base),"ref"),headRefName:S(I(t.head),"ref")}}function Zu(e){return Xu(e)}function Vu(e){let t=I(e);return{number:se(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:V(t.labels).map(n=>({name:S(n,"name")})),author:ki(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function Ku(e){let t=I(e);return{databaseId:se(t,"database_id")||se(t,"id"),name:S(t,"name")||S(t,"display_title"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),event:S(t,"event"),headBranch:S(t,"head_branch"),workflowName:S(t,"workflow_name"),createdAt:S(t,"created_at"),url:S(t,"html_url"),jobs:[]}}function Ay(e){let t=I(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function By(e){let t=I(e);return{author:ki(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function ki(e){let t=I(e);return{login:S(t,"login")}}function el(e){return e.find(t=>!t.startsWith("-"))}function Ri(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function Ly(e,t){let n=Ri(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function My(e){let t=Ty("gh",e,{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}function jy(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Jy(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=V(n).map(o=>tl(o,e.wide)),i=j(s,e.query);return Lt({...r,prs:i,summary:`${_i(i.length,s.length,e.query)} ${zu(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Lt({...r,pr:nl(I(n),e),summary:`PR #${se(I(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Uy(e,t,I(n));case"issue:list":{let s=V(n).map(o=>rl(o,e.wide)),i=j(s,e.query);return Lt({...r,issues:i,summary:`${_i(i.length,s.length,e.query)} ${zu(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Lt({...r,issue:qy(I(n),e),summary:`issue #${se(I(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=V(n).map(o=>sl(o,e.wide)),i=j(s,e.query);return Lt({...r,runs:i,summary:`${_i(i.length,s.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Lt({...r,run:Hy(I(n),e),summary:`run ${se(I(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Uy(e,t,n){let r=nl(I(n.view),{...e,action:"view",wide:!0}),s=j(V(n.checks).map(Fy),e.query),i=I(n.comments).comments,o=j(V(i).map(Gy).slice(-3),e.query);return qe({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${se(I(n.view),"number")}: ${s.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function Fy(e){return{name:S(e,"name"),state:vn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function Gy(e){return{author:al(e.author),body:Or(e,"body",Si,!1),created:S(e,"createdAt")}}function Jy(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
128
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Ur(){for(let e of xy())try{process.kill(e,"SIGTERM")}catch{}}function xy(){if(process.platform==="win32")return[];let e="";try{e=sy("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]),i=Number(r[2]),o=r[3]??"";i===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(s)}return t}async function Ty(e){if(e.collection!==we)return e;let t=await Wu(e.raw_text,Ku(e.raw_bytes)),n=await Wu(e.emitted_text,Ku(e.emitted_bytes)),{raw_text:r,emitted_text:s,...i}=e;return{...i,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function Wu(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=fy)try{return await el((async()=>({tokens:(await vy())("cl100k_base").encode(e).length,estimated:!1}))(),my,"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 vy(){return Vu??=import(ly(Oy()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Vu}function Oy(){let e=Pi(uy(import.meta.url)),n=[jr(e,"..","node_modules","js-tiktoken","dist","index.js"),jr(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>oy(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Ku(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function B(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function vi(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function el(e,t,n){let r;try{return await Promise.race([e,new Promise((s,i)=>{r=setTimeout(()=>i(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function Py(e){try{return JSON.parse(e)}catch{return e}}function Dy(e){return zu(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>zu(t)&&(t.collection===ne||t.collection===H||t.collection===we||t.collection===Ge)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function zu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Cy(e,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",r=>{n+=r;let s=n.indexOf(`
129
+ `);if(s<0)return;let i=n.slice(0,s);e.pause(),(async()=>{let o;try{o=JSON.parse(i),await t(o)}catch(a){let u={id:o?.id??Jt(),ok:!1,error:a instanceof Error?a.message:String(a)};tl(e,u)}finally{e.end()}})()})}function tl(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
130
+ `)}catch{}}async function Iy(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==="accounting-stats"){let i=s.redDb();if(!i)throw new Error("rsp accounting stats require the shared RedDB store");return await Ys(i,t.byteBudget)}if(t.op==="telemetry-stats"){let i=s.redDb();if(!i)throw new Error("rsp telemetry stats require the shared RedDB store");return await hr(i,t.sinceDays)}if(t.op==="telemetry-gains"){let i=s.redDb();if(!i)throw new Error("rsp telemetry gains require the shared RedDB store");return await Qs(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Ny(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await Ay(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Ay(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await Mu(s,t).request(n,r)}function Ny(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var fy,my,Zu,py,gy,hy,Oi,Hu,Vu,rl=E(()=>{"use strict";Te();Xn();rn();ot();Gu();be();he();fy=256*1024,my=500,Zu=2e3,py=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),gy="rsp-status-summary.json",hy=[ne,H,we,Ge,bn],Oi=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 wy(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),s=r.records.length,i=[...r.records];for(let a of n)i.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 zs(this.opts.rootDir,async a=>{let c=Mt(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(u),!0}try{let u=await this.writeEvent(t,c);i.push(u);let l=await this.writeAccountingMirror(t,c);return l&&i.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:B(c.command)||"unknown",source_id:B(c.id),source_collection:B(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return i.push(l),!0}});let o=i.length>s;await this.prune(t,{version:1,records:i},o),await yy(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,s=typeof n.created_at=="string"?n.created_at:r.toISOString(),i=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof n.id=="string"&&n.id.trim()!==""?n.id:Jt(),a={...await Ty(n),id:o,created_at:s,expires_at:i};return await t.kv(n.collection).put(o,a),{collection:n.collection,key:o,created_at:s,expires_at:i,bytes:n.collection===ne?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===ne||n.accounting_recorded===!0?null:n.collection===we?await this.writeEvent(t,{collection:ne,id:`mirror:${B(n.id)||Jt()}`,created_at:B(n.created_at)||B(n.ts)||new Date().toISOString(),event_type:"invocation",command:B(n.command)||"unknown",command_class:vi(B(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===Ge?await this.writeEvent(t,{collection:ne,id:`mirror:${B(n.id)||Jt()}`,created_at:B(n.created_at)||B(n.ts)||new Date().toISOString(),event_type:"invocation",command:B(n.command)||"unknown",command_class:vi(B(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:B(n.reason)||"unknown",wrapper_family:B(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:B(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Ge,id:Jt(),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:ne,id:`mirror:${Jt()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:vi(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(bn).get("index:v1"),r=typeof n=="string"?Py(n):n;return Dy(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(bn).put("index:v1",n)}async prune(t,n,r=!1){let s=Date.now(),i=[];for(let a of n.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):i.push(a);let o=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&i.length>0;){let a=i.shift();o-=a.bytes,await t.kv(a.collection).delete(a.key)}(r||i.length<n.records.length)&&await this.writeIndex(t,{version:1,records:i})}};Hu=!1});var Ii={};$(Ii,{parseProxyCommandLine:()=>al,rewriteProxyCommandLine:()=>ol,runProxy:()=>By});import{spawn as $y}from"node:child_process";async function By(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=al(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=ol(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await Ly(t.telemetryRoot,n,c),await sl(n);throw c}for(let c of s)await My(t.telemetryRoot,c);let o=await sl(r||n),a=Number(process.hrtime.bigint()-i)/1e6;return await $e(t.telemetryRoot,{collection:we,ts:new Date().toISOString(),command:n,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),o}function ol(e,t="lossless"){let n=qy(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||Gy(n,o)==="|")return i.text;let a=jy(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function al(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 Ly(e,t,n){await $e(e,{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Ci(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function My(e,t){await $e(e,{collection:H,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 sl(e){let t=$y(e,{shell:!0,stdio:"inherit"});return await new Promise(n=>{t.on("error",r=>{process.stderr.write(`${r instanceof Error?r.message:String(r)}
131
+ `),n(127)}),t.on("close",(r,s)=>{if(s){process.kill(process.pid,s),n(128);return}n(r??0)})})}function jy(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=Wy(s);if(!i)return null;let o=Fy(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(h=>h.value);if(Jr(c))return{text:e,match:{command:a.map(h=>h.raw).join(" "),commandFamily:Ci(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=Uy(a);if(!u)return null;let l=i.slice(0,o).map(h=>h.raw),f=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...f,...u.wrapperWords].join(" ");return{text:`${n}${d}${r}`,match:{command:a.map(h=>h.raw).join(" "),commandFamily:Ci(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function Uy(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}:Jy(t,n)}function Jy(e,t){return e[0]==="cat"&&e.length===2&&Di(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Di(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])&&Di(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Di(e){return!!e&&!e.startsWith("-")}function Fy(e){let t=0;for(;t<e.length&&il(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&il(e[t].value);)t+=1;return t}function Gy(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function qy(e){let t=[],n=0,r,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(r){o===r&&(r=void 0);continue}if(o==="'"||o==='"'){r=o;continue}let a=Hy(e,i);a&&(i>n&&t.push({kind:"segment",text:e.slice(n,i)}),t.push({kind:"operator",text:a}),i+=a.length-1,n=i+1)}return n<e.length&&t.push({kind:"segment",text:e.slice(n)}),t}function Hy(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 Wy(e){let t=[],n="",r="",s,i=!1,o=!1,a=()=>{o&&(t.push({raw:n,value:r}),n="",r="",o=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(i){n+=u,r+=u,i=!1,o=!0;continue}if(u==="\\"){n+=u,i=!0,o=!0;continue}if(s){n+=u,u===s?s=void 0:r+=u,o=!0;continue}if(u==="'"||u==='"'){n+=u,s=u,o=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;n+=u,r+=u,o=!0}return s||i?null:(a(),t)}function Ci(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Jr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Jr(t)&&t[1]?`gh ${t[1]} json-jq`:Jr(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 Jr(e){return e[0]==="gh"&&e.some(Vy)}function Vy(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function il(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Ai=E(()=>{"use strict";be()});function pt(e){let t=[],n;for(let r=0;r<e.length;r++){let s=e[r];if(s==="--query"){n=e[++r];continue}if(s.startsWith("--query=")){n=s.slice(8);continue}t.push(s)}return{argv:t,query:n?.trim()||void 0}}function Ky(e,t){if(!t)return!0;let n=Ni(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function U(e,t){return t?e.filter(n=>Ky(n,t)):[...e]}function qe(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function Ni(e){return Array.isArray(e)?e.map(Ni).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Ni).join(" "):String(e??"")}var Fr=E(()=>{"use strict"});var $i={};$($i,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Pe,GIT_LOG_MACHINE_FIELDS:()=>cl,StructuredUsageError:()=>Gr,cleanStatusPayload:()=>fl,recoveryInstruction:()=>ce,renderGitContract:()=>ul,runGitWrapper:()=>Yy});import{spawn as zy}from"node:child_process";async function Yy(e,t){let n=ll(e),r=dl(n.argv),s=await ew(r,n.argv.slice(1));return ul(e,s,t)}async function ul(e,t,n){let r=ll(e);if((t.status??0)!==0||t.signal){let f=oe(e.join(" "),t.stdout,t.stderr);return{stdout:A(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=dl(r.argv),i=tw(s,r.argv,t.stdout,r.query),o=P(i);if(Qy(s,o,r.full,n))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let a=fw(i);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let c=Buffer.byteLength(o),u=await n.store?.mint(Buffer.from(o),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${ce(u)}
132
+ `;return{stdout:Buffer.from(`${P(a.payload)}
133
+ ${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(o)}}function ce(e){return e.startsWith("el:")?`rsp show ${e}`:e}function ll(e){let t=pt(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}let s=n.slice(2).find(i=>i.startsWith("--rsp-"));if(s)throw new Gr(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:n,query:t.query,full:r}}function Qy(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Zy(e)||r.level!=="lossless")return!0;let s=dw(r.heavyGitByteThreshold,Pe);return Buffer.byteLength(t)<=s}function Zy(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function dl(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 Xy(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${cl.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 ew(e,t){let n=zy("git",Xy(e,t),{stdio:["ignore","pipe","pipe"]}),r=[],s=[];return n.stdout.on("data",i=>r.push(i)),n.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{n.on("error",o),n.on("close",(a,c)=>{i({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function tw(e,t,n,r){switch(e){case"status":return nw(t,n,r);case"log":return rw(t,n,r);case"diff":return sw(t,n,r);case"commit":return He(iw(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return He(ow(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return aw(t,n,r);case"branch":return cw(t,n,r);case"show":return uw(t,n,r)}}function nw(e,t,n){let r="",s=[];for(let a of t.split("\0")){if(!a)continue;if(a.startsWith("# branch.head ")){r=a.slice(14);continue}if(!a.startsWith("1 "))continue;let c=a.split(" "),u=c[1]??"..",l=c.slice(8).join(" ");s.push({path:l,index:u[0]??".",worktree:u[1]??".",state:lw(u)})}if(s.length===0)return fl(e.join(" "),r);let i=U(s,n),o=ml(i,"state");return He({command:e.join(" "),branch:r,rows:i,summary:`${n?`${i.length}/${s.length}`:i.length} changes: ${o.added??0} added, ${o.modified??0} modified, ${o.deleted??0} deleted`},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function fl(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 rw(e,t,n){let r=t.split("\0").filter(Boolean).map(i=>{let o=i.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),s=U(r,n);return He({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 sw(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)}}),i=U(s,n),o=i.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 He({command:e.join(" "),files:i,summary:`${n?`${i.length}/${s.length}`:i.length} files, +${o.added} -${o.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function iw(e,t){let n=t.split(`
134
+ `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),i=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(i?.[1]??0),f=Number(o?.[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 ow(e,t){let n=t.split(`
135
+ `).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,h]=(l??"").split(":");return{flag:u??"",from:d??"",to:h??"",summary:f}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.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 ${o} -> ${r}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:r,refs:s,summary:`pushed ${o} -> ${r} +${a} commits`}}function aw(e,t,n){let r=t.split(`
136
+ `),s=[],i=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){i={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!i)continue;if(c.startsWith("author ")){i.author=c.slice(7);continue}if(c.startsWith("filename ")){i.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),f=i.commit.slice(0,12);l&&l.commit===f&&l.author===i.author&&l.path===i.path&&l.line_end+1===i.finalLine?l.line_end=i.finalLine:s.push({line_start:i.finalLine,line_end:i.finalLine,author:i.author,commit:f,path:i.path}),i=null}let o=U(s,n),a=ml(o,"author");return He({command:e.join(" "),ranges:o,authors:a,summary:`${n?`${o.length}/${s.length}`:o.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function cw(e,t,n){let r=t.split(`
137
+ `).filter(Boolean).map(o=>{let[a,c,u,l,f,d]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=U(r,n),i=s.find(o=>o.current)?.name??"";return He({command:e.join(" "),branches:s,summary:`${n?`${s.length}/${r.length}`:s.length} branches${i?`, current ${i}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function uw(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,i=r>=0&&s>=0?t.slice(r+1,s):"",o=s>=0?t.slice(s+1):t,[a,c,u,l,f,d=""]=i.split(""),h=[];for(let w of o.split(`
138
+ `)){let T=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(w);if(!T)continue;let x=T[3]??"";h.push({path:(T[1]??"").trim(),changed:Number(T[2]??0),added:[...x].filter(v=>v==="+").length,deleted:[...x].filter(v=>v==="-").length,binary:x.startsWith("Bin")})}let y=U(h,n),m=0,g=0,b=0;for(let w of y)m+=typeof w.changed=="number"?w.changed:0,g+=typeof w.added=="number"?w.added:0,b+=typeof w.deleted=="number"?w.deleted:0;return He({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
139
+ `).length:0,files:y,summary:`${n?`${y.length}/${h.length}`:y.length} files, ${m} changed, +${g} -${b}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function He(e,t,n){return t?qe(e,n):e}function lw(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function ml(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function dw(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function fw(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 cl,Gr,gt=E(()=>{"use strict";X();he();Fr();nt();he();cl=["%h","%an","%as","%s"];Gr=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return Hn(this.command,this.flag,this.validFlags,`${this.command} --help`)}}});var Ui={};$(Ui,{renderGhContract:()=>wl,runGhWrapper:()=>yw});import{spawn as mw}from"node:child_process";async function yw(e,t){let n=bl(e),r=await ww(n);return wl(e,r,t)}async function wl(e,t,n){if((t.status??0)!==0||t.signal){let h=oe(e.join(" "),t.stdout,t.stderr);return{stdout:A(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let r=bl(e),s=An(t.stdout),i=Tw(r,e,s);if(typeof i=="string")return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=Aw(i);if(o){if(!n.store)throw new Error("truncated gh output requires an elision store");let h=await n.store.mint(Buffer.from(o.original),{command:e.join(" "),loss:{level:r.full?"brief":n.level,bytes_elided:o.bytes}});o.target.truncated.handle=h}let a=o?.target.truncated.handle||void 0,c=P(i);if(n.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let u=Nw(i);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.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 ${ce(f)}
140
+ `;return{stdout:Buffer.from(`${P(u.payload)}
141
+ ${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 bl(e){let t=pt(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 i=[],o=!1,a=!1;for(let u of t.argv.slice(3))u==="--full"?o=!0:u==="--wide"?a=!0:i.push(u);return{kind:n,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:o,wide:a,passthrough:i,query:t.query}}function pl(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?gw[t]:pw[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function ww(e){if(e.action==="combined")return await bw(e);let t=_w(e);if(!t)return await xw(pl(e));let n=await W({...t,command:["gh",...pl(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await Rw(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function bw(e){let t=e.target??"",[n,r,s]=await Promise.all([W({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),W({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),W({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),i=[n,r,s].find(a=>(a.status??0)!==0);if(i)return{stdout:i.stdout,stderr:i.stderr,status:i.status,signal:null};let o=Rl(An(n.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:z(An(s.stdout)).map(kw)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function _w(e){let t=Sl(e.passthrough),n=Ew(e.passthrough,"--limit")??30,r=Li(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:Li(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 Rw(e,t){let n=An(t);switch(`${e.kind}:${e.action}`){case"pr:list":return z(n).map(_l);case"pr:view":return Rl(n);case"issue:list":return z(n).filter(r=>!ht(r.pull_request)).map(gl);case"issue:view":return gl(n);case"run:list":return z(N(n).workflow_runs).map(hl);case"run:view":{let r=hl(n),s=Sl(e.passthrough);if(!s)return r;let i=await W({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...r,jobs:i.status===0?z(N(An(i.stdout)).jobs).map(Sw):[]}}default:return n}}function _l(e){let t=N(e);return{number:ue(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:ji(t.user),labels:z(t.labels).map(n=>({name:S(n,"name")})),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body"),baseRefName:S(N(t.base),"ref"),headRefName:S(N(t.head),"ref")}}function Rl(e){return _l(e)}function gl(e){let t=N(e);return{number:ue(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:z(t.labels).map(n=>({name:S(n,"name")})),author:ji(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function hl(e){let t=N(e);return{databaseId:ue(t,"database_id")||ue(t,"id"),name:S(t,"name")||S(t,"display_title"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),event:S(t,"event"),headBranch:S(t,"head_branch"),workflowName:S(t,"workflow_name"),createdAt:S(t,"created_at"),url:S(t,"html_url"),jobs:[]}}function Sw(e){let t=N(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function kw(e){let t=N(e);return{author:ji(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function ji(e){let t=N(e);return{login:S(t,"login")}}function Sl(e){return e.find(t=>!t.startsWith("-"))}function Li(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function Ew(e,t){let n=Li(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function xw(e){let t=mw("gh",e,{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}function Tw(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Dw(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=z(n).map(o=>kl(o,e.wide)),i=U(s,e.query);return Ft({...r,prs:i,summary:`${Bi(i.length,s.length,e.query)} ${yl(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Ft({...r,pr:El(N(n),e),summary:`PR #${ue(N(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return vw(e,t,N(n));case"issue:list":{let s=z(n).map(o=>xl(o,e.wide)),i=U(s,e.query);return Ft({...r,issues:i,summary:`${Bi(i.length,s.length,e.query)} ${yl(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Ft({...r,issue:Cw(N(n),e),summary:`issue #${ue(N(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=z(n).map(o=>Tl(o,e.wide)),i=U(s,e.query);return Ft({...r,runs:i,summary:`${Bi(i.length,s.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Ft({...r,run:Iw(N(n),e),summary:`run ${ue(N(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function vw(e,t,n){let r=El(N(n.view),{...e,action:"view",wide:!0}),s=U(z(n.checks).map(Ow),e.query),i=N(n.comments).comments,o=U(z(i).map(Pw).slice(-3),e.query);return qe({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${ue(N(n.view),"number")}: ${s.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function Ow(e){return{name:S(e,"name"),state:Nn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function Pw(e){return{author:Pl(e.author),body:qr(e,"body",Mi,!1),created:S(e,"createdAt")}}function Dw(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
146
142
  `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
147
143
  `:`0 runs \u2014 try: rsp gh run list --limit 20
148
- `}function tl(e,t){let n={number:se(e,"number"),title:S(e,"title"),state:vn(e),draft:!!e.isDraft};return t&&Object.assign(n,il(e)),n}function nl(e,t){let n=tl(e,t.wide);return n.body=Or(e,"body",Si,t.full),t.wide&&(n.base=S(e,"baseRefName"),n.head=S(e,"headRefName")),n}function rl(e,t){let n={number:se(e,"number"),title:S(e,"title"),state:vn(e),labels:ol(e.labels)};return t&&Object.assign(n,il(e)),n}function qy(e,t){let n=rl(e,t.wide);return n.body=Or(e,"body",Si,t.full),n}function sl(e,t){let n={id:se(e,"databaseId"),name:S(e,"name"),status:vn(e),conclusion:S(e,"conclusion")};return t&&(n.event=S(e,"event"),n.branch=S(e,"headBranch"),n.workflow=S(e,"workflowName"),n.created=S(e,"createdAt")),n}function Hy(e,t){let n=sl(e,t.wide),r=V(e.jobs).map(s=>({name:S(s,"name"),status:vn(s),conclusion:S(s,"conclusion"),log:Or(s,"log",Oy,t.full)}));return n.jobs=r,n}function Or(e,t,n,r){let s=S(e,t);if(r||Buffer.byteLength(s)<=n)return s;let i=s.slice(0,n),o={preview:i,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(i),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:s,enumerable:!1}),o}function Wy(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(ft(n)){if(ft(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 Vy(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 zu(e,t){return e.every(n=>n.state===t)?t:"returned"}function _i(e,t,n){return n?`${e}/${t}`:String(e)}function Lt(e,t,n){return t.query?qe(e,n):e}function vn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function il(e){return{author:al(e.author),labels:ol(e.labels),url:S(e,"url"),updated:S(e,"updatedAt")}}function ol(e){return Array.isArray(e)?e.map(t=>ft(t)?S(t,"name"):String(t)).filter(Boolean):[]}function al(e){return ft(e)?S(e,"login"):""}function Tn(e){return e.trim()?JSON.parse(e):null}function V(e){return Array.isArray(e)?e.filter(ft):[]}function I(e){return ft(e)?e:{}}function S(e,t){let n=e[t];return typeof n=="string"?n:""}function se(e,t){let n=e[t];return typeof n=="number"?n:0}function ft(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var vy,Py,Si,Oy,xi=E(()=>{"use strict";le();br();dt();Pr();vy={"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"]},Py={"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"]},Si=160,Oy=160});var vi={};N(vi,{renderTestContract:()=>cl,runTestWrapper:()=>Xy});import{spawn as Ky}from"node:child_process";async function Xy(e,t){let n=Je(e),r=await rw(n.argv);return await cl(e,r,t)}async function cl(e,t,n){let r=Je(e),i=ul(r.argv)==="vitest"?sw(t.stdout):iw(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0)return{stdout:Buffer.from(Bt(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${cw(i.durationSeconds)}`,c=j(i.failures,r.query);if(n.level==="terse")return await Zy(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let h of c){let p=await ow(h.excerpt,r.argv.join(" "),n.store);u.push({suite:h.suite,name:h.name,excerpt:p.text}),l??=p.handle,d+=p.bytesElided}let f={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};u.length>0&&(f.failures=u);let y=r.query?qe(f,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):f;return{stdout:Buffer.from(D(y)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:y,mintedHandle:l,bytesElided:d>0?d:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function Zy(e,t,n,r,s,i,o){let a=ew(n.failures),c={exit_code:r,summary:o?`${s} \xB7 ${n.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=o?qe(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=D(u),d=Math.max(0,n.failures.length-a.length),f=a.some((T,x)=>T.excerpt!==n.failures[x].excerpt);if(d===0&&!f)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u};let y={exit_code:r,summary:s};n.failures.length>0&&(y.failures=n.failures.map(T=>({suite:T.suite,name:T.name,excerpt:T.excerpt})));let h=D(y),p=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:p}});if(!g)throw new Error("terse test output requires an elision store");let w=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${p}) \u2014 ${re(g)}`;return{stdout:Buffer.from(`${l}
149
- ${w}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:g,bytesElided:p,rowsElided:d,rawOutput:Buffer.from(h)}}function ew(e){let t=[],n=Yy;for(let r of e.slice(0,Qy)){let s=tw(r.excerpt,Math.min(zy,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function tw(e,t){if(t<=0)return"";let n=e.split(`
144
+ `}function kl(e,t){let n={number:ue(e,"number"),title:S(e,"title"),state:Nn(e),draft:!!e.isDraft};return t&&Object.assign(n,vl(e)),n}function El(e,t){let n=kl(e,t.wide);return n.body=qr(e,"body",Mi,t.full),t.wide&&(n.base=S(e,"baseRefName"),n.head=S(e,"headRefName")),n}function xl(e,t){let n={number:ue(e,"number"),title:S(e,"title"),state:Nn(e),labels:Ol(e.labels)};return t&&Object.assign(n,vl(e)),n}function Cw(e,t){let n=xl(e,t.wide);return n.body=qr(e,"body",Mi,t.full),n}function Tl(e,t){let n={id:ue(e,"databaseId"),name:S(e,"name"),status:Nn(e),conclusion:S(e,"conclusion")};return t&&(n.event=S(e,"event"),n.branch=S(e,"headBranch"),n.workflow=S(e,"workflowName"),n.created=S(e,"createdAt")),n}function Iw(e,t){let n=Tl(e,t.wide),r=z(e.jobs).map(s=>({name:S(s,"name"),status:Nn(s),conclusion:S(s,"conclusion"),log:qr(s,"log",hw,t.full)}));return n.jobs=r,n}function qr(e,t,n,r){let s=S(e,t);if(r||Buffer.byteLength(s)<=n)return s;let i=s.slice(0,n),o={preview:i,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(i),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:s,enumerable:!1}),o}function Aw(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(ht(n)){if(ht(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 Nw(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 yl(e,t){return e.every(n=>n.state===t)?t:"returned"}function Bi(e,t,n){return n?`${e}/${t}`:String(e)}function Ft(e,t,n){return t.query?qe(e,n):e}function Nn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function vl(e){return{author:Pl(e.author),labels:Ol(e.labels),url:S(e,"url"),updated:S(e,"updatedAt")}}function Ol(e){return Array.isArray(e)?e.map(t=>ht(t)?S(t,"name"):String(t)).filter(Boolean):[]}function Pl(e){return ht(e)?S(e,"login"):""}function An(e){return e.trim()?JSON.parse(e):null}function z(e){return Array.isArray(e)?e.filter(ht):[]}function N(e){return ht(e)?e:{}}function S(e,t){let n=e[t];return typeof n=="string"?n:""}function ue(e,t){let n=e[t];return typeof n=="number"?n:0}function ht(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var pw,gw,Mi,hw,Ji=E(()=>{"use strict";X();Ar();gt();Fr();nt();pw={"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"]},gw={"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"]},Mi=160,hw=160});var qi={};$(qi,{renderTestContract:()=>Dl,runTestWrapper:()=>jw});import{spawn as $w}from"node:child_process";async function jw(e,t){let n=pt(e),r=await qw(n.argv);return await Dl(e,r,t)}async function Dl(e,t,n){let r=pt(e),i=Cl(r.argv)==="vitest"?Hw(t.stdout):Ww(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let y=oe(e.join(" "),t.stdout,t.stderr);return{stdout:A(y),stderr:Buffer.from(t.stderr),status:y.exitCode??1,signal:t.signal}}let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${zw(i.durationSeconds)}`,c=U(i.failures,r.query);if(n.level==="terse")return await Uw(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,f=0;for(let y of c){let m=await Vw(y.excerpt,r.argv.join(" "),n.store);u.push({suite:y.suite,name:y.name,excerpt:m.text}),l??=m.handle,f+=m.bytesElided}let d={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let h=r.query?qe(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(P(h)),stderr:Buffer.from(t.stderr),status:Gi(t.status),signal:t.signal,payload:h,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function Uw(e,t,n,r,s,i,o){let a=Jw(n.failures),c={exit_code:r,summary:o?`${s} \xB7 ${n.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=o?qe(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=P(u),f=Math.max(0,n.failures.length-a.length),d=a.some((T,x)=>T.excerpt!==n.failures[x].excerpt);if(f===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:Gi(t.status),signal:t.signal,payload:u};let h={exit_code:r,summary:s};n.failures.length>0&&(h.failures=n.failures.map(T=>({suite:T.suite,name:T.name,excerpt:T.excerpt})));let y=P(h),m=Buffer.byteLength(y),g=await i.store?.mint(Buffer.from(y),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!g)throw new Error("terse test output requires an elision store");let w=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${m}) \u2014 ${ce(g)}`;return{stdout:Buffer.from(`${l}
145
+ ${w}`),stderr:Buffer.from(t.stderr),status:Gi(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:m,rowsElided:f,rawOutput:Buffer.from(y)}}function Gi(e){return e===0||e===null?0:1}function Jw(e){let t=[],n=Lw;for(let r of e.slice(0,Mw)){let s=Fw(r.excerpt,Math.min(Bw,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function Fw(e,t){if(t<=0)return"";let n=e.split(`
150
146
  `),r=n.length<=2?e:`${n[0]}
151
147
  \u2026
152
- ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function ul(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 nw(e){if(ul(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(o=>o==="--reporter=json"||o==="--reporter"||o.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 rw(e){let t=nw(e),n=Ky(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=[],s=[];return n.stdout.on("data",i=>r.push(i)),n.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{n.on("error",o),n.on("close",(a,c)=>{i({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function sw(e){let t=ll(e);if(!We(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Ve(t.numTotalTests),i=Ve(t.numFailedTests),o=uw(Ve(t.startTime),Ve(t.endTime));for(let a of n){if(!We(a))continue;let c=we(a.name)||we(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)We(l)&&l.status==="failed"&&r.push({suite:c,name:we(l.fullName)||we(l.title)||we(l.name),excerpt:aw(l.failureMessages)||we(l.failureMessage)})}return s||=n.reduce((a,c)=>!We(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=r.length,o||=n.reduce((a,c)=>We(c)?a+Ve(c.perfStats&&We(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:n.length||1,durationSeconds:o,failures:r}}function iw(e){let t=e.split(`
153
- `).filter(Boolean).map(c=>ll(c)).filter(We);if(t.length===0)return null;let n=[],r=0,s=0,i=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(i+=1,r+=Ve(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Ve(c.failed),o+=Ve(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:we(c.name).split("::").slice(0,-1).join("::"),name:we(c.name),excerpt:we(c.stdout)});continue}if(c.reason==="compiler-message"&&We(c.message)){let u=we(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(`
154
- `)}),i||=1,r||=1,s||=1),s||=n.length,i||=1,r||=Math.max(s,n.length),{failed:s,total:r,suites:i,durationSeconds:o,failures:n}}async function ow(e,t,n){let r=Buffer.from(e);if(r.length<=Ti)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}}),i=r.subarray(0,Ti).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(i);return{text:`${i}
155
- \u2026 elided ${o} bytes (+${r.length}) \u2014 ${re(s)}`,handle:s,bytesElided:r.length}}function ll(e){try{return JSON.parse(e)}catch{return null}}function aw(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
156
- `):""}function cw(e){return`${Number(e.toFixed(1))}s`}function uw(e,t){return e>0&&t>e?(t-e)/1e3:0}function Ve(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function we(e){return typeof e=="string"?e:""}function We(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ti,zy,Yy,Qy,Pi=E(()=>{"use strict";le();dt();Pr();Ti=320,zy=160,Yy=Ti,Qy=3});var $i={};N($i,{parseCatCommand:()=>Di,renderCatContract:()=>yw,runCatWrapper:()=>hw});import{isUtf8 as lw}from"node:buffer";import{readFile as dw}from"node:fs/promises";import{extname as fw}from"node:path";async function hw(e,t){let n=Di(e),r=await dw(n.file);return hl(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await gl(e,n,r,t)}async function yw(e,t,n){if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let r=Di(e),s=Buffer.from(t.stdout,"utf8");return hl(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await gl(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Di(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,s=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){n=a.slice(2),r=pl(t[++o],Oi);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=pl(u,Oi);continue}i.push(a)}if(i.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:i[0],mode:n,...r?{limit:r}:{},...s?{inlineFull:s}:{}}}async function gl(e,t,n,r){let s=n.toString("utf8"),i=_w(s,t);if(t.inlineFull)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let o=r.level!=="lossless"||n.length>ml(r.heavyByteThreshold,dl)||i.truncated;if(!fl(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=fl(t.file)?ww(e,t.file,n,s,r.level,i):bw(e,t.file,n,s,i),c=`${D(a)}
157
- `;if(!o&&Buffer.byteLength(c)<=ml(r.heavyByteThreshold,dl))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 ${re(u)}
158
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function ww(e,t,n,r,s,i){let o=Dr(r),a=s==="terse"?pw:mw,c=Dr(i.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:o.length,symbols:Rw(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function bw(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:Dr(r).length,content:Dr(s.text),truncated:s.truncated}}function _w(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
159
- `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??Oi,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
148
+ ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Cl(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 Gw(e){if(Cl(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(o=>o==="--reporter=json"||o==="--reporter"||o.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 qw(e){let t=Gw(e),n=$w(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=[],s=[];return n.stdout.on("data",i=>r.push(i)),n.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{n.on("error",o),n.on("close",(a,c)=>{i({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function Hw(e){let t=Il(e);if(!We(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Ve(t.numTotalTests),i=Ve(t.numFailedTests),o=Yw(Ve(t.startTime),Ve(t.endTime));for(let a of n){if(!We(a))continue;let c=Re(a.name)||Re(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)We(l)&&l.status==="failed"&&r.push({suite:c,name:Re(l.fullName)||Re(l.title)||Re(l.name),excerpt:Kw(l.failureMessages)||Re(l.failureMessage)})}return s||=n.reduce((a,c)=>!We(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=r.length,o||=n.reduce((a,c)=>We(c)?a+Ve(c.perfStats&&We(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:n.length||1,durationSeconds:o,failures:r}}function Ww(e){let t=e.split(`
149
+ `).filter(Boolean).map(c=>Il(c)).filter(We);if(t.length===0)return null;let n=[],r=0,s=0,i=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(i+=1,r+=Ve(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Ve(c.failed),o+=Ve(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:Re(c.name).split("::").slice(0,-1).join("::"),name:Re(c.name),excerpt:Re(c.stdout)});continue}if(c.reason==="compiler-message"&&We(c.message)){let u=Re(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(`
150
+ `)}),i||=1,r||=1,s||=1),s||=n.length,i||=1,r||=Math.max(s,n.length),{failed:s,total:r,suites:i,durationSeconds:o,failures:n}}async function Vw(e,t,n){let r=Buffer.from(e);if(r.length<=Fi)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}}),i=r.subarray(0,Fi).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(i);return{text:`${i}
151
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 ${ce(s)}`,handle:s,bytesElided:r.length}}function Il(e){try{return JSON.parse(e)}catch{return null}}function Kw(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
152
+ `):""}function zw(e){return`${Number(e.toFixed(1))}s`}function Yw(e,t){return e>0&&t>e?(t-e)/1e3:0}function Ve(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Re(e){return typeof e=="string"?e:""}function We(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Fi,Bw,Lw,Mw,Hi=E(()=>{"use strict";X();gt();Fr();nt();Fi=320,Bw=160,Lw=Fi,Mw=3});var Ki={};$(Ki,{parseCatCommand:()=>Vi,renderCatContract:()=>sb,runCatWrapper:()=>rb});import{isUtf8 as Qw}from"node:buffer";import{readFile as Zw}from"node:fs/promises";import{extname as Xw}from"node:path";async function rb(e,t){let n=Vi(e),r;try{r=await Zw(n.file)}catch(s){let i=s instanceof Error?s.message:String(s),o=oe(e.join(" "),"",i);return{stdout:A({...o,help:`ls ${n.file}`}),stderr:Buffer.from(`${i}
153
+ `),status:1,signal:null}}return Ml(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await Ll(e,n,r,t)}async function sb(e,t,n){if((t.status??0)!==0||t.signal){let o=oe(e.join(" "),t.stdout,t.stderr);return{stdout:A(o),stderr:Buffer.from(t.stderr),status:o.exitCode??1,signal:t.signal}}let r=Vi(e),s=Buffer.from(t.stdout,"utf8");return Ml(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Ll(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Vi(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,s=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){n=a.slice(2),r=Bl(t[++o],Wi);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=Bl(u,Wi);continue}i.push(a)}if(i.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:i[0],mode:n,...r?{limit:r}:{},...s?{inlineFull:s}:{}}}async function Ll(e,t,n,r){let s=n.toString("utf8"),i=ab(s,t);if(t.inlineFull)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let o=r.level!=="lossless"||n.length>$l(r.heavyByteThreshold,Al)||i.truncated;if(!Nl(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=Nl(t.file)?ib(e,t.file,n,s,r.level,i):ob(e,t.file,n,s,i),c=`${P(a)}
154
+ `;if(!o&&Buffer.byteLength(c)<=$l(r.heavyByteThreshold,Al))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 ${ce(u)}
155
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function ib(e,t,n,r,s,i){let o=Hr(r),a=s==="terse"?tb:eb,c=Hr(i.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:o.length,symbols:cb(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function ob(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:Hr(r).length,content:Hr(s.text),truncated:s.truncated}}function ab(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
156
+ `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??Wi,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
160
157
  `)}${r&&o.length>0?`
161
- `:""}`,truncated:o.length<s.length}}function Rw(e){let t=[];for(let n=0;n<e.length;n++){let s=e[n].trim(),i=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(i){t.push({kind:i[1],name:i[2],line:n+1,signature:s});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(o){t.push({kind:"function",name:o[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&&!Sw(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function Dr(e){let t=e.split(`
162
- `);return t.at(-1)===""?t.slice(0,-1):t}function hl(e){return e.includes(0)||!lw(e)}function fl(e){return gw.has(fw(e).toLowerCase())}function Sw(e){return["for","if","switch","while"].includes(e)}function ml(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function pl(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var dl,Oi,mw,pw,gw,Ci=E(()=>{"use strict";le();dt();dl=8*1024,Oi=10,mw=8,pw=2,gw=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var $r={};N($r,{parseExecCommandLine:()=>bl,renderExecContract:()=>wl,runExecWrapper:()=>Pw});import{isUtf8 as kw}from"node:buffer";import{spawn as Ew}from"node:child_process";async function Pw(e,t){let n=bl(e),r=await Ow(n);return await wl(n,r,t)}async function wl(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let i=Dw(r);if(i.kind==="text"){let d=await _n(i.text,{level:n.level,command:e,store:n.store?{mint:async(...f)=>await n.store.mint(...f)}:void 0});if(d.detected)return{stdout:Buffer.from(d.output),stderr:s,status:t.status,signal:t.signal,mintedHandle:d.handle,bytesElided:d.lossy?r.length:void 0,rawOutput:r}}let o=i.kind==="text"?Buffer.from(i.text):r,a=Iw(n.heavyByteThreshold,xw);if(o.length<=a&&n.level!=="terse")return{stdout:o,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");return{stdout:Buffer.from($w(o,r.length,l,n.level)),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r}}function bl(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 Ow(e){let t=Ew(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(r).toString("binary"),status:o,signal:a})})})}function Dw(e){return kw(e)?{kind:"text",text:It(e.toString("utf8"))}:{kind:"bytes"}}function $w(e,t,n,r){let i=Math.max(1,Math.floor((r==="terse"?vw:Tw)/2)),o=yl(e.subarray(0,i)),a=yl(e.subarray(Math.max(0,e.length-i))),c=Cw(e),u=["stdout summary",`bytes: ${t}`,`lines: ${c}`,"head:",o];return a&&a!==o&&u.push("tail:",a),u.push(`\u2026 elided stdout (+${t}) \u2014 ${re(n)}`),`${u.join(`
163
- `)}
164
- `}function yl(e){return e.toString("utf8").replace(/�$/g,"")}function Cw(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 Iw(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var xw,Tw,vw,Cr=E(()=>{"use strict";dt();Rn();xw=8*1024,Tw=2*1024,vw=1024});Xr();ke();Bn();import{spawn as Nw}from"node:child_process";import{createHash as Aw}from"node:crypto";import{existsSync as Pn,readFileSync as Bw,readdirSync as Lw,statSync as Mw}from"node:fs";import{tmpdir as jw}from"node:os";import{dirname as Uw,join as ze}from"node:path";import{fileURLToPath as kl}from"node:url";function jo(e){let t={app:e,version:df(St("__RED_BUILD_VERSION__",()=>"2.62.0")??"0.0.0-dev"),gitSha:St("__RED_BUILD_GIT_SHA__",()=>"c81d4ff2bddd1d2b804fdad40e0a90400f7b535f")??"unknown",buildTime:St("__RED_BUILD_TIME__",()=>"2026-07-17T10:05:52-03:00")??"unknown",bundleAsset:St("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=St("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=St("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function df(e){return e.startsWith("v")?e.slice(1):e}function St(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}gs();he();async function Fw(e=process.argv.slice(2)){let t=jo("rsp"),n=ob(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:p}=await Promise.resolve().then(()=>(hr(),Gs));return await p()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:p}=await Promise.resolve().then(()=>(hr(),Gs));return await p()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:p}=await Promise.resolve().then(()=>(Rn(),qs));return await p()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:p}=await Promise.resolve().then(()=>(Rn(),qs));return await p()}if(n.command==="setup"){let{provisionRspRepoStore:p}=await Promise.resolve().then(()=>(Ac(),Nc)),g=await p(process.cwd());return process.stdout.write(bb(g)),0}if(n.command==="mcp"){let{runRspMcpServer:p}=await Promise.resolve().then(()=>(Gc(),Fc));return await p(),0}if(n.command==="wait"){let{runWait:p}=await Promise.resolve().then(()=>(eu(),Zc));return await p(n.positional)}if(n.command==="shell-init"){let p=n.positional[1];if(p!=="fish"&&p!=="bash"&&p!=="zsh")return process.stdout.write(`error: usage rsp shell-init fish|bash|zsh
165
- `),2;let{renderShellInit:g}=await Promise.resolve().then(()=>(ru(),nu));return process.stdout.write(g(p)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(me(),da)),s=r(process.cwd(),process.env,n.storeUri),i=sb(n.command);if(!s.enabled)return i?await rb(n.positional):(process.stdout.write(`${Fi()}
166
- `),0);if(n.command==="git"&&Bi(n.positional)){let p=process.hrtime.bigint();return await K(n,await Li(),p,void 0,await Gw(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(ot(),hn));if(n.command==="server"){let{runResidentServer:p}=await Promise.resolve().then(()=>(Au(),Nu)),g=o(process.cwd()),b=be(n.positional,"--socket")??g.socketPath,w=r(process.cwd(),process.env,n.storeUri??be(n.positional,"--store-uri"));return w.enabled?(await p({socketPath:b,pidPath:be(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:w.storeUri,ttlDays:B(n.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:B(n.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:B(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:B(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:B(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:B(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:B(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:B(n.positional,"--idle-ms")??w.idleMs,residentVersion:be(n.positional,"--resident-version")??t.version,registryPath:be(n.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${Fi()}
167
- `),0)}if(n.command==="warm-resident"){let p=o(process.cwd()),g=be(n.positional,"--socket")??p.socketPath,b=be(n.positional,"--wake-lock")??p.wakeLockPath,w=r(process.cwd(),process.env,n.storeUri??be(n.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:T}=await Promise.resolve().then(()=>(ot(),hn));return await T({...p,socketPath:g,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:B(n.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:B(n.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:B(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:B(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:B(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:B(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:B(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:B(n.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}let u=o(process.cwd());if(n.command==="proxy"){let{runProxy:p}=await Promise.resolve().then(()=>(yi(),hi));return await p(n.positional,{telemetryRoot:u.rootDir,level:n.level})}if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:p,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(ot(),hn)),b=n.command==="sweep"?await g(u):await p(u);return process.stdout.write(`${xe(b)}
168
- `),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:p}=await Promise.resolve().then(()=>(br(),Hc)),g=ab(n.positional);if(!g)return process.stderr.write(`usage: rsp gh-api-json <path> [-f name=value ...]
169
- `),2;let b=await p({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${n.positional.join(" ")}`});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
170
- `),b.status}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!Pn(kl(s.storeUri)))return i?await Hw(n,s,u.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
171
- `),1);let l=(p=!0)=>Promise.resolve(new a(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version},{ensureResident:p})),d=()=>c(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),f=async()=>{let{RspElisionStore:p}=await Promise.resolve().then(()=>(st(),un));return await p.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},y=()=>s.storeUri.endsWith("/red-skills.rdb")?l():f(),h;try{if(!n.command||n.command==="stats"){let{stats:p,telemetry:g}=await Ww(s,Rl(n.positional,30));return process.stdout.write(ub(p,g,cb(n.positional))),0}if(n.command==="gains"){let p=await y();if(h=()=>p.close(),!qw(p))return process.stdout.write(`error: rsp gains requires the shared RedDB store
172
- `),1;let g=await p.telemetryGains(Rl(n.positional,28));return process.stdout.write(lb(g)),0}if(n.command==="git"){if(Ke(d()),Bi(n.positional)){let T=process.hrtime.bigint();return await K(n,await Li(),T,void 0,u.rootDir)}let{runGitWrapper:p}=await Promise.resolve().then(()=>(dt(),bi)),g=new mt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await p(n.positional,{level:n.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await K(n,w,b,g,u.rootDir)}if(n.command==="gh"){Ke(d());let{runGhWrapper:p}=await Promise.resolve().then(()=>(xi(),Ei)),g=new mt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await p(n.positional,{level:n.level,store:g});return await K(n,w,b,g,u.rootDir)}if(n.command==="vitest"||n.command==="cargo"){Ke(d());let{runTestWrapper:p}=await Promise.resolve().then(()=>(Pi(),vi)),g=new mt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await p(n.positional,{level:n.level,store:g});return await K(n,w,b,g,u.rootDir)}if(n.command==="cat"){Ke(d());let{runCatWrapper:p}=await Promise.resolve().then(()=>(Ci(),$i)),g=new mt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await p(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await K(n,w,b,g,u.rootDir)}if(n.command==="exec"){Ke(d());let{runExecWrapper:p}=await Promise.resolve().then(()=>(Cr(),$r)),g=new mt(()=>l(!1));h=()=>g.close();let b=process.hrtime.bigint(),w=await p(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await K(n,w,b,g,u.rootDir)}if(n.command==="show"&&n.handle){let p=await y();h=()=>p.close();let g=await p.get(n.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await Ii(u.rootDir,n.handle,!0,g.original.length),0;if(g?.status==="expired"){let w=`expired ${g.expired_at} \u2014 re-run: ${g.command}
173
- `;return process.stdout.write(w),await Ii(u.rootDir,n.handle,!1,Buffer.byteLength(w,"utf8")),1}let b=`expired unknown \u2014 re-run: ${n.handle}
174
- `;return process.stdout.write(b),await Ii(u.rootDir,n.handle,!1,Buffer.byteLength(b,"utf8")),1}return process.stdout.write(`error: usage rsp show el:<id>
175
- `),2}catch(p){if(i)return await ji("wrapper failed",n.positional,p,u.rootDir);throw p}finally{await h?.()}}function be(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function B(e,t){let n=be(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function Bi(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Li(){if(Jw(process.cwd()))return{stdout:Buffer.from(`git empty
176
- `),stderr:Buffer.alloc(0),status:0,signal:null};let{spawnSync:e}=await import("node:child_process");if(e("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Buffer.from(`git empty
177
- `),stderr:Buffer.alloc(0),status:0,signal:null};let n=e("git",["status","--porcelain=v1"],{encoding:"buffer"});if((n.status??0)!==0)return{stdout:n.stdout,stderr:n.stderr,status:n.status??1,signal:n.signal};let r=n.stdout.length===0?Buffer.from(`git empty
178
- `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function Gw(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(ot(),hn));return t(e).rootDir}catch{return e}}function Jw(e){try{return!Pn(`${e}/.git`)||Pn(`${e}/.git/index`)?!1:Lw(e).every(t=>t===".git")}catch{return!1}}function qw(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var mt=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}},Mi=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function Hw(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new Mi,i=process.hrtime.bigint();try{if(e.command==="git"){if(Bi(e.positional))return await K(e,await Li(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(dt(),bi)),a=await o(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await K(e,a,i,s,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(xi(),Ei)),a=await o(e.positional,{level:e.level,store:s});return await K(e,a,i,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Pi(),vi)),a=await o(e.positional,{level:e.level,store:s});return await K(e,a,i,s,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Ci(),$i)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await K(e,a,i,s,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(Cr(),$r)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await K(e,a,i,s)}}catch(o){return await ji("wrapper failed",e.positional,o,n)}finally{await s.close()}return await ji("wrapper failed",e.positional,r,n)}async function Ww(e,t){let n={stats:wb(e.telemetryByteBudget),telemetry:Ji(t)};if(!e.storeUri.startsWith("file://"))return n;let r=kl(e.storeUri);if(!Pn(r))return n;if(!r.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(st(),un)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:Ji(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(st(),un));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(he(),pn)),a=await yt(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}async function K(e,t,n,r,s=process.cwd(),i){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-n)/1e6;return r?(Ke(Qw(s,e,t,o,r.lastResponseMetrics())),i&&Vw(s,i)):Xw(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Vw(e,t){try{let n=Ce(e),r=Mw(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!Yw(n,Date.now()-s))return;let i=Kw(e),o=zw(i),a=ze(o,"rsp.sock"),c=ze(o,"rsp.pid"),u=ze(F(i),"rsp-resident.pid.json"),l=ze(i,".red","tmp","rsp.wake.lock");Nw(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:i,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function Kw(e){let t=e;for(;;){if(Pn(ze(t,".git")))return t;let n=Uw(t);if(n===t)return e;t=n}}function zw(e){let t=Aw("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=ze(n,"red-skills",t);if(ze(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ze(jw(),`red-skills-${r}`,t)}function Yw(e,t){try{let n=Bw(e,"utf8");for(let r of n.split(/\r?\n/))if(r.trim())try{let s=JSON.parse(r),i=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof i=="string"){let o=Date.parse(i);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function Qw(e,t,n,r,s){let i=Buffer.concat([n.stdout,n.stderr]),o=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),{appendTelemetryEvent:a,RSP_ACCOUNTING_EVENTS_COLLECTION:c,RSP_TELEMETRY_INVOCATIONS_COLLECTION:u}=await Promise.resolve().then(()=>(he(),pn));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:Ir(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,wrapper_ms:r,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:u,ts:new Date().toISOString(),command:Ir(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,raw_text:o.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:r,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs,accounting_recorded:!0})}function Xw(e,t,n,r){try{let s=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]);mn(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:Ir(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:r}),mn(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:Ir(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:r,accounting_recorded:!0})}catch{}}async function ji(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
179
- `);let s=await El(t);if(r){let i=Zw(e,t,n),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(he(),pn));Ke(o(r,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Gi(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead})),Ke(o(r,{collection:c,ts:new Date().toISOString(),command:Gi(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}function Zw(e,t,n){let r=t[0]??"unknown",s=eb(n)||e;return{reason:_l(n)==="ENOENT"||_l(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:nb(n)??1,stderrHead:tb(s,240)}}function eb(e){return e instanceof Error?Ui(e.message):Ui(String(e??""))}function Ui(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function tb(e,t){let n=Ui(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function _l(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function nb(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 Ke(e){e.catch(()=>{})}async function Ii(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(he(),pn));await s(e,{collection:i,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})}async function rb(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Fi()}, passing through
180
- `),await El(e)}function Fi(){return"rsp is not enabled in this directory; run /red-setup"}function sb(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}async function El(e){if(e[0]==="exec"||e[0]==="proxy")return await ib(e);let t=e[0];if(!t)return 2;let{spawn:n}=await import("node:child_process"),r=n(t,e.slice(1),{stdio:"inherit"});return await new Promise(s=>{r.on("error",i=>{process.stderr.write(`${i instanceof Error?i.message:String(i)}
181
- `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}async function ib(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:s}=await Promise.resolve().then(()=>(yi(),hi));t=s(e)}else{let{parseExecCommandLine:s}=await Promise.resolve().then(()=>(Cr(),$r));t=s(e)}}catch(s){return process.stderr.write(`${s instanceof Error?s.message:String(s)}
158
+ `:""}`,truncated:o.length<s.length}}function cb(e){let t=[];for(let n=0;n<e.length;n++){let s=e[n].trim(),i=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(i){t.push({kind:i[1],name:i[2],line:n+1,signature:s});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(o){t.push({kind:"function",name:o[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&&!ub(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function Hr(e){let t=e.split(`
159
+ `);return t.at(-1)===""?t.slice(0,-1):t}function Ml(e){return e.includes(0)||!Qw(e)}function Nl(e){return nb.has(Xw(e).toLowerCase())}function ub(e){return["for","if","switch","while"].includes(e)}function $l(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Bl(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var Al,Wi,eb,tb,nb,zi=E(()=>{"use strict";X();gt();nt();Al=8*1024,Wi=10,eb=8,tb=2,nb=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});function Jl(e,t={}){let n=lb(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 h of new Set(d.tokens))r.set(h,(r.get(h)??0)+1)}let i=n.map(d=>d.length),o=n.map(d=>d.tokens.length),a=n.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=Yi(i),u=Yi(o),l=Yi(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(h=>hb(d.start,d.end,h.start,h.end))).map(d=>({line:d,score:Qi(d.length,c)+Qi(d.tokens.length,u)+Qi(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+pb(d.tokens,r,n.length)+gb(d.signature,s,n.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,h)=>h.score-d.score||d.line.index-h.line.index).slice(0,t.maxOutliers??3).sort((d,h)=>d.line.index-h.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function lb(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(jl(r++,n,i,e.slice(n,i).replace(/\r$/,""))),n=i+1}return(n<e.length||e.length===0)&&t.push(jl(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function jl(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:db(r),tokens:fb(r),numbers:mb(r),length:r.length}}function db(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 fb(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function mb(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function pb(e,t,n){let r=[...new Set(e)];if(r.length===0)return 0;let s=r.map(i=>Math.log2(n/Math.max(1,t.get(i)??n))).sort((i,o)=>o-i).slice(0,6);return s.reduce((i,o)=>i+o,0)/Math.max(1,s.length)}function gb(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function Yi(e){let t=Ul(e),n=Ul(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function Qi(e,t){return Math.abs(e-t.median)/t.mad}function Ul(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 hb(e,t,n,r){return e<r&&n<t}var Fl=E(()=>{"use strict"});var Wr={};$(Wr,{parseExecCommandLine:()=>Kl,renderExecContract:()=>Vl,runExecWrapper:()=>Rb});import{isUtf8 as yb}from"node:buffer";import{spawn as wb}from"node:child_process";async function Rb(e,t){let n=Kl(e),r=await Sb(n);return await Vl(n,r,t)}async function Vl(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=oe(e,t.stdout,t.stderr);return{stdout:A(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 i=kb(r),o=i.kind==="text"?Buffer.from(i.text):r,a=Gb(n.heavyByteThreshold,bb);if(o.length<=a&&n.level!=="terse")return{stdout:o,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=i.kind==="text"?xb(i.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):Tb(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 Kl(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 Sb(e){let t=wb(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(r).toString("binary"),status:o,signal:a})})})}function kb(e){return yb(e)?{kind:"text",text:Eb(e.toString("utf8"))}:{kind:"bytes"}}function Eb(e){let t=e;for(let n of[vr,Or,Pr,Dr])t=n.apply(t);return t}function xb(e,t,n,r,s,i=Bb,o=vn){let c=Math.max(1,Math.floor((r==="terse"?Wl:_b)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=$b(e,c,l,i),d=vb(e),h=Ob(d,e,u,c,l,f.kind==="ok"?f.lines:[],o),y=zl(s,d,t,Fb(u),n,h.summary),m=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:td(f.error)}:h.degradation;return{text:ed(y),degradation:m}}function Tb(e,t,n,r){let s=Math.max(1,Math.floor(Wl/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:ed(zl(r,"bytes",t,0,n,i))}}function zl(e,t,n,r,s,i){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:i,recovery:{original:ce(s)}}}function vb(e){let t=e.trim();return t?Ql(t)?"json":Zl(e)?"jsonl":Lb(e)?"unified-diff":Xl(e)?"tabular":Mb(e)?"log-like":jb(e)?"prose":"untyped":"untyped"}function Ob(e,t,n,r,s,i,o=vn){switch(e){case"json":return Pb(t,o);case"jsonl":return{summary:Db(t)};case"unified-diff":return{summary:Cb(t)};case"tabular":return{summary:Ib(t)};case"log-like":return{summary:Ab(t,i)};case"prose":return{summary:Nb(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Yl(n,r,s,i)}}}function Pb(e,t){let n=Ql(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(Ke),item_keys:Xi(n)}}}catch(r){return{summary:ql(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:td(r)}}}return{summary:ql(n)}}if(Bn(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,i])=>[s,Ke(i)]))}}}return{summary:{root_type:typeof n,value:Ke(n)}}}function ql(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Ke),item_keys:Xi(e)}}function Db(e){let t=Zl(e)??[],n=Ub(t,"level");return{records:t.length,keys:Xi(t),levels:n,first:Ke(t[0]),last:Ke(t.at(-1))}}function Cb(e){let t=new Map,n="",r=0,s=0,i=0;for(let o of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(o);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(o);c&&(n=c[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0}))}o.startsWith("@@")?(i++,n&&t.get(n).hunks++):o.startsWith("+")&&!o.startsWith("+++")?(r++,n&&t.get(n).added++):o.startsWith("-")&&!o.startsWith("---")&&(s++,n&&t.get(n).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:i,added_lines:r,deleted_lines:s}}function Ib(e){let t=Xl(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Yl(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function Ab(e,t){let n=$n(e);return{entries:n.length,levels:Jb(n),first:yt(n[0]??""),last:yt(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:yt(r.text)}))}}function Nb(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:yt(t[0]??""),closing:yt(t.at(-1)??"")}}function Yl(e,t,n,r){let s=Hl(e.subarray(0,t)),i=Hl(e.subarray(n));return{head:s,tail:i,outliers:r.map(o=>({line:o.lineNumber,score:Number(o.score.toFixed(2)),text:yt(o.text)}))}}function $b(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function Bb(e,t){return Jl(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Ql(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return Bn(n)||Array.isArray(n)?n:null}catch{return null}}function Zl(e){let t=$n(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 Lb(e){let t=$n(e),n=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(n)&&!/^--- /.test(n))return!1;let r=t.some(o=>/^diff --git a\/.+ b\/.+/.test(o))||t.some(o=>/^--- /.test(o))&&t.some(o=>/^\+\+\+ /.test(o)),s=t.some(o=>/^@@ /.test(o)),i=t.some(o=>/^[+-]/.test(o)&&!/^(---|\+\+\+) /.test(o));return r&&s&&i}function Xl(e){let t=$n(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(o=>o.trim()).filter(Boolean);if(s.length<2||s.some(o=>!/^[A-Za-z0-9_.-]+$/.test(o)))return null;let i=[];for(let o of t.slice(1)){let a=o.split(r).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;i.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return i.length>0?{columns:s,rows:i}:null}function Mb(e){let t=$n(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 jb(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 $n(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Xi(e){let t=new Map;for(let n of e)if(Bn(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 Ub(e,t){let n=new Map;for(let r of e){if(!Bn(r))continue;let s=r[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let i=String(s).toLowerCase();n.set(i,(n.get(i)??0)+1)}}return Object.fromEntries([...n.entries()].sort((r,s)=>r[0].localeCompare(s[0])))}function Jb(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 Ke(e){return typeof e=="string"?yt(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(Ke):Bn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,Ke(n)])):String(e)}function yt(e){let t=e.replace(/\s+/g," ").trim();return t.length<=Gl?t:`${t.slice(0,Gl-1)}\u2026`}function ed(e){let t=P(e).trimEnd(),n=Z(t);if(!Zi(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
160
+ `}function Zi(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 o=t;return e.length!==o.length?!1:e.every((a,c)=>Zi(a,o[c]))}let n=e,r=t,s=Object.keys(n),i=Object.keys(r);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&Zi(n[o],r[o]))}function Bn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function td(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 Hl(e){return e.toString("utf8").replace(/�$/g,"")}function Fb(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 Gb(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var bb,_b,Wl,Gl,Vr=E(()=>{"use strict";X();Fl();gt();On();nt();bb=8*1024,_b=2*1024,Wl=1024,Gl=240});fs();Te();rn();import{spawn as qb}from"node:child_process";import{createHash as Hb}from"node:crypto";import{existsSync as Ln,readFileSync as Wb,readdirSync as Vb,statSync as Kb}from"node:fs";import{tmpdir as zb}from"node:os";import{dirname as Yb,join as Ye}from"node:path";import{fileURLToPath as sd}from"node:url";function ua(e){let t={app:e,version:Wf(Ot("__RED_BUILD_VERSION__",()=>"2.63.0")??"0.0.0-dev"),gitSha:Ot("__RED_BUILD_GIT_SHA__",()=>"02024a092c0721872879d105a04f0fa23f1a4683")??"unknown",buildTime:Ot("__RED_BUILD_TIME__",()=>"2026-07-17T11:14:17-03:00")??"unknown",bundleAsset:Ot("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Ot("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Ot("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function Wf(e){return e.startsWith("v")?e.slice(1):e}function Ot(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}Ps();nt();be();async function Qb(e=process.argv.slice(2)){let t=ua("rsp"),n=h_(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(xr(),ni));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(xr(),ni));return await m()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(On(),oi));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(On(),oi));return await m()}if(n.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(su(),ru)),g=await m(process.cwd());return process.stdout.write(x_(g)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(lu(),uu));return await m(),0}if(n.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(Su(),Ru));return await m(n.positional)}if(n.command==="shell-init"){let m=n.positional[1];if(m!=="fish"&&m!=="bash"&&m!=="zsh")return process.stdout.write(A({command:n.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:g}=await Promise.resolve().then(()=>(xu(),Eu));return process.stdout.write(g(m)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(he(),$a)),s=r(process.cwd(),process.env,n.storeUri),i=p_(n.command);if(!s.enabled)return i?await m_(n.positional):(process.stdout.write(`${uo()}
161
+ `),0);if(n.command==="git"&&so(n.positional)){let m=process.hrtime.bigint();return await Y(n,await io(),m,void 0,await Zb(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(ct(),kn));if(n.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(rl(),nl)),g=o(process.cwd()),b=Se(n.positional,"--socket")??g.socketPath,w=r(process.cwd(),process.env,n.storeUri??Se(n.positional,"--store-uri"));return w.enabled?(await m({socketPath:b,pidPath:Se(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:w.storeUri,ttlDays:L(n.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:L(n.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:L(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:L(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:L(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:L(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:L(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:L(n.positional,"--idle-ms")??w.idleMs,residentVersion:Se(n.positional,"--resident-version")??t.version,registryPath:Se(n.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${uo()}
162
+ `),0)}if(n.command==="warm-resident"){let m=o(process.cwd()),g=Se(n.positional,"--socket")??m.socketPath,b=Se(n.positional,"--wake-lock")??m.wakeLockPath,w=r(process.cwd(),process.env,n.storeUri??Se(n.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:T}=await Promise.resolve().then(()=>(ct(),kn));return await T({...m,socketPath:g,wakeLockPath:b},{storeUri:w.storeUri,ttlDays:L(n.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:L(n.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:L(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:L(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:L(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:L(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:L(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:L(n.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}let u=o(process.cwd());if(n.command==="proxy"){let{runProxy:m}=await Promise.resolve().then(()=>(Ai(),Ii));return await m(n.positional,{telemetryRoot:u.rootDir,level:n.level})}if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:m,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(ct(),kn)),b=n.command==="sweep"?await g(u):await m(u);return process.stdout.write(`${K(b)}
163
+ `),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(Ar(),mu)),g=y_(n.positional);if(!g)return process.stdout.write(A({command:n.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let b=await m({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${n.positional.join(" ")}`});return process.stdout.write(b.stdout),b.stderr&&process.stderr.write(`${b.stderr}
164
+ `),b.status}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!Ln(sd(s.storeUri)))return i?await t_(n,s,u.rootDir):(process.stdout.write(A({command:bt(n)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let l=(m=!0)=>Promise.resolve(new a(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version},{ensureResident:m})),f=()=>c(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),d=async()=>{let{RspElisionStore:m}=await Promise.resolve().then(()=>(ot(),hn));return await m.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},h=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),y;try{if(!n.command||n.command==="stats"){let{stats:m,telemetry:g}=await n_(s,rd(n.positional,30));return process.stdout.write(b_(m,g,w_(n.positional))),0}if(n.command==="gains"){let m=await h();if(y=()=>m.close(),!e_(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
165
+ `),1;let g=await m.telemetryGains(rd(n.positional,28));return process.stdout.write(R_(g)),0}if(n.command==="git"){if(ze(f()),so(n.positional)){let T=process.hrtime.bigint();return await Y(n,await io(),T,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(gt(),$i)),g=new wt(()=>l(!1));y=()=>g.close();let b=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await Y(n,w,b,g,u.rootDir)}if(n.command==="gh"){ze(f());let{runGhWrapper:m}=await Promise.resolve().then(()=>(Ji(),Ui)),g=new wt(()=>l(!1));y=()=>g.close();let b=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:g});return await Y(n,w,b,g,u.rootDir)}if(n.command==="vitest"||n.command==="cargo"){ze(f());let{runTestWrapper:m}=await Promise.resolve().then(()=>(Hi(),qi)),g=new wt(()=>l(!1));y=()=>g.close();let b=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:g});return await Y(n,w,b,g,u.rootDir)}if(n.command==="cat"){ze(f());let{runCatWrapper:m}=await Promise.resolve().then(()=>(zi(),Ki)),g=new wt(()=>l(!1));y=()=>g.close();let b=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await Y(n,w,b,g,u.rootDir)}if(n.command==="exec"){ze(f());let{runExecWrapper:m}=await Promise.resolve().then(()=>(Vr(),Wr)),g=new wt(()=>l(!1));y=()=>g.close();let b=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await Y(n,w,b,g,u.rootDir)}if(n.command==="show"&&n.handle){let m=await h();y=()=>m.close();let g=await m.get(n.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await to(u.rootDir,n.handle,!0,g.original.length),0;if(g?.status==="expired"){let w=A({command:`rsp show ${n.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(w),await to(u.rootDir,n.handle,!1,w.length),1}let b=A({command:`rsp show ${n.handle}`,category:"real-error",error:"expired unknown",help:n.handle});return process.stdout.write(b),await to(u.rootDir,n.handle,!1,b.length),1}return process.stdout.write(A({command:n.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(m){if(po(m))return process.stdout.write(m.render()),2;if(i)return await ao("wrapper failed",n.positional,m,u.rootDir);throw m}finally{await y?.()}}function Se(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function L(e,t){let n=Se(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function so(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function io(){if(Xb(process.cwd()))return{stdout:eo(),stderr:Buffer.alloc(0),status:0,signal:null};let{spawnSync:e}=await import("node:child_process");if(e("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:eo(),stderr:Buffer.alloc(0),status:0,signal:null};let n=e("git",["status","--porcelain=v1"],{encoding:"buffer"});if((n.status??0)!==0)return{stdout:n.stdout,stderr:n.stderr,status:n.status??1,signal:n.signal};let r=n.stdout.length===0?eo():n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function eo(){return Buffer.from(`${K({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
166
+ `)}async function Zb(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(ct(),kn));return t(e).rootDir}catch{return e}}function Xb(e){try{return!Ln(`${e}/.git`)||Ln(`${e}/.git/index`)?!1:Vb(e).every(t=>t===".git")}catch{return!1}}function e_(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var wt=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}},oo=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function t_(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new oo,i=process.hrtime.bigint();try{if(e.command==="git"){if(so(e.positional))return await Y(e,await io(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(gt(),$i)),a=await o(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await Y(e,a,i,s,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Ji(),Ui)),a=await o(e.positional,{level:e.level,store:s});return await Y(e,a,i,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Hi(),qi)),a=await o(e.positional,{level:e.level,store:s});return await Y(e,a,i,s,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(zi(),Ki)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await Y(e,a,i,s,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(Vr(),Wr)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await Y(e,a,i,s)}}catch(o){return po(o)?(process.stdout.write(o.render()),2):await ao("wrapper failed",e.positional,o,n)}finally{await s.close()}return await ao("wrapper failed",e.positional,r,n)}async function n_(e,t){let n={stats:E_(e.telemetryByteBudget),telemetry:mo(t)};if(!e.storeUri.startsWith("file://"))return n;let r=sd(e.storeUri);if(!Ln(r))return n;if(!r.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(ot(),hn)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:mo(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(ot(),hn));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(be(),Rn)),a=await kt(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}async function Y(e,t,n,r,s=process.cwd(),i){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-n)/1e6;return r?(ze(a_(s,e,t,o,r.lastResponseMetrics())),i&&r_(s,i)):c_(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function r_(e,t){try{let n=Ne(e),r=Kb(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!o_(n,Date.now()-s))return;let i=s_(e),o=i_(i),a=Ye(o,"rsp.sock"),c=Ye(o,"rsp.pid"),u=Ye(F(i),"rsp-resident.pid.json"),l=Ye(i,".red","tmp","rsp.wake.lock");qb(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:i,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function s_(e){let t=e;for(;;){if(Ln(Ye(t,".git")))return t;let n=Yb(t);if(n===t)return e;t=n}}function i_(e){let t=Hb("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=Ye(n,"red-skills",t);if(Ye(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return Ye(zb(),`red-skills-${r}`,t)}function o_(e,t){try{let n=Wb(e,"utf8");for(let r of n.split(/\r?\n/))if(r.trim())try{let s=JSON.parse(r),i=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof i=="string"){let o=Date.parse(i);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function a_(e,t,n,r,s){let i=Buffer.concat([n.stdout,n.stderr]),o=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),{appendTelemetryEvent:a,RSP_ACCOUNTING_EVENTS_COLLECTION:c,RSP_TELEMETRY_INVOCATIONS_COLLECTION:u}=await Promise.resolve().then(()=>(be(),Rn));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:bt(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,wrapper_ms:r,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:u,ts:new Date().toISOString(),command:bt(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,raw_text:o.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:r,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs,accounting_recorded:!0}),n.degradation&&(await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:bt(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:o.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 a(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:bt(t),reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead,accounting_recorded:!0}))}function c_(e,t,n,r){try{let s=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]);_n(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:bt(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:r}),_n(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:bt(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:r,accounting_recorded:!0})}catch{}}async function ao(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
167
+ `);let s=await id(t);if(r){let i=u_(e,t,n),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(be(),Rn));ze(o(r,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:lo(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead})),ze(o(r,{collection:c,ts:new Date().toISOString(),command:lo(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}function u_(e,t,n){let r=t[0]??"unknown",s=l_(n)||e;return{reason:nd(n)==="ENOENT"||nd(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:f_(n)??1,stderrHead:d_(s,240)}}function l_(e){return e instanceof Error?co(e.message):co(String(e??""))}function co(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function d_(e,t){let n=co(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function nd(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function f_(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 ze(e){e.catch(()=>{})}async function to(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(be(),Rn));await s(e,{collection:i,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})}async function m_(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${uo()}, passing through
168
+ `),await id(e)}function uo(){return"rsp is not enabled in this directory; run /red-setup"}function p_(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}async function id(e){if(e[0]==="exec"||e[0]==="proxy")return await g_(e);let t=e[0];if(!t)return 2;let{spawn:n}=await import("node:child_process"),r=n(t,e.slice(1),{stdio:"inherit"});return await new Promise(s=>{r.on("error",i=>{process.stderr.write(`${i instanceof Error?i.message:String(i)}
169
+ `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}async function g_(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:s}=await Promise.resolve().then(()=>(Ai(),Ii));t=s(e)}else{let{parseExecCommandLine:s}=await Promise.resolve().then(()=>(Vr(),Wr));t=s(e)}}catch(s){return process.stderr.write(`${s instanceof Error?s.message:String(s)}
182
170
  `),2}let{spawn:n}=await import("node:child_process"),r=n(t,{shell:!0,stdio:"inherit"});return await new Promise(s=>{r.on("error",i=>{process.stderr.write(`${i instanceof Error?i.message:String(i)}
183
- `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function Ir(e){return Gi(e.positional)}function Gi(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 ob(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let s=e[r];s==="--store-uri"?t.storeUri=e[++r]:s==="--brief"?t.level="brief":s==="--terse"?t.level="terse":s==="--query"?t.query=e[++r]:s.startsWith("--query=")?t.query=s.slice(8):n.push(s)}return t.query&&n[0]!=="show"&&!n.some(r=>r==="--query"||r.startsWith("--query="))&&n.push("--query",t.query),t.command=n[0],t.handle=n[1],t.positional=n,t}function ab(e){let t=e[1];if(!t)return null;let n={};for(let r=2;r<e.length;r++){let s=e[r];if(s!=="-f"&&s!=="-F")continue;let i=e[++r]??"",o=i.indexOf("=");o<=0||(n[i.slice(0,o)]=i.slice(o+1))}return{path:t,params:n}}function Rl(e,t){let n=be(e,"--since")??e.find(i=>i.startsWith("--since="))?.slice(8);if(!n)return t;let r=/^(\d+)(d)?$/.exec(n);if(!r)return t;let s=Number(r[1]);return Number.isFinite(s)&&s>0?s:t}function cb(e){return e.includes("--full")}function ub(e,t=Ji(30),n=!1){let r=t.savings.top_commands.slice(0,n?10:3),s=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??xl();return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,"storage_classes:",...yb(i),"savings:",` window_days: ${t.window_days}`,` empty: ${t.empty}`,` invocations: ${t.savings.invocations}`,` elided: ${t.savings.elided}`,` raw_bytes: ${t.savings.raw_bytes}`,` emitted_bytes: ${t.savings.emitted_bytes}`,` bytes_saved: ${t.savings.bytes_saved}`,` tokens_saved: ${db(t.savings)}`,` dollars_saved_estimate_usd: ${fb(t.savings)}`,` pricing_model_family: ${t.savings.pricing_model_family}`,` pricing_input_usd_per_million_tokens: ${t.savings.pricing_input_usd_per_million_tokens}`,` pricing_note: ${t.savings.pricing_note}`," daily_tokens_saved:",...mb(s),...!n&&t.savings.daily_tokens_saved.length>s.length?[` elided_days: ${t.savings.daily_tokens_saved.length-s.length}`," hint: --full"]:[]," top_commands:",...pb(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${Ai(t.health.degradation_rate)}`,` show_total: ${t.health.show_total}`,` show_hits: ${t.health.show_hits}`,` show_misses: ${t.health.show_misses}`,` show_hit_rate: ${Ai(t.health.show_hit_rate)}`,` most_recent_degradation_at: ${t.health.most_recent?.timestamp??"none"}`,` most_recent_degradation_reason: ${t.health.most_recent?.reason??"none"}`," degradations_by_reason:",...Sl(t.health.by_reason)," wrapper_failures_by_family:",...gb(t.health.by_family)," recent_wrapper_failures:",...hb(t.health.recent_failures.slice(0,n?20:5)),...!n&&t.health.recent_failures.length>5?[` elided_failures: ${t.health.recent_failures.length-5}`," hint: --full"]:[],"decisions:",` seen: ${t.decisions.seen}`,` contributed: ${t.decisions.contributed}`,` passed: ${t.decisions.passed}`,` failed_open: ${t.decisions.failed_open}`,` quota_free_saved_units: ${t.decisions.quota_free_saved_units}`,` contribution_rate: ${Ai(t.decisions.contribution_rate)}`," top_pass_reasons:",...Sl(t.decisions.top_pass_reasons.slice(0,n?10:3)),"latency:",` wrapper_ms_p50: ${Ni(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Ni(t.latency.wrapper_ms_p95)}`,` store_open_count_sum: ${t.latency.store_open_count_sum}`,` store_elapsed_ms_sum: ${t.latency.store_elapsed_ms_sum}`,` store_elapsed_ms_avg: ${Ni(t.latency.store_elapsed_ms_avg)}`,""].join(`
184
- `)}function lb(e){return`${xe(e)}
185
- `}function db(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 fb(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Xt(e.dollars_saved_estimate_usd):`${Xt(e.dollars_saved_low_usd)}-${Xt(e.dollars_saved_high_usd)} (estimate_midpoint: ${Xt(e.dollars_saved_estimate_usd)})`}function mb(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function pb(e){return e.length===0?[" empty: true"]:e.map(t=>` - command: ${t.command} invocations: ${t.invocations} bytes_saved: ${t.bytes_saved} tokens_saved: ${t.tokens_saved}`)}function Sl(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function gb(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.family}: ${t.count}`)}function hb(e){return e.length===0?[" empty: true"]:e.map(t=>` - at: ${t.timestamp||"unknown"} family: ${t.family} command: ${t.command} reason: ${t.reason} exit_code: ${t.exit_code??"none"} stderr_head: ${t.stderr_head??"none"}`)}function yb(e){return["derivable","re-executable","ephemeral"].map(t=>` ${t}: records: ${e[t].records} bytes: ${e[t].bytes} raw_bytes: ${e[t].raw_bytes}`)}function Ni(e){return e==null?"none":String(e)}function Ai(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function Ji(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[]}}}function wb(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:xl()}}function xl(){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 bb(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
186
- `)}import.meta.url===`file://${process.argv[1]}`&&Fw().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
187
- `),process.exit(1)});export{Fw as main,bb as renderSetupResult,ub as renderStats};
171
+ `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function bt(e){return lo(e.positional)}function lo(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 h_(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let s=e[r];if(s==="--store-uri")t.storeUri=e[++r];else if(s==="--brief")t.level="brief";else if(s==="--terse")t.level="terse";else if(s==="--query")t.query=e[++r];else if(s.startsWith("--query="))t.query=s.slice(8);else{if(n.length===0&&s.startsWith("--"))throw new fo(s);n.push(s)}}return t.query&&n[0]!=="show"&&!n.some(r=>r==="--query"||r.startsWith("--query="))&&n.push("--query",t.query),t.command=n[0],t.handle=n[1],t.positional=n,t}var fo=class extends Error{constructor(n){super(`unknown flag: ${n}`);this.flag=n}render(){return Hn("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function po(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function y_(e){let t=e[1];if(!t)return null;let n={};for(let r=2;r<e.length;r++){let s=e[r];if(s!=="-f"&&s!=="-F")continue;let i=e[++r]??"",o=i.indexOf("=");o<=0||(n[i.slice(0,o)]=i.slice(o+1))}return{path:t,params:n}}function rd(e,t){let n=Se(e,"--since")??e.find(i=>i.startsWith("--since="))?.slice(8);if(!n)return t;let r=/^(\d+)(d)?$/.exec(n);if(!r)return t;let s=Number(r[1]);return Number.isFinite(s)&&s>0?s:t}function w_(e){return e.includes("--full")}function b_(e,t=mo(30),n=!1){return`${K(__(e,t,n))}
172
+ `}function __(e,t,n){let r=t.savings.top_commands.slice(0,n?10:3),s=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??od(),o=t.health.recent_failures.slice(0,n?20:5),a=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:S_(t.savings),dollars_saved_estimate_usd_display:k_(t.savings),daily_tokens_saved:s,daily_tokens_saved_elided:n?0:Math.max(0,t.savings.daily_tokens_saved.length-s.length),top_commands:r,top_commands_elided:n?0:Math.max(0,t.savings.top_commands.length-r.length)},health:{...t.health,degradation_rate_display:ro(t.health.degradation_rate),show_hit_rate_display:ro(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:o,recent_failures_elided:n?0:Math.max(0,t.health.recent_failures.length-o.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:ro(t.decisions.contribution_rate),top_pass_reasons:a,top_pass_reasons_elided:n?0:Math.max(0,t.decisions.top_pass_reasons.length-a.length)},latency:{...t.latency,wrapper_ms_p50_display:no(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:no(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:no(t.latency.store_elapsed_ms_avg)}}}function R_(e){return`${K(e)}
173
+ `}function S_(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 k_(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?sn(e.dollars_saved_estimate_usd):`${sn(e.dollars_saved_low_usd)}-${sn(e.dollars_saved_high_usd)} (estimate_midpoint: ${sn(e.dollars_saved_estimate_usd)})`}function no(e){return e==null?"none":String(e)}function ro(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function mo(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[]}}}function E_(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:od()}}function od(){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 x_(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
174
+ `)}import.meta.url===`file://${process.argv[1]}`&&Qb().then(e=>process.exit(e),e=>{po(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(A({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{Qb as main,x_ as renderSetupResult,b_ as renderStats};