@reddb-io/red-skills 2.65.2 → 2.65.3

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,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var $d=Object.defineProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var n in t)$d(e,n,{get:t[n],enumerable:!0})};async function Lo(e,t){return Id?Bd(e,t):Ad?Md(e,t):Nd(e,t)}async function Nd(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 Bd(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:Ld(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*Ld(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:jd(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*jd(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Id,Ad,Mo=E(()=>{Id=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Ad=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Ud}from"node:fs";import{join as Jd}from"node:path";function jo(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=Jd(n,"bin",t);if(Ud(i))return i;throw new Error(`reddb: binary "${t}" not found.
3
+ var Id=Object.defineProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var n in t)Id(e,n,{get:t[n],enumerable:!0})};async function Lo(e,t){return Ad?Ld(e,t):Nd?jd(e,t):Bd(e,t)}async function Bd(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 Ld(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:Md(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*Md(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 jd(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:Ud(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Ud(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Ad,Nd,Mo=E(()=>{Ad=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Nd=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Jd}from"node:fs";import{join as Fd}from"node:path";function jo(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=Fd(n,"bin",t);if(Jd(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 Uo=E(()=>{});import{fileURLToPath as Fd}from"node:url";import{dirname as Gd,resolve as Hd,join as DR}from"node:path";function Vd(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Jo(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:jo({name:Vd(),packageRoot:Wd,envVar:"REDDB_BIN"})}var qd,Wd,Fo=E(()=>{Uo();qd=Gd(Fd(import.meta.url)),Wd=Hd(qd,"..")});var zd,Kd,k,zn,He=E(()=>{zd=new TextEncoder,Kd=new TextDecoder("utf-8"),k=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},zn=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(zd.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(Kd.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 ls(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:/"?Yd(e):Qd(e)}function Yd(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=Zd(s),a=n.port?Number(n.port):us(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 Qd(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):us(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):us(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 Zd(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 us(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 ds=E(()=>{He()});function ef(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Go(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Go(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Go(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 tf(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 Xd,tn,fs=E(()=>{He();Xd=new Set(["embedded"]),tn=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Xd.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:tf(r.value)}async put(t,n,r,s={}){this._guard("put");let i=ef(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 ms(e,t){return`${ps(e)}.${nf(t)}`}function ps(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 nf(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function rf(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 Ho(e){return`'${String(e).replace(/'/g,"''")}'`}var Pt,gs=E(()=>{He();Pt=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(Ho).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${ms(s,t)} = ${rf(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 ${ms(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 ${ms(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 ${ps(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(Ho).join(", ")}] FROM ${ps(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 Uo=E(()=>{});import{fileURLToPath as Gd}from"node:url";import{dirname as Hd,resolve as qd,join as AR}from"node:path";function zd(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Jo(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:jo({name:zd(),packageRoot:Vd,envVar:"REDDB_BIN"})}var Wd,Vd,Fo=E(()=>{Uo();Wd=Hd(Gd(import.meta.url)),Vd=qd(Wd,"..")});var Kd,Yd,k,zn,He=E(()=>{Kd=new TextEncoder,Yd=new TextDecoder("utf-8"),k=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},zn=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(Yd.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 ls(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:/"?Qd(e):Zd(e)}function Qd(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=Xd(s),a=n.port?Number(n.port):us(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 Zd(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):us(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):us(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 Xd(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 us(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 ds=E(()=>{He()});function tf(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Go(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Go(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Go(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 nf(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 ef,tn,fs=E(()=>{He();ef=new Set(["embedded"]),tn=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&ef.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:nf(r.value)}async put(t,n,r,s={}){this._guard("put");let i=tf(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 ms(e,t){return`${ps(e)}.${rf(t)}`}function ps(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 rf(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function sf(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 Ho(e){return`'${String(e).replace(/'/g,"''")}'`}var Pt,gs=E(()=>{He();Pt=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(Ho).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${ms(s,t)} = ${sf(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 ${ms(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 ${ms(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 ${ps(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(Ho).join(", ")}] FROM ${ps(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(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function sf(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=De(e),a=De(t),c=s!=null?` GROUP ${De(s)}`:"",u=i!=null?ys(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function De(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 ys(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 of(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function af(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 ${of(e.priority)}`),e.key!=null&&(t+=` KEY ${ws(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ws(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function cf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ws(e):JSON.stringify(e)}function ws(e){return`'${String(e).replace(/'/g,"''")}'`}function hs(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var nn,bs=E(()=>{He();nn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${De(t)}`})}push(t,n,r={}){let s=af(r);return this.client.call("query",{sql:`QUEUE PUSH ${De(t)} ${cf(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${De(t)}${ys(n)}`});return hs(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${De(t)}${ys(n)}`});return hs(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${De(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${De(t)}`})}async readWait(t,n,r={}){let s=sf(t,n,r),i=await this.client.call("query",{sql:s});return hs(i)}}});function qo(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function uf(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 Kn(e){return String(e).split(".").map(Wo).join(".")}function Wo(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 lf(e){return Vo(JSON.stringify(e))}function df(e){return JSON.stringify(e)}function ff(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?lf(e):Vo(e)}function Vo(e){return`'${String(e).replace(/'/g,"''")}'`}var rn,_s=E(()=>{He();rn=class{constructor(t){this.db=t}async insert(t,n){qo(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Kn(t)} DOCUMENT VALUES (${df(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=uf(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 ${Kn(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){qo(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])=>`${Wo(c)} = ${ff(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Kn(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 ${Kn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function mf(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${qe(n)}.${qe(r)})`}return gf(e)}function pf(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 qe(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 gf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):zo(e)}function zo(e){return`'${String(e).replace(/'/g,"''")}'`}var sn,Rs=E(()=>{sn=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){pf(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(zo).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${qe(s)} ${qe(t)} = ${mf(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${qe(r)} ${qe(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${qe(r)} ${qe(t)}`})}}});function hf(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 Dt(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 yf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ko(e)}function Ko(e){return`'${String(e).replace(/'/g,"''")}'`}var on,Ss=E(()=>{on=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){hf(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Ko).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Dt(s)}.${Dt(t)} = ${yf(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Dt(r)}.${Dt(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Dt(r)}.${Dt(t)}`})}}});async function Qo(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(wf)}async function Zo(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${_f(t)}`)).rows??[]).some(r=>r.name===String(t))}function wf(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Yo(e){return String(e).split(".").map(bf).join(".")}function bf(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 _f(e){return`'${String(e).replace(/'/g,"''")}'`}var an,ks=E(()=>{He();an=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(Yo).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Yo(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 Ct(e,t={}){let n=ls(e);if(Df(n),n.kind==="embedded"){let r=Pf(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=Of(n),i=t.binary??Jo(),o=await Lo(i,s),a=new zn(o);return await a.call("version",{}),new xs(a,{transport:"embedded"})}}function ea(e){return kf(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:xf(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 kf(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 Ef(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ea):e.map(ea)}function xf(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 vf(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 Yn(e){if(Array.isArray(e))return e.map(Yn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return vf(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]=Yn(s);return n}return e}function Of(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Pf(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 Df(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",Rf)}function vs(){return new k(Xo,`${Xo}: nested transactions are not supported on one connection`)}function na(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Cf(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${ta} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function $f(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 >= ${ta} 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 Rf,Sf,ta,Xo,Qn,Es,xs,Ts=E(()=>{Mo();Fo();He();ds();fs();gs();bs();_s();Rs();Ss();ks();fs();gs();bs();_s();Rs();Ss();ks();ds();Rf="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Sf="1.0",ta="1.0.9",Xo="NESTED_TX_NOT_SUPPORTED";Qn=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 vs()}},Es=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw vs();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 Qn(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){na(n,r)}throw n}}},xs=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Sf,this.cache=new tn(t,this.transport),this.queue=new nn(t),this.queues=this.queue,this.documents=new rn(this);let r=new Pt(t);this.kv=Object.assign((s="kv_default")=>new Pt(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 sn(t,s),this.vault=(s="red.vault")=>new on(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=Ef(n);return r==null?this.client.call("query",{sql:t}).then(Yn):this.client.call("query",{sql:t,params:r}).then(Yn)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return Cf(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 $f(r,n.length)}tx(){return new Es(this)}async transaction(t){if(this.inTransaction)throw vs();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 Qn(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){na(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return Zo(this,t)}list(){return Qo(this)}from(t){return new an(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 hS,join as $t,resolve as yS}from"node:path";function Af(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function ra(e){return $t(Af(e),If)}function sa(e){return $t(ra(e),"state")}function Nf(e){return $t(ra(e),"tmp")}function z(e){return $t(sa(e),"rsp")}function Bf(e){return $t(sa(e),"red-skills.rdb")}function Lf(e){return $t(Nf(e),"red-skills.rdb")}function aa(e,t){let n=Bf(e);if(t(n))return n;let r=Lf(e);return t(r)?r:n}var If,ia,oa,Ce=E(()=>{If=".red";ia=".red/state/red-skills.rdb";oa=".red/tmp/red-skills.rdb"});function _(e,t){return new cn(e,t)}function D(e,t){return new ot(e,t)}function It(e){return e instanceof ot?e:e instanceof cn?new ot(e.line,e.reason):new ot(0,String(e&&e.message?e.message:e))}var cn,ot,un=E(()=>{cn=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},ot=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});function Zn(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 ye(e){return _(e,"invalid quoted string")}function we(e,t){if(e==="")return"";if(e.startsWith('"'))return ca(e,t);if(e.includes('"'))throw ye(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Mf(e)?Number(e):e}function $e(e,t){let n=e.trim();if(n.startsWith('"'))return[ca(n,t),!0];if(n.includes('"')||/\s/.test(n))throw _(t,"expected non-empty field name");return[n,!1]}function ca(e,t){if(e[0]!=='"')throw ye(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 ye(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 ye(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw ye(t);n+=String.fromCharCode(a),r+=4;break}default:throw ye(t)}continue}if(s<" "&&s!==" ")throw ye(t);n+=s}throw ye(t)}function at(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 ye(n);return r.push(e.slice(s).trim()),r}function K(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 ye(n);return-1}function Mf(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function jf(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Uf(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw _(0,"number is not representable in TOON");return String(e)}function ln(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function be(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Uf(e);if(typeof e=="string")return Ff(e,t);throw _(0,"not a primitive")}function Jf(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function de(e){return Jf(e)?e:ua(e)}function Ff(e,t){return Gf(e,t)?ua(e):e}function Gf(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||jf(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function ua(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 At(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var I,Os=E(()=>{un();I=","});function Hf(e={}){return{indent:Math.max(1,e.indent??Ns),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function qf(e,t){let n=[],r=!1;return Zn(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 _(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw _(o,"invalid indentation");n.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:r}),r=!1}),n}function re(e,t){let n=Hf(t),r=qf(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw _(s.number,"invalid indentation");let i=r.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Ms(s.content,K(s.content,":",s.number))}catch(l){if(n.strict)throw Is(l,s.number);u=void 0}if(u!==void 0)return zf(u,r,n)}if(i&&K(s.content,":",s.number)===-1)return we(s.content.trim(),s.number);let o={index:0},a=Bs(r,o,0,n),c=r[o.index];if(c!==void 0)throw _(c.number,"expected end of document");return a}function Bs(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 _(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=Wf(e,t,n,r);fa(s,o,a,c,r,i.number)}return s}function Wf(e,t,n,r){let s=e[t.index],i=s.content,o=K(i,":",s.number);if(o===-1)throw _(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=K(a,"[",s.number),l=K(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=Zf(a)}catch(g){if(r.strict)throw Is(g,s.number);t.index+=1;let w=Ps(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:w}}if(c.trim()!=="")throw _(s.number,"expected keyed map rows");let m=Vf(h,e,t,n+1,r);return{key:h.key,quoted:h.keyQuoted,value:m}}if(u!==-1){let h;try{h=Ms(a,o)}catch(g){if(r.strict)throw Is(g,s.number);t.index+=1;let w=Ps(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:w}}if(h.key===""&&!h.keyQuoted)throw _(s.number,"expected non-empty field name");let m=Ls(h,c,e,t,n,r);return{key:h.key,quoted:h.keyQuoted,value:m}}let[f,d]=$e(a,s.number);if(f===""&&!d)throw _(s.number,"expected non-empty field name");t.index+=1;let p=Ps(e,t,n,c,s.number,r);return{key:f,quoted:d,value:p}}function Ps(e,t,n,r,s,i){let o=r.trim();if(o==="[]")return[];if(o!=="")return we(o,s);let a=e[t.index];return a!==void 0&&a.depth>n?Bs(e,t,n+1,i):{}}function Vf(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 _(o.number,"invalid indentation");if(o.blankBefore&&s.strict)throw _(o.number,"blank line inside keyed map");let a=K(o.content,":",o.number);if(a===-1)throw _(o.number,"expected `key: value`");let[c,u]=$e(o.content.slice(0,a),o.number);if(c===""&&!u)throw _(o.number,"expected non-empty field name");let l=at(o.content.slice(a+1).trim(),e.delimiter,o.number);if(l.length!==e.fields.length)throw _(o.number,"keyed map row length mismatch");let f={};e.fields.forEach((d,p)=>{dn(f,d,we(l[p],o.number),s,o.number)}),fa(i,c,u,f,s,o.number),n.index+=1}return i}function zf(e,t,n){let r=t[0],s=K(r.content,":",r.number);if(s===-1)throw _(r.number,"expected `key: value`");let i=r.content.slice(s+1),o={index:0},a=Ls(e,i,t,o,0,n),c=t[o.index];if(c!==void 0)throw _(c.number,"expected end of document");return a}function Ls(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 _(o,"expected tabular rows");return Kf(e,e.fields,n,r,s+1,i)}if(a!==""){let c=at(a,e.delimiter,o).map(u=>we(u,o));if(c.length!==e.len)throw _(o,"array length mismatch");return c}return Yf(e,n,r,s+1,i)}function Kf(e,t,n,r,s,i){let o=[];for(;o.length<e.len;){let c=n[r.index];if(c===void 0)throw Cs(n,r.index);if(c.depth<s)break;if(c.depth>s)throw _(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw _(c.number,"blank line inside array");if(!la(c.content,e.delimiter,c.number))break;let u=at(c.content,e.delimiter,c.number);if(u.length!==t.length)throw _(c.number,"array row length mismatch");let l={};t.forEach((f,d)=>{dn(l,f,we(u[d],c.number),i,c.number)}),o.push(l),r.index+=1}if(o.length!==e.len)throw Cs(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&la(a.content,e.delimiter,a.number))throw _(a.number,"array length mismatch");return o}function la(e,t,n){let r=K(e,":",n);if(r===-1)return!0;let s=K(e,t,n);return s===-1?!1:s<r}function Yf(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 Cs(t,n.index);if(a.depth>r)throw _(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw _(a.number,"blank line inside array");i.push(Qf(t,n,r,s))}let o=t[n.index];if(o!==void 0&&o.depth>=r)throw _(o.number,"array length mismatch");return i}function Qf(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw _(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=K(i,":",s.number),a;try{a=Ms(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return Ls(a,c,e,t,n,r)}}if(K(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 Bs(o,{index:0},n+1,r)}return t.index+=1,we(i,s.number)}function Cs(e,t){let n=e[t]??e[e.length-1];return _(n===void 0?1:n.number,"array length mismatch")}function Ms(e,t){if(t===-1)throw _(0,"array header missing colon");let n=e.slice(0,t),r=K(n,"[",0);if(r===-1)throw _(0,"invalid array header");let s,i;try{[s,i]=$e(n.slice(0,r),0)}catch{throw _(0,"invalid array header")}let o=n.slice(r+1),a=o.indexOf("]");if(a===-1)throw _(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 _(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 _(0,"invalid array header")}let d=o.slice(a+1),p;if(d==="")p=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{p=da(d.slice(1,-1),f)}catch(h){throw _(0,h.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw _(0,"invalid array header");return{key:s,keyQuoted:i,len:l,delimiter:f,fields:p}}function Zf(e){let t=K(e,"{",0);if(t===-1||!e.endsWith("}"))throw _(0,"invalid keyed map header");let n,r;try{[n,r]=$e(e.slice(0,t),0)}catch{throw _(0,"invalid keyed map header")}if(n===""&&!r)throw _(0,"expected non-empty field name");let s;try{s=da(e.slice(t+1,-1),I)}catch(i){throw _(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:n,keyQuoted:r,delimiter:I,fields:s}}function da(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 _(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]=$e(e.slice(l,r),0);if(f==="")throw _(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 _(0,"invalid array header");r+=1}else n.push([...a,f]);if(e[r]===t){if(r+=1,r>=e.length||e[r]==="}")throw _(0,"invalid array header");continue}if(c?e[r]==="}":r===e.length)break;throw _(0,"invalid array header")}if(u===0)throw _(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 _(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(Xf(n[a],n[c])||$s(n[a],n[c])||$s(n[c],n[a]))throw _(0,"duplicate key");for(let a of n){let c=a.join("\0");if(o.has(c))throw _(0,"duplicate key");o.add(c)}return n}function Xf(e,t){return e.length===t.length&&$s(e,t)}function $s(e,t){return t.every((n,r)=>e[r]===n)}function Is(e,t){return _(t,e.reason??String(e.message))}function fa(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(em)){dn(e,o,r,s,i);return}}dn(e,[t],r,s,i)}function dn(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 _(s,"duplicate key");At(e,i,n);return}if(o&&!Nt(e[i])){if(r.strict)throw _(s,"path expansion conflict");At(e,i,{})}else o||At(e,i,{});dn(e[i],t.slice(1),n,r,s)}function em(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function Nt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $(e,t={}){let n={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},r=[];return Array.isArray(e)?js(r,void 0,e,0,!1,n):Nt(e)?ma(r,e,0,n):r.push(be(e,I)),r.join("")}function fn(e,t){e.push(" ".repeat(t*Ns))}function ma(e,t,n,r){for(let[s,i]of Object.entries(t))fn(e,n),As(e,s,i,n,r)}function As(e,t,n,r,s){if(Array.isArray(n)){js(e,t,n,r,!1,s);return}if(Nt(n)){let i=s.keyedMapCollapse?nm(n,s):void 0;if(i!==void 0){e.push(de(t),"{",i.fields.map(Us).join(I),`}:
11
+ `).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function of(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=De(e),a=De(t),c=s!=null?` GROUP ${De(s)}`:"",u=i!=null?ys(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function De(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 ys(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 af(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function cf(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 ${af(e.priority)}`),e.key!=null&&(t+=` KEY ${ws(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ws(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function uf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ws(e):JSON.stringify(e)}function ws(e){return`'${String(e).replace(/'/g,"''")}'`}function hs(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var nn,bs=E(()=>{He();nn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${De(t)}`})}push(t,n,r={}){let s=cf(r);return this.client.call("query",{sql:`QUEUE PUSH ${De(t)} ${uf(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${De(t)}${ys(n)}`});return hs(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${De(t)}${ys(n)}`});return hs(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${De(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${De(t)}`})}async readWait(t,n,r={}){let s=of(t,n,r),i=await this.client.call("query",{sql:s});return hs(i)}}});function qo(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function lf(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 Kn(e){return String(e).split(".").map(Wo).join(".")}function Wo(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 df(e){return Vo(JSON.stringify(e))}function ff(e){return JSON.stringify(e)}function mf(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?df(e):Vo(e)}function Vo(e){return`'${String(e).replace(/'/g,"''")}'`}var rn,_s=E(()=>{He();rn=class{constructor(t){this.db=t}async insert(t,n){qo(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Kn(t)} DOCUMENT VALUES (${ff(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=lf(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 ${Kn(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){qo(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])=>`${Wo(c)} = ${mf(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Kn(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 ${Kn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function pf(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${qe(n)}.${qe(r)})`}return hf(e)}function gf(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 qe(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 hf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):zo(e)}function zo(e){return`'${String(e).replace(/'/g,"''")}'`}var sn,Rs=E(()=>{sn=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){gf(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(zo).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${qe(s)} ${qe(t)} = ${pf(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${qe(r)} ${qe(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${qe(r)} ${qe(t)}`})}}});function yf(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 Dt(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 wf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ko(e)}function Ko(e){return`'${String(e).replace(/'/g,"''")}'`}var on,Ss=E(()=>{on=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){yf(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Ko).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Dt(s)}.${Dt(t)} = ${wf(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Dt(r)}.${Dt(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Dt(r)}.${Dt(t)}`})}}});async function Qo(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(bf)}async function Zo(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Rf(t)}`)).rows??[]).some(r=>r.name===String(t))}function bf(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Yo(e){return String(e).split(".").map(_f).join(".")}function _f(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 Rf(e){return`'${String(e).replace(/'/g,"''")}'`}var an,ks=E(()=>{He();an=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(Yo).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Yo(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 Ct(e,t={}){let n=ls(e);if(Cf(n),n.kind==="embedded"){let r=Df(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=Pf(n),i=t.binary??Jo(),o=await Lo(i,s),a=new zn(o);return await a.call("version",{}),new xs(a,{transport:"embedded"})}}function ea(e){return Ef(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:vf(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Of(e)?{$uuid:e}:e}function Ef(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 xf(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ea):e.map(ea)}function vf(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 Tf(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 Of(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Yn(e){if(Array.isArray(e))return e.map(Yn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Tf(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]=Yn(s);return n}return e}function Pf(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Df(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 Cf(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",Sf)}function vs(){return new k(Xo,`${Xo}: nested transactions are not supported on one connection`)}function na(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function $f(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${ta} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function If(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 >= ${ta} 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 Sf,kf,ta,Xo,Qn,Es,xs,Ts=E(()=>{Mo();Fo();He();ds();fs();gs();bs();_s();Rs();Ss();ks();fs();gs();bs();_s();Rs();Ss();ks();ds();Sf="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",kf="1.0",ta="1.0.9",Xo="NESTED_TX_NOT_SUPPORTED";Qn=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 vs()}},Es=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw vs();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 Qn(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){na(n,r)}throw n}}},xs=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=kf,this.cache=new tn(t,this.transport),this.queue=new nn(t),this.queues=this.queue,this.documents=new rn(this);let r=new Pt(t);this.kv=Object.assign((s="kv_default")=>new Pt(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 sn(t,s),this.vault=(s="red.vault")=>new on(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=xf(n);return r==null?this.client.call("query",{sql:t}).then(Yn):this.client.call("query",{sql:t,params:r}).then(Yn)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return $f(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 If(r,n.length)}tx(){return new Es(this)}async transaction(t){if(this.inTransaction)throw vs();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 Qn(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){na(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return Zo(this,t)}list(){return Qo(this)}from(t){return new an(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 _S,join as $t,resolve as RS}from"node:path";function Nf(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function ra(e){return $t(Nf(e),Af)}function sa(e){return $t(ra(e),"state")}function Bf(e){return $t(ra(e),"tmp")}function J(e){return $t(sa(e),"rsp")}function Lf(e){return $t(sa(e),"red-skills.rdb")}function Mf(e){return $t(Bf(e),"red-skills.rdb")}function aa(e,t){let n=Lf(e);if(t(n))return n;let r=Mf(e);if(t(r))throw jf();return n}function jf(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}var Af,ia,oa,Ce=E(()=>{Af=".red";ia=".red/state/red-skills.rdb";oa=".red/tmp/red-skills.rdb"});function _(e,t){return new cn(e,t)}function C(e,t){return new ot(e,t)}function It(e){return e instanceof ot?e:e instanceof cn?new ot(e.line,e.reason):new ot(0,String(e&&e.message?e.message:e))}var cn,ot,un=E(()=>{cn=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},ot=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});function Zn(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 ye(e){return _(e,"invalid quoted string")}function we(e,t){if(e==="")return"";if(e.startsWith('"'))return ca(e,t);if(e.includes('"'))throw ye(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Uf(e)?Number(e):e}function $e(e,t){let n=e.trim();if(n.startsWith('"'))return[ca(n,t),!0];if(n.includes('"')||/\s/.test(n))throw _(t,"expected non-empty field name");return[n,!1]}function ca(e,t){if(e[0]!=='"')throw ye(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 ye(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 ye(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw ye(t);n+=String.fromCharCode(a),r+=4;break}default:throw ye(t)}continue}if(s<" "&&s!==" ")throw ye(t);n+=s}throw ye(t)}function at(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 ye(n);return r.push(e.slice(s).trim()),r}function K(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 ye(n);return-1}function Uf(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Jf(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ff(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw _(0,"number is not representable in TOON");return String(e)}function ln(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function be(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Ff(e);if(typeof e=="string")return Hf(e,t);throw _(0,"not a primitive")}function Gf(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function de(e){return Gf(e)?e:ua(e)}function Hf(e,t){return qf(e,t)?ua(e):e}function qf(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Jf(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function ua(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 At(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var I,Os=E(()=>{un();I=","});function Wf(e={}){return{indent:Math.max(1,e.indent??Ns),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Vf(e,t){let n=[],r=!1;return Zn(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 _(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw _(o,"invalid indentation");n.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:r}),r=!1}),n}function Y(e,t){let n=Wf(t),r=Vf(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw _(s.number,"invalid indentation");let i=r.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Ms(s.content,K(s.content,":",s.number))}catch(l){if(n.strict)throw Is(l,s.number);u=void 0}if(u!==void 0)return Yf(u,r,n)}if(i&&K(s.content,":",s.number)===-1)return we(s.content.trim(),s.number);let o={index:0},a=Bs(r,o,0,n),c=r[o.index];if(c!==void 0)throw _(c.number,"expected end of document");return a}function Bs(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 _(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=zf(e,t,n,r);fa(s,o,a,c,r,i.number)}return s}function zf(e,t,n,r){let s=e[t.index],i=s.content,o=K(i,":",s.number);if(o===-1)throw _(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=K(a,"[",s.number),l=K(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=em(a)}catch(g){if(r.strict)throw Is(g,s.number);t.index+=1;let w=Ps(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:w}}if(c.trim()!=="")throw _(s.number,"expected keyed map rows");let m=Kf(h,e,t,n+1,r);return{key:h.key,quoted:h.keyQuoted,value:m}}if(u!==-1){let h;try{h=Ms(a,o)}catch(g){if(r.strict)throw Is(g,s.number);t.index+=1;let w=Ps(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:w}}if(h.key===""&&!h.keyQuoted)throw _(s.number,"expected non-empty field name");let m=Ls(h,c,e,t,n,r);return{key:h.key,quoted:h.keyQuoted,value:m}}let[f,d]=$e(a,s.number);if(f===""&&!d)throw _(s.number,"expected non-empty field name");t.index+=1;let p=Ps(e,t,n,c,s.number,r);return{key:f,quoted:d,value:p}}function Ps(e,t,n,r,s,i){let o=r.trim();if(o==="[]")return[];if(o!=="")return we(o,s);let a=e[t.index];return a!==void 0&&a.depth>n?Bs(e,t,n+1,i):{}}function Kf(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 _(o.number,"invalid indentation");if(o.blankBefore&&s.strict)throw _(o.number,"blank line inside keyed map");let a=K(o.content,":",o.number);if(a===-1)throw _(o.number,"expected `key: value`");let[c,u]=$e(o.content.slice(0,a),o.number);if(c===""&&!u)throw _(o.number,"expected non-empty field name");let l=at(o.content.slice(a+1).trim(),e.delimiter,o.number);if(l.length!==e.fields.length)throw _(o.number,"keyed map row length mismatch");let f={};e.fields.forEach((d,p)=>{dn(f,d,we(l[p],o.number),s,o.number)}),fa(i,c,u,f,s,o.number),n.index+=1}return i}function Yf(e,t,n){let r=t[0],s=K(r.content,":",r.number);if(s===-1)throw _(r.number,"expected `key: value`");let i=r.content.slice(s+1),o={index:0},a=Ls(e,i,t,o,0,n),c=t[o.index];if(c!==void 0)throw _(c.number,"expected end of document");return a}function Ls(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 _(o,"expected tabular rows");return Qf(e,e.fields,n,r,s+1,i)}if(a!==""){let c=at(a,e.delimiter,o).map(u=>we(u,o));if(c.length!==e.len)throw _(o,"array length mismatch");return c}return Zf(e,n,r,s+1,i)}function Qf(e,t,n,r,s,i){let o=[];for(;o.length<e.len;){let c=n[r.index];if(c===void 0)throw Cs(n,r.index);if(c.depth<s)break;if(c.depth>s)throw _(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw _(c.number,"blank line inside array");if(!la(c.content,e.delimiter,c.number))break;let u=at(c.content,e.delimiter,c.number);if(u.length!==t.length)throw _(c.number,"array row length mismatch");let l={};t.forEach((f,d)=>{dn(l,f,we(u[d],c.number),i,c.number)}),o.push(l),r.index+=1}if(o.length!==e.len)throw Cs(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&la(a.content,e.delimiter,a.number))throw _(a.number,"array length mismatch");return o}function la(e,t,n){let r=K(e,":",n);if(r===-1)return!0;let s=K(e,t,n);return s===-1?!1:s<r}function Zf(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 Cs(t,n.index);if(a.depth>r)throw _(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw _(a.number,"blank line inside array");i.push(Xf(t,n,r,s))}let o=t[n.index];if(o!==void 0&&o.depth>=r)throw _(o.number,"array length mismatch");return i}function Xf(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw _(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=K(i,":",s.number),a;try{a=Ms(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return Ls(a,c,e,t,n,r)}}if(K(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 Bs(o,{index:0},n+1,r)}return t.index+=1,we(i,s.number)}function Cs(e,t){let n=e[t]??e[e.length-1];return _(n===void 0?1:n.number,"array length mismatch")}function Ms(e,t){if(t===-1)throw _(0,"array header missing colon");let n=e.slice(0,t),r=K(n,"[",0);if(r===-1)throw _(0,"invalid array header");let s,i;try{[s,i]=$e(n.slice(0,r),0)}catch{throw _(0,"invalid array header")}let o=n.slice(r+1),a=o.indexOf("]");if(a===-1)throw _(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 _(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 _(0,"invalid array header")}let d=o.slice(a+1),p;if(d==="")p=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{p=da(d.slice(1,-1),f)}catch(h){throw _(0,h.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw _(0,"invalid array header");return{key:s,keyQuoted:i,len:l,delimiter:f,fields:p}}function em(e){let t=K(e,"{",0);if(t===-1||!e.endsWith("}"))throw _(0,"invalid keyed map header");let n,r;try{[n,r]=$e(e.slice(0,t),0)}catch{throw _(0,"invalid keyed map header")}if(n===""&&!r)throw _(0,"expected non-empty field name");let s;try{s=da(e.slice(t+1,-1),I)}catch(i){throw _(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:n,keyQuoted:r,delimiter:I,fields:s}}function da(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 _(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]=$e(e.slice(l,r),0);if(f==="")throw _(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 _(0,"invalid array header");r+=1}else n.push([...a,f]);if(e[r]===t){if(r+=1,r>=e.length||e[r]==="}")throw _(0,"invalid array header");continue}if(c?e[r]==="}":r===e.length)break;throw _(0,"invalid array header")}if(u===0)throw _(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 _(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(tm(n[a],n[c])||$s(n[a],n[c])||$s(n[c],n[a]))throw _(0,"duplicate key");for(let a of n){let c=a.join("\0");if(o.has(c))throw _(0,"duplicate key");o.add(c)}return n}function tm(e,t){return e.length===t.length&&$s(e,t)}function $s(e,t){return t.every((n,r)=>e[r]===n)}function Is(e,t){return _(t,e.reason??String(e.message))}function fa(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(nm)){dn(e,o,r,s,i);return}}dn(e,[t],r,s,i)}function dn(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 _(s,"duplicate key");At(e,i,n);return}if(o&&!Nt(e[i])){if(r.strict)throw _(s,"path expansion conflict");At(e,i,{})}else o||At(e,i,{});dn(e[i],t.slice(1),n,r,s)}function nm(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function Nt(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)?js(r,void 0,e,0,!1,n):Nt(e)?ma(r,e,0,n):r.push(be(e,I)),r.join("")}function fn(e,t){e.push(" ".repeat(t*Ns))}function ma(e,t,n,r){for(let[s,i]of Object.entries(t))fn(e,n),As(e,s,i,n,r)}function As(e,t,n,r,s){if(Array.isArray(n)){js(e,t,n,r,!1,s);return}if(Nt(n)){let i=s.keyedMapCollapse?sm(n,s):void 0;if(i!==void 0){e.push(de(t),"{",i.fields.map(Us).join(I),`}:
15
15
  `);for(let[o,a]of Object.entries(n))fn(e,r+1),e.push(de(o),": ",i.paths.map(c=>be(ya(a,c),I)).join(I),`
16
16
  `);return}e.push(de(t),`:
17
17
  `),ma(e,n,r+1,s);return}e.push(de(t),": ",be(n,I),`
@@ -22,69 +22,69 @@ var $d=Object.defineProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{fo
22
22
  `);return}let o=s?void 0:pa(n,i);if(o!==void 0){Ds(e,t,n.length,o.fields),e.push(`
23
23
  `);for(let a of n)fn(e,r+1),e.push(o.paths.map(c=>be(ya(a,c),I)).join(I)),e.push(`
24
24
  `);return}Ds(e,t,n.length,void 0),e.push(`
25
- `);for(let a of n)fn(e,r+1),tm(e,a,r+1,i)}function tm(e,t,n,r){if(Array.isArray(t)){e.push("- "),js(e,void 0,t,n,!0,r);return}if(Nt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
25
+ `);for(let a of n)fn(e,r+1),rm(e,a,r+1,i)}function rm(e,t,n,r){if(Array.isArray(t)){e.push("- "),js(e,void 0,t,n,!0,r);return}if(Nt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
26
26
  `);return}e.push("- "),As(e,s[0][0],s[0][1],n+1,r);for(let[i,o]of s.slice(1))fn(e,n+1),As(e,i,o,n+1,r);return}e.push("- ",be(t,I),`
27
- `)}function Ds(e,t,n,r){t!==void 0&&e.push(de(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(Us).join(I),"}"),e.push(":")}function pa(e,t){let n=ga(e.map(r=>({value:r})),t);return n===void 0?void 0:{fields:n,paths:ha(n)}}function nm(e,t){let n=Object.values(e);if(!(n.length<2))return pa(n,t)}function ga(e,t){let n=e[0]?.value;if(!Nt(n))return;let r=Object.keys(n).map(s=>({key:s}));if(r.length!==0){for(let{value:s}of e)if(!Nt(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})=>ln(a)))continue;if(!t.nestedTabularHeaders)return;let o=ga(i,t);if(o===void 0)return;s.children=o}return r}}function ha(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children===void 0?[r]:ha(n.children,r)})}function ya(e,t){let n=e;for(let r of t)n=n[r];return n}function Us(e){return e.children===void 0?de(e.key):`${de(e.key)}{${e.children.map(Us).join(I)}}`}var Ns,mn=E(()=>{un();Os();Ns=2});var wa=E(()=>{mn()});function sm(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let n=e.slice(2,-1);if(!/^[0-9]+$/.test(n))throw D(t,"invalid trailer count");return Number.parseInt(n,10)}function Pa(e,t){if(!Oa.test(e))throw D(t,"invalid tag")}function im(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 D(t,"invalid tag");return null}return{tag:r,cellsText:e.slice(n+1)}}function om(e,t){if(!e.startsWith("["))return null;let n=e.slice(1),r=n.indexOf("]");if(r===-1)throw D(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(!va.includes(o)&&o!=="")throw D(t,"invalid header delimiter");let a=o===""?I:o,c=n.slice(r+1),u=null;if(!i&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw D(t,"invalid tag");if(u=c.slice(1,d),Pa(u,t),o!=="")throw D(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw D(t,"invalid header");let l=c.slice(1,-2),f;try{f=at(l,a,t).map(d=>$e(d,t)[0])}catch(d){throw It(d)}if(f.length===0||f.some(d=>d===""))throw D(t,"invalid header fields");return{delimiter:a,fields:f,fieldText:l,continuation:i,tag:u}}function am(e,t,n){if(e===null||e.delimiter===void 0)throw D(n,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw D(n,"continuation header mismatch")}function ba(e,t,n,r){let s;try{s=at(e,t,r)}catch(i){throw It(i)}if(s.length!==n)throw D(r,"row arity mismatch");for(let i of s)try{we(i,r)}catch(o){throw It(o)}return s}function cm(e,t,n){let r={};return e.forEach((s,i)=>{try{At(r,s,we(t[i],n))}catch(o){throw It(o)}}),r}function um(e,t,n){if(e.startsWith("- "))throw D(t,"reserved line prefix");let r=sm(e,t);if(r!==null){if(n===null||n.delimiter===void 0)throw D(t,"trailer without header");if(n.rowCount!==r)throw D(t,"trailer count mismatch");return{kind:"trailer"}}let s=om(e,t);if(s!==null)return s.continuation?(am(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=im(e,t);if(i!==null){let o=n?.taggedLanes?.get(i.tag);if(o===void 0)throw D(t,"unknown tag");return{kind:"tagged-row",tag:i.tag,cells:ba(i.cellsText,o.delimiter,o.fields.length,t)}}if(n===null||n.delimiter===void 0)throw D(t,"row before header");return{kind:"row",cells:ba(e,n.delimiter,n.fields.length,t)}}function lm(e,t={}){let n=[],r=new Map,s=[],i=[],o=null,a=!1,c=!1;function u(p,h){let m=i.at(-1);if(m!==void 0&&m.lane===p.lane&&m.delimiter===p.delimiter&&m.fieldText===p.fieldText){m.rows.push(h);return}i.push({lane:p.lane,delimiter:p.delimiter,fields:p.fields,fieldText:p.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 f(p,h,m){let g=r.get(p);if(g===void 0){if(r.size>=Ta)throw D(m,"too many tagged lanes");g={segments:[],current:null},r.set(p,g),n.push(p)}else g.current!==null&&g.segments.push(g.current);g.current={lane:p,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(Zn(e).forEach((p,h)=>{let m=h+1;if(p==="")return;let g=o===null?{taggedLanes:r}:{delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,rowCount:o.rows.length,taggedLanes:r},w=um(p,m,g);if(w.kind==="trailer"){l(),o=null;return}if(w.kind!=="continuation"){if(w.kind==="tag-header"){c=!0,f(w.header.tag,w.header,m);return}if(w.kind==="header"){l(),a||(n.push(null),a=!0),o={lane:null,delimiter:w.header.delimiter,fields:w.header.fields,fieldText:w.header.fieldText,rows:[]};return}if(w.kind==="tagged-row"){c=!0;let y=r.get(w.tag).current;y.rows.push(w.cells),u(y,w.cells);return}if(o===null)throw D(m,"row before header");o.rows.push(w.cells),u(o,w.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let p of n){if(p===null){d.push(...s);continue}let h=r.get(p);d.push(...h.segments),h.current!==null&&d.push(h.current)}return t.preserveInterleaving===!0?i:d}function Xn(e){return lm(e).flatMap(t=>t.rows.map(n=>cm(t.fields,n,0)))}function dm(e){if(!va.includes(e))throw D(0,"invalid header delimiter")}function _a(e,t,n=!1){return`[${`${n?"~":""}${e===I?"":e}`}]{${t}}:
27
+ `)}function Ds(e,t,n,r){t!==void 0&&e.push(de(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(Us).join(I),"}"),e.push(":")}function pa(e,t){let n=ga(e.map(r=>({value:r})),t);return n===void 0?void 0:{fields:n,paths:ha(n)}}function sm(e,t){let n=Object.values(e);if(!(n.length<2))return pa(n,t)}function ga(e,t){let n=e[0]?.value;if(!Nt(n))return;let r=Object.keys(n).map(s=>({key:s}));if(r.length!==0){for(let{value:s}of e)if(!Nt(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})=>ln(a)))continue;if(!t.nestedTabularHeaders)return;let o=ga(i,t);if(o===void 0)return;s.children=o}return r}}function ha(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children===void 0?[r]:ha(n.children,r)})}function ya(e,t){let n=e;for(let r of t)n=n[r];return n}function Us(e){return e.children===void 0?de(e.key):`${de(e.key)}{${e.children.map(Us).join(I)}}`}var Ns,mn=E(()=>{un();Os();Ns=2});var wa=E(()=>{mn()});function om(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let n=e.slice(2,-1);if(!/^[0-9]+$/.test(n))throw C(t,"invalid trailer count");return Number.parseInt(n,10)}function Pa(e,t){if(!Oa.test(e))throw C(t,"invalid tag")}function am(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 C(t,"invalid tag");return null}return{tag:r,cellsText:e.slice(n+1)}}function cm(e,t){if(!e.startsWith("["))return null;let n=e.slice(1),r=n.indexOf("]");if(r===-1)throw C(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(!va.includes(o)&&o!=="")throw C(t,"invalid header delimiter");let a=o===""?I:o,c=n.slice(r+1),u=null;if(!i&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw C(t,"invalid tag");if(u=c.slice(1,d),Pa(u,t),o!=="")throw C(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw C(t,"invalid header");let l=c.slice(1,-2),f;try{f=at(l,a,t).map(d=>$e(d,t)[0])}catch(d){throw It(d)}if(f.length===0||f.some(d=>d===""))throw C(t,"invalid header fields");return{delimiter:a,fields:f,fieldText:l,continuation:i,tag:u}}function um(e,t,n){if(e===null||e.delimiter===void 0)throw C(n,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw C(n,"continuation header mismatch")}function ba(e,t,n,r){let s;try{s=at(e,t,r)}catch(i){throw It(i)}if(s.length!==n)throw C(r,"row arity mismatch");for(let i of s)try{we(i,r)}catch(o){throw It(o)}return s}function lm(e,t,n){let r={};return e.forEach((s,i)=>{try{At(r,s,we(t[i],n))}catch(o){throw It(o)}}),r}function dm(e,t,n){if(e.startsWith("- "))throw C(t,"reserved line prefix");let r=om(e,t);if(r!==null){if(n===null||n.delimiter===void 0)throw C(t,"trailer without header");if(n.rowCount!==r)throw C(t,"trailer count mismatch");return{kind:"trailer"}}let s=cm(e,t);if(s!==null)return s.continuation?(um(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=am(e,t);if(i!==null){let o=n?.taggedLanes?.get(i.tag);if(o===void 0)throw C(t,"unknown tag");return{kind:"tagged-row",tag:i.tag,cells:ba(i.cellsText,o.delimiter,o.fields.length,t)}}if(n===null||n.delimiter===void 0)throw C(t,"row before header");return{kind:"row",cells:ba(e,n.delimiter,n.fields.length,t)}}function fm(e,t={}){let n=[],r=new Map,s=[],i=[],o=null,a=!1,c=!1;function u(p,h){let m=i.at(-1);if(m!==void 0&&m.lane===p.lane&&m.delimiter===p.delimiter&&m.fieldText===p.fieldText){m.rows.push(h);return}i.push({lane:p.lane,delimiter:p.delimiter,fields:p.fields,fieldText:p.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 f(p,h,m){let g=r.get(p);if(g===void 0){if(r.size>=Ta)throw C(m,"too many tagged lanes");g={segments:[],current:null},r.set(p,g),n.push(p)}else g.current!==null&&g.segments.push(g.current);g.current={lane:p,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(Zn(e).forEach((p,h)=>{let m=h+1;if(p==="")return;let g=o===null?{taggedLanes:r}:{delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,rowCount:o.rows.length,taggedLanes:r},w=dm(p,m,g);if(w.kind==="trailer"){l(),o=null;return}if(w.kind!=="continuation"){if(w.kind==="tag-header"){c=!0,f(w.header.tag,w.header,m);return}if(w.kind==="header"){l(),a||(n.push(null),a=!0),o={lane:null,delimiter:w.header.delimiter,fields:w.header.fields,fieldText:w.header.fieldText,rows:[]};return}if(w.kind==="tagged-row"){c=!0;let y=r.get(w.tag).current;y.rows.push(w.cells),u(y,w.cells);return}if(o===null)throw C(m,"row before header");o.rows.push(w.cells),u(o,w.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let p of n){if(p===null){d.push(...s);continue}let h=r.get(p);d.push(...h.segments),h.current!==null&&d.push(h.current)}return t.preserveInterleaving===!0?i:d}function Xn(e){return fm(e).flatMap(t=>t.rows.map(n=>lm(t.fields,n,0)))}function mm(e){if(!va.includes(e))throw C(0,"invalid header delimiter")}function _a(e,t,n=!1){return`[${`${n?"~":""}${e===I?"":e}`}]{${t}}:
28
28
  `}function Ra(e,t){return`[]<${e}>{${t}}:
29
- `}function Js(e,t){return t.map(de).join(e)}function fm(e){if(!Array.isArray(e)||e.length===0)throw D(0,"TOONL header requires fields");return e.map(t=>{let n;try{[n]=$e(String(t),0)}catch(r){throw It(r)}if(n==="")throw D(0,"TOONL header requires fields");return n})}function Sa(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function ka(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw D(0,"TOONL continuation cadence must be positive")}function mm(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function Ea(e){if(e===null||typeof e!="object"||Array.isArray(e))throw D(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw D(0,"TOONL output requires object rows");if(t.some(n=>!ln(e[n])))throw D(0,"TOONL rows must be flat objects");return t}function pm(e){return JSON.stringify([...e].sort())}function xa(e,t){let n=pm(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function er({delimiter:e=I,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){dm(e),ka(n),ka(r);let s=null,i="",o=new Map,a=0,c=0,u=0,l=new Map,f=!1,d={continuationEveryRows:n,continuationEveryBytes:r},p=()=>s===null||!t?"":`[=${a}]
30
- `,h=()=>mm(d,c,u)?(c=0,u=0,_a(e,i,!0)):"",m=g=>{Pa(g,0);let w=l.get(g);if(w===void 0){if(l.size>=Ta)throw D(0,"too many tagged lanes");w={fields:null,fieldsByShape:new Map},l.set(g,w)}return w};return{push(g){if(f)throw D(0,"TOONL encoder is closed");let w=xa(Ea(g),o),y="";(s===null||s.length!==w.length||s.some((O,L)=>O!==w[L]))&&(y+=p(),s=w,i=Js(e,s),a=0,c=0,u=0,y+=_a(e,i));let T=s.map(O=>be(g[O],e));y+=h();let x=`${T.join(e)}
31
- `;return y+=x,a+=1,c+=1,u+=x.length,y},declareLane(g,w){if(f)throw D(0,"TOONL encoder is closed");let y=fm(w),T=Js(I,y),x=m(g);return Sa(x.fields,y)?"":(x.fields=y,Ra(g,T))},pushTagged(g,w){if(f)throw D(0,"TOONL encoder is closed");let y=m(g),T=xa(Ea(w),y.fieldsByShape),x=Js(I,T),O=T.map(ce=>be(w[ce],I)),L="";return Sa(y.fields,T)||(y.fields=T,L+=Ra(g,x)),`${L}${g}:${O.join(I)}
32
- `},end(){return f?"":(f=!0,p())}}}var va,Ta,Oa,DS,CS,Da=E(()=>{un();mn();Os();va=[I,"|"," "],Ta=8,Oa=/^[A-Za-z0-9_-]+$/,DS=new TextEncoder,CS=new TextDecoder});var se=E(()=>{un();mn();mn();wa();Da()});function J(e){return $(e,{keyedMapCollapse:!0})}var gm,hm,sk,pn=E(()=>{se();Ce();gm=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],hm=[{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"}],sk=[...gm,...hm]});function ct(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 wm(e,t){if(!t)return!0;let n=Fs(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function F(e,t){return t?e.filter(n=>wm(n,t)):[...e]}function Ie(e,t){return Gs(e,t,{includeLegacyHelp:!0})}function Gs(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function Fs(e){return Array.isArray(e)?e.map(Fs).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Fs).join(" "):String(e??"")}var gn=E(()=>{"use strict"});function qs(e,t,n=$a){let r=Math.max(0,Math.floor(e)),s=n in Ia?n:$a,i=Ia[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:Hs(r,i),dollars_saved_low_usd:o==null?null:Hs(o,i),dollars_saved_high_usd:a==null?null:Hs(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:bm}}function Hs(e,t){return _m(Math.max(0,e)/1e6*t)}function hn(e){return`$${e.toFixed(6)}`}function _m(e){return Math.round(e*1e6)/1e6}var $a,Ia,bm,Ws=E(()=>{"use strict";$a="gpt-5",Ia={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15,"claude-opus-4.1":15,"claude-opus-4":15,"claude-sonnet-4.5":3,"claude-sonnet-4":3,"claude-haiku-4.5":1,"claude-haiku-3.5":.8},bm="estimate derived from byte-based token estimate when token counts are estimated"});function Rm(e){return e==="no-op"?0:e==="usage"?2:1}function N(e){return Buffer.from(`${$(Vs(e))}
33
- `)}function Vs(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??Rm(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=Sm(e.diagnostics,3)),t}function fe(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:yn(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&i.includes("rate limit")?{command:e,category:"real-error",error:yn(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:i.includes("not a git repository")?{command:e,category:"real-error",error:yn(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:yn(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:yn(s)||"command failed",help:`${e} --help`,diagnostics:s}}function tr(e,t,n,r){return N({command:e,category:"usage",error:`unknown flag: ${t}`,help:r,validFlags:n})}function yn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Sm(e,t){return e.split(/\r?\n/).slice(0,t).join(`
34
- `).trim()}var ut=E(()=>{"use strict";se()});import{existsSync as km,readFileSync as fk}from"node:fs";import{dirname as Em,join as xm}from"node:path";function Aa(e,t){let n=e;for(let r=0;r<16;r++){let s=xm(n,t);if(km(s))return s;let i=Em(n);if(i===n)break;n=i}return null}function vm(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function nr(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 vm(u)}}var Na=E(()=>{});import{createConnection as Tm}from"node:net";async function Lt(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)}
29
+ `}function Js(e,t){return t.map(de).join(e)}function pm(e){if(!Array.isArray(e)||e.length===0)throw C(0,"TOONL header requires fields");return e.map(t=>{let n;try{[n]=$e(String(t),0)}catch(r){throw It(r)}if(n==="")throw C(0,"TOONL header requires fields");return n})}function Sa(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function ka(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw C(0,"TOONL continuation cadence must be positive")}function gm(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function Ea(e){if(e===null||typeof e!="object"||Array.isArray(e))throw C(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw C(0,"TOONL output requires object rows");if(t.some(n=>!ln(e[n])))throw C(0,"TOONL rows must be flat objects");return t}function hm(e){return JSON.stringify([...e].sort())}function xa(e,t){let n=hm(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function er({delimiter:e=I,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){mm(e),ka(n),ka(r);let s=null,i="",o=new Map,a=0,c=0,u=0,l=new Map,f=!1,d={continuationEveryRows:n,continuationEveryBytes:r},p=()=>s===null||!t?"":`[=${a}]
30
+ `,h=()=>gm(d,c,u)?(c=0,u=0,_a(e,i,!0)):"",m=g=>{Pa(g,0);let w=l.get(g);if(w===void 0){if(l.size>=Ta)throw C(0,"too many tagged lanes");w={fields:null,fieldsByShape:new Map},l.set(g,w)}return w};return{push(g){if(f)throw C(0,"TOONL encoder is closed");let w=xa(Ea(g),o),y="";(s===null||s.length!==w.length||s.some((O,L)=>O!==w[L]))&&(y+=p(),s=w,i=Js(e,s),a=0,c=0,u=0,y+=_a(e,i));let T=s.map(O=>be(g[O],e));y+=h();let x=`${T.join(e)}
31
+ `;return y+=x,a+=1,c+=1,u+=x.length,y},declareLane(g,w){if(f)throw C(0,"TOONL encoder is closed");let y=pm(w),T=Js(I,y),x=m(g);return Sa(x.fields,y)?"":(x.fields=y,Ra(g,T))},pushTagged(g,w){if(f)throw C(0,"TOONL encoder is closed");let y=m(g),T=xa(Ea(w),y.fieldsByShape),x=Js(I,T),O=T.map(ce=>be(w[ce],I)),L="";return Sa(y.fields,T)||(y.fields=T,L+=Ra(g,x)),`${L}${g}:${O.join(I)}
32
+ `},end(){return f?"":(f=!0,p())}}}var va,Ta,Oa,AS,NS,Da=E(()=>{un();mn();Os();va=[I,"|"," "],Ta=8,Oa=/^[A-Za-z0-9_-]+$/,AS=new TextEncoder,NS=new TextDecoder});var ne=E(()=>{un();mn();mn();wa();Da()});function F(e){return D(e,{keyedMapCollapse:!0})}var ym,wm,ck,pn=E(()=>{ne();Ce();ym=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],wm=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.jsonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.jsonl",toonPath:".red/state/castle/afk-supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.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/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],ck=[...ym,...wm]});function ct(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 _m(e,t){if(!t)return!0;let n=Fs(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function G(e,t){return t?e.filter(n=>_m(n,t)):[...e]}function Ie(e,t){return Gs(e,t,{includeLegacyHelp:!0})}function Gs(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function Fs(e){return Array.isArray(e)?e.map(Fs).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Fs).join(" "):String(e??"")}var gn=E(()=>{"use strict"});function qs(e,t,n=$a){let r=Math.max(0,Math.floor(e)),s=n in Ia?n:$a,i=Ia[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:Hs(r,i),dollars_saved_low_usd:o==null?null:Hs(o,i),dollars_saved_high_usd:a==null?null:Hs(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:Rm}}function Hs(e,t){return Sm(Math.max(0,e)/1e6*t)}function hn(e){return`$${e.toFixed(6)}`}function Sm(e){return Math.round(e*1e6)/1e6}var $a,Ia,Rm,Ws=E(()=>{"use strict";$a="gpt-5",Ia={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15,"claude-opus-4.1":15,"claude-opus-4":15,"claude-sonnet-4.5":3,"claude-sonnet-4":3,"claude-haiku-4.5":1,"claude-haiku-3.5":.8},Rm="estimate derived from byte-based token estimate when token counts are estimated"});function km(e){return e==="no-op"?0:e==="usage"?2:1}function N(e){return Buffer.from(`${D(Vs(e))}
33
+ `)}function Vs(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??km(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=Em(e.diagnostics,3)),t}function fe(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:yn(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&i.includes("rate limit")?{command:e,category:"real-error",error:yn(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:i.includes("not a git repository")?{command:e,category:"real-error",error:yn(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:yn(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:yn(s)||"command failed",help:`${e} --help`,diagnostics:s}}function tr(e,t,n,r){return N({command:e,category:"usage",error:`unknown flag: ${t}`,help:r,validFlags:n})}function yn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function Em(e,t){return e.split(/\r?\n/).slice(0,t).join(`
34
+ `).trim()}var ut=E(()=>{"use strict";ne()});import{existsSync as xm,readFileSync as hk}from"node:fs";import{dirname as vm,join as Tm}from"node:path";function Aa(e,t){let n=e;for(let r=0;r<16;r++){let s=Tm(n,t);if(xm(s))return s;let i=vm(n);if(i===n)break;n=i}return null}function Om(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function nr(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 Om(u)}}var Na=E(()=>{});import{createConnection as Pm}from"node:net";async function Lt(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=Pm(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
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(p){s(p)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var zs=E(()=>{});import{createHash as Om,randomUUID as Ua}from"node:crypto";import{spawn as Ja}from"node:child_process";import{constants as Ks}from"node:fs";import{readFileSync as Pm}from"node:fs";import{mkdir as rr,open as Dm,readFile as Fa,rename as Cm,rm as _e,stat as $m,writeFile as Im}from"node:fs/promises";import{tmpdir as Am}from"node:os";import{dirname as We,join as ie,resolve as sr}from"node:path";import{fileURLToPath as Ga}from"node:url";function Ve(e){let t=Wm(e)??sr(e),n=qm(t),r=z(t);return{rootDir:t,socketPath:ie(n,"rsp.sock"),pidPath:ie(n,"rsp.pid"),lockPath:ie(n,"rsp.lock"),wakeLockPath:ie(t,".red","tmp","rsp.wake.lock"),summaryPath:ie(r,"rsp-status-summary.json"),registryPath:ie(r,"rsp-resident.pid.json")}}async function ir(e,t){if(await rr(We(e.socketPath),{recursive:!0,mode:448}),await Ma(e.socketPath,t))return;await La(e,t);let n=await za(e.lockPath);if(n)try{if(await Ma(e.socketPath,t))return;await La(e,t),await Mm(e.socketPath);let r=jm(e,t);await Ba(e.socketPath,r);return}finally{await n.close(),await _e(e.lockPath,{force:!0})}await Ba(e.socketPath)}async function lt(e,t=200){try{return await qa(e,t)!=null}catch{return!1}}async function qa(e,t=200){let n=await Lt({socketPath:e,timeoutMs:t},{id:Ua(),op:"ping"});return n.ok?Za(n.value)?{version:Ym(n.value.version)}:{}:null}async function or(e,t){if(await rr(We(e.socketPath),{recursive:!0,mode:448}),await lt(e.socketPath,50))return!1;let n=await za(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=Ya(t);return Ja(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 Wa(e,t){try{await ir(e,t)}finally{await _e(e.wakeLockPath,{force:!0})}}async function bn(e){try{let t=Fm(await Fa(e,"utf8"));return Qm(t)?t:null}catch{return null}}async function ar(e,t){let n={version:Ha,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 rr(We(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await Im(r,`${$(n)}
38
- `,{encoding:"utf8",mode:384}),await Cm(r,e)}async function cr(e,t=process.pid){try{let n=await bn(e);if(n&&n.pid!==t)return;await _e(e,{force:!0})}catch{}}async function wn(e){let t=await bn(e.registryPath);if(!t)try{return await Fa(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Mt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await lt(t.socket_path,100);return n&&await Hm(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 Va(e){let t=await wn(e);return t.state==="registered-dead"||t.state==="invalid"?(await _e(e.registryPath,{force:!0}),await wn(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Ka(t.entry.pid),await _e(e.registryPath,{force:!0}),await _e(t.entry.socket_path,{force:!0}),await wn(e)):t}async function Ba(e,t){let n=Date.now()+Lm(),r;for(;Date.now()<n;){if(await lt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Ys("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Ys("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Ys("resident rsp server did not start",t):"resident rsp server did not start")}function Lm(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Bm}async function Mm(e){await _e(e,{force:!0})}async function za(e){await rr(We(e),{recursive:!0,mode:448});try{return await Dm(e,Ks.O_CREAT|Ks.O_EXCL|Ks.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function jm(e,t){let[n,r]=Ya(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Ja(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=Jm(`${o}${c}`,Um)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function Ys(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
+ `);if(f<0)return;let d=a.slice(0,f);u(()=>{try{r(JSON.parse(d))}catch(p){s(p)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var zs=E(()=>{});import{createHash as Dm,randomUUID as Ua}from"node:crypto";import{spawn as Ja}from"node:child_process";import{constants as Ks}from"node:fs";import{readFileSync as Cm}from"node:fs";import{mkdir as rr,open as $m,readFile as Fa,rename as Im,rm as _e,stat as Am,writeFile as Nm}from"node:fs/promises";import{tmpdir as Bm}from"node:os";import{dirname as We,join as ie,resolve as sr}from"node:path";import{fileURLToPath as Ga}from"node:url";function Ve(e){let t=zm(e)??sr(e),n=Vm(t),r=J(t);return{rootDir:t,socketPath:ie(n,"rsp.sock"),pidPath:ie(n,"rsp.pid"),lockPath:ie(n,"rsp.lock"),wakeLockPath:ie(t,".red","tmp","rsp.wake.lock"),summaryPath:ie(r,"rsp-status-summary.json"),registryPath:ie(r,"rsp-resident.pid.json")}}async function ir(e,t){if(await rr(We(e.socketPath),{recursive:!0,mode:448}),await Ma(e.socketPath,t))return;await La(e,t);let n=await za(e.lockPath);if(n)try{if(await Ma(e.socketPath,t))return;await La(e,t),await Um(e.socketPath);let r=Jm(e,t);await Ba(e.socketPath,r);return}finally{await n.close(),await _e(e.lockPath,{force:!0})}await Ba(e.socketPath)}async function lt(e,t=200){try{return await qa(e,t)!=null}catch{return!1}}async function qa(e,t=200){let n=await Lt({socketPath:e,timeoutMs:t},{id:Ua(),op:"ping"});return n.ok?Za(n.value)?{version:Zm(n.value.version)}:{}:null}async function or(e,t){if(await rr(We(e.socketPath),{recursive:!0,mode:448}),await lt(e.socketPath,50))return!1;let n=await za(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=Ya(t);return Ja(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 Wa(e,t){try{await ir(e,t)}finally{await _e(e.wakeLockPath,{force:!0})}}async function bn(e){try{let t=Hm(await Fa(e,"utf8"));return Xm(t)?t:null}catch{return null}}async function ar(e,t){let n={version:Ha,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 rr(We(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await Nm(r,`${D(n)}
38
+ `,{encoding:"utf8",mode:384}),await Im(r,e)}async function cr(e,t=process.pid){try{let n=await bn(e);if(n&&n.pid!==t)return;await _e(e,{force:!0})}catch{}}async function wn(e){let t=await bn(e.registryPath);if(!t)try{return await Fa(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Mt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await lt(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 Va(e){let t=await wn(e);return t.state==="registered-dead"||t.state==="invalid"?(await _e(e.registryPath,{force:!0}),await wn(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Ka(t.entry.pid),await _e(e.registryPath,{force:!0}),await _e(t.entry.socket_path,{force:!0}),await wn(e)):t}async function Ba(e,t){let n=Date.now()+jm(),r;for(;Date.now()<n;){if(await lt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Ys("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Ys("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Ys("resident rsp server did not start",t):"resident rsp server did not start")}function jm(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Mm}async function Um(e){await _e(e,{force:!0})}async function za(e){await rr(We(e),{recursive:!0,mode:448});try{return await $m(e,Ks.O_CREAT|Ks.O_EXCL|Ks.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Jm(e,t){let[n,r]=Ya(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Ja(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}`,Fm)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function Ys(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:
39
39
  ${s}`),r.join(`
40
- `)}function Jm(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function Fm(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return re(t)}}async function La(e,t){try{let n=await bn(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Mt(n.pid)){await _e(e.registryPath,{force:!0});return}if(await lt(n.socket_path,100))return;if(Qa(t.clientVersion,n.resident_version)&&(await Gm(n.pid,1500),!Mt(n.pid))){await _e(e.registryPath,{force:!0});return}await Ka(n.pid),await _e(e.registryPath,{force:!0})}catch{}}function Mt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Ka(e){if(!Mt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Gm(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Mt(e))return;await new Promise(r=>setTimeout(r,50))}}async function Hm(e){if(!e.startsWith("file://"))return!1;try{return await $m(Ga(e)),!1}catch(t){return t.code==="ENOENT"}}function Ya(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?sr(process.argv[1]):Ga(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function qm(e){let t=Om("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=ie(n,"red-skills",t);if(ie(s,"rsp.sock").length<Nm)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ie(Am(),`red-skills-${r}`,t)}function Wm(e){let t=sr(e);for(let n=0;n<32;n++){try{let s=Qs(ie(t,".git"));if(s!=null)return Vm(t,s)??t;if(Qs(ie(t,".git","HEAD"))!=null||Qs(ie(t,".red","config.yaml"))!=null)return t}catch{}let r=We(t);if(r===t)return null;t=r}return null}function Vm(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=sr(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?We(We(We(r))):null}function Qs(e){try{return Pm(e,"utf8")}catch{return null}}async function Ma(e,t){let n=await qa(e).catch(()=>null);return n?Qa(t.clientVersion,n.version)?(await zm(e,t.clientVersion),await Zm(e),!1):!0:!1}async function zm(e,t){try{await Lt({socketPath:e,timeoutMs:200},{id:Ua(),op:"handover",clientVersion:t})}catch{}}function Qa(e,t){return!e||!t?!1:Km(e,t)>0}function Km(e,t){let n=ja(e),r=ja(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function ja(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 Za(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ym(e){return typeof e=="string"&&e.length>0?e:void 0}function Qm(e){return Za(e)&&e.version===Ha&&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 Zm(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await lt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Nm,Ha,Bm,Um,ur=E(()=>{se();Ce();zs();Nm=108,Ha=1,Bm=5e3;Um=8*1024});var sc={};M(sc,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,DEFAULT_RSP_IDLE_MS:()=>fr,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>rc,DEFAULT_RSP_STORE_PATH:()=>Zs,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>dr,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>ec,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>tc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>lr,DEFAULT_RSP_TTL_DAYS:()=>Be,MIN_RSP_IDLE_MS:()=>nc,resolveRspConfig:()=>je});import{existsSync as Xm,readFileSync as ep}from"node:fs";import{join as tp,resolve as Xa}from"node:path";function je(e,t,n){let r=Aa(Xa(e),tp(".red","config.yaml")),s=r?ep(r,"utf8"):"",i=nr(s,"rsp.enabled")==="true",o=nr(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=Ae(me(s,"rsp.ttlDays"),Be),u=Ae(jt(t.RSP_EPHEMERAL_TTL_HOURS)??me(s,"rsp.ephemeralTtlHours"),Le),l=Ae(me(s,"rsp.byteBudget"),Me),f=Ae(me(s,"rsp.telemetryTtlDays"),lr),d=Ae(me(s,"rsp.telemetryByteBudget")??me(s,"rsp.byteBudget"),dr),p=Ae(jt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??me(s,"rsp.telemetryDrainIntervalMs"),ec),h=Ae(jt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??me(s,"rsp.telemetryDrainTimeoutMs"),tc),m=np(jt(t.RSP_IDLE_MS)??me(s,"rsp.idleMs"),fr,nc),g=Ae(jt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??me(s,"rsp.heavyGitByteThreshold"),Ne),w=rp(jt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??me(s,"rsp.measurement.holdoutShare"),rc),y=Ve(e).rootDir,T=n??t.RSP_STORE_URI??`file://${aa(Xa(y),Xm)}`;return{enabled:i,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:h,idleMs:m,heavyGitByteThreshold:g,measurementHoldoutShare:w}}function me(e,t){let n=nr(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Ae(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function np(e,t,n){let r=Ae(e,t);return Math.max(r,n)}function rp(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function jt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Ne,Zs,Be,Le,Me,lr,dr,ec,tc,fr,nc,rc,Re=E(()=>{"use strict";Na();Ce();ur();Ne=8*1024,Zs=ia,Be=7,Le=6,Me=64*1024*1024,lr=90,dr=4*1024*1024,ec=3e4,tc=2e3,fr=5*6e4,nc=5e3,rc=0});var Gt={};M(Gt,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_TTL_DAYS:()=>Be,RSP_ELISION_COLLECTION:()=>Y,RspElisionStore:()=>xn,ensureReddbBinaryFromWarmCache:()=>Sc,storageClassForCommand:()=>ft});import{createHash as br}from"node:crypto";import{spawnSync as En}from"node:child_process";import{existsSync as ri}from"node:fs";import{mkdir as pc,readFile as gc,readdir as hc,rename as gr,rm as _n,stat as Xs,writeFile as sp}from"node:fs/promises";import{homedir as ip}from"node:os";import{basename as yc,dirname as wc,join as Rn}from"node:path";import{fileURLToPath as op}from"node:url";import{gunzipSync as ap,gzipSync as cp}from"node:zlib";function ic(e,t){return`el:${br("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 dt(e){return`record:${e.slice(3)}`}function Ut(e){return`expired:${e.slice(3)}`}function ei(){return"index:v1"}function up(e){return`blob:${e}`}function lp(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function ft(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":_r(t)?"re-executable":"ephemeral"}return"ephemeral"}function mr(e){return Rr(e.storage_class)?e.storage_class:ft(e.command)}function bc(e){return Rr(e.storage_class)?e.storage_class:ft(e.command)}function oc(e){let t=hp(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=bc(r);if(t[s].records+=1,t[s].raw_bytes+=r.raw_bytes??r.bytes,r.blob_key){if(n[s].has(r.blob_key))continue;n[s].add(r.blob_key)}t[s].bytes+=r.bytes}return t}function ac(e,t,n){let r=t.getTime();return[...e].sort((s,i)=>i.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,n)).map(s=>{let i=Math.max(0,Math.floor((r-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:i,age_display:dp(i),storage_class:bc(s),recover:`rsp show ${s.handle}`}})}function dp(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let n=Math.floor(t/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function cc(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 Jt(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 uc(e,t){let n=process.cwd(),r=En("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=En("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:fp(n),original_bytes:e.length}:null}function fp(e){let t=ti(e,["rev-parse","HEAD"])||"unborn",n=ti(e,["write-tree"])||"no-index",r=ti(e,["status","--porcelain=v1","-z"])||"";return br("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function ti(e,t){let n=En("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function lc(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!_r(n))return null;let r=_c(process.cwd(),n,e.length);return!r||Ft(r)!==Ft(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:n,original_bytes:e.length,content_hash:Ft(e)}}function _r(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function Ft(e){return br("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function dc(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 fc(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 mc(e,t,n){let r=cp(e);return{key:up(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function mp(e){try{let t=ap(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function pp(e){let t=e.object_ids[0];if(!t)return null;let n=En("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 gp(e){if(!_r(e.argv))return null;let t=_c(e.cwd,e.argv,e.original_bytes);return t?Ft(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
41
- `,"utf8"),t]):null}function _c(e,t,n){let r=t[0];if(!r)return null;let s=En(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 hp(){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 yr(e){return/^el:[a-f0-9]{12}$/.test(e)}function wr(e){return/^blob:[a-f0-9]{64}$/.test(e)}function yp(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 wp(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 bp(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 hc(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 _p(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 ni(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function hr(e){if(!oe(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=Sp(e.derivation_recipe),r=kp(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&wr(s);return e.collection===Y&&typeof e.handle=="string"&&yr(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||oi(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&wr(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Rp(e.loss)&&(e.storage_class===void 0||Rr(e.storage_class))}function Rc(e){return!oe(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!oe(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&yr(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||Rr(t.storage_class))&&(n===void 0||typeof n=="string"&&wr(n))})}function si(e){return oe(e)&&typeof e.key=="string"&&wr(e.key)&&oi(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 ii(e){return oe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Rp(e){return oe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Rr(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Sp(e){return oe(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 kp(e){return oe(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&_r(e.argv)&&typeof e.original_bytes=="number"&&oi(e.content_hash)}function oi(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function oe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Ep(e){try{let n=await gc(e,"utf8");if(n.trim()==="")return pr();let r=JSON.parse(n);if(Tp(r))return{...r,blobs:r.blobs??{}}}catch(n){if(n.code==="ENOENT"){let s=pr();return await kn(e,s),s}let r=pr();return await kn(e,r),r}let t=pr();return await kn(e,t),t}async function xp(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function vp(e){return yc(e)==="red-skills.rdb"}async function Sc(){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(ip(),".cache","red-skills","bundles")),t=Rn(e,"reddb"),n;try{n=await hc(t)}catch{return}n.sort().reverse();for(let r of n){let s=Rn(t,r,process.platform==="win32"?"red.exe":"red");if(ri(s)){process.env.REDDB_BIN=s;return}}}async function kn(e,t){await pc(wc(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await sp(n,`${JSON.stringify(t)}
42
- `,"utf8"),await gr(n,e)}function pr(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Tp(e){return oe(e)&&e.version===1&&oe(e.records)&&Object.values(e.records).every(hr)&&(e.blobs===void 0||oe(e.blobs)&&Object.values(e.blobs).every(si))&&oe(e.tombstones)&&Object.values(e.tombstones).every(ii)&&Rc(e.index)}function Op(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return op(e)}var Y,xn,ze=E(()=>{"use strict";Ts();Re();Y="rsp_elisions_v1",xn=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=Op(t.uri),r=await xp(n),s=new e(r,{uri:t.uri,ttlDays:ni(t.ttlDays,Be),ephemeralTtlHours:ni(t.ephemeralTtlHours,Le),byteBudget:ni(t.byteBudget,Me),now:t.now??(()=>new Date)});return vp(r)?(await Sc(),await pc(wc(r),{recursive:!0}),s.db=await Ct(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Ep(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=ic(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?uc(r,n.command):null,l=c==="re-executable"?lc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=cc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?mc(r,p,i):null,m=dc(r,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:Y,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:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[Ut(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:h?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!yr(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[dt(t)];if(!hr(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:dt(r.handle),bytes:fc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:mr(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:Y,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:mr(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:Jt(n),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget,storage_classes:oc(n)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),ac(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(s=>s.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),s=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=Jt(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=Jt(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[Ut(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[Ut(t)];return ii(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return pp(t.derivation_recipe);if(t.reexecution_recipe)return gp(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return si(n)?mp(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 kn(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Xs(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 kn(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(Y)}async kvGet(t){let n=await this.kv().get(t);if(typeof n!="string")return n;try{return JSON.parse(n)}catch{return n}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(n=>n.name===Y);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${Y}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${Y}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${Y}`),await this.db.query(`CREATE KV IF NOT EXISTS ${Y}`)}}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=ic(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?uc(r,n.command):null,l=c==="re-executable"?lc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=cc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?mc(r,p,i):null,m=dc(r,u,l,h);h&&!si(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:Y,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:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(Ut(o)),await this.kv().put(a,g);let y=(await this.readRedDbIndex()).records.filter(T=>T.handle!==o);return y.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:h?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(o,m),o}async getRedDb(t){if(!yr(t))return null;let n=await this.kvGet(Ut(t));if(ii(n))return n;let r=await this.kvGet(dt(t));if(!hr(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:dt(r.handle),bytes:fc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:mr(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:Y,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:mr(r)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Jt(t.records),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget,storage_classes:oc(t.records)}}async recoveryHandlesRedDb(t){let n=await this.pruneRedDb(await this.readRedDbIndex());return ac(n.records,this.opts.now(),t)}async memory(t,n){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let r=yp(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=wp(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 bp(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await gc(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=yc(s),c=br("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=>_p(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(ei());return Rc(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ei(),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=Jt(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=Jt(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 Xs(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 _n(i,{force:!0}),await _n(o,{force:!0});let a=await Ct(`file://${i}`);try{for(let u of r){await a.query(`CREATE KV IF NOT EXISTS ${lp(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 Xs(i).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=n){await _n(i,{force:!0});return}await this.db.close(),this.db=void 0;try{await gr(this.path,o),await gr(i,this.path),await _n(o,{force:!0})}catch(u){throw!ri(this.path)&&ri(o)&&await gr(o,this.path),await _n(i,{force:!0}),u}finally{this.db=await Ct(`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===Y){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:ei(),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:Y,items:n}}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ut(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(dt(t));if(!hr(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={};M(Pn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ae,RSP_DECISIONS_COLLECTION:()=>Q,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ke,RSP_TELEMETRY_INDEX_COLLECTION:()=>On,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ke,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Nc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Bc,RSP_TELEMETRY_SPOOL_FILE:()=>Ac,appendTelemetryEvent:()=>Je,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>fi,parseTelemetryEvent:()=>zt,readAccountingLaneStats:()=>mi,readTelemetryGainsReport:()=>pi,readTelemetryStats:()=>vr,takeTelemetrySpool:()=>Np,telemetryLegacySpoolPath:()=>xr,telemetrySpoolCorrectionsPath:()=>di,telemetrySpoolPath:()=>Ue});import{randomUUID as ci,createHash as Pp}from"node:crypto";import{appendFileSync as Pc,existsSync as Dp,mkdirSync as Dc}from"node:fs";import{mkdir as Cc,readdir as Cp,readFile as $c,rename as $p,rm as Ic,writeFile as ui}from"node:fs/promises";import{basename as ai,dirname as Tn,join as Wt,resolve as kc}from"node:path";function Er(e){if(!e)return null;let t=kc(e);for(;;){if(Dp(Wt(t,".red")))return t;let n=kc(Wt(t,".."));if(n===t)break;t=n}return null}function Ue(e){return Wt(z(e),Ac)}function xr(e){return Wt(z(e),Nc)}function di(e){return Wt(z(e),Bc)}async function Je(e,t){gt(e,t)}function gt(e,t){try{let n=Er(e);if(!n)return;let r=Ue(n);Dc(Tn(r),{recursive:!0}),Pc(r,Mp({spool_id:ci(),event:Ap(t)}),{encoding:"utf8",mode:384})}catch{}}function Ap(e){return Ec(Ec(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Ec(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=Ip)return e;let i={...e};return delete i[t],Se(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function Np(e){let t=Er(e);if(!t)return[];let n=Ue(t);await Cc(Tn(n),{recursive:!0}).catch(()=>{});let r=await jc(t),s=[...await Uc(t),...await Up(r)];return await Promise.all(r.map(i=>Ic(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function fi(e,t){let n=Er(e);if(!n)return;let r=Ue(n);await Cc(Tn(r),{recursive:!0}).catch(()=>{}),await jp(n);for(let s of await Bp(n))await xc(n,s,t);for(let s of await Uc(n))await Lc(n,s,t,!0);for(let s of await jc(n))await xc(n,s,t)}async function Bp(e){let t=[Ue(e),xr(e)],n=Tn(t[0]);return(await Cp(n).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${ai(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${ai(c)}.`));if(!i)return!1;let o=`${ai(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Lp(a))}).sort().map(s=>Wt(n,s))}function Lp(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function xc(e,t,n){try{let r=await Mc(t);for(let s of Jc(r))await Lc(e,s,n,!1)}finally{await Ic(t,{force:!0})}}async function Lc(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&vc(e,{correction_id:ci(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}vc(e,{correction_id:ci(),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 Mc(e){let t="";for(let n=0;n<5;n++){let r=await $c(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function zt(e){try{let t=JSON.parse(e);return!Tr(t)||t.collection!==ae&&t.collection!==Q&&t.collection!==ke&&t.collection!==Ke?null:t}catch{return null}}function Mp(e){return er().push(Gp(e))}function vc(e,t){try{let n=Er(e);if(!n)return;let r=di(n);Dc(Tn(r),{recursive:!0});let s=er();Pc(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 jc(e){let t=[Ue(e),xr(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await $p(r,s),await ui(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return n}async function jp(e){await Promise.all([ui(Ue(e),"",{flag:"a"}),ui(xr(e),"",{flag:"a"})]).catch(()=>{})}async function Up(e){let t=[];for(let n of e)t.push(...Jc(await Mc(n)));return t}async function Uc(e){let t=await $c(di(e),"utf8").catch(()=>""),n=new Map;for(let r of Jp(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:zt(r.event_json)??void 0})).filter(r=>r.event!==void 0)}function Jc(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(Tr(i)){let o=zt(JSON.stringify(i));t.push(o?{spool_id:Sr(JSON.stringify(i)),event:o}:{spool_id:Sr(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n){t.push({spool_id:Sr(s),raw_line:s});continue}try{for(let i of Xn(`${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 Y(t)}}async function La(e,t){try{let n=await bn(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Mt(n.pid)){await _e(e.registryPath,{force:!0});return}if(await lt(n.socket_path,100))return;if(Qa(t.clientVersion,n.resident_version)&&(await qm(n.pid,1500),!Mt(n.pid))){await _e(e.registryPath,{force:!0});return}await Ka(n.pid),await _e(e.registryPath,{force:!0})}catch{}}function Mt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Ka(e){if(!Mt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function qm(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Mt(e))return;await new Promise(r=>setTimeout(r,50))}}async function Wm(e){if(!e.startsWith("file://"))return!1;try{return await Am(Ga(e)),!1}catch(t){return t.code==="ENOENT"}}function Ya(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?sr(process.argv[1]):Ga(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Vm(e){let t=Dm("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=ie(n,"red-skills",t);if(ie(s,"rsp.sock").length<Lm)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ie(Bm(),`red-skills-${r}`,t)}function zm(e){let t=sr(e);for(let n=0;n<32;n++){try{let s=Qs(ie(t,".git"));if(s!=null)return Km(t,s)??t;if(Qs(ie(t,".git","HEAD"))!=null||Qs(ie(t,".red","config.yaml"))!=null)return t}catch{}let r=We(t);if(r===t)return null;t=r}return null}function Km(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=sr(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?We(We(We(r))):null}function Qs(e){try{return Cm(e,"utf8")}catch{return null}}async function Ma(e,t){let n=await qa(e).catch(()=>null);return n?Qa(t.clientVersion,n.version)?(await Ym(e,t.clientVersion),await ep(e),!1):!0:!1}async function Ym(e,t){try{await Lt({socketPath:e,timeoutMs:200},{id:Ua(),op:"handover",clientVersion:t})}catch{}}function Qa(e,t){return!e||!t?!1:Qm(e,t)>0}function Qm(e,t){let n=ja(e),r=ja(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function ja(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 Za(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zm(e){return typeof e=="string"&&e.length>0?e:void 0}function Xm(e){return Za(e)&&e.version===Ha&&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 ep(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await lt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Lm,Ha,Mm,Fm,ur=E(()=>{ne();Ce();zs();Lm=108,Ha=1,Mm=5e3;Fm=8*1024});var sc={};M(sc,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,DEFAULT_RSP_IDLE_MS:()=>fr,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>rc,DEFAULT_RSP_STORE_PATH:()=>Zs,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>dr,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>ec,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>tc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>lr,DEFAULT_RSP_TTL_DAYS:()=>Be,MIN_RSP_IDLE_MS:()=>nc,resolveRspConfig:()=>je});import{existsSync as tp,readFileSync as np}from"node:fs";import{join as rp,resolve as Xa}from"node:path";function je(e,t,n){let r=Aa(Xa(e),rp(".red","config.yaml")),s=r?np(r,"utf8"):"",i=nr(s,"rsp.enabled")==="true",o=nr(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=Ae(me(s,"rsp.ttlDays"),Be),u=Ae(jt(t.RSP_EPHEMERAL_TTL_HOURS)??me(s,"rsp.ephemeralTtlHours"),Le),l=Ae(me(s,"rsp.byteBudget"),Me),f=Ae(me(s,"rsp.telemetryTtlDays"),lr),d=Ae(me(s,"rsp.telemetryByteBudget")??me(s,"rsp.byteBudget"),dr),p=Ae(jt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??me(s,"rsp.telemetryDrainIntervalMs"),ec),h=Ae(jt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??me(s,"rsp.telemetryDrainTimeoutMs"),tc),m=sp(jt(t.RSP_IDLE_MS)??me(s,"rsp.idleMs"),fr,nc),g=Ae(jt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??me(s,"rsp.heavyGitByteThreshold"),Ne),w=ip(jt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??me(s,"rsp.measurement.holdoutShare"),rc),y=Ve(e).rootDir,T=n??t.RSP_STORE_URI??`file://${aa(Xa(y),tp)}`;return{enabled:i,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:h,idleMs:m,heavyGitByteThreshold:g,measurementHoldoutShare:w}}function me(e,t){let n=nr(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Ae(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function sp(e,t,n){let r=Ae(e,t);return Math.max(r,n)}function ip(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function jt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Ne,Zs,Be,Le,Me,lr,dr,ec,tc,fr,nc,rc,Re=E(()=>{"use strict";Na();Ce();ur();Ne=8*1024,Zs=ia,Be=7,Le=6,Me=64*1024*1024,lr=90,dr=4*1024*1024,ec=3e4,tc=2e3,fr=5*6e4,nc=5e3,rc=0});var Gt={};M(Gt,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_TTL_DAYS:()=>Be,RSP_ELISION_COLLECTION:()=>Q,RspElisionStore:()=>xn,ensureReddbBinaryFromWarmCache:()=>Sc,storageClassForCommand:()=>ft});import{createHash as br}from"node:crypto";import{spawnSync as En}from"node:child_process";import{existsSync as ri}from"node:fs";import{mkdir as pc,readFile as gc,readdir as hc,rename as gr,rm as _n,stat as Xs,writeFile as op}from"node:fs/promises";import{homedir as ap}from"node:os";import{basename as yc,dirname as wc,join as Rn}from"node:path";import{fileURLToPath as cp}from"node:url";import{gunzipSync as up,gzipSync as lp}from"node:zlib";function ic(e,t){return`el:${br("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 dt(e){return`record:${e.slice(3)}`}function Ut(e){return`expired:${e.slice(3)}`}function ei(){return"index:v1"}function dp(e){return`blob:${e}`}function fp(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function ft(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":_r(t)?"re-executable":"ephemeral"}return"ephemeral"}function mr(e){return Rr(e.storage_class)?e.storage_class:ft(e.command)}function bc(e){return Rr(e.storage_class)?e.storage_class:ft(e.command)}function oc(e){let t=wp(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=bc(r);if(t[s].records+=1,t[s].raw_bytes+=r.raw_bytes??r.bytes,r.blob_key){if(n[s].has(r.blob_key))continue;n[s].add(r.blob_key)}t[s].bytes+=r.bytes}return t}function ac(e,t,n){let r=t.getTime();return[...e].sort((s,i)=>i.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,n)).map(s=>{let i=Math.max(0,Math.floor((r-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:i,age_display:mp(i),storage_class:bc(s),recover:`rsp show ${s.handle}`}})}function mp(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let n=Math.floor(t/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function cc(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 Jt(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 uc(e,t){let n=process.cwd(),r=En("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=En("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:pp(n),original_bytes:e.length}:null}function pp(e){let t=ti(e,["rev-parse","HEAD"])||"unborn",n=ti(e,["write-tree"])||"no-index",r=ti(e,["status","--porcelain=v1","-z"])||"";return br("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function ti(e,t){let n=En("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function lc(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!_r(n))return null;let r=_c(process.cwd(),n,e.length);return!r||Ft(r)!==Ft(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:n,original_bytes:e.length,content_hash:Ft(e)}}function _r(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function Ft(e){return br("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function dc(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 fc(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 mc(e,t,n){let r=lp(e);return{key:dp(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function gp(e){try{let t=up(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function hp(e){let t=e.object_ids[0];if(!t)return null;let n=En("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 yp(e){if(!_r(e.argv))return null;let t=_c(e.cwd,e.argv,e.original_bytes);return t?Ft(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
41
+ `,"utf8"),t]):null}function _c(e,t,n){let r=t[0];if(!r)return null;let s=En(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 wp(){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 yr(e){return/^el:[a-f0-9]{12}$/.test(e)}function wr(e){return/^blob:[a-f0-9]{64}$/.test(e)}function bp(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 _p(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 Rp(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 hc(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 Sp(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 ni(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function hr(e){if(!oe(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=Ep(e.derivation_recipe),r=xp(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&wr(s);return e.collection===Q&&typeof e.handle=="string"&&yr(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||oi(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&wr(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&kp(e.loss)&&(e.storage_class===void 0||Rr(e.storage_class))}function Rc(e){return!oe(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!oe(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&yr(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||Rr(t.storage_class))&&(n===void 0||typeof n=="string"&&wr(n))})}function si(e){return oe(e)&&typeof e.key=="string"&&wr(e.key)&&oi(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 ii(e){return oe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function kp(e){return oe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Rr(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Ep(e){return oe(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 xp(e){return oe(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&_r(e.argv)&&typeof e.original_bytes=="number"&&oi(e.content_hash)}function oi(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function oe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function vp(e){try{let n=await gc(e,"utf8");if(n.trim()==="")return pr();let r=JSON.parse(n);if(Pp(r))return{...r,blobs:r.blobs??{}}}catch(n){if(n.code==="ENOENT"){let s=pr();return await kn(e,s),s}let r=pr();return await kn(e,r),r}let t=pr();return await kn(e,t),t}async function Tp(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Op(e){return yc(e)==="red-skills.rdb"}async function Sc(){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(ap(),".cache","red-skills","bundles")),t=Rn(e,"reddb"),n;try{n=await hc(t)}catch{return}n.sort().reverse();for(let r of n){let s=Rn(t,r,process.platform==="win32"?"red.exe":"red");if(ri(s)){process.env.REDDB_BIN=s;return}}}async function kn(e,t){await pc(wc(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await op(n,`${JSON.stringify(t)}
42
+ `,"utf8"),await gr(n,e)}function pr(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Pp(e){return oe(e)&&e.version===1&&oe(e.records)&&Object.values(e.records).every(hr)&&(e.blobs===void 0||oe(e.blobs)&&Object.values(e.blobs).every(si))&&oe(e.tombstones)&&Object.values(e.tombstones).every(ii)&&Rc(e.index)}function Dp(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return cp(e)}var Q,xn,ze=E(()=>{"use strict";Ts();Re();Q="rsp_elisions_v1",xn=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=Dp(t.uri),r=await Tp(n),s=new e(r,{uri:t.uri,ttlDays:ni(t.ttlDays,Be),ephemeralTtlHours:ni(t.ephemeralTtlHours,Le),byteBudget:ni(t.byteBudget,Me),now:t.now??(()=>new Date)});return Op(r)?(await Sc(),await pc(wc(r),{recursive:!0}),s.db=await Ct(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await vp(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=ic(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?uc(r,n.command):null,l=c==="re-executable"?lc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=cc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?mc(r,p,i):null,m=dc(r,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,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:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[Ut(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:h?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!yr(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[dt(t)];if(!hr(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:dt(r.handle),bytes:fc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:mr(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:mr(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:Jt(n),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget,storage_classes:oc(n)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),ac(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(s=>s.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),s=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=Jt(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=Jt(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[Ut(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[Ut(t)];return ii(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return hp(t.derivation_recipe);if(t.reexecution_recipe)return yp(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return si(n)?gp(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 kn(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Xs(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 kn(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=ic(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?uc(r,n.command):null,l=c==="re-executable"?lc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=cc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?mc(r,p,i):null,m=dc(r,u,l,h);h&&!si(await this.kvGet(h.key))&&await this.kv().put(h.key,h);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:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(Ut(o)),await this.kv().put(a,g);let y=(await this.readRedDbIndex()).records.filter(T=>T.handle!==o);return y.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:h?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(o,m),o}async getRedDb(t){if(!yr(t))return null;let n=await this.kvGet(Ut(t));if(ii(n))return n;let r=await this.kvGet(dt(t));if(!hr(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:dt(r.handle),bytes:fc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:mr(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:mr(r)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Jt(t.records),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget,storage_classes:oc(t.records)}}async recoveryHandlesRedDb(t){let n=await this.pruneRedDb(await this.readRedDbIndex());return ac(n.records,this.opts.now(),t)}async memory(t,n){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let r=bp(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=_p(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 Rp(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await gc(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=yc(s),c=br("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=>Sp(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(ei());return Rc(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ei(),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=Jt(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=Jt(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 Xs(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 _n(i,{force:!0}),await _n(o,{force:!0});let a=await Ct(`file://${i}`);try{for(let u of r){await a.query(`CREATE KV IF NOT EXISTS ${fp(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 Xs(i).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=n){await _n(i,{force:!0});return}await this.db.close(),this.db=void 0;try{await gr(this.path,o),await gr(i,this.path),await _n(o,{force:!0})}catch(u){throw!ri(this.path)&&ri(o)&&await gr(o,this.path),await _n(i,{force:!0}),u}finally{this.db=await Ct(`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:ei(),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(Ut(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(dt(t));if(!hr(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={};M(Pn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ae,RSP_DECISIONS_COLLECTION:()=>Z,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ke,RSP_TELEMETRY_INDEX_COLLECTION:()=>On,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ke,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Nc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Bc,RSP_TELEMETRY_SPOOL_FILE:()=>Ac,appendTelemetryEvent:()=>Je,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>fi,parseTelemetryEvent:()=>zt,readAccountingLaneStats:()=>mi,readTelemetryGainsReport:()=>pi,readTelemetryStats:()=>vr,takeTelemetrySpool:()=>Lp,telemetryLegacySpoolPath:()=>xr,telemetrySpoolCorrectionsPath:()=>di,telemetrySpoolPath:()=>Ue});import{randomUUID as ci,createHash as Cp}from"node:crypto";import{appendFileSync as Pc,existsSync as $p,mkdirSync as Dc}from"node:fs";import{mkdir as Cc,readdir as Ip,readFile as $c,rename as Ap,rm as Ic,writeFile as ui}from"node:fs/promises";import{basename as ai,dirname as Tn,join as Wt,resolve as kc}from"node:path";function Er(e){if(!e)return null;let t=kc(e);for(;;){if($p(Wt(t,".red")))return t;let n=kc(Wt(t,".."));if(n===t)break;t=n}return null}function Ue(e){return Wt(J(e),Ac)}function xr(e){return Wt(J(e),Nc)}function di(e){return Wt(J(e),Bc)}async function Je(e,t){gt(e,t)}function gt(e,t){try{let n=Er(e);if(!n)return;let r=Ue(n);Dc(Tn(r),{recursive:!0}),Pc(r,Up({spool_id:ci(),event:Bp(t)}),{encoding:"utf8",mode:384})}catch{}}function Bp(e){return Ec(Ec(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Ec(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=Np)return e;let i={...e};return delete i[t],Se(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function Lp(e){let t=Er(e);if(!t)return[];let n=Ue(t);await Cc(Tn(n),{recursive:!0}).catch(()=>{});let r=await jc(t),s=[...await Uc(t),...await Fp(r)];return await Promise.all(r.map(i=>Ic(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function fi(e,t){let n=Er(e);if(!n)return;let r=Ue(n);await Cc(Tn(r),{recursive:!0}).catch(()=>{}),await Jp(n);for(let s of await Mp(n))await xc(n,s,t);for(let s of await Uc(n))await Lc(n,s,t,!0);for(let s of await jc(n))await xc(n,s,t)}async function Mp(e){let t=[Ue(e),xr(e)],n=Tn(t[0]);return(await Ip(n).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${ai(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${ai(c)}.`));if(!i)return!1;let o=`${ai(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&jp(a))}).sort().map(s=>Wt(n,s))}function jp(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function xc(e,t,n){try{let r=await Mc(t);for(let s of Jc(r))await Lc(e,s,n,!1)}finally{await Ic(t,{force:!0})}}async function Lc(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&vc(e,{correction_id:ci(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}vc(e,{correction_id:ci(),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 Mc(e){let t="";for(let n=0;n<5;n++){let r=await $c(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function zt(e){try{let t=JSON.parse(e);return!Tr(t)||t.collection!==ae&&t.collection!==Z&&t.collection!==ke&&t.collection!==Ke?null:t}catch{return null}}function Up(e){return er().push(qp(e))}function vc(e,t){try{let n=Er(e);if(!n)return;let r=di(n);Dc(Tn(r),{recursive:!0});let s=er();Pc(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 jc(e){let t=[Ue(e),xr(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await Ap(r,s),await ui(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return n}async function Jp(e){await Promise.all([ui(Ue(e),"",{flag:"a"}),ui(xr(e),"",{flag:"a"})]).catch(()=>{})}async function Fp(e){let t=[];for(let n of e)t.push(...Jc(await Mc(n)));return t}async function Uc(e){let t=await $c(di(e),"utf8").catch(()=>""),n=new Map;for(let r of Gp(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:zt(r.event_json)??void 0})).filter(r=>r.event!==void 0)}function Jc(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(Tr(i)){let o=zt(JSON.stringify(i));t.push(o?{spool_id:Sr(JSON.stringify(i)),event:o}:{spool_id:Sr(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n){t.push({spool_id:Sr(s),raw_line:s});continue}try{for(let i of Xn(`${n}
45
45
  ${s}
46
- `))li(i)&&Hp(i)&&t.push({spool_id:i.spool_id,event:Fc(i)})}catch{s.startsWith("{")&&t.push({spool_id:Sr(s),raw_line:s})}}}return t}function Jp(e){return Fp(e).map(qp).filter(t=>t!==null)}function Fp(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let i=JSON.parse(s);li(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let i of Xn(`${n}
46
+ `))li(i)&&Wp(i)&&t.push({spool_id:i.spool_id,event:Fc(i)})}catch{s.startsWith("{")&&t.push({spool_id:Sr(s),raw_line:s})}}}return t}function Gp(e){return Hp(e).map(Vp).filter(t=>t!==null)}function Hp(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let i=JSON.parse(s);li(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let i of Xn(`${n}
47
47
  ${s}
48
- `))li(i)&&t.push(i)}catch{}}}return t}function Sr(e){return`legacy:${Pp("sha256").update(e).digest("hex").slice(0,24)}`}function Gp(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 Fc(e){let{spool_id:t,...n}=e;return zt(JSON.stringify(n))}function Hp(e){return typeof e.spool_id=="string"&&Fc(e)!==null}function qp(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 li(e){return Tr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}async function vr(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await Gc(e,s),o=(await vn(e,Q)).filter(R=>qt(R)>=s),a=i.filter(R=>P(R.event_type)!=="show"&&P(R.degradation_reason)===""),c=i.filter(R=>P(R.event_type)==="show"),u=i.filter(R=>P(R.degradation_reason)!==""),l=0,f=0,d=0,p=0,h=!1,m=new Map,g=new Map,w=[],y=0,T=0,x=0;for(let R of a){R.elided===!0&&l++;let C=Se(R.raw_bytes),Pe=Se(R.emitted_bytes),rt=Math.max(0,C-Pe),Tt=Vt(R,"raw"),b=Vt(R,"emitted"),v=Math.max(0,Tt.tokens-b.tokens);h||=(R.estimated===!0||Tt.estimated||b.estimated)&&v>0,f+=C,d+=Pe,p+=v;let st=pt(R).slice(0,10);st&&m.set(st,(m.get(st)??0)+v);let it=P(R.command)||"unknown",ue=g.get(it)??{command:it,invocations:0,bytes_saved:0,tokens_saved:0};ue.invocations++,ue.bytes_saved+=rt,ue.tokens_saved+=v,g.set(it,ue);let le=mt(R.wrapper_ms);le!=null&&w.push(le),y+=Se(R.store_open_count);let Ot=mt(R.store_elapsed_ms);Ot!=null&&(T+=Ot,x++)}let O=new Map,L=new Map,ce=[],he=null;for(let R of u){let C=P(R.degradation_reason)||P(R.reason)||"unknown",Pe=P(R.wrapper_family)||kr(P(R.command));O.set(C,(O.get(C)??0)+1),L.set(Pe,(L.get(Pe)??0)+1);let rt=pt(R);ce.push({timestamp:rt,family:Pe,command:P(R.command)||"unknown",reason:C,exit_code:mt(R.wrapper_exit_code),stderr_head:P(R.stderr_head)||null}),(!he||rt>he.timestamp)&&(he={timestamp:rt,reason:C,command:P(R.command)||"unknown"})}let W=a.length+u.length,Ge=c.filter(R=>R.hit===!0).length,V=qs(p,h),en=Wp(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:p,tokens_saved_estimated:V.tokens_saved_estimated,token_estimate_range_pct:V.token_estimate_range_pct,tokens_saved_low:V.tokens_saved_low,tokens_saved_high:V.tokens_saved_high,dollars_saved_estimate_usd:V.dollars_saved_estimate_usd,dollars_saved_low_usd:V.dollars_saved_low_usd,dollars_saved_high_usd:V.dollars_saved_high_usd,pricing_model_family:V.pricing_model_family,pricing_input_usd_per_million_tokens:V.pricing_input_usd_per_million_tokens,pricing_note:V.pricing_note,daily_tokens_saved:[...m.entries()].sort(([R],[C])=>R.localeCompare(C)).map(([R,C])=>({date:R,tokens_saved:C})),top_commands:[...g.values()].sort((R,C)=>C.bytes_saved-R.bytes_saved||C.tokens_saved-R.tokens_saved||R.command.localeCompare(C.command))},health:{degradations:u.length,degradation_rate:W===0?0:u.length/W,show_total:c.length,show_hits:Ge,show_misses:Math.max(0,c.length-Ge),show_hit_rate:c.length===0?0:G(Ge/c.length),by_reason:[...O.entries()].sort((R,C)=>C[1]-R[1]||R[0].localeCompare(C[0])).map(([R,C])=>({reason:R,count:C})),by_family:[...L.entries()].sort((R,C)=>C[1]-R[1]||R[0].localeCompare(C[0])).map(([R,C])=>({family:R,count:C})),recent_failures:ce.sort((R,C)=>C.timestamp.localeCompare(R.timestamp)).slice(0,20),most_recent:he},latency:{wrapper_ms_p50:Ht(w,.5),wrapper_ms_p95:Ht(w,.95),store_open_count_sum:y,store_elapsed_ms_sum:G(T),store_elapsed_ms_avg:x===0?null:G(T/x)},decisions:en}}function Wp(e){let t=0,n=0,r=0,s=0,i=new Map;for(let o of e){let a=P(o.decision);if(a==="contributed"?t++:a==="failed-open"?r++:n++,o.quota_free===!0&&(s+=Math.max(1,Se(o.saved_units))),a!=="contributed"){let c=P(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:G(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 mi(e,t,n=new Date){let s=(await vn(e,ae)).filter(i=>qt(i)<=n.getTime()||pt(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=pt(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:tg(s)}}async function pi(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 Gc(e,o),c=a.filter(b=>P(b.event_type)!=="show"&&P(b.event_type)!=="control_holdout"&&b.control_holdout!==!0&&P(b.degradation_reason)===""),u=a.filter(b=>P(b.event_type)==="control_holdout"||b.control_holdout===!0),l=a.filter(b=>P(b.event_type)==="show"),f=a.filter(b=>P(b.degradation_reason)!==""),d=[...c,...f].map(qt).filter(b=>Number.isFinite(b)&&b>0),p=d.length===0?null:Math.min(...d),h=p==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-p)/lg()))),m=[],g=new Map,w=new Map,y=new Map,T=new Map,x=new Map,O=new Map,L=0,ce=!1,he=0,W=null,Ge=0,V=0;for(let b of c){let v=pt(b),st=v.slice(0,10),it=v.slice(0,16),ue=kr(P(b.command)),le=Math.max(0,Vt(b,"raw").tokens-Vt(b,"emitted").tokens);L+=le,ce||=b.estimated===!0&&le>0;let Ot=Math.max(0,Se(b.raw_bytes)-Se(b.emitted_bytes)),os=mt(b.wrapper_ms);if(os!=null){m.push(os);let Bo=g.get(ue)??[];Bo.push(os),g.set(ue,Bo)}st&&w.set(st,(w.get(st)??0)+1),it&&y.set(it,(y.get(it)??0)+1);let as=ig(v);as&&T.set(as,(T.get(as)??0)+1);let cs=cg(v);cs&&x.set(cs,(x.get(cs)??0)+le);let Vn=O.get(ue)??{command_family:ue,invocations:0,tokens_saved:0,bytes_saved:0};Vn.invocations++,Vn.tokens_saved+=le,Vn.bytes_saved+=Ot,O.set(ue,Vn),b.elided===!0&&he++,(b.store_open_count!=null||b.store_elapsed_ms!=null)&&(Ge++,Se(b.store_open_count)>0&&V++),le>0&&(!W||le>W.tokens_saved||le===W.tokens_saved&&Ot>W.bytes_saved)&&(W={timestamp:v,command_family:ue,tokens_saved:le,bytes_saved:Ot})}let en=f.map(b=>({timestamp:pt(b),command_family:kr(P(b.command)),reason:P(b.degradation_reason)||P(b.reason)||"unknown"})).sort((b,v)=>b.timestamp.localeCompare(v.timestamp)),R=new Map;for(let b of en)R.set(b.reason,(R.get(b.reason)??0)+1);let C=Yp(en),Pe=Kp(l),rt=Zp([...O.values()],Pe,C),Tt=[...y.entries()].sort((b,v)=>v[1]-b[1]||b[0].localeCompare(v[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:h,since:i,until:s,label:`window: ${r}d, data: ${h}d`,empty:c.length===0&&f.length===0,invocations:c.length,degradations:f.length},latency:{global:Oc(m),by_command_family:[...g.entries()].sort((b,v)=>v[1].length-b[1].length||b[0].localeCompare(v[0])).map(([b,v])=>({command_family:b,count:v.length,...Oc(v)}))},throughput:{requests_per_day:[...w.entries()].sort(([b],[v])=>b.localeCompare(v)).map(([b,v])=>({date:b,requests:v})),active_minute_avg:y.size===0?null:G([...y.values()].reduce((b,v)=>b+v,0)/y.size),peak_minute:Tt?{minute:Tt[0],requests:Tt[1]}:null,hour_weekday_heatmap:og(T)},savings:{tokens:qs(L,ce),measured_control_holdout:Vp(c,u),weekly_tokens_saved:ug(x),elision_rate:c.length===0?0:G(he/c.length),top_commands_by_tokens_saved:[...O.values()].sort((b,v)=>v.tokens_saved-b.tokens_saved||v.bytes_saved-b.bytes_saved||b.command_family.localeCompare(v.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((b,v)=>v.invocations-b.invocations||v.tokens_saved-b.tokens_saved||b.command_family.localeCompare(v.command_family)).slice(0,10),single_biggest_elision:W},health:{degradation_timeline:en,degradations_by_reason:[...R.entries()].sort((b,v)=>v[1]-b[1]||b[0].localeCompare(v[0])).map(([b,v])=>({reason:b,count:v})),cold_boots:Ge===0?null:V,warm_hits:Ge===0?null:Math.max(0,Ge-V)},mining:{recovery_usage_by_family:Pe,degradation_clusters:C,threshold_tuning_suggestions:rt}}}async function Gc(e,t){let n=(await vn(e,ae)).filter(o=>qt(o)>=t),r=n.some(o=>P(o.event_type)!=="show"||P(o.degradation_reason)!==""),s=(await vn(e,ke)).filter(o=>qt(o)>=t).filter(o=>!r&&o.accounting_recorded!==!0).map(o=>({...o,event_type:P(o.event_type)||"invocation"})),i=(await vn(e,Ke)).filter(o=>qt(o)>=t).filter(o=>!r&&o.accounting_recorded!==!0).map(o=>({...o,event_type:"invocation",degradation_reason:P(o.reason)||"unknown"}));return[...n,...s,...i]}function Vt(e,t){let n=mt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=Se(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function Vp(e,t){let n=eg(t.map(a=>mt(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:n,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let r=e.map(Tc).filter(a=>a!=null),s=t.map(Tc).filter(a=>a!=null),i=r.length>0?r:s,o=i.length===0?null:G(Xp(i));return{enabled:!0,holdout_share:G(n),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:zp(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Tc(e){let t=Vt(e,"raw").tokens;if(t<=0)return null;let n=Vt(e,"emitted").tokens;return Math.max(0,t-n)/t}function zp(e,t){if(e.length<=1)return{low:G(Math.max(0,t)),high:G(Math.min(1,t))};let n=e.reduce((s,i)=>s+(i-t)**2,0)/(e.length-1),r=1.96*Math.sqrt(n/e.length);return{low:G(Math.max(0,t-r)),high:G(Math.min(1,t+r))}}function Kp(e){let t=new Map;for(let n of e){let r=kr(P(n.recovered_command)||P(n.command)),s=t.get(r)??{command_family:r,show_total:0,show_hits:0,show_misses:0};s.show_total++,n.hit===!0?s.show_hits++:s.show_misses++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.show_total-n.show_total||n.command_family.localeCompare(r.command_family)).map(n=>({...n,show_hit_rate:n.show_total===0?0:G(n.show_hits/n.show_total)}))}function Yp(e){let t=new Map;for(let n of e){let r=`${n.command_family}\0${n.reason}`,s=t.get(r)??{command_family:n.command_family,reason:n.reason,count:0};s.count++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.count-n.count||n.command_family.localeCompare(r.command_family)||n.reason.localeCompare(r.reason)).map(n=>({...n,suggestion:Qp(n)}))}function Qp(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function Zp(e,t,n){let r=[];for(let s of t.filter(i=>i.show_total>0))r.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of n.filter(i=>i.count>1))r.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(i=>i.invocations>0&&i.tokens_saved===0))r.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return r.slice(0,10)}function Xp(e){return e.reduce((t,n)=>t+n,0)/e.length}function eg(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function tg(e){let t=rg();for(let n of e){if(P(n.event_type)==="show"||P(n.degradation_reason)!==""||n.elided!==!0)continue;let r=ng(n.storage_class)??ft(P(n.command));t[r].records+=1;let s=Se(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function ng(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function rg(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}async function vn(e,t){return(await e.kv(t).list({limit:1e4}).catch(r=>{if(r instanceof Error&&/\bnot found\b/i.test(r.message))return{items:[]};throw r})).items.map(r=>sg(r.value)).filter(r=>Tr(r))}function sg(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function qt(e){let t=Date.parse(pt(e));return Number.isFinite(t)?t:0}function pt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function Se(e){return mt(e)??0}function mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ht(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 G(n[r])}function Oc(e){return{wrapper_ms_p50:Ht(e,.5),wrapper_ms_p90:Ht(e,.9),wrapper_ms_p95:Ht(e,.95),wrapper_ms_p99:Ht(e,.99)}}function G(e){return Math.round(e*100)/100}function kr(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 ig(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${ag(t.getUTCDay())}:${t.getUTCHours()}`:null}function og(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 ag(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function cg(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 ug(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:G((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function lg(){return 24*60*60*1e3}function Tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ac,Nc,Bc,ae,Q,ke,Ke,On,Ip,Ee=E(()=>{"use strict";Ce();se();ze();Ws();Ac="rsp-telemetry.spool.toonl",Nc="rsp-telemetry.spool.jsonl",Bc="rsp-telemetry.spool.corrections.toonl",ae="rsp_accounting_events_v1",Q="rsp_decisions_v1",ke="rsp_telemetry_invocations_v1",Ke="rsp_telemetry_degradations_v1",On="rsp_telemetry_index_v1",Ip=64*1024});var Hc=E(()=>{"use strict";zs()});var ht={};M(ht,{ResidentRspElisionStore:()=>Dn,ensureResidentServer:()=>ir,kickResidentServer:()=>or,pingResident:()=>lt,readResidentRegistry:()=>bn,removeResidentRegistry:()=>cr,residentRegistryStatus:()=>wn,resolveResidentPaths:()=>Ve,sweepResidentRegistry:()=>Va,warmResidentServer:()=>Wa,writeResidentRegistry:()=>ar});import{randomUUID as dg}from"node:crypto";function qc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Dn,Fe=E(()=>{"use strict";Hc();ur();Dn=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?qc(n)&&n.status==="expired"?n:!qc(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 ir(this.paths,this.config);let n=await Lt(this.paths,{...t,id:dg()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Nr={};M(Nr,{RSP_WRAPPER_CAPABILITIES:()=>In,formatCodexHookDecision:()=>Yc,formatHookDecision:()=>Kc,hookDecisionFromClaudePreExecJson:()=>hg,hookDecisionFromCodexPreExecJson:()=>yg,rewriteCommand:()=>Vc,rewriteTableFromCapabilities:()=>Wc,runClaudePreExecHook:()=>wg,runCodexPreExecHook:()=>bg});import{readFileSync as Cr}from"node:fs";import{existsSync as fg}from"node:fs";import{fileURLToPath as mg}from"node:url";function Wc(e){let t=new Map;for(let n of e)t.set(Lg(n.command),["rsp",...n.wrapper]);return t}function Vc(e){let t=Og(e);if(t)return t;let n=vg(e);if(!n)return Pr(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&au(r[0]))return Pr(e);let s=gg(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return Pr(e);let i=[...In].sort((c,u)=>u.command.length-c.command.length).find(c=>Tg(r,c.command));if(!i)return Pr(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=nu(n.redirectSuffix);return{kind:"rewrite",command:[...o.map($n),...a].join(" "),capabilityId:i.id}}function gg(e){let t=e.tokens.map(s=>s.text),n=t[0],r=nu(e.redirectSuffix);return n==="cat"&&t.length===2&&Or(t[1])?{kind:"rewrite",command:["rsp","cat",$n(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&Or(t[1])?{kind:"rewrite",command:["rsp","cat",`--${n}`,"10",$n(t[1]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Or(t[3])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[2],$n(t[3]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Or(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),$n(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function Or(e){return!!e&&!e.startsWith("-")}async function hg(e,t){return await zc(e,t)}async function yg(e,t){return await zc(e,t)}async function zc(e,t){return(await hi(e,t,"pre-exec")).decision}async function hi(e,t,n){let r=cu(e);if(!r.ok){let d={kind:"passthrough",reason:r.reason};return{decision:d,telemetryRoot:t.cwd,event:Cn({hook:n,command:"",decision:d,reason:r.reason})}}let s=r.payload,i=pe(s,["cwd"])||pe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??_g)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:gi(s),decision:d,reason:"disabled"})}}let a=gi(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=je(i,process.env).proxyEnabled?Dg(a):(t.rewrite??Vc)(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:Cn({hook:n,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:f})}}return await Sg(i,t.wakeResident??Rg),{decision:l,telemetryRoot:i,event:Cn({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Kc(e){return e.kind==="rewrite"?Qc(e.command):{stdout:"",status:0}}function Yc(e){return e.kind==="rewrite"?Qc(e.command):{stdout:"",status:0}}function Qc(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
49
- `,status:0}}async function wg(e){let t="";try{t=e?Cr(e,"utf8"):Cr(0,"utf8");let n=await hi(t,{cwd:process.cwd()},"claude-pre-exec");$r(n.telemetryRoot,n.event);let r=n.decision;Xc("claude-pre-exec",r);let s=Kc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return $r(process.cwd(),Zc("claude-pre-exec",t,n)),eu("claude-pre-exec",n),0}}async function bg(e){let t="";try{t=e?Cr(e,"utf8"):Cr(0,"utf8");let n=await hi(t,{cwd:process.cwd()},"codex-pre-exec");$r(n.telemetryRoot,n.event);let r=n.decision;Xc("codex-pre-exec",r);let s=Yc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return $r(process.cwd(),Zc("codex-pre-exec",t,n)),eu("codex-pre-exec",n),0}}function $r(e,t){Je(e,t).catch(()=>{})}function Cn(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:ou(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function Zc(e,t,n){let r=cu(t),s=r.ok?gi(r.payload):"";return{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:ou(s),decision:"failed-open",reason:"hook-exception",error:yi(n)}}function _g(e){return je(e,process.env).enabled}async function Rg(e){let t=je(e,process.env);if(!t.enabled||!xg(t))return;let n=Ve(e);await or(n,Eg(t))}async function Sg(e,t){try{await Promise.resolve(t(e))}catch(n){kg(n)}}function Xc(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
48
+ `))li(i)&&t.push(i)}catch{}}}return t}function Sr(e){return`legacy:${Cp("sha256").update(e).digest("hex").slice(0,24)}`}function qp(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 Fc(e){let{spool_id:t,...n}=e;return zt(JSON.stringify(n))}function Wp(e){return typeof e.spool_id=="string"&&Fc(e)!==null}function Vp(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 li(e){return Tr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}async function vr(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await Gc(e,s),o=(await vn(e,Z)).filter(R=>qt(R)>=s),a=i.filter(R=>P(R.event_type)!=="show"&&P(R.degradation_reason)===""),c=i.filter(R=>P(R.event_type)==="show"),u=i.filter(R=>P(R.degradation_reason)!==""),l=0,f=0,d=0,p=0,h=!1,m=new Map,g=new Map,w=[],y=0,T=0,x=0;for(let R of a){R.elided===!0&&l++;let $=Se(R.raw_bytes),Pe=Se(R.emitted_bytes),rt=Math.max(0,$-Pe),Tt=Vt(R,"raw"),b=Vt(R,"emitted"),v=Math.max(0,Tt.tokens-b.tokens);h||=(R.estimated===!0||Tt.estimated||b.estimated)&&v>0,f+=$,d+=Pe,p+=v;let st=pt(R).slice(0,10);st&&m.set(st,(m.get(st)??0)+v);let it=P(R.command)||"unknown",ue=g.get(it)??{command:it,invocations:0,bytes_saved:0,tokens_saved:0};ue.invocations++,ue.bytes_saved+=rt,ue.tokens_saved+=v,g.set(it,ue);let le=mt(R.wrapper_ms);le!=null&&w.push(le),y+=Se(R.store_open_count);let Ot=mt(R.store_elapsed_ms);Ot!=null&&(T+=Ot,x++)}let O=new Map,L=new Map,ce=[],he=null;for(let R of u){let $=P(R.degradation_reason)||P(R.reason)||"unknown",Pe=P(R.wrapper_family)||kr(P(R.command));O.set($,(O.get($)??0)+1),L.set(Pe,(L.get(Pe)??0)+1);let rt=pt(R);ce.push({timestamp:rt,family:Pe,command:P(R.command)||"unknown",reason:$,exit_code:mt(R.wrapper_exit_code),stderr_head:P(R.stderr_head)||null}),(!he||rt>he.timestamp)&&(he={timestamp:rt,reason:$,command:P(R.command)||"unknown"})}let V=a.length+u.length,Ge=c.filter(R=>R.hit===!0).length,z=qs(p,h),en=zp(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:p,tokens_saved_estimated:z.tokens_saved_estimated,token_estimate_range_pct:z.token_estimate_range_pct,tokens_saved_low:z.tokens_saved_low,tokens_saved_high:z.tokens_saved_high,dollars_saved_estimate_usd:z.dollars_saved_estimate_usd,dollars_saved_low_usd:z.dollars_saved_low_usd,dollars_saved_high_usd:z.dollars_saved_high_usd,pricing_model_family:z.pricing_model_family,pricing_input_usd_per_million_tokens:z.pricing_input_usd_per_million_tokens,pricing_note:z.pricing_note,daily_tokens_saved:[...m.entries()].sort(([R],[$])=>R.localeCompare($)).map(([R,$])=>({date:R,tokens_saved:$})),top_commands:[...g.values()].sort((R,$)=>$.bytes_saved-R.bytes_saved||$.tokens_saved-R.tokens_saved||R.command.localeCompare($.command))},health:{degradations:u.length,degradation_rate:V===0?0:u.length/V,show_total:c.length,show_hits:Ge,show_misses:Math.max(0,c.length-Ge),show_hit_rate:c.length===0?0:H(Ge/c.length),by_reason:[...O.entries()].sort((R,$)=>$[1]-R[1]||R[0].localeCompare($[0])).map(([R,$])=>({reason:R,count:$})),by_family:[...L.entries()].sort((R,$)=>$[1]-R[1]||R[0].localeCompare($[0])).map(([R,$])=>({family:R,count:$})),recent_failures:ce.sort((R,$)=>$.timestamp.localeCompare(R.timestamp)).slice(0,20),most_recent:he},latency:{wrapper_ms_p50:Ht(w,.5),wrapper_ms_p95:Ht(w,.95),store_open_count_sum:y,store_elapsed_ms_sum:H(T),store_elapsed_ms_avg:x===0?null:H(T/x)},decisions:en}}function zp(e){let t=0,n=0,r=0,s=0,i=new Map;for(let o of e){let a=P(o.decision);if(a==="contributed"?t++:a==="failed-open"?r++:n++,o.quota_free===!0&&(s+=Math.max(1,Se(o.saved_units))),a!=="contributed"){let c=P(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:H(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 mi(e,t,n=new Date){let s=(await vn(e,ae)).filter(i=>qt(i)<=n.getTime()||pt(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=pt(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:rg(s)}}async function pi(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 Gc(e,o),c=a.filter(b=>P(b.event_type)!=="show"&&P(b.event_type)!=="control_holdout"&&b.control_holdout!==!0&&P(b.degradation_reason)===""),u=a.filter(b=>P(b.event_type)==="control_holdout"||b.control_holdout===!0),l=a.filter(b=>P(b.event_type)==="show"),f=a.filter(b=>P(b.degradation_reason)!==""),d=[...c,...f].map(qt).filter(b=>Number.isFinite(b)&&b>0),p=d.length===0?null:Math.min(...d),h=p==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-p)/fg()))),m=[],g=new Map,w=new Map,y=new Map,T=new Map,x=new Map,O=new Map,L=0,ce=!1,he=0,V=null,Ge=0,z=0;for(let b of c){let v=pt(b),st=v.slice(0,10),it=v.slice(0,16),ue=kr(P(b.command)),le=Math.max(0,Vt(b,"raw").tokens-Vt(b,"emitted").tokens);L+=le,ce||=b.estimated===!0&&le>0;let Ot=Math.max(0,Se(b.raw_bytes)-Se(b.emitted_bytes)),os=mt(b.wrapper_ms);if(os!=null){m.push(os);let Bo=g.get(ue)??[];Bo.push(os),g.set(ue,Bo)}st&&w.set(st,(w.get(st)??0)+1),it&&y.set(it,(y.get(it)??0)+1);let as=ag(v);as&&T.set(as,(T.get(as)??0)+1);let cs=lg(v);cs&&x.set(cs,(x.get(cs)??0)+le);let Vn=O.get(ue)??{command_family:ue,invocations:0,tokens_saved:0,bytes_saved:0};Vn.invocations++,Vn.tokens_saved+=le,Vn.bytes_saved+=Ot,O.set(ue,Vn),b.elided===!0&&he++,(b.store_open_count!=null||b.store_elapsed_ms!=null)&&(Ge++,Se(b.store_open_count)>0&&z++),le>0&&(!V||le>V.tokens_saved||le===V.tokens_saved&&Ot>V.bytes_saved)&&(V={timestamp:v,command_family:ue,tokens_saved:le,bytes_saved:Ot})}let en=f.map(b=>({timestamp:pt(b),command_family:kr(P(b.command)),reason:P(b.degradation_reason)||P(b.reason)||"unknown"})).sort((b,v)=>b.timestamp.localeCompare(v.timestamp)),R=new Map;for(let b of en)R.set(b.reason,(R.get(b.reason)??0)+1);let $=Zp(en),Pe=Qp(l),rt=eg([...O.values()],Pe,$),Tt=[...y.entries()].sort((b,v)=>v[1]-b[1]||b[0].localeCompare(v[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:h,since:i,until:s,label:`window: ${r}d, data: ${h}d`,empty:c.length===0&&f.length===0,invocations:c.length,degradations:f.length},latency:{global:Oc(m),by_command_family:[...g.entries()].sort((b,v)=>v[1].length-b[1].length||b[0].localeCompare(v[0])).map(([b,v])=>({command_family:b,count:v.length,...Oc(v)}))},throughput:{requests_per_day:[...w.entries()].sort(([b],[v])=>b.localeCompare(v)).map(([b,v])=>({date:b,requests:v})),active_minute_avg:y.size===0?null:H([...y.values()].reduce((b,v)=>b+v,0)/y.size),peak_minute:Tt?{minute:Tt[0],requests:Tt[1]}:null,hour_weekday_heatmap:cg(T)},savings:{tokens:qs(L,ce),measured_control_holdout:Kp(c,u),weekly_tokens_saved:dg(x),elision_rate:c.length===0?0:H(he/c.length),top_commands_by_tokens_saved:[...O.values()].sort((b,v)=>v.tokens_saved-b.tokens_saved||v.bytes_saved-b.bytes_saved||b.command_family.localeCompare(v.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((b,v)=>v.invocations-b.invocations||v.tokens_saved-b.tokens_saved||b.command_family.localeCompare(v.command_family)).slice(0,10),single_biggest_elision:V},health:{degradation_timeline:en,degradations_by_reason:[...R.entries()].sort((b,v)=>v[1]-b[1]||b[0].localeCompare(v[0])).map(([b,v])=>({reason:b,count:v})),cold_boots:Ge===0?null:z,warm_hits:Ge===0?null:Math.max(0,Ge-z)},mining:{recovery_usage_by_family:Pe,degradation_clusters:$,threshold_tuning_suggestions:rt}}}async function Gc(e,t){let n=(await vn(e,ae)).filter(o=>qt(o)>=t),r=n.some(o=>P(o.event_type)!=="show"||P(o.degradation_reason)!==""),s=(await vn(e,ke)).filter(o=>qt(o)>=t).filter(o=>!r&&o.accounting_recorded!==!0).map(o=>({...o,event_type:P(o.event_type)||"invocation"})),i=(await vn(e,Ke)).filter(o=>qt(o)>=t).filter(o=>!r&&o.accounting_recorded!==!0).map(o=>({...o,event_type:"invocation",degradation_reason:P(o.reason)||"unknown"}));return[...n,...s,...i]}function Vt(e,t){let n=mt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=Se(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function Kp(e,t){let n=ng(t.map(a=>mt(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:n,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let r=e.map(Tc).filter(a=>a!=null),s=t.map(Tc).filter(a=>a!=null),i=r.length>0?r:s,o=i.length===0?null:H(tg(i));return{enabled:!0,holdout_share:H(n),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:Yp(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Tc(e){let t=Vt(e,"raw").tokens;if(t<=0)return null;let n=Vt(e,"emitted").tokens;return Math.max(0,t-n)/t}function Yp(e,t){if(e.length<=1)return{low:H(Math.max(0,t)),high:H(Math.min(1,t))};let n=e.reduce((s,i)=>s+(i-t)**2,0)/(e.length-1),r=1.96*Math.sqrt(n/e.length);return{low:H(Math.max(0,t-r)),high:H(Math.min(1,t+r))}}function Qp(e){let t=new Map;for(let n of e){let r=kr(P(n.recovered_command)||P(n.command)),s=t.get(r)??{command_family:r,show_total:0,show_hits:0,show_misses:0};s.show_total++,n.hit===!0?s.show_hits++:s.show_misses++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.show_total-n.show_total||n.command_family.localeCompare(r.command_family)).map(n=>({...n,show_hit_rate:n.show_total===0?0:H(n.show_hits/n.show_total)}))}function Zp(e){let t=new Map;for(let n of e){let r=`${n.command_family}\0${n.reason}`,s=t.get(r)??{command_family:n.command_family,reason:n.reason,count:0};s.count++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.count-n.count||n.command_family.localeCompare(r.command_family)||n.reason.localeCompare(r.reason)).map(n=>({...n,suggestion:Xp(n)}))}function Xp(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function eg(e,t,n){let r=[];for(let s of t.filter(i=>i.show_total>0))r.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of n.filter(i=>i.count>1))r.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(i=>i.invocations>0&&i.tokens_saved===0))r.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return r.slice(0,10)}function tg(e){return e.reduce((t,n)=>t+n,0)/e.length}function ng(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function rg(e){let t=ig();for(let n of e){if(P(n.event_type)==="show"||P(n.degradation_reason)!==""||n.elided!==!0)continue;let r=sg(n.storage_class)??ft(P(n.command));t[r].records+=1;let s=Se(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function sg(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function ig(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}async function vn(e,t){return(await e.kv(t).list({limit:1e4}).catch(r=>{if(r instanceof Error&&/\bnot found\b/i.test(r.message))return{items:[]};throw r})).items.map(r=>og(r.value)).filter(r=>Tr(r))}function og(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function qt(e){let t=Date.parse(pt(e));return Number.isFinite(t)?t:0}function pt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function Se(e){return mt(e)??0}function mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ht(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 H(n[r])}function Oc(e){return{wrapper_ms_p50:Ht(e,.5),wrapper_ms_p90:Ht(e,.9),wrapper_ms_p95:Ht(e,.95),wrapper_ms_p99:Ht(e,.99)}}function H(e){return Math.round(e*100)/100}function kr(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 ag(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${ug(t.getUTCDay())}:${t.getUTCHours()}`:null}function cg(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 ug(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function lg(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 dg(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:H((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function fg(){return 24*60*60*1e3}function Tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ac,Nc,Bc,ae,Z,ke,Ke,On,Np,Ee=E(()=>{"use strict";Ce();ne();ze();Ws();Ac="rsp-telemetry.spool.toonl",Nc="rsp-telemetry.spool.jsonl",Bc="rsp-telemetry.spool.corrections.toonl",ae="rsp_accounting_events_v1",Z="rsp_decisions_v1",ke="rsp_telemetry_invocations_v1",Ke="rsp_telemetry_degradations_v1",On="rsp_telemetry_index_v1",Np=64*1024});var Hc=E(()=>{"use strict";zs()});var ht={};M(ht,{ResidentRspElisionStore:()=>Dn,ensureResidentServer:()=>ir,kickResidentServer:()=>or,pingResident:()=>lt,readResidentRegistry:()=>bn,removeResidentRegistry:()=>cr,residentRegistryStatus:()=>wn,resolveResidentPaths:()=>Ve,sweepResidentRegistry:()=>Va,warmResidentServer:()=>Wa,writeResidentRegistry:()=>ar});import{randomUUID as mg}from"node:crypto";function qc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Dn,Fe=E(()=>{"use strict";Hc();ur();Dn=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?qc(n)&&n.status==="expired"?n:!qc(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 ir(this.paths,this.config);let n=await Lt(this.paths,{...t,id:mg()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Nr={};M(Nr,{RSP_WRAPPER_CAPABILITIES:()=>In,formatCodexHookDecision:()=>Yc,formatHookDecision:()=>Kc,hookDecisionFromClaudePreExecJson:()=>wg,hookDecisionFromCodexPreExecJson:()=>bg,rewriteCommand:()=>Vc,rewriteTableFromCapabilities:()=>Wc,runClaudePreExecHook:()=>_g,runCodexPreExecHook:()=>Rg});import{readFileSync as Cr}from"node:fs";import{existsSync as pg}from"node:fs";import{fileURLToPath as gg}from"node:url";function Wc(e){let t=new Map;for(let n of e)t.set(jg(n.command),["rsp",...n.wrapper]);return t}function Vc(e){let t=Dg(e);if(t)return t;let n=Og(e);if(!n)return Pr(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&au(r[0]))return Pr(e);let s=yg(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return Pr(e);let i=[...In].sort((c,u)=>u.command.length-c.command.length).find(c=>Pg(r,c.command));if(!i)return Pr(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=nu(n.redirectSuffix);return{kind:"rewrite",command:[...o.map($n),...a].join(" "),capabilityId:i.id}}function yg(e){let t=e.tokens.map(s=>s.text),n=t[0],r=nu(e.redirectSuffix);return n==="cat"&&t.length===2&&Or(t[1])?{kind:"rewrite",command:["rsp","cat",$n(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&Or(t[1])?{kind:"rewrite",command:["rsp","cat",`--${n}`,"10",$n(t[1]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Or(t[3])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[2],$n(t[3]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Or(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),$n(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function Or(e){return!!e&&!e.startsWith("-")}async function wg(e,t){return await zc(e,t)}async function bg(e,t){return await zc(e,t)}async function zc(e,t){return(await hi(e,t,"pre-exec")).decision}async function hi(e,t,n){let r=cu(e);if(!r.ok){let d={kind:"passthrough",reason:r.reason};return{decision:d,telemetryRoot:t.cwd,event:Cn({hook:n,command:"",decision:d,reason:r.reason})}}let s=r.payload,i=pe(s,["cwd"])||pe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Sg)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:gi(s),decision:d,reason:"disabled"})}}let a=gi(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=je(i,process.env).proxyEnabled?$g(a):(t.rewrite??Vc)(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:Cn({hook:n,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:f})}}return await Eg(i,t.wakeResident??kg),{decision:l,telemetryRoot:i,event:Cn({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Kc(e){return e.kind==="rewrite"?Qc(e.command):{stdout:"",status:0}}function Yc(e){return e.kind==="rewrite"?Qc(e.command):{stdout:"",status:0}}function Qc(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
49
+ `,status:0}}async function _g(e){let t="";try{t=e?Cr(e,"utf8"):Cr(0,"utf8");let n=await hi(t,{cwd:process.cwd()},"claude-pre-exec");$r(n.telemetryRoot,n.event);let r=n.decision;Xc("claude-pre-exec",r);let s=Kc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return $r(process.cwd(),Zc("claude-pre-exec",t,n)),eu("claude-pre-exec",n),0}}async function Rg(e){let t="";try{t=e?Cr(e,"utf8"):Cr(0,"utf8");let n=await hi(t,{cwd:process.cwd()},"codex-pre-exec");$r(n.telemetryRoot,n.event);let r=n.decision;Xc("codex-pre-exec",r);let s=Yc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return $r(process.cwd(),Zc("codex-pre-exec",t,n)),eu("codex-pre-exec",n),0}}function $r(e,t){Je(e,t).catch(()=>{})}function Cn(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:Z,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:ou(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function Zc(e,t,n){let r=cu(t),s=r.ok?gi(r.payload):"";return{collection:Z,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:ou(s),decision:"failed-open",reason:"hook-exception",error:yi(n)}}function Sg(e){return je(e,process.env).enabled}async function kg(e){let t=je(e,process.env);if(!t.enabled||!Tg(t))return;let n=Ve(e);await or(n,vg(t))}async function Eg(e,t){try{await Promise.resolve(t(e))}catch(n){xg(n)}}function Xc(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
50
50
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
51
51
  `)}}function eu(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${yi(t)}
52
- `)}function kg(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${yi(e)}
53
- `)}function yi(e){return e instanceof Error?e.name||"Error":typeof e}function Eg(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 xg(e){if(!e.storeUri.startsWith("file://"))return!0;try{return fg(mg(e.storeUri))}catch{return!1}}function gi(e){return pe(e,["tool_input","command"])||pe(e,["tool_input","cmd"])||pe(e,["tool_input","args","command"])||pe(e,["input","command"])||pe(e,["input","cmd"])||pe(e,["arguments","command"])||pe(e,["arguments","cmd"])||pe(e,["command"])||pe(e,["cmd"])}function vg(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=tu(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&au(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 tu(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 Tg(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function Og(e){let t=tu(e.trim()).map(n=>n.text);return Dr(t)?{kind:"passthrough",reason:pg}:null}function Dr(e){return e[0]==="gh"&&e.some(Pg)}function Pg(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function nu(e){return e.map(t=>t.text)}function $n(e){return/[^\w@%+=:,./-]/.test(e)?wi(e):e}function Dg(e){let t=Cg(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${wi(e.trim())}`,capabilityId:"proxy:universal"}}function Cg(e){let t=e.trim();if(!t)return"missing-command";if(su(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=Ar(Ir(t)[0]??"")[0];if(n==="rsp")return"opt-out";if(n&&ru.has(n))return"interactive"}function Pr(e){let t=e.trim();return $g(t)?{kind:"rewrite",command:`rsp exec -- ${wi(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function $g(e){return!(!e||!Ig(e)||!Ag(e)||su(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Ng(e,"rsp")||iu(e,ru)||Bg(e))}function Ig(e){return/&&|[;|]/.test(e)}function su(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 Ag(e){return Ir(e).some(t=>{let n=Ar(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 iu(e,t){return Ir(e).some(n=>{let r=Ar(n)[0];return r?t.has(r):!1})}function Ng(e,t){return iu(e,new Set([t]))}function Bg(e){return Ir(e).some(t=>{let n=Ar(t);return n[0]==="grep"&&n.includes("-q")})}function Ir(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Ar(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function wi(e){return`'${e.replace(/'/g,"'\\''")}'`}function ou(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 au(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Lg(e){return e.join("\0")}function cu(e){try{let t=JSON.parse(e);return uu(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function pe(e,t){let n=e;for(let r of t){if(!uu(n))return"";n=n[r]}return typeof n=="string"?n:""}function uu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var In,u0,pg,ru,An=E(()=>{"use strict";Re();Fe();Ee();In=[{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"]}],u0=Wc(In),pg="lossless-gh-json-jq";ru=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Si={};M(Si,{NORMALIZATION_ALLOWLIST:()=>hu,NORMALIZE_ANSI:()=>Lr,NORMALIZE_BLANK_LINES:()=>Ur,NORMALIZE_CR_PROGRESS:()=>Mr,NORMALIZE_JSON_TOON:()=>gu,NORMALIZE_TRAILING_WHITESPACE:()=>jr,crushJsonArrayItems:()=>Nn,formatCodexNormalizeDecision:()=>Ru,formatNormalizeDecision:()=>_u,hookDecisionFromClaudePostExecJson:()=>yu,hookDecisionFromCodexPostExecJson:()=>wu,normalizeOutput:()=>Jr,renderGenericJsonLane:()=>_i,runClaudePostExecHook:()=>Ug,runCodexPostExecHook:()=>Jg,transcodeJsonToToon:()=>pu});import{readFileSync as Br}from"node:fs";function pu(e,t){let n=t?.encode??$,r=t?.decode??re,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 bi(i,a)?o.trimEnd():e}async function _i(e,t={}){let n=qg(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:$(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,i=mu(t.minTokens,Mg),o=mu(t.maxItems,jg);if(!(s>o&&Yg(e)>=i))return{output:$(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Nn)(r,o)}catch(m){return{output:$(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:Qg(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 p=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,h=$(l).trimEnd();return{output:[f,p,h].filter(Boolean).join(`
54
- `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Nn(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=Wg(e),s=new Set;r&&e.forEach((a,c)=>{Ri(a)!==r&&s.add(c)});let i=Vg(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 Jr(e){let t=e;for(let n of hu)t=n.apply(t);return t}async function yu(e,t){return await bu(e,t)}async function wu(e,t){return await bu(e,t)}async function bu(e,t){let n=Hg(e),r=Zg(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Gg)(r))return{kind:"passthrough",reason:"disabled"};let i=Xg(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??Jr)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function _u(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Ru(e){return{stdout:"",status:0}}async function Ug(e){let t=e?Br(e,"utf8"):Br(0,"utf8"),n=await yu(t,{cwd:process.cwd()}),r=_u(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function Jg(e){let t=e?Br(e,"utf8"):Br(0,"utf8"),n=await wu(t,{cwd:process.cwd()}),r=Ru(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Fg(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&&lu(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&lu(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function lu(e){return e>=32&&e<=63}function Gg(e){return je(e,process.env).enabled}function Hg(e){try{let t=JSON.parse(e);return Kt(t)?t:{}}catch{return{}}}function qg(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Kt(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 Wg(e){let t=new Map;for(let s of e){let i=Ri(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 Ri(e){return Array.isArray(e)?"array":Kt(e)?Object.keys(e).sort().map(t=>`${t}:${du(e[t])}`).join("|"):du(e)}function Vg(e,t){let n=new Set,r=new Map;e.forEach((s,i)=>{if(!(t&&Ri(s)!==t))for(let[o,a]of Su(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 zg(s))n.add(i);for(let i of Kg(s))n.add(i)}return n}function zg(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=fu(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),i=fu(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 Kg(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 Su(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Kt(e)?Object.entries(e).flatMap(([n,r])=>Su(r,t?`${t}.${n}`:n)):[]}function du(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function fu(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 Yg(e){return Math.ceil(e.length/4)}function mu(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Qg(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 Zg(e,t){let n=e;for(let r of t){if(!Kt(n))return"";n=n[r]}return typeof n=="string"?n:""}function Xg(e,t){let n=e[t];return Kt(n)?n:null}function Kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function bi(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)=>bi(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)&&bi(n[o],r[o]))}var Lr,Mr,jr,Ur,gu,Mg,jg,hu,Bn=E(()=>{"use strict";se();Re();Lr={id:"ansi",apply:Fg},Mr={id:"cr-progress",apply:e=>e.split(`
52
+ `)}function xg(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${yi(e)}
53
+ `)}function yi(e){return e instanceof Error?e.name||"Error":typeof e}function vg(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 Tg(e){if(!e.storeUri.startsWith("file://"))return!0;try{return pg(gg(e.storeUri))}catch{return!1}}function gi(e){return pe(e,["tool_input","command"])||pe(e,["tool_input","cmd"])||pe(e,["tool_input","args","command"])||pe(e,["input","command"])||pe(e,["input","cmd"])||pe(e,["arguments","command"])||pe(e,["arguments","cmd"])||pe(e,["command"])||pe(e,["cmd"])}function Og(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=tu(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&au(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 tu(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 Pg(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function Dg(e){let t=tu(e.trim()).map(n=>n.text);return Dr(t)?{kind:"passthrough",reason:hg}:null}function Dr(e){return e[0]==="gh"&&e.some(Cg)}function Cg(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function nu(e){return e.map(t=>t.text)}function $n(e){return/[^\w@%+=:,./-]/.test(e)?wi(e):e}function $g(e){let t=Ig(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${wi(e.trim())}`,capabilityId:"proxy:universal"}}function Ig(e){let t=e.trim();if(!t)return"missing-command";if(su(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=Ar(Ir(t)[0]??"")[0];if(n==="rsp")return"opt-out";if(n&&ru.has(n))return"interactive"}function Pr(e){let t=e.trim();return Ag(t)?{kind:"rewrite",command:`rsp exec -- ${wi(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Ag(e){return!(!e||!Ng(e)||!Bg(e)||su(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Lg(e,"rsp")||iu(e,ru)||Mg(e))}function Ng(e){return/&&|[;|]/.test(e)}function su(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 Bg(e){return Ir(e).some(t=>{let n=Ar(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 iu(e,t){return Ir(e).some(n=>{let r=Ar(n)[0];return r?t.has(r):!1})}function Lg(e,t){return iu(e,new Set([t]))}function Mg(e){return Ir(e).some(t=>{let n=Ar(t);return n[0]==="grep"&&n.includes("-q")})}function Ir(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Ar(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function wi(e){return`'${e.replace(/'/g,"'\\''")}'`}function ou(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 au(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function jg(e){return e.join("\0")}function cu(e){try{let t=JSON.parse(e);return uu(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function pe(e,t){let n=e;for(let r of t){if(!uu(n))return"";n=n[r]}return typeof n=="string"?n:""}function uu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var In,m0,hg,ru,An=E(()=>{"use strict";Re();Fe();Ee();In=[{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"]}],m0=Wc(In),hg="lossless-gh-json-jq";ru=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var Si={};M(Si,{NORMALIZATION_ALLOWLIST:()=>hu,NORMALIZE_ANSI:()=>Lr,NORMALIZE_BLANK_LINES:()=>Ur,NORMALIZE_CR_PROGRESS:()=>Mr,NORMALIZE_JSON_TOON:()=>gu,NORMALIZE_TRAILING_WHITESPACE:()=>jr,crushJsonArrayItems:()=>Nn,formatCodexNormalizeDecision:()=>Ru,formatNormalizeDecision:()=>_u,hookDecisionFromClaudePostExecJson:()=>yu,hookDecisionFromCodexPostExecJson:()=>wu,normalizeOutput:()=>Jr,renderGenericJsonLane:()=>_i,runClaudePostExecHook:()=>Fg,runCodexPostExecHook:()=>Gg,transcodeJsonToToon:()=>pu});import{readFileSync as Br}from"node:fs";function pu(e,t){let n=t?.encode??D,r=t?.decode??Y,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 bi(i,a)?o.trimEnd():e}async function _i(e,t={}){let n=Vg(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=mu(t.minTokens,Ug),o=mu(t.maxItems,Jg);if(!(s>o&&Zg(e)>=i))return{output:D(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Nn)(r,o)}catch(m){return{output:D(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:Xg(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 p=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,h=D(l).trimEnd();return{output:[f,p,h].filter(Boolean).join(`
54
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Nn(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=zg(e),s=new Set;r&&e.forEach((a,c)=>{Ri(a)!==r&&s.add(c)});let i=Kg(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 Jr(e){let t=e;for(let n of hu)t=n.apply(t);return t}async function yu(e,t){return await bu(e,t)}async function wu(e,t){return await bu(e,t)}async function bu(e,t){let n=Wg(e),r=eh(n,["cwd"])||t.cwd;if(!await(t.isEnabled??qg)(r))return{kind:"passthrough",reason:"disabled"};let i=th(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??Jr)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function _u(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Ru(e){return{stdout:"",status:0}}async function Fg(e){let t=e?Br(e,"utf8"):Br(0,"utf8"),n=await yu(t,{cwd:process.cwd()}),r=_u(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function Gg(e){let t=e?Br(e,"utf8"):Br(0,"utf8"),n=await wu(t,{cwd:process.cwd()}),r=Ru(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Hg(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&&lu(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&lu(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function lu(e){return e>=32&&e<=63}function qg(e){return je(e,process.env).enabled}function Wg(e){try{let t=JSON.parse(e);return Kt(t)?t:{}}catch{return{}}}function Vg(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Kt(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 zg(e){let t=new Map;for(let s of e){let i=Ri(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 Ri(e){return Array.isArray(e)?"array":Kt(e)?Object.keys(e).sort().map(t=>`${t}:${du(e[t])}`).join("|"):du(e)}function Kg(e,t){let n=new Set,r=new Map;e.forEach((s,i)=>{if(!(t&&Ri(s)!==t))for(let[o,a]of Su(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 Yg(s))n.add(i);for(let i of Qg(s))n.add(i)}return n}function Yg(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=fu(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),i=fu(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 Qg(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 Su(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Kt(e)?Object.entries(e).flatMap(([n,r])=>Su(r,t?`${t}.${n}`:n)):[]}function du(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function fu(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 Zg(e){return Math.ceil(e.length/4)}function mu(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Xg(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 eh(e,t){let n=e;for(let r of t){if(!Kt(n))return"";n=n[r]}return typeof n=="string"?n:""}function th(e,t){let n=e[t];return Kt(n)?n:null}function Kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function bi(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)=>bi(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)&&bi(n[o],r[o]))}var Lr,Mr,jr,Ur,gu,Ug,Jg,hu,Bn=E(()=>{"use strict";ne();Re();Lr={id:"ansi",apply:Hg},Mr={id:"cr-progress",apply:e=>e.split(`
55
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(`
56
56
  `)},jr={id:"trailing-whitespace",apply:e=>e.split(`
57
57
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
58
58
  `)},Ur={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
59
59
 
60
- `)};gu={id:"json-to-toon",apply:e=>pu(e)},Mg=200,jg=15;hu=[Lr,Mr,jr,Ur,gu]});var Pu={};M(Pu,{REPO_STORE_PATH:()=>Ei,mergeRspBlock:()=>vu,provisionRspRepoStore:()=>uh});import{constants as eh}from"node:fs";import{access as th,copyFile as nh,mkdir as ku,readFile as rh,rename as sh,writeFile as Eu}from"node:fs/promises";import{dirname as ih,join as Ln,resolve as oh}from"node:path";async function uh(e,t={}){let n=oh(e),r=Ln(n,".red"),s=Ln(r,"config.yaml"),i=Ln(n,Ei);await ku(r,{recursive:!0}),await ku(ih(i),{recursive:!0});let o="";try{o=await rh(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=vu(o,{enabled:!0,ttlDays:t.ttlDays??Be,ephemeralTtlHours:t.ephemeralTtlHours??Le,byteBudget:t.byteBudget??Me,heavyGitByteThreshold:t.heavyGitByteThreshold??Ne}),c=a!==o;c&&await Eu(s,a,"utf8");let u=!await ki(i),l=!1,f=!1;if(u){let p=Ln(n,ah),h=Ln(n,ch);if(await ki(p))await sh(p,i),f=!0;else if(await ki(h))await nh(h,i),l=!0;else{let{RspElisionStore:m}=await Promise.resolve().then(()=>(ze(),Gt)),g=process.env.REDDB_BIN;try{await(await m.open({uri:`file://${i}`,ttlDays:t.ttlDays??Be,ephemeralTtlHours:t.ephemeralTtlHours??Le,byteBudget:t.byteBudget??Me,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=lh(a,Ei);return d!==a&&await Eu(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function vu(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Fr(t.ttlDays,Be)}`,` ephemeralTtlHours: ${Fr(t.ephemeralTtlHours,Le)}`,` byteBudget: ${Fr(t.byteBudget,Me)}`,` heavyGitByteThreshold: ${Fr(t.heavyGitByteThreshold,Ne)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
60
+ `)};gu={id:"json-to-toon",apply:e=>pu(e)},Ug=200,Jg=15;hu=[Lr,Mr,jr,Ur,gu]});var Pu={};M(Pu,{REPO_STORE_PATH:()=>Ei,mergeRspBlock:()=>vu,provisionRspRepoStore:()=>dh});import{constants as nh}from"node:fs";import{access as rh,copyFile as sh,mkdir as ku,readFile as ih,rename as oh,writeFile as Eu}from"node:fs/promises";import{dirname as ah,join as Ln,resolve as ch}from"node:path";async function dh(e,t={}){let n=ch(e),r=Ln(n,".red"),s=Ln(r,"config.yaml"),i=Ln(n,Ei);await ku(r,{recursive:!0}),await ku(ah(i),{recursive:!0});let o="";try{o=await ih(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=vu(o,{enabled:!0,ttlDays:t.ttlDays??Be,ephemeralTtlHours:t.ephemeralTtlHours??Le,byteBudget:t.byteBudget??Me,heavyGitByteThreshold:t.heavyGitByteThreshold??Ne}),c=a!==o;c&&await Eu(s,a,"utf8");let u=!await ki(i),l=!1,f=!1;if(u){let p=Ln(n,uh),h=Ln(n,lh);if(await ki(p))await oh(p,i),f=!0;else if(await ki(h))await sh(h,i),l=!0;else{let{RspElisionStore:m}=await Promise.resolve().then(()=>(ze(),Gt)),g=process.env.REDDB_BIN;try{await(await m.open({uri:`file://${i}`,ttlDays:t.ttlDays??Be,ephemeralTtlHours:t.ephemeralTtlHours??Le,byteBudget:t.byteBudget??Me,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=fh(a,Ei);return d!==a&&await Eu(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function vu(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Fr(t.ttlDays,Be)}`,` ephemeralTtlHours: ${Fr(t.ephemeralTtlHours,Le)}`,` byteBudget: ${Fr(t.byteBudget,Me)}`,` heavyGitByteThreshold: ${Fr(t.heavyGitByteThreshold,Ne)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
61
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(`
62
62
  `)}
63
63
  `}let i=xi(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
64
64
  `)}
65
- `}function Tu(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Ti(r)&&vi(r)===0&&Ou(r)===t)return n}return-1}function xi(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(Ti(e[s])&&vi(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function vi(e){return(e.match(/^ */)?.[0]??"").length}function Ti(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Ou(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Fr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function lh(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
65
+ `}function Tu(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Ti(r)&&vi(r)===0&&Ou(r)===t)return n}return-1}function xi(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(Ti(e[s])&&vi(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function vi(e){return(e.match(/^ */)?.[0]??"").length}function Ti(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Ou(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Fr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function fh(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
66
66
  `),r=Tu(n,"plugins");if(r===-1)return e;let s=xi(n,r,0),i=xu(n,"memory",r+1,s,2);if(i===-1)return e;let o=xi(n,i,2),a=[...n],c=xu(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
67
67
  `)}
68
- `}function xu(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(Ti(o)&&vi(o)===s&&Ou(o)===t)return i}return-1}async function ki(e){try{return await th(e,eh.F_OK),!0}catch{return!1}}var Ei,ah,ch,Du=E(()=>{"use strict";Ce();Re();Ei=Zs,ah=oa,ch=".red/memory/graph.rdb"});var Nu={};M(Nu,{runRspMcpServer:()=>fh});import{createInterface as dh}from"node:readline";async function fh(){let e=je(process.cwd(),process.env),t=dh({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 mh(r,e);Iu({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Iu({jsonrpc:"2.0",id:typeof Au(n)?.id>"u"?null:Au(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function mh(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:$u(t)}]};if(!t.enabled)return{content:[{type:"text",text:$u(t)}],isError:!0};let r=Rh(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:yt({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:yt({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:yt({tool:"rsp_show",handle:s,found:!0,bytes:i.original.length,text:i.original.toString("utf8")})}]}:{content:[{type:"text",text:yt(ph(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await gh(n.arguments,r)}]}}return{}}function yt(e){return`${J(e)}
69
- `}function ph(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function gh(e,t){let n=hh(e?.payload),r=yh(e?.level),s=await _i(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return bh(s.output);let i=Jr(n);if(r==="brief"&&Buffer.byteLength(i)<=2*1024)return yt({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 wh(i,o.length,a,r)}function hh(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function yh(e){return e==="terse"?"terse":"brief"}function wh(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=Cu(i.subarray(0,o)),c=Cu(i.subarray(Math.max(0,i.length-o)));return yt({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:_h(i),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function bh(e){return e.endsWith(`
68
+ `}function xu(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(Ti(o)&&vi(o)===s&&Ou(o)===t)return i}return-1}async function ki(e){try{return await rh(e,nh.F_OK),!0}catch{return!1}}var Ei,uh,lh,Du=E(()=>{"use strict";Ce();Re();Ei=Zs,uh=oa,lh=".red/memory/graph.rdb"});var Nu={};M(Nu,{runRspMcpServer:()=>ph});import{createInterface as mh}from"node:readline";async function ph(){let e=je(process.cwd(),process.env),t=mh({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 gh(r,e);Iu({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Iu({jsonrpc:"2.0",id:typeof Au(n)?.id>"u"?null:Au(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function gh(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:$u(t)}]};if(!t.enabled)return{content:[{type:"text",text:$u(t)}],isError:!0};let r=kh(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:yt({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:yt({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:yt({tool:"rsp_show",handle:s,found:!0,bytes:i.original.length,text:i.original.toString("utf8")})}]}:{content:[{type:"text",text:yt(hh(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await yh(n.arguments,r)}]}}return{}}function yt(e){return`${F(e)}
69
+ `}function hh(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function yh(e,t){let n=wh(e?.payload),r=bh(e?.level),s=await _i(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return Rh(s.output);let i=Jr(n);if(r==="brief"&&Buffer.byteLength(i)<=2*1024)return yt({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 _h(i,o.length,a,r)}function wh(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function bh(e){return e==="terse"?"terse":"brief"}function _h(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=Cu(i.subarray(0,o)),c=Cu(i.subarray(Math.max(0,i.length-o)));return yt({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:Sh(i),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function Rh(e){return e.endsWith(`
70
70
  `)?e:`${e}
71
- `}function Cu(e){return e.toString("utf8").replace(/�$/g,"")}function _h(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 Rh(e){return new Dn(Ve(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 $u(e){return yt({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 Iu(e){process.stdout.write(`${JSON.stringify(e)}
72
- `)}function Au(e){try{return JSON.parse(e)}catch{return null}}var Bu=E(()=>{"use strict";pn();Re();Bn();Fe()});var ju={};M(ju,{readGhConditionalJson:()=>Z});import{spawn as Sh}from"node:child_process";import{createHash as kh,randomUUID as Eh}from"node:crypto";import{mkdir as xh,readFile as vh,rename as Th,writeFile as Oh}from"node:fs/promises";import{dirname as Ph,join as Dh}from"node:path";async function Z(e){let t=e.cwd??process.cwd(),n=e.telemetryRoot??t,r=$h(e.path,e.params),s=Ih(r),i=await Bh(n),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[f,d]of Lu(e.params))a.push("-f",`${f}=${String(d)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await Ah(a,t,e.env),u=Nh(c.stdout);if(u.statusCode===304&&!!o)return await Oi(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 Lh(n,i)),await Oi(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 Oi(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function Lu(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function $h(e,t){return JSON.stringify({method:"GET",path:e,params:Lu(t)})}function Ih(e){return kh("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Ah(e,t,n){return await new Promise(r=>{let s=Sh("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 Nh(e){let t=e.replace(/\r\n/g,`
71
+ `}function Cu(e){return e.toString("utf8").replace(/�$/g,"")}function Sh(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 kh(e){return new Dn(Ve(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 $u(e){return yt({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 Iu(e){process.stdout.write(`${JSON.stringify(e)}
72
+ `)}function Au(e){try{return JSON.parse(e)}catch{return null}}var Bu=E(()=>{"use strict";pn();Re();Bn();Fe()});var Uu={};M(Uu,{readGhConditionalJson:()=>X});import{spawn as Eh}from"node:child_process";import{createHash as xh,randomUUID as vh}from"node:crypto";import{mkdir as Th,readFile as Oh,rename as Ph,writeFile as Dh}from"node:fs/promises";import{dirname as Ch,join as Lu}from"node:path";async function X(e){let t=e.cwd??process.cwd(),n=e.telemetryRoot??t,r=Ah(e.path,e.params),s=Nh(r),i=await Mh(n),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[f,d]of Mu(e.params))a.push("-f",`${f}=${String(d)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await Bh(a,t,e.env),u=Lh(c.stdout);if(u.statusCode===304&&!!o)return await Oi(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 jh(n,i)),await Oi(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 Oi(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function Mu(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function Ah(e,t){return JSON.stringify({method:"GET",path:e,params:Mu(t)})}function Nh(e){return xh("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Bh(e,t,n){return await new Promise(r=>{let s=Eh("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 Lh(e){let t=e.replace(/\r\n/g,`
73
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(`
74
74
 
75
75
  `,i),a=o>=0?t.slice(i,o):t.slice(i),c=new Map;for(let u of a.split(`
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 Bh(e){try{let t=JSON.parse(await vh(Mu(e),"utf8"));if(Mh(t))return t}catch{}return{version:1,entries:{}}}async function Lh(e,t){let n=Mu(e);await xh(Ph(n),{recursive:!0});let r=`${n}.${process.pid}.${Date.now()}.tmp`;await Oh(r,`${JSON.stringify(t)}
77
- `,{encoding:"utf8",mode:384}),await Th(r,n)}function Mu(e){return Dh(z(e),Ch)}async function Oi(e,t,n){await Je(e,{collection:Q,id:Eh(),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 Mh(e){return Pi(e)&&e.version===1&&Pi(e.entries)&&Object.values(e.entries).every(jh)}function jh(e){return Pi(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Pi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ch,Gr=E(()=>{"use strict";Ce();Ee();Ch="gh-etag-cache.json"});var Mi={};M(Mi,{listWaits:()=>Hu,renderWaitHelp:()=>Ai,runWait:()=>Wh});import{spawn as Bi}from"node:child_process";import{existsSync as Ii}from"node:fs";import{mkdir as Uh,readdir as Jh,readFile as Fh,rm as Gu,writeFile as Gh}from"node:fs/promises";import{join as Un,resolve as Di}from"node:path";import{randomUUID as Hh}from"node:crypto";async function Wh(e,t=process.cwd()){let n=zh(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Ai()),0;if(n.kind==="ls")return process.stdout.write(`${J({waits:await Hu(t)})}
78
- `),0;if(!Vh(n.kind))return process.stdout.write(Ai()),2;let r=n.kind,s={id:Hh(),target:cy(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:qh[n.kind],status:"running"},i=Un(await Ni(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await Uh(await Ni(t),{recursive:!0}),await qu(i,s),o=await Kh({...n,kind:r},t,i,s),process.stdout.write(`${J(ay(r,s,o))}
79
- `),await oy(n.options),o.exitCode}finally{await Gu(i,{force:!0})}}function Vh(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Ai(){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 zh(e){let t=e[1],n={timeoutMs:Uu.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=Uu[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=Wu(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=dy(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 Kh(e,t,n,r){switch(e.kind){case"cmd":return await Yh(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await Ci(Qh(e.target??"",t,{emptyChecksGraceMs:Fu("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,Fu("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await Ci(()=>Xh(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await Ci(()=>ty(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function Yh(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=Bi(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),jn(r,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${Vu(t)}`})},t);c.once("error",l=>{clearTimeout(u),jn(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;jn(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 Ci(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 jn(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 py(Math.min(c,Math.max(0,i-Date.now())))}return await jn(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Vu(t)}`}}function Qh(e,t,n){let r=Date.now();return()=>Zh(e,t,n,r)}async function Zh(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await qr(["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=Li(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(uy),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(i.state)!=="OPEN")return wt("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return wt("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}}:wt("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}}:wt("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function Xh(e,t){let n=e.target??(e.latest&&e.branch?await ey(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await qr(["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=Li(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"?wt("success",`run ${n} succeeded`,Ju(s)):wt("failure",`run ${n} concluded ${o||"unknown"}`,Ju(s))}async function ey(e,t){let n=await qr(["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 bt(s)&&s.databaseId!=null?String(s.databaseId):""}async function ty(e,t,n){let r=await qr(["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(bt):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||fy(e,c))&&u>=t});return o?wt("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 qr(e,t){let n=await ny(e,t);return n||await new Promise(r=>{let s=Bi("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 ny(e,t){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await ry(e[2],t);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await Z({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let r=Yt(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Mn(r,"database_id")||Mn(r,"id"),status:H(r,"status").toUpperCase(),conclusion:H(r,"conclusion").toUpperCase(),workflowName:H(r,"workflow_name")||H(r,"name"),headBranch:H(r,"head_branch"),url:H(r,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=$i(e,"--branch"),r=$i(e,"--limit")??"20",s=await Z({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=Hr(Yt(JSON.parse(s.stdout)).workflow_runs).map(o=>({databaseId:Mn(o,"database_id")||Mn(o,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:s.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=$i(e,"--limit")??"20",r=await Z({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=Hr(JSON.parse(r.stdout)).map(i=>({tagName:H(i,"tag_name"),publishedAt:H(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(s),stderr:r.stderr}}return null}async function ry(e,t){let n=await Z({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,command:`gh pr view ${e}`});if(n.status!==0)return n;let r=Yt(JSON.parse(n.stdout));if(Array.isArray(r.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let s=H(Yt(r.head),"sha"),[i,o]=s?await Promise.all([Z({path:`repos/{owner}/{repo}/commits/${s}/status`,cwd:t,command:`gh pr view ${e} status`}),Z({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?Hr(Yt(JSON.parse(i.stdout)).statuses):[],c=o.status===0?Hr(Yt(JSON.parse(o.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,o.stderr].filter(Boolean).join(`
81
- `),stdout:JSON.stringify({number:Mn(r,"number"),state:H(r,"state").toUpperCase(),mergeable:sy(r),statusCheckRollup:[...a.map(u=>({conclusion:H(u,"state").toUpperCase()})),...c.map(u=>({status:H(u,"status").toUpperCase(),conclusion:H(u,"conclusion").toUpperCase()}))],url:H(r,"html_url")})}}function sy(e){let t=H(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}async function Hu(e){let t=await Ni(e);if(!Ii(t))return[];let n=await Jh(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=Un(t,s),o=ly(await Fh(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!my(a)){await Gu(i,{force:!0});continue}r.push(o)}return r}async function Ni(e){return Un(await iy(e),".red","tmp","waits")}async function iy(e){let t=Di(e);for(;;){if(Ii(Un(t,".red"))||Ii(Un(t,".git")))return t;let n=Di(t,"..");if(n===t)return Di(e);t=n}}async function jn(e,t,n){await qu(e,{...t,status:n}).catch(()=>{})}async function qu(e,t){await Gh(e,`${J(t)}
82
- `,"utf8")}async function oy(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=Bi(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function ay(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 wt(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function cy(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 uy(e){let t=bt(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 Ju(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 Li(e){let t=JSON.parse(e);if(!bt(t))throw new Error("expected JSON object");return t}function ly(e){let t=e.trim();if(!t)return{};try{return Li(t)}catch{let n=re(t);if(!bt(n))throw new Error("expected structured object");return n}}function bt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Yt(e){return bt(e)?e:{}}function Hr(e){return Array.isArray(e)?e.filter(bt):[]}function H(e,t){let n=e[t];return typeof n=="string"?n:""}function Mn(e,t){let n=e[t];return typeof n=="number"?n:0}function $i(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function Wu(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 Fu(e,t){let n=process.env[e];if(!n)return t;try{return Wu(n)}catch{return t}}function dy(e){return e.startsWith("SIG")?e:`SIG${e}`}function Vu(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function fy(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function my(e){try{return process.kill(e,0),!0}catch{return!1}}async function py(e){await new Promise(t=>setTimeout(t,e))}var Uu,qh,ji=E(()=>{"use strict";se();pn();Gr();Uu={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},qh={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Ku={};M(Ku,{renderShellInit:()=>gy});function gy(e,t=In){if(e==="fish")return hy(t);if(e==="bash"||e==="zsh")return yy(e,t);throw new Error(`unsupported shell: ${e}`)}function hy(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(Vr))].map(n=>` abbr --add --position command -- ${n} '${Ry(`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 yy(e,t){let n=by(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Wr("git",n.get("git")??[]),...Wr("gh",n.get("gh")??[]),...Wr("vitest",n.get("vitest")??[]),...Wr("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 Wr(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(Vr),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(Vr)),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=>zu(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of wy(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${_y(u)}' ]`).join(" && ")).join(" || ");s.push(` ${zu(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function wy(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 by(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Vr(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function Vr(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function zu(e){return e.replace(/[\\|)&;]/g,"\\$&")}function _y(e){return e.replace(/'/g,"'\\''")}function Ry(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Yu=E(()=>{"use strict";An()});function Ui(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"&&Sy(t.chosenOption)&&ky(t.outcome)&&Ey(t.cost)}function Sy(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function ky(e){return e==="success"||e==="failure"||e==="escalated"}function Ey(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 Qu=E(()=>{});import{createHash as xy}from"node:crypto";function ul(e,t){return new Fi(e,t)}function Zu(e){let t=Number(e.red_entity_id??e.rid),n=Gi(e.properties??e.PROPERTIES),r=ll(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 Xu(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=dl(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:Gi(e.properties??e.PROPERTIES)}}function Oy(e){let t=Number(e.red_entity_id??e.rid),n=Gi(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Ui(n)?null:{rid:t,event:n}}function Gi(e){return e==null?{}:typeof e=="string"?JSON.parse(e):zr(e)?e:{}}function ll(e){let t=e==="contact"?"person":e;if(vy.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function dl(e){if(Ty.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Py(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function el(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Rt(e){return zr(e)?e:{}}function tl(e,t){return Rt(e)[t]}function nl(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function rl(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function sl(e){let t=Rt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function X(e){return typeof e=="string"&&e.length>0?e:void 0}function zr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ji(e){return e!=null}function Dy(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Cy(e){return xy("sha256").update(JSON.stringify(e)).digest("hex")}function $y(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function il(e){return`artifact-hash:${e}`}function ol(e,t,n){return`connection:${e}:${t}:${n}`}function al(){return"model-tier-bandit:v1"}function Iy(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function cl(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function fl(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+cl(n,a)*3+cl(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 Ay(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=ml({...fl(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return _t(s)}function ml(e){return{...e,lexical:_t(e.lexical),tags:_t(e.tags),kind:_t(e.kind),connections:_t(e.connections),vector:_t(e.vector),total:_t(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function _t(e){return Math.round(e*1e3)/1e3}function Ny(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 By(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 Ly(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var xe,vy,Ty,Fi,pl=E(()=>{"use strict";Qu();xe={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},vy=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Ty=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Fi=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(Rt(n));if(t==="getArtifact")return await this.getArtifact(tl(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Rt(n);return await this.search(nl(r,"query"),rl(r,"limit")??10,sl(r.options))}if(t==="think"){let r=Rt(n);return await this.think(nl(r,"query"),rl(r,"limit")??8,sl(r.options))}if(t==="link")return await this.link(Rt(n));if(t==="backlinks")return await this.backlinks(tl(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Rt(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 ${xe.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:Ly(t.map(r=>r.kind))}}async capture(t){let n=X(t.title)||"Untitled artifact",r=X(t.content);if(!r)throw new Error("brain capture requires content");let s=ll(X(t.kind)||"note"),i=Dy(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Cy([s,n,r,i,X(t.sourcePath),X(t.sourceSession)]),c=await this.kv().get(il(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${$y(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:X(t.sourceAgent),source_runner:X(t.sourceRunner),source_session:X(t.sourceSession),source_path:X(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:zr(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${xe.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let p=Zu(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(il(a),p.rid),await this.materializeTagConnections(p),p}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 ${xe.artifacts}`)).rows.map(Zu).filter(Ji)}async search(t,n,r={}){let s=Iy(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=fl(u,s),f=ml({...l,connections:Ay(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:Ny(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 By(t,s)}async link(t){let n=await this.getArtifact(el(t.from)),r=await this.getArtifact(el(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=dl(X(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:X(t.reason),confidence:X(t.confidence)||"explicit",created_at:Date.now(),metadata:zr(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${xe.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=Xu(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(ol(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 ${xe.connections}`)).rows.map(Xu).filter(Ji)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=Py(X(t.interval)||"day"),s=X(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(!Ui(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${xe.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${xe.outcomeEvents}`)).rows.map(Oy).filter(Ji).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(al());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(al(),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(ol(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(xe.kv)}}});var Tl={};M(Tl,{runResidentServer:()=>qy});import{randomUUID as Qt}from"node:crypto";import{execFileSync as My,spawn as jy}from"node:child_process";import{existsSync as Uy}from"node:fs";import{mkdir as Rl,rename as Jy,rm as gl,writeFile as Sl}from"node:fs/promises";import{createServer as Fy}from"node:net";import{dirname as Vi,join as Kr}from"node:path";import{fileURLToPath as Gy,pathToFileURL as Hy}from"node:url";async function qy(e){await Rl(Vi(e.socketPath),{recursive:!0});let t=sw();rw();let n=e.telemetryDrainTimeoutMs??kl,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??fr,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=Fy(x=>{l.add(x),x.once("close",()=>l.delete(x)),h(),dw(x,async O=>{h();let L=await fw(r,O,e.storeUri,e.residentVersion??"0.0.0-dev"),ce={id:O.id,ok:!0,value:L,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};vl(x,ce),O.op==="handover"&&setImmediate(()=>p())})});function p(){i=!0,u=!0,c=nw(c),d.close();for(let x of l)x.destroy()}function h(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(x=>{let O=()=>{Yr(),d.close();for(let L of l)L.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,O),{signal:x,handler:O}});await new Promise((x,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise(W=>setTimeout(W,O));let L=await xn.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),ce=Number(process.hrtime.bigint()-x)/1e6,he=new Wi(L,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??lr,byteBudget:e.telemetryByteBudget??e.byteBudget??dr});if(i){await L.close();return}if(await Hi(he,n),i){await L.close();return}r={kind:"ready",store:L,telemetry:he,storeOpenCount:1,storeElapsedMs:ce},s=setInterval(()=>{let W=r.kind==="ready"?r:void 0;W&&Hi(W.telemetry,n)},f),s.unref(),h()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},h()}),e.pidPath&&await Sl(e.pidPath,`${process.pid}
85
- `,{encoding:"utf8",mode:384});let w=e.residentVersion??"0.0.0-dev",y=e.registryPath??Kr(z(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await ar(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:w})}catch{}await new Promise(x=>d.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await gl(e.socketPath,{force:!0});let T=r;T.kind==="ready"&&(await Hi(T.telemetry,n,u),await T.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:O}of g)process.off(x,O);t?.kill("SIGTERM"),Yr(),e.pidPath&&await gl(e.pidPath,{force:!0}),await cr(y)}async function Qy(e,t,n=new Date){let r=await vr(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=Kr(z(t),Ky),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 Rl(Vi(a),{recursive:!0}),await Sl(c,`${J(u)}
86
- `,{encoding:"utf8",mode:384}),await Jy(c,a)}async function Hi(e,t=kl,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await xl(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 Zy(e){let t=[];for(let n of Yy){let r=await Xy(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await ew(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${El(n)}`))}return t}async function Xy(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 ew(e,t,n){let r=tw(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${El(t)}`)}function tw(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 El(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function nw(e){return e&&clearTimeout(e),setTimeout(()=>{Yr(),process.exit(0)},zy)}function rw(){hl||(hl=!0,process.on("exit",()=>Yr()))}function sw(){if(process.platform==="win32")return;let t=jy(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 Mh(e){for(let t of[ju(e),Uh(e)])try{let n=Jh(await Oh(t,"utf8"));if(Fh(n))return n}catch{}return{version:1,entries:{}}}async function jh(e,t){let n=ju(e);await Th(Ch(n),{recursive:!0});let r=`${n}.${process.pid}.${Date.now()}.tmp`;await Dh(r,`${D(t)}
77
+ `,{encoding:"utf8",mode:384}),await Ph(r,n)}function ju(e){return Lu(J(e),$h)}function Uh(e){return Lu(J(e),Ih)}function Jh(e){try{return JSON.parse(e)}catch{return Y(e)}}async function Oi(e,t,n){await Je(e,{collection:Z,id:vh(),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 Fh(e){return Pi(e)&&e.version===1&&Pi(e.entries)&&Object.values(e.entries).every(Gh)}function Gh(e){return Pi(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Pi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var $h,Ih,Gr=E(()=>{"use strict";Ce();ne();Ee();$h="gh-etag-cache.toon",Ih="gh-etag-cache.json"});var Mi={};M(Mi,{listWaits:()=>qu,renderWaitHelp:()=>Ai,runWait:()=>Yh});import{spawn as Bi}from"node:child_process";import{existsSync as Ii}from"node:fs";import{mkdir as Hh,readdir as qh,readFile as Wh,rm as Hu,writeFile as Vh}from"node:fs/promises";import{join as Un,resolve as Di}from"node:path";import{randomUUID as zh}from"node:crypto";async function Yh(e,t=process.cwd()){let n=Zh(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Ai()),0;if(n.kind==="ls")return process.stdout.write(`${F({waits:await qu(t)})}
78
+ `),0;if(!Qh(n.kind))return process.stdout.write(Ai()),2;let r=n.kind,s={id:zh(),target:fy(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:Kh[n.kind],status:"running"},i=Un(await Ni(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await Hh(await Ni(t),{recursive:!0}),await Wu(i,s),o=await Xh({...n,kind:r},t,i,s),process.stdout.write(`${F(dy(r,s,o))}
79
+ `),await ly(n.options),o.exitCode}finally{await Hu(i,{force:!0})}}function Qh(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Ai(){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 Zh(e){let t=e[1],n={timeoutMs:Ju.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=Ju[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=Vu(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=gy(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 Xh(e,t,n,r){switch(e.kind){case"cmd":return await ey(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await Ci(ty(e.target??"",t,{emptyChecksGraceMs:Gu("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,Gu("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await Ci(()=>ry(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await Ci(()=>iy(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function ey(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=Bi(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),jn(r,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${zu(t)}`})},t);c.once("error",l=>{clearTimeout(u),jn(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;jn(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 Ci(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 jn(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 wy(Math.min(c,Math.max(0,i-Date.now())))}return await jn(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${zu(t)}`}}function ty(e,t,n){let r=Date.now();return()=>ny(e,t,n,r)}async function ny(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await qr(["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=Li(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(my),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(i.state)!=="OPEN")return wt("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return wt("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}}:wt("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}}:wt("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function ry(e,t){let n=e.target??(e.latest&&e.branch?await sy(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await qr(["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=Li(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"?wt("success",`run ${n} succeeded`,Fu(s)):wt("failure",`run ${n} concluded ${o||"unknown"}`,Fu(s))}async function sy(e,t){let n=await qr(["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 bt(s)&&s.databaseId!=null?String(s.databaseId):""}async function iy(e,t,n){let r=await qr(["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(bt):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||hy(e,c))&&u>=t});return o?wt("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 qr(e,t){let n=await oy(e,t);return n||await new Promise(r=>{let s=Bi("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 oy(e,t){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await ay(e[2],t);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await X({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let r=Yt(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Mn(r,"database_id")||Mn(r,"id"),status:q(r,"status").toUpperCase(),conclusion:q(r,"conclusion").toUpperCase(),workflowName:q(r,"workflow_name")||q(r,"name"),headBranch:q(r,"head_branch"),url:q(r,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=$i(e,"--branch"),r=$i(e,"--limit")??"20",s=await X({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=Hr(Yt(JSON.parse(s.stdout)).workflow_runs).map(o=>({databaseId:Mn(o,"database_id")||Mn(o,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:s.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=$i(e,"--limit")??"20",r=await X({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=Hr(JSON.parse(r.stdout)).map(i=>({tagName:q(i,"tag_name"),publishedAt:q(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(s),stderr:r.stderr}}return null}async function ay(e,t){let n=await X({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,command:`gh pr view ${e}`});if(n.status!==0)return n;let r=Yt(JSON.parse(n.stdout));if(Array.isArray(r.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let s=q(Yt(r.head),"sha"),[i,o]=s?await Promise.all([X({path:`repos/{owner}/{repo}/commits/${s}/status`,cwd:t,command:`gh pr view ${e} status`}),X({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?Hr(Yt(JSON.parse(i.stdout)).statuses):[],c=o.status===0?Hr(Yt(JSON.parse(o.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,o.stderr].filter(Boolean).join(`
81
+ `),stdout:JSON.stringify({number:Mn(r,"number"),state:q(r,"state").toUpperCase(),mergeable:cy(r),statusCheckRollup:[...a.map(u=>({conclusion:q(u,"state").toUpperCase()})),...c.map(u=>({status:q(u,"status").toUpperCase(),conclusion:q(u,"conclusion").toUpperCase()}))],url:q(r,"html_url")})}}function cy(e){let t=q(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}async function qu(e){let t=await Ni(e);if(!Ii(t))return[];let n=await qh(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=Un(t,s),o=py(await Wh(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!yy(a)){await Hu(i,{force:!0});continue}r.push(o)}return r}async function Ni(e){return Un(await uy(e),".red","tmp","waits")}async function uy(e){let t=Di(e);for(;;){if(Ii(Un(t,".red"))||Ii(Un(t,".git")))return t;let n=Di(t,"..");if(n===t)return Di(e);t=n}}async function jn(e,t,n){await Wu(e,{...t,status:n}).catch(()=>{})}async function Wu(e,t){await Vh(e,`${F(t)}
82
+ `,"utf8")}async function ly(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=Bi(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function dy(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 wt(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function fy(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 my(e){let t=bt(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 Fu(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 Li(e){let t=JSON.parse(e);if(!bt(t))throw new Error("expected JSON object");return t}function py(e){let t=e.trim();if(!t)return{};try{return Li(t)}catch{let n=Y(t);if(!bt(n))throw new Error("expected structured object");return n}}function bt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Yt(e){return bt(e)?e:{}}function Hr(e){return Array.isArray(e)?e.filter(bt):[]}function q(e,t){let n=e[t];return typeof n=="string"?n:""}function Mn(e,t){let n=e[t];return typeof n=="number"?n:0}function $i(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function Vu(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 Gu(e,t){let n=process.env[e];if(!n)return t;try{return Vu(n)}catch{return t}}function gy(e){return e.startsWith("SIG")?e:`SIG${e}`}function zu(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function hy(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function yy(e){try{return process.kill(e,0),!0}catch{return!1}}async function wy(e){await new Promise(t=>setTimeout(t,e))}var Ju,Kh,ji=E(()=>{"use strict";ne();pn();Gr();Ju={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},Kh={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Yu={};M(Yu,{renderShellInit:()=>by});function by(e,t=In){if(e==="fish")return _y(t);if(e==="bash"||e==="zsh")return Ry(e,t);throw new Error(`unsupported shell: ${e}`)}function _y(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(Vr))].map(n=>` abbr --add --position command -- ${n} '${xy(`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 Ry(e,t){let n=ky(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Wr("git",n.get("git")??[]),...Wr("gh",n.get("gh")??[]),...Wr("vitest",n.get("vitest")??[]),...Wr("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 Wr(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(Vr),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(Vr)),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 Sy(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Ey(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 Sy(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 ky(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Vr(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function Vr(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Ku(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Ey(e){return e.replace(/'/g,"'\\''")}function xy(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Qu=E(()=>{"use strict";An()});function Ui(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"&&vy(t.chosenOption)&&Ty(t.outcome)&&Oy(t.cost)}function vy(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Ty(e){return e==="success"||e==="failure"||e==="escalated"}function Oy(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 Zu=E(()=>{});import{createHash as Py}from"node:crypto";function ll(e,t){return new Fi(e,t)}function Xu(e){let t=Number(e.red_entity_id??e.rid),n=Gi(e.properties??e.PROPERTIES),r=dl(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 el(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=fl(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:Gi(e.properties??e.PROPERTIES)}}function $y(e){let t=Number(e.red_entity_id??e.rid),n=Gi(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Ui(n)?null:{rid:t,event:n}}function Gi(e){return e==null?{}:typeof e=="string"?JSON.parse(e):zr(e)?e:{}}function dl(e){let t=e==="contact"?"person":e;if(Dy.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function fl(e){if(Cy.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Iy(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function tl(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Rt(e){return zr(e)?e:{}}function nl(e,t){return Rt(e)[t]}function rl(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function sl(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function il(e){let t=Rt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function ee(e){return typeof e=="string"&&e.length>0?e:void 0}function zr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ji(e){return e!=null}function Ay(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Ny(e){return Py("sha256").update(JSON.stringify(e)).digest("hex")}function By(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function ol(e){return`artifact-hash:${e}`}function al(e,t,n){return`connection:${e}:${t}:${n}`}function cl(){return"model-tier-bandit:v1"}function Ly(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ul(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function ml(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+ul(n,a)*3+ul(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 My(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=pl({...ml(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return _t(s)}function pl(e){return{...e,lexical:_t(e.lexical),tags:_t(e.tags),kind:_t(e.kind),connections:_t(e.connections),vector:_t(e.vector),total:_t(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function _t(e){return Math.round(e*1e3)/1e3}function jy(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 Uy(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 Jy(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var xe,Dy,Cy,Fi,gl=E(()=>{"use strict";Zu();xe={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Dy=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Cy=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Fi=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(Rt(n));if(t==="getArtifact")return await this.getArtifact(nl(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Rt(n);return await this.search(rl(r,"query"),sl(r,"limit")??10,il(r.options))}if(t==="think"){let r=Rt(n);return await this.think(rl(r,"query"),sl(r,"limit")??8,il(r.options))}if(t==="link")return await this.link(Rt(n));if(t==="backlinks")return await this.backlinks(nl(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Rt(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 ${xe.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:Jy(t.map(r=>r.kind))}}async capture(t){let n=ee(t.title)||"Untitled artifact",r=ee(t.content);if(!r)throw new Error("brain capture requires content");let s=dl(ee(t.kind)||"note"),i=Ay(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Ny([s,n,r,i,ee(t.sourcePath),ee(t.sourceSession)]),c=await this.kv().get(ol(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${By(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:ee(t.sourceAgent),source_runner:ee(t.sourceRunner),source_session:ee(t.sourceSession),source_path:ee(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:zr(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${xe.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let p=Xu(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(ol(a),p.rid),await this.materializeTagConnections(p),p}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 ${xe.artifacts}`)).rows.map(Xu).filter(Ji)}async search(t,n,r={}){let s=Ly(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=ml(u,s),f=pl({...l,connections:My(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:jy(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 Uy(t,s)}async link(t){let n=await this.getArtifact(tl(t.from)),r=await this.getArtifact(tl(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=fl(ee(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:ee(t.reason),confidence:ee(t.confidence)||"explicit",created_at:Date.now(),metadata:zr(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${xe.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=el(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(al(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 ${xe.connections}`)).rows.map(el).filter(Ji)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=Iy(ee(t.interval)||"day"),s=ee(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(!Ui(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${xe.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${xe.outcomeEvents}`)).rows.map($y).filter(Ji).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(cl());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(cl(),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(al(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(xe.kv)}}});var Ol={};M(Ol,{runResidentServer:()=>Ky});import{randomUUID as Qt}from"node:crypto";import{execFileSync as Fy,spawn as Gy}from"node:child_process";import{existsSync as Hy}from"node:fs";import{mkdir as Sl,rename as qy,rm as hl,writeFile as kl}from"node:fs/promises";import{createServer as Wy}from"node:net";import{dirname as Vi,join as Kr}from"node:path";import{fileURLToPath as Vy,pathToFileURL as zy}from"node:url";async function Ky(e){await Sl(Vi(e.socketPath),{recursive:!0});let t=cw();aw();let n=e.telemetryDrainTimeoutMs??El,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??fr,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=Wy(x=>{l.add(x),x.once("close",()=>l.delete(x)),h(),gw(x,async O=>{h();let L=await hw(r,O,e.storeUri,e.residentVersion??"0.0.0-dev"),ce={id:O.id,ok:!0,value:L,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};Tl(x,ce),O.op==="handover"&&setImmediate(()=>p())})});function p(){i=!0,u=!0,c=ow(c),d.close();for(let x of l)x.destroy()}function h(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(x=>{let O=()=>{Yr(),d.close();for(let L of l)L.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,O),{signal:x,handler:O}});await new Promise((x,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise(V=>setTimeout(V,O));let L=await xn.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),ce=Number(process.hrtime.bigint()-x)/1e6,he=new Wi(L,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??lr,byteBudget:e.telemetryByteBudget??e.byteBudget??dr});if(i){await L.close();return}if(await Hi(he,n),i){await L.close();return}r={kind:"ready",store:L,telemetry:he,storeOpenCount:1,storeElapsedMs:ce},s=setInterval(()=>{let V=r.kind==="ready"?r:void 0;V&&Hi(V.telemetry,n)},f),s.unref(),h()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},h()}),e.pidPath&&await kl(e.pidPath,`${process.pid}
85
+ `,{encoding:"utf8",mode:384});let w=e.residentVersion??"0.0.0-dev",y=e.registryPath??Kr(J(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await ar(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:w})}catch{}await new Promise(x=>d.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await hl(e.socketPath,{force:!0});let T=r;T.kind==="ready"&&(await Hi(T.telemetry,n,u),await T.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:O}of g)process.off(x,O);t?.kill("SIGTERM"),Yr(),e.pidPath&&await hl(e.pidPath,{force:!0}),await cr(y)}async function tw(e,t,n=new Date){let r=await vr(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=Kr(J(t),Xy),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 Sl(Vi(a),{recursive:!0}),await kl(c,`${F(u)}
86
+ `,{encoding:"utf8",mode:384}),await qy(c,a)}async function Hi(e,t=El,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await vl(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 nw(e){let t=[];for(let n of ew){let r=await rw(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await sw(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${xl(n)}`))}return t}async function rw(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 sw(e,t,n){let r=iw(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${xl(t)}`)}function iw(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 xl(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function ow(e){return e&&clearTimeout(e),setTimeout(()=>{Yr(),process.exit(0)},Zy)}function aw(){yl||(yl=!0,process.on("exit",()=>Yr()))}function cw(){if(process.platform==="win32")return;let t=Gy(process.execPath,["-e",`
88
88
  const { execFileSync } = require("node:child_process");
89
89
  const parentPid = Number(process.argv[1]);
90
90
  const known = new Set();
@@ -125,52 +125,52 @@ const timer = setInterval(() => {
125
125
  clearInterval(timer);
126
126
  process.exit(0);
127
127
  }, 500);
128
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Yr(){for(let e of iw())try{process.kill(e,"SIGTERM")}catch{}}function iw(){if(process.platform==="win32")return[];let e="";try{e=My("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 ow(e){if(e.collection!==ke)return e;let t=await yl(e.raw_text,bl(e.raw_bytes)),n=await yl(e.emitted_text,bl(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 yl(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Wy)try{return await xl((async()=>({tokens:(await aw())("cl100k_base").encode(e).length,estimated:!1}))(),Vy,"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 aw(){return wl??=import(Hy(cw()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await wl}function cw(){let e=Vi(Gy(import.meta.url)),n=[Kr(e,"..","node_modules","js-tiktoken","dist","index.js"),Kr(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Uy(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function bl(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function j(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function qi(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function xl(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 uw(e){try{return JSON.parse(e)}catch{return e}}function lw(e){return _l(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>_l(t)&&(t.collection===ae||t.collection===Q||t.collection===ke||t.collection===Ke)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function _l(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function dw(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??Qt(),ok:!1,error:a instanceof Error?a.message:String(a)};vl(e,u)}finally{e.end()}})()})}function vl(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
130
- `)}catch{}}async function fw(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 mi(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 vr(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 pi(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return pw(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await mw(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function mw(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await ul(s,t).request(n,r)}function pw(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Wy,Vy,kl,zy,Ky,Yy,Wi,hl,wl,Ol=E(()=>{"use strict";Ce();ur();pn();ze();pl();Ee();Re();Wy=256*1024,Vy=500,kl=2e3,zy=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),Ky="rsp-status-summary.json",Yy=[ae,Q,ke,Ke,On],Wi=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 Zy(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 fi(this.opts.rootDir,async a=>{let c=zt(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:j(c.command)||"unknown",source_id:j(c.id),source_collection:j(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 Qy(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:Qt(),a={...await ow(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===ae?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===ae||n.accounting_recorded===!0?null:n.collection===ke?await this.writeEvent(t,{collection:ae,id:`mirror:${j(n.id)||Qt()}`,created_at:j(n.created_at)||j(n.ts)||new Date().toISOString(),event_type:"invocation",command:j(n.command)||"unknown",command_class:qi(j(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===Ke?await this.writeEvent(t,{collection:ae,id:`mirror:${j(n.id)||Qt()}`,created_at:j(n.created_at)||j(n.ts)||new Date().toISOString(),event_type:"invocation",command:j(n.command)||"unknown",command_class:qi(j(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:j(n.reason)||"unknown",wrapper_family:j(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:j(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Ke,id:Qt(),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:ae,id:`mirror:${Qt()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:qi(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(On).get("index:v1"),r=typeof n=="string"?uw(n):n;return lw(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(On).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})}};hl=!1});var Zr={};M(Zr,{parseProxyCommandLine:()=>$l,rewriteProxyCommandLine:()=>Cl,runProxy:()=>hw});import{spawn as gw}from"node:child_process";async function hw(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=$l(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Cl(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await yw(t.telemetryRoot,n,c),await Pl(n);throw c}for(let c of s)await ww(t.telemetryRoot,c);let o=await Pl(r||n),a=Number(process.hrtime.bigint()-i)/1e6;return await Je(t.telemetryRoot,{collection:ke,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 Cl(e,t="lossless"){let n=Ew(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||kw(n,o)==="|")return i.text;let a=bw(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function $l(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 yw(e,t,n){await Je(e,{collection:Q,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Ki(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function ww(e,t){await Je(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 Pl(e){let t=gw(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 bw(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=vw(s);if(!i)return null;let o=Sw(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(p=>p.value);if(Qr(c))return{text:e,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Ki(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=_w(a);if(!u)return null;let l=i.slice(0,o).map(p=>p.raw),f=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...f,...u.wrapperWords].join(" ");return{text:`${n}${d}${r}`,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Ki(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function _w(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}:Rw(t,n)}function Rw(e,t){return e[0]==="cat"&&e.length===2&&zi(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&zi(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])&&zi(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function zi(e){return!!e&&!e.startsWith("-")}function Sw(e){let t=0;for(;t<e.length&&Dl(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Dl(e[t].value);)t+=1;return t}function kw(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function Ew(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=xw(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 xw(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 vw(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 Ki(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Qr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Qr(t)&&t[1]?`gh ${t[1]} json-jq`:Qr(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 Qr(e){return e[0]==="gh"&&e.some(Tw)}function Tw(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Dl(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Xr=E(()=>{"use strict";Ee()});var Yi={};M(Yi,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,GIT_LOG_MACHINE_FIELDS:()=>Il,StructuredUsageError:()=>es,cleanStatusPayload:()=>Ll,recoveryInstruction:()=>ge,renderGitContract:()=>Al,runGitWrapper:()=>Pw});import{spawn as Ow}from"node:child_process";async function Pw(e,t){let n=Nl(e),r=Bl(n.argv),s=await Iw(r,n.argv.slice(1));return Al(e,s,t)}async function Al(e,t,n){let r=Nl(e);if((t.status??0)!==0||t.signal){let f=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=Bl(r.argv),i=Aw(s,r.argv,t.stdout,r.query),o=$(i);if(Dw(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=qw(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 ${ge(u)}
132
- `;return{stdout:Buffer.from(`${$(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 ge(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Nl(e){let t=ct(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 es(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:n,query:t.query,full:r}}function Dw(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Cw(e)||r.level!=="lossless")return!0;let s=Hw(r.heavyGitByteThreshold,Ne);return Buffer.byteLength(t)<=s}function Cw(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Bl(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 $w(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Il.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 Iw(e,t){let n=Ow("git",$w(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 Aw(e,t,n,r){switch(e){case"status":return Nw(t,n,r);case"log":return Bw(t,n,r);case"diff":return Lw(t,n,r);case"commit":return Ye(Mw(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ye(jw(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return Uw(t,n,r);case"branch":return Jw(t,n,r);case"show":return Fw(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:Gw(u)})}if(s.length===0)return Ll(e.join(" "),r);let i=F(s,n),o=Ml(i,"state");return Ye({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 Ll(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 Bw(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=F(r,n);return Ye({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 Lw(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=F(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 Ye({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 Mw(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 jw(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,p]=(l??"").split(":");return{flag:u??"",from:d??"",to:p??"",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 Uw(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=F(s,n),a=Ml(o,"author");return Ye({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 Jw(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=F(r,n),i=s.find(o=>o.current)?.name??"";return Ye({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 Fw(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(""),p=[];for(let y of o.split(`
138
- `)){let T=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!T)continue;let x=T[3]??"";p.push({path:(T[1]??"").trim(),changed:Number(T[2]??0),added:[...x].filter(O=>O==="+").length,deleted:[...x].filter(O=>O==="-").length,binary:x.startsWith("Bin")})}let h=F(p,n),m=0,g=0,w=0;for(let y of h)m+=typeof y.changed=="number"?y.changed:0,g+=typeof y.added=="number"?y.added:0,w+=typeof y.deleted=="number"?y.deleted:0;return Ye({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
139
- `).length:0,files:h,summary:`${n?`${h.length}/${p.length}`:h.length} files, ${m} changed, +${g} -${w}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Ye(e,t,n){return t?Ie(e,n):e}function Gw(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 Hw(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function qw(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 Il,es,St=E(()=>{"use strict";se();Re();gn();ut();Re();Il=["%h","%an","%as","%s"];es=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return tr(this.command,this.flag,this.validFlags,`${this.command} --help`)}}});var so={};M(so,{renderGhContract:()=>Hl,runGhWrapper:()=>Qw});import{spawn as Ww}from"node:child_process";async function Qw(e,t){let n=ql(e),r=await Xw(n);return Hl(e,r,t)}async function Hl(e,t,n){if((t.status??0)!==0||t.signal){let p=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let r=ql(e),s=Jn(t.stdout),i=ab(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=gb(i);if(o){if(!n.store)throw new Error("truncated gh output requires an elision store");let p=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=p}let a=o?.target.truncated.handle||void 0,c=$(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=hb(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 ${ge(f)}
140
- `;return{stdout:Buffer.from(`${$(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 ql(e){let t=ct(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=n,o=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let p=0;p<l.length;p+=1){let h=l[p]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=Ul(l[++p]??""):h.startsWith("--fields=")?u=Ul(h.slice(9)):o.push(h)}let d={kind:i,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:a,wide:c,fields:u,passthrough:o,query:t.query};return Zw(d),d}function jl(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide||e.fields.size>0?zw[t]:Vw[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function Ul(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function Zw(e){if(e.fields.size===0)return;if(e.action!=="list")throw new ts(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,n=Yw[t];for(let r of e.fields)if(!n.includes(r))throw new ts(e,`unknown field: ${r}`,n)}async function Xw(e){if(e.action==="combined")return await eb(e);let t=tb(e);if(!t)return await ob(jl(e));let n=await Z({...t,command:["gh",...jl(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await nb(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function eb(e){let t=e.target??"",[n,r,s]=await Promise.all([Z({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),Z({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),Z({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=Vl(Jn(n.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:te(Jn(s.stdout)).map(sb)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function tb(e){let t=zl(e.passthrough),n=ib(e.passthrough,"--limit")??30,r=ve(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:ve(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 nb(e,t){let n=Jn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return te(n).map(Wl);case"pr:view":return Vl(n);case"issue:list":return te(n).filter(r=>!kt(r.pull_request)).map(Jl);case"issue:view":return Jl(n);case"run:list":return{items:te(A(n).workflow_runs).map(Fl),total:ee(A(n),"total_count")};case"run:view":{let r=Fl(n),s=zl(e.passthrough);if(!s)return r;let i=await Z({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...r,jobs:i.status===0?te(A(Jn(i.stdout)).jobs).map(rb):[]}}default:return n}}function Wl(e){let t=A(e);return{number:ee(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:no(t.user),labels:te(t.labels).map(n=>({name:S(n,"name")})),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body"),baseRefName:S(A(t.base),"ref"),headRefName:S(A(t.head),"ref")}}function Vl(e){return Wl(e)}function Jl(e){let t=A(e);return{number:ee(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:te(t.labels).map(n=>({name:S(n,"name")})),author:no(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function Fl(e){let t=A(e);return{databaseId:ee(t,"database_id")||ee(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 rb(e){let t=A(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function sb(e){let t=A(e);return{author:no(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function no(e){let t=A(e);return{login:S(t,"login")}}function zl(e){return e.find(t=>!t.startsWith("-"))}function ve(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function ib(e,t){let n=ve(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function ob(e){let t=Ww("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 ab(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Qi(n,"prs"),i=s.rows.map(c=>Kl(c,e)),o=F(i,e.query),a=Zi(o.length,i.length,s.total,e.query);return o.length===0?Xi(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Zt({...r,prs:o,aggregate:a,summary:`${eo(o.length,i.length,e.query)} ${Gl(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Zt({...r,pr:Yl(A(n),e),summary:`PR #${ee(A(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return cb(e,t,A(n));case"issue:list":{let s=Qi(n,"issues"),i=s.rows.map(c=>Ql(c,e)),o=F(i,e.query),a=Zi(o.length,i.length,s.total,e.query);return o.length===0?Xi(r,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Zt({...r,issues:o,aggregate:a,summary:`${eo(o.length,i.length,e.query)} ${Gl(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Zt({...r,issue:mb(A(n),e),summary:`issue #${ee(A(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Qi(n,"runs"),i=s.rows.map(c=>Zl(c,e)),o=F(i,e.query),a=Zi(o.length,i.length,s.total,e.query);return o.length===0?Xi(r,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Zt({...r,runs:o,aggregate:a,summary:`${eo(o.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Zt({...r,run:pb(A(n),e),summary:`run ${ee(A(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function cb(e,t,n){let r=Yl(A(n.view),{...e,action:"view",wide:!0}),s=F(te(n.checks).map(ub),e.query),i=A(n.comments).comments,o=F(te(i).map(lb).slice(-3),e.query);return Ie({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${ee(A(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 ub(e){return{name:S(e,"name"),state:Fn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function lb(e){return{author:ed(e.author),body:ns(e,"body",to,!1),created:S(e,"createdAt")}}function Qi(e,t){if(Array.isArray(e))return{rows:te(e)};let n=A(e),r=ee(n,"total")||ee(n,"total_count")||void 0;return Array.isArray(n.items)?{rows:te(n.items),total:r}:t==="runs"&&Array.isArray(n.workflow_runs)?{rows:te(n.workflow_runs),total:r}:{rows:[]}}function Zi(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function Xi(e,t,n,r,s){return Ie({...e,empty:!0,scope:db(t),[n]:[],aggregate:r,summary:`0 ${fb(t)}`},s)}function db(e){let t=ve(e.passthrough,"--state")??"open",n=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${n}`;if(e.kind==="issue"){let i=ve(e.passthrough,"--label");return`${t} issues${i?` label=${i}`:""}${n}`}let r=ve(e.passthrough,"--branch")??ve(e.passthrough,"-b"),s=ve(e.passthrough,"--workflow")??ve(e.passthrough,"-w");return`workflow runs${r?` branch=${r}`:""}${s?` workflow=${s}`:""}${n}`}function fb(e){let t=ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Kl(e,t){let n={number:ee(e,"number"),title:S(e,"title"),state:Fn(e),draft:!!e.isDraft};return ro(n,e,t,["author","labels","url","updated"]),n}function Yl(e,t){let n=Kl(e,t);return n.body=ns(e,"body",to,t.full),t.wide&&(n.base=S(e,"baseRefName"),n.head=S(e,"headRefName")),n}function Ql(e,t){let n={number:ee(e,"number"),title:S(e,"title"),state:Fn(e),labels:Xl(e.labels)};return ro(n,e,t,["author","url","updated"]),n}function mb(e,t){let n=Ql(e,t);return n.body=ns(e,"body",to,t.full),n}function Zl(e,t){let n={id:ee(e,"databaseId"),name:S(e,"name"),status:Fn(e),conclusion:S(e,"conclusion")};return ro(n,e,t,["event","branch","workflow","created"]),n}function pb(e,t){let n=Zl(e,t),r=te(e.jobs).map(s=>({name:S(s,"name"),status:Fn(s),conclusion:S(s,"conclusion"),log:ns(s,"log",Kw,t.full)}));return n.jobs=r,n}function ns(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 gb(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(kt(n)){if(kt(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 hb(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 Gl(e,t){return e.every(n=>n.state===t)?t:"returned"}function eo(e,t,n){return n?`${e}/${t}`:String(e)}function Zt(e,t,n){return t.query?Ie(e,n):e}function Fn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function ro(e,t,n,r){if(!(!n.wide&&n.fields.size===0))for(let s of r)!n.wide&&!n.fields.has(s)||(s==="author"?e.author=ed(t.author):s==="labels"?e.labels=Xl(t.labels):s==="url"?e.url=S(t,"url"):s==="updated"?e.updated=S(t,"updatedAt"):s==="event"?e.event=S(t,"event"):s==="branch"?e.branch=S(t,"headBranch"):s==="workflow"?e.workflow=S(t,"workflowName"):s==="created"&&(e.created=S(t,"createdAt")))}function Xl(e){return Array.isArray(e)?e.map(t=>kt(t)?S(t,"name"):String(t)).filter(Boolean):[]}function ed(e){return kt(e)?S(e,"login"):""}function Jn(e){return e.trim()?JSON.parse(e):null}function te(e){return Array.isArray(e)?e.filter(kt):[]}function A(e){return kt(e)?e:{}}function S(e,t){let n=e[t];return typeof n=="string"?n:""}function ee(e,t){let n=e[t];return typeof n=="number"?n:0}function kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Vw,zw,to,Kw,Yw,ts,io=E(()=>{"use strict";se();Gr();St();gn();ut();Vw={"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"]},zw={"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"]},to=160,Kw=160,Yw={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};ts=class extends Error{constructor(n,r,s=[]){super(r);this.command=n;this.validFields=s}render(){return N({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var co={};M(co,{renderTestContract:()=>td,runTestWrapper:()=>Rb});import{spawn as yb}from"node:child_process";async function Rb(e,t){let n=ct(e),r=await vb(n.argv);return await td(e,r,t)}async function td(e,t,n){let r=ct(e),i=nd(r.argv)==="vitest"?Tb(t.stdout):Ob(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let h=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${Cb(i.durationSeconds)}`,c=F(i.failures,r.query);if(n.level==="terse")return await Sb(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,f=0;for(let h of c){let m=await Pb(h.excerpt,r.argv.join(" "),n.store);u.push({suite:h.suite,name:h.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 p=r.query?Ie(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from($(p)),stderr:Buffer.from(t.stderr),status:ao(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function Sb(e,t,n,r,s,i,o){let a=kb(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?Ie(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=$(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:ao(t.status),signal:t.signal,payload:u};let p={exit_code:r,summary:s};n.failures.length>0&&(p.failures=n.failures.map(T=>({suite:T.suite,name:T.name,excerpt:T.excerpt})));let h=$(p),m=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!g)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${m}) \u2014 ${ge(g)}`;return{stdout:Buffer.from(`${l}
142
- ${y}`),stderr:Buffer.from(t.stderr),status:ao(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:m,rowsElided:f,rawOutput:Buffer.from(h)}}function ao(e){return e===0||e===null?0:1}function kb(e){let t=[],n=bb;for(let r of e.slice(0,_b)){let s=Eb(r.excerpt,Math.min(wb,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function Eb(e,t){if(t<=0)return"";let n=e.split(`
128
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Yr(){for(let e of uw())try{process.kill(e,"SIGTERM")}catch{}}function uw(){if(process.platform==="win32")return[];let e="";try{e=Fy("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 lw(e){if(e.collection!==ke)return e;let t=await wl(e.raw_text,_l(e.raw_bytes)),n=await wl(e.emitted_text,_l(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 wl(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Yy)try{return await vl((async()=>({tokens:(await dw())("cl100k_base").encode(e).length,estimated:!1}))(),Qy,"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 dw(){return bl??=import(zy(fw()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await bl}function fw(){let e=Vi(Vy(import.meta.url)),n=[Kr(e,"..","node_modules","js-tiktoken","dist","index.js"),Kr(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Hy(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function _l(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function j(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function qi(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function vl(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 mw(e){try{return JSON.parse(e)}catch{return e}}function pw(e){return Rl(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Rl(t)&&(t.collection===ae||t.collection===Z||t.collection===ke||t.collection===Ke)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Rl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function gw(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??Qt(),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 hw(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 mi(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 vr(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 pi(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return ww(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await yw(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function yw(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await ll(s,t).request(n,r)}function ww(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Yy,Qy,El,Zy,Xy,ew,Wi,yl,bl,Pl=E(()=>{"use strict";Ce();ur();pn();ze();gl();Ee();Re();Yy=256*1024,Qy=500,El=2e3,Zy=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),Xy="rsp-status-summary.json",ew=[ae,Z,ke,Ke,On],Wi=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 nw(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 fi(this.opts.rootDir,async a=>{let c=zt(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:j(c.command)||"unknown",source_id:j(c.id),source_collection:j(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 tw(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:Qt(),a={...await lw(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===ae?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===ae||n.accounting_recorded===!0?null:n.collection===ke?await this.writeEvent(t,{collection:ae,id:`mirror:${j(n.id)||Qt()}`,created_at:j(n.created_at)||j(n.ts)||new Date().toISOString(),event_type:"invocation",command:j(n.command)||"unknown",command_class:qi(j(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===Ke?await this.writeEvent(t,{collection:ae,id:`mirror:${j(n.id)||Qt()}`,created_at:j(n.created_at)||j(n.ts)||new Date().toISOString(),event_type:"invocation",command:j(n.command)||"unknown",command_class:qi(j(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:j(n.reason)||"unknown",wrapper_family:j(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:j(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Ke,id:Qt(),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:ae,id:`mirror:${Qt()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:qi(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(On).get("index:v1"),r=typeof n=="string"?mw(n):n;return pw(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(On).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})}};yl=!1});var Zr={};M(Zr,{parseProxyCommandLine:()=>Il,rewriteProxyCommandLine:()=>$l,runProxy:()=>_w});import{spawn as bw}from"node:child_process";async function _w(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=Il(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=$l(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await Rw(t.telemetryRoot,n,c),await Dl(n);throw c}for(let c of s)await Sw(t.telemetryRoot,c);let o=await Dl(r||n),a=Number(process.hrtime.bigint()-i)/1e6;return await Je(t.telemetryRoot,{collection:ke,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 $l(e,t="lossless"){let n=Ow(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||Tw(n,o)==="|")return i.text;let a=kw(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function Il(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 Rw(e,t,n){await Je(e,{collection:Z,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Ki(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function Sw(e,t){await Je(e,{collection:Z,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 Dl(e){let t=bw(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 kw(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=Dw(s);if(!i)return null;let o=vw(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(p=>p.value);if(Qr(c))return{text:e,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Ki(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=Ew(a);if(!u)return null;let l=i.slice(0,o).map(p=>p.raw),f=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...f,...u.wrapperWords].join(" ");return{text:`${n}${d}${r}`,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Ki(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function Ew(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}:xw(t,n)}function xw(e,t){return e[0]==="cat"&&e.length===2&&zi(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&zi(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])&&zi(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function zi(e){return!!e&&!e.startsWith("-")}function vw(e){let t=0;for(;t<e.length&&Cl(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Cl(e[t].value);)t+=1;return t}function Tw(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function Ow(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=Pw(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 Pw(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 Dw(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 Ki(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Qr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Qr(t)&&t[1]?`gh ${t[1]} json-jq`:Qr(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 Qr(e){return e[0]==="gh"&&e.some(Cw)}function Cw(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Cl(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Xr=E(()=>{"use strict";Ee()});var Yi={};M(Yi,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,GIT_LOG_MACHINE_FIELDS:()=>Al,StructuredUsageError:()=>es,cleanStatusPayload:()=>Ml,recoveryInstruction:()=>ge,renderGitContract:()=>Nl,runGitWrapper:()=>Iw});import{spawn as $w}from"node:child_process";async function Iw(e,t){let n=Bl(e),r=Ll(n.argv),s=await Lw(r,n.argv.slice(1));return Nl(e,s,t)}async function Nl(e,t,n){let r=Bl(e);if((t.status??0)!==0||t.signal){let f=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=Ll(r.argv),i=Mw(s,r.argv,t.stdout,r.query),o=D(i);if(Aw(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=Kw(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 ${ge(u)}
132
+ `;return{stdout:Buffer.from(`${D(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 ge(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Bl(e){let t=ct(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 es(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:n,query:t.query,full:r}}function Aw(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Nw(e)||r.level!=="lossless")return!0;let s=zw(r.heavyGitByteThreshold,Ne);return Buffer.byteLength(t)<=s}function Nw(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ll(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 Bw(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Al.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 Lw(e,t){let n=$w("git",Bw(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 Mw(e,t,n,r){switch(e){case"status":return jw(t,n,r);case"log":return Uw(t,n,r);case"diff":return Jw(t,n,r);case"commit":return Ye(Fw(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ye(Gw(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return Hw(t,n,r);case"branch":return qw(t,n,r);case"show":return Ww(t,n,r)}}function jw(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:Vw(u)})}if(s.length===0)return Ml(e.join(" "),r);let i=G(s,n),o=jl(i,"state");return Ye({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 Ml(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 Uw(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=G(r,n);return Ye({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 Jw(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=G(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 Ye({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 Fw(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 Gw(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,p]=(l??"").split(":");return{flag:u??"",from:d??"",to:p??"",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 Hw(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=G(s,n),a=jl(o,"author");return Ye({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 qw(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=G(r,n),i=s.find(o=>o.current)?.name??"";return Ye({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 Ww(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(""),p=[];for(let y of o.split(`
138
+ `)){let T=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!T)continue;let x=T[3]??"";p.push({path:(T[1]??"").trim(),changed:Number(T[2]??0),added:[...x].filter(O=>O==="+").length,deleted:[...x].filter(O=>O==="-").length,binary:x.startsWith("Bin")})}let h=G(p,n),m=0,g=0,w=0;for(let y of h)m+=typeof y.changed=="number"?y.changed:0,g+=typeof y.added=="number"?y.added:0,w+=typeof y.deleted=="number"?y.deleted:0;return Ye({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
139
+ `).length:0,files:h,summary:`${n?`${h.length}/${p.length}`:h.length} files, ${m} changed, +${g} -${w}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Ye(e,t,n){return t?Ie(e,n):e}function Vw(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function jl(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function zw(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Kw(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 Al,es,St=E(()=>{"use strict";ne();Re();gn();ut();Re();Al=["%h","%an","%as","%s"];es=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return tr(this.command,this.flag,this.validFlags,`${this.command} --help`)}}});var so={};M(so,{renderGhContract:()=>ql,runGhWrapper:()=>tb});import{spawn as Yw}from"node:child_process";async function tb(e,t){let n=Wl(e),r=await rb(n);return ql(e,r,t)}async function ql(e,t,n){if((t.status??0)!==0||t.signal){let p=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let r=Wl(e),s=Jn(t.stdout),i=db(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=bb(i);if(o){if(!n.store)throw new Error("truncated gh output requires an elision store");let p=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=p}let a=o?.target.truncated.handle||void 0,c=D(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=_b(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 ${ge(f)}
140
+ `;return{stdout:Buffer.from(`${D(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 Wl(e){let t=ct(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=n,o=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let p=0;p<l.length;p+=1){let h=l[p]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=Jl(l[++p]??""):h.startsWith("--fields=")?u=Jl(h.slice(9)):o.push(h)}let d={kind:i,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:a,wide:c,fields:u,passthrough:o,query:t.query};return nb(d),d}function Ul(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide||e.fields.size>0?Zw[t]:Qw[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function Jl(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function nb(e){if(e.fields.size===0)return;if(e.action!=="list")throw new ts(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,n=eb[t];for(let r of e.fields)if(!n.includes(r))throw new ts(e,`unknown field: ${r}`,n)}async function rb(e){if(e.action==="combined")return await sb(e);let t=ib(e);if(!t)return await lb(Ul(e));let n=await X({...t,command:["gh",...Ul(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await ob(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function sb(e){let t=e.target??"",[n,r,s]=await Promise.all([X({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),X({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),X({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=zl(Jn(n.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:re(Jn(s.stdout)).map(cb)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function ib(e){let t=Kl(e.passthrough),n=ub(e.passthrough,"--limit")??30,r=ve(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:ve(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 ob(e,t){let n=Jn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return re(n).map(Vl);case"pr:view":return zl(n);case"issue:list":return re(n).filter(r=>!kt(r.pull_request)).map(Fl);case"issue:view":return Fl(n);case"run:list":return{items:re(A(n).workflow_runs).map(Gl),total:te(A(n),"total_count")};case"run:view":{let r=Gl(n),s=Kl(e.passthrough);if(!s)return r;let i=await X({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...r,jobs:i.status===0?re(A(Jn(i.stdout)).jobs).map(ab):[]}}default:return n}}function Vl(e){let t=A(e);return{number:te(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:no(t.user),labels:re(t.labels).map(n=>({name:S(n,"name")})),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body"),baseRefName:S(A(t.base),"ref"),headRefName:S(A(t.head),"ref")}}function zl(e){return Vl(e)}function Fl(e){let t=A(e);return{number:te(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:re(t.labels).map(n=>({name:S(n,"name")})),author:no(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function Gl(e){let t=A(e);return{databaseId:te(t,"database_id")||te(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 ab(e){let t=A(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function cb(e){let t=A(e);return{author:no(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function no(e){let t=A(e);return{login:S(t,"login")}}function Kl(e){return e.find(t=>!t.startsWith("-"))}function ve(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function ub(e,t){let n=ve(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function lb(e){let t=Yw("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 db(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Qi(n,"prs"),i=s.rows.map(c=>Yl(c,e)),o=G(i,e.query),a=Zi(o.length,i.length,s.total,e.query);return o.length===0?Xi(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Zt({...r,prs:o,aggregate:a,summary:`${eo(o.length,i.length,e.query)} ${Hl(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Zt({...r,pr:Ql(A(n),e),summary:`PR #${te(A(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return fb(e,t,A(n));case"issue:list":{let s=Qi(n,"issues"),i=s.rows.map(c=>Zl(c,e)),o=G(i,e.query),a=Zi(o.length,i.length,s.total,e.query);return o.length===0?Xi(r,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Zt({...r,issues:o,aggregate:a,summary:`${eo(o.length,i.length,e.query)} ${Hl(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Zt({...r,issue:yb(A(n),e),summary:`issue #${te(A(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Qi(n,"runs"),i=s.rows.map(c=>Xl(c,e)),o=G(i,e.query),a=Zi(o.length,i.length,s.total,e.query);return o.length===0?Xi(r,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Zt({...r,runs:o,aggregate:a,summary:`${eo(o.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Zt({...r,run:wb(A(n),e),summary:`run ${te(A(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function fb(e,t,n){let r=Ql(A(n.view),{...e,action:"view",wide:!0}),s=G(re(n.checks).map(mb),e.query),i=A(n.comments).comments,o=G(re(i).map(pb).slice(-3),e.query);return Ie({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${te(A(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 mb(e){return{name:S(e,"name"),state:Fn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function pb(e){return{author:td(e.author),body:ns(e,"body",to,!1),created:S(e,"createdAt")}}function Qi(e,t){if(Array.isArray(e))return{rows:re(e)};let n=A(e),r=te(n,"total")||te(n,"total_count")||void 0;return Array.isArray(n.items)?{rows:re(n.items),total:r}:t==="runs"&&Array.isArray(n.workflow_runs)?{rows:re(n.workflow_runs),total:r}:{rows:[]}}function Zi(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function Xi(e,t,n,r,s){return Ie({...e,empty:!0,scope:gb(t),[n]:[],aggregate:r,summary:`0 ${hb(t)}`},s)}function gb(e){let t=ve(e.passthrough,"--state")??"open",n=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${n}`;if(e.kind==="issue"){let i=ve(e.passthrough,"--label");return`${t} issues${i?` label=${i}`:""}${n}`}let r=ve(e.passthrough,"--branch")??ve(e.passthrough,"-b"),s=ve(e.passthrough,"--workflow")??ve(e.passthrough,"-w");return`workflow runs${r?` branch=${r}`:""}${s?` workflow=${s}`:""}${n}`}function hb(e){let t=ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Yl(e,t){let n={number:te(e,"number"),title:S(e,"title"),state:Fn(e),draft:!!e.isDraft};return ro(n,e,t,["author","labels","url","updated"]),n}function Ql(e,t){let n=Yl(e,t);return n.body=ns(e,"body",to,t.full),t.wide&&(n.base=S(e,"baseRefName"),n.head=S(e,"headRefName")),n}function Zl(e,t){let n={number:te(e,"number"),title:S(e,"title"),state:Fn(e),labels:ed(e.labels)};return ro(n,e,t,["author","url","updated"]),n}function yb(e,t){let n=Zl(e,t);return n.body=ns(e,"body",to,t.full),n}function Xl(e,t){let n={id:te(e,"databaseId"),name:S(e,"name"),status:Fn(e),conclusion:S(e,"conclusion")};return ro(n,e,t,["event","branch","workflow","created"]),n}function wb(e,t){let n=Xl(e,t),r=re(e.jobs).map(s=>({name:S(s,"name"),status:Fn(s),conclusion:S(s,"conclusion"),log:ns(s,"log",Xw,t.full)}));return n.jobs=r,n}function ns(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 bb(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(kt(n)){if(kt(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 _b(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 Hl(e,t){return e.every(n=>n.state===t)?t:"returned"}function eo(e,t,n){return n?`${e}/${t}`:String(e)}function Zt(e,t,n){return t.query?Ie(e,n):e}function Fn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function ro(e,t,n,r){if(!(!n.wide&&n.fields.size===0))for(let s of r)!n.wide&&!n.fields.has(s)||(s==="author"?e.author=td(t.author):s==="labels"?e.labels=ed(t.labels):s==="url"?e.url=S(t,"url"):s==="updated"?e.updated=S(t,"updatedAt"):s==="event"?e.event=S(t,"event"):s==="branch"?e.branch=S(t,"headBranch"):s==="workflow"?e.workflow=S(t,"workflowName"):s==="created"&&(e.created=S(t,"createdAt")))}function ed(e){return Array.isArray(e)?e.map(t=>kt(t)?S(t,"name"):String(t)).filter(Boolean):[]}function td(e){return kt(e)?S(e,"login"):""}function Jn(e){return e.trim()?JSON.parse(e):null}function re(e){return Array.isArray(e)?e.filter(kt):[]}function A(e){return kt(e)?e:{}}function S(e,t){let n=e[t];return typeof n=="string"?n:""}function te(e,t){let n=e[t];return typeof n=="number"?n:0}function kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Qw,Zw,to,Xw,eb,ts,io=E(()=>{"use strict";ne();Gr();St();gn();ut();Qw={"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"]},Zw={"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"]},to=160,Xw=160,eb={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};ts=class extends Error{constructor(n,r,s=[]){super(r);this.command=n;this.validFields=s}render(){return N({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var co={};M(co,{renderTestContract:()=>nd,runTestWrapper:()=>xb});import{spawn as Rb}from"node:child_process";async function xb(e,t){let n=ct(e),r=await Db(n.argv);return await nd(e,r,t)}async function nd(e,t,n){let r=ct(e),i=rd(r.argv)==="vitest"?Cb(t.stdout):$b(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let h=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${Nb(i.durationSeconds)}`,c=G(i.failures,r.query);if(n.level==="terse")return await vb(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,f=0;for(let h of c){let m=await Ib(h.excerpt,r.argv.join(" "),n.store);u.push({suite:h.suite,name:h.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 p=r.query?Ie(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(D(p)),stderr:Buffer.from(t.stderr),status:ao(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function vb(e,t,n,r,s,i,o){let a=Tb(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?Ie(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=D(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:ao(t.status),signal:t.signal,payload:u};let p={exit_code:r,summary:s};n.failures.length>0&&(p.failures=n.failures.map(T=>({suite:T.suite,name:T.name,excerpt:T.excerpt})));let h=D(p),m=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!g)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${m}) \u2014 ${ge(g)}`;return{stdout:Buffer.from(`${l}
142
+ ${y}`),stderr:Buffer.from(t.stderr),status:ao(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:m,rowsElided:f,rawOutput:Buffer.from(h)}}function ao(e){return e===0||e===null?0:1}function Tb(e){let t=[],n=kb;for(let r of e.slice(0,Eb)){let s=Ob(r.excerpt,Math.min(Sb,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function Ob(e,t){if(t<=0)return"";let n=e.split(`
143
143
  `),r=n.length<=2?e:`${n[0]}
144
144
  \u2026
145
- ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function nd(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 xb(e){if(nd(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 vb(e){let t=xb(e),n=yb(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 Tb(e){let t=rd(e);if(!Qe(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Ze(t.numTotalTests),i=Ze(t.numFailedTests),o=$b(Ze(t.startTime),Ze(t.endTime));for(let a of n){if(!Qe(a))continue;let c=Te(a.name)||Te(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Qe(l)&&l.status==="failed"&&r.push({suite:c,name:Te(l.fullName)||Te(l.title)||Te(l.name),excerpt:Db(l.failureMessages)||Te(l.failureMessage)})}return s||=n.reduce((a,c)=>!Qe(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=r.length,o||=n.reduce((a,c)=>Qe(c)?a+Ze(c.perfStats&&Qe(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:n.length||1,durationSeconds:o,failures:r}}function Ob(e){let t=e.split(`
146
- `).filter(Boolean).map(c=>rd(c)).filter(Qe);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+=Ze(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Ze(c.failed),o+=Ze(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:Te(c.name).split("::").slice(0,-1).join("::"),name:Te(c.name),excerpt:Te(c.stdout)});continue}if(c.reason==="compiler-message"&&Qe(c.message)){let u=Te(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(`
147
- `)}),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 Pb(e,t,n){let r=Buffer.from(e);if(r.length<=oo)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,oo).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(i);return{text:`${i}
148
- \u2026 elided ${o} bytes (+${r.length}) \u2014 ${ge(s)}`,handle:s,bytesElided:r.length}}function rd(e){try{return JSON.parse(e)}catch{return null}}function Db(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
149
- `):""}function Cb(e){return`${Number(e.toFixed(1))}s`}function $b(e,t){return e>0&&t>e?(t-e)/1e3:0}function Ze(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Te(e){return typeof e=="string"?e:""}function Qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var oo,wb,bb,_b,uo=E(()=>{"use strict";se();St();gn();ut();oo=320,wb=160,bb=oo,_b=3});var mo={};M(mo,{parseCatCommand:()=>fo,renderCatContract:()=>Ub,runCatWrapper:()=>jb});import{isUtf8 as Ib}from"node:buffer";import{readFile as Ab}from"node:fs/promises";import{extname as Nb}from"node:path";async function jb(e,t){let n=fo(e),r;try{r=await Ab(n.file)}catch(s){let i=s instanceof Error?s.message:String(s),o=fe(e.join(" "),"",i);return{stdout:N({...o,help:`ls ${n.file}`}),stderr:Buffer.from(`${i}
150
- `),status:1,signal:null}}return ud(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await cd(e,n,r,t)}async function Ub(e,t,n){if((t.status??0)!==0||t.signal){let o=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(o),stderr:Buffer.from(t.stderr),status:o.exitCode??1,signal:t.signal}}let r=fo(e),s=Buffer.from(t.stdout,"utf8");return ud(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await cd(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function fo(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=ad(t[++o],lo);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=ad(u,lo);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 cd(e,t,n,r){let s=n.toString("utf8"),i=Gb(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>od(r.heavyByteThreshold,sd)||i.truncated;if(!id(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=id(t.file)?Jb(e,t.file,n,s,r.level,i):Fb(e,t.file,n,s,i),c=`${$(a)}
151
- `;if(!o&&Buffer.byteLength(c)<=od(r.heavyByteThreshold,sd))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 ${ge(u)}
152
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function Jb(e,t,n,r,s,i){let o=rs(r),a=s==="terse"?Lb:Bb,c=rs(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:Hb(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function Fb(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:rs(r).length,content:rs(s.text),truncated:s.truncated}}function Gb(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
145
+ ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function rd(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 Pb(e){if(rd(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 Db(e){let t=Pb(e),n=Rb(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 Cb(e){let t=sd(e);if(!Qe(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Ze(t.numTotalTests),i=Ze(t.numFailedTests),o=Bb(Ze(t.startTime),Ze(t.endTime));for(let a of n){if(!Qe(a))continue;let c=Te(a.name)||Te(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Qe(l)&&l.status==="failed"&&r.push({suite:c,name:Te(l.fullName)||Te(l.title)||Te(l.name),excerpt:Ab(l.failureMessages)||Te(l.failureMessage)})}return s||=n.reduce((a,c)=>!Qe(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=r.length,o||=n.reduce((a,c)=>Qe(c)?a+Ze(c.perfStats&&Qe(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:n.length||1,durationSeconds:o,failures:r}}function $b(e){let t=e.split(`
146
+ `).filter(Boolean).map(c=>sd(c)).filter(Qe);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+=Ze(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Ze(c.failed),o+=Ze(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:Te(c.name).split("::").slice(0,-1).join("::"),name:Te(c.name),excerpt:Te(c.stdout)});continue}if(c.reason==="compiler-message"&&Qe(c.message)){let u=Te(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(`
147
+ `)}),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 Ib(e,t,n){let r=Buffer.from(e);if(r.length<=oo)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,oo).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(i);return{text:`${i}
148
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 ${ge(s)}`,handle:s,bytesElided:r.length}}function sd(e){try{return JSON.parse(e)}catch{return null}}function Ab(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
149
+ `):""}function Nb(e){return`${Number(e.toFixed(1))}s`}function Bb(e,t){return e>0&&t>e?(t-e)/1e3:0}function Ze(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Te(e){return typeof e=="string"?e:""}function Qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var oo,Sb,kb,Eb,uo=E(()=>{"use strict";ne();St();gn();ut();oo=320,Sb=160,kb=oo,Eb=3});var mo={};M(mo,{parseCatCommand:()=>fo,renderCatContract:()=>Hb,runCatWrapper:()=>Gb});import{isUtf8 as Lb}from"node:buffer";import{readFile as Mb}from"node:fs/promises";import{extname as jb}from"node:path";async function Gb(e,t){let n=fo(e),r;try{r=await Mb(n.file)}catch(s){let i=s instanceof Error?s.message:String(s),o=fe(e.join(" "),"",i);return{stdout:N({...o,help:`ls ${n.file}`}),stderr:Buffer.from(`${i}
150
+ `),status:1,signal:null}}return ld(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await ud(e,n,r,t)}async function Hb(e,t,n){if((t.status??0)!==0||t.signal){let o=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(o),stderr:Buffer.from(t.stderr),status:o.exitCode??1,signal:t.signal}}let r=fo(e),s=Buffer.from(t.stdout,"utf8");return ld(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await ud(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function fo(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=cd(t[++o],lo);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=cd(u,lo);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 ud(e,t,n,r){let s=n.toString("utf8"),i=Vb(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>ad(r.heavyByteThreshold,id)||i.truncated;if(!od(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=od(t.file)?qb(e,t.file,n,s,r.level,i):Wb(e,t.file,n,s,i),c=`${D(a)}
151
+ `;if(!o&&Buffer.byteLength(c)<=ad(r.heavyByteThreshold,id))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 ${ge(u)}
152
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function qb(e,t,n,r,s,i){let o=rs(r),a=s==="terse"?Jb:Ub,c=rs(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:zb(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function Wb(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:rs(r).length,content:rs(s.text),truncated:s.truncated}}function Vb(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
153
153
  `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??lo,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
154
154
  `)}${r&&o.length>0?`
155
- `:""}`,truncated:o.length<s.length}}function Hb(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&&!qb(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function rs(e){let t=e.split(`
156
- `);return t.at(-1)===""?t.slice(0,-1):t}function ud(e){return e.includes(0)||!Ib(e)}function id(e){return Mb.has(Nb(e).toLowerCase())}function qb(e){return["for","if","switch","while"].includes(e)}function od(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ad(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var sd,lo,Bb,Lb,Mb,po=E(()=>{"use strict";se();St();ut();sd=8*1024,lo=10,Bb=8,Lb=2,Mb=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});function fd(e,t={}){let n=Wb(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 p of new Set(d.tokens))r.set(p,(r.get(p)??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=go(i),u=go(o),l=go(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(p=>Zb(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:ho(d.length,c)+ho(d.tokens.length,u)+ho(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+Yb(d.tokens,r,n.length)+Qb(d.signature,s,n.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,p)=>p.score-d.score||d.line.index-p.line.index).slice(0,t.maxOutliers??3).sort((d,p)=>d.line.index-p.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function Wb(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(ld(r++,n,i,e.slice(n,i).replace(/\r$/,""))),n=i+1}return(n<e.length||e.length===0)&&t.push(ld(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function ld(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:Vb(r),tokens:zb(r),numbers:Kb(r),length:r.length}}function Vb(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 zb(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function Kb(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function Yb(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 Qb(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function go(e){let t=dd(e),n=dd(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function ho(e,t){return Math.abs(e-t.median)/t.mad}function dd(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 Zb(e,t,n,r){return e<r&&n<t}var md=E(()=>{"use strict"});var qn={};M(qn,{parseExecCommandLine:()=>bd,renderExecContract:()=>wd,runExecWrapper:()=>r_});import{isUtf8 as Xb}from"node:buffer";import{spawn as e_}from"node:child_process";async function r_(e,t){let n=bd(e),r=await s_(n);return await wd(n,r,t)}async function wd(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=fe(e,t.stdout,t.stderr);return{stdout:N(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=i_(r),o=i.kind==="text"?Buffer.from(i.text):r,a=x_(n.heavyByteThreshold,t_);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"?a_(i.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):c_(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 bd(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 s_(e){let t=e_(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 i_(e){return Xb(e)?{kind:"text",text:o_(e.toString("utf8"))}:{kind:"bytes"}}function o_(e){let t=e;for(let n of[Lr,Mr,jr,Ur])t=n.apply(t);return t}function a_(e,t,n,r,s,i=w_,o=Nn){let c=Math.max(1,Math.floor((r==="terse"?yd:n_)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=y_(e,c,l,i),d=u_(e),p=l_(d,e,u,c,l,f.kind==="ok"?f.lines:[],o),h=_d(s,d,t,E_(u),n,p.summary),m=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:vd(f.error)}:p.degradation;return{text:xd(h),degradation:m}}function c_(e,t,n,r){let s=Math.max(1,Math.floor(yd/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:xd(_d(r,"bytes",t,0,n,i))}}function _d(e,t,n,r,s,i){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:i,recovery:{original:ge(s)}}}function u_(e){let t=e.trim();return t?Sd(t)?"json":kd(e)?"jsonl":b_(e)?"unified-diff":Ed(e)?"tabular":__(e)?"log-like":R_(e)?"prose":"untyped":"untyped"}function l_(e,t,n,r,s,i,o=Nn){switch(e){case"json":return d_(t,o);case"jsonl":return{summary:f_(t)};case"unified-diff":return{summary:m_(t)};case"tabular":return{summary:p_(t)};case"log-like":return{summary:g_(t,i)};case"prose":return{summary:h_(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Rd(n,r,s,i)}}}function d_(e,t){let n=Sd(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(Xe),item_keys:wo(n)}}}catch(r){return{summary:gd(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:vd(r)}}}return{summary:gd(n)}}if(Hn(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,Xe(i)]))}}}return{summary:{root_type:typeof n,value:Xe(n)}}}function gd(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Xe),item_keys:wo(e)}}function f_(e){let t=kd(e)??[],n=S_(t,"level");return{records:t.length,keys:wo(t),levels:n,first:Xe(t[0]),last:Xe(t.at(-1))}}function m_(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 p_(e){let t=Ed(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Rd(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function g_(e,t){let n=Gn(e);return{entries:n.length,levels:k_(n),first:Et(n[0]??""),last:Et(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:Et(r.text)}))}}function h_(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:Et(t[0]??""),closing:Et(t.at(-1)??"")}}function Rd(e,t,n,r){let s=hd(e.subarray(0,t)),i=hd(e.subarray(n));return{head:s,tail:i,outliers:r.map(o=>({line:o.lineNumber,score:Number(o.score.toFixed(2)),text:Et(o.text)}))}}function y_(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function w_(e,t){return fd(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Sd(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return Hn(n)||Array.isArray(n)?n:null}catch{return null}}function kd(e){let t=Gn(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 b_(e){let t=Gn(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 Ed(e){let t=Gn(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 __(e){let t=Gn(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 R_(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 Gn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function wo(e){let t=new Map;for(let n of e)if(Hn(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 S_(e,t){let n=new Map;for(let r of e){if(!Hn(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 k_(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 Xe(e){return typeof e=="string"?Et(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(Xe):Hn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,Xe(n)])):String(e)}function Et(e){let t=e.replace(/\s+/g," ").trim();return t.length<=pd?t:`${t.slice(0,pd-1)}\u2026`}function xd(e){let t=$(e).trimEnd(),n=re(t);if(!yo(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
157
- `}function yo(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)=>yo(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)&&yo(n[o],r[o]))}function Hn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function vd(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 hd(e){return e.toString("utf8").replace(/�$/g,"")}function E_(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 x_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var t_,n_,yd,pd,Wn=E(()=>{"use strict";se();md();St();Bn();ut();t_=8*1024,n_=2*1024,yd=1024,pd=240});Ts();Ce();pn();import{spawn as Eo}from"node:child_process";import{createHash as v_}from"node:crypto";import{existsSync as vt,readFileSync as T_,readdirSync as O_,statSync as P_}from"node:fs";import{tmpdir as D_}from"node:os";import{dirname as C_,join as tt}from"node:path";import{fileURLToPath as is}from"node:url";function Ca(e){let t={app:e,version:ym(Bt("__RED_BUILD_VERSION__",()=>"2.65.2")??"0.0.0-dev"),gitSha:Bt("__RED_BUILD_GIT_SHA__",()=>"b471a7687a1d2cb194ba617ae5a71b93c32b3f02")??"unknown",buildTime:Bt("__RED_BUILD_TIME__",()=>"2026-07-17T15:36:58-03:00")??"unknown",bundleAsset:Bt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Bt("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Bt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function ym(e){return e.startsWith("v")?e.slice(1):e}function Bt(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}gn();Ws();ut();Ee();async function $_(e=process.argv.slice(2)){let t=Ca("rsp");if(dR(e))return process.stdout.write(fR(e)),0;let n=pR(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(An(),Nr));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(An(),Nr));return await m()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(Bn(),Si));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(Bn(),Si));return await m()}if(n.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Du(),Pu)),g=await m(process.cwd());return process.stdout.write(SR(g)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Bu(),Nu));return await m(),0}if(n.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(ji(),Mi));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(N({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(()=>(Yu(),Ku));return process.stdout.write(g(m)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(Re(),sc)),s=r(process.cwd(),process.env,n.storeUri);if(n.command==="doctor"){let{resolveResidentPaths:m}=await Promise.resolve().then(()=>(Fe(),ht)),g=m(process.cwd()),w=await J_(s,g,Ro(n.positional,1));return process.stdout.write(V_(w)),w.exitCode}let i=uR(n.command);if(!s.enabled)return i?await cR(n.positional):(process.stdout.write(`${Po()}
158
- `),0);if(n.command==="git"&&xo(n.positional)){let m=process.hrtime.bigint();return await ne(n,await vo(),m,void 0,await L_(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Fe(),ht)),u=o(process.cwd());if(i&&N_(s.measurementHoldoutShare))return await I_(n,u.rootDir,s.measurementHoldoutShare);if(n.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(Ol(),Tl)),g=o(process.cwd()),w=Oe(n.positional,"--socket")??g.socketPath,y=r(process.cwd(),process.env,n.storeUri??Oe(n.positional,"--store-uri"));return y.enabled?(await m({socketPath:w,pidPath:Oe(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:y.storeUri,ttlDays:U(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:U(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:U(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:U(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:U(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:U(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:U(n.positional,"--idle-ms")??y.idleMs,residentVersion:Oe(n.positional,"--resident-version")??t.version,registryPath:Oe(n.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${Po()}
159
- `),0)}if(n.command==="warm-resident"){let m=o(process.cwd()),g=Oe(n.positional,"--socket")??m.socketPath,w=Oe(n.positional,"--wake-lock")??m.wakeLockPath,y=r(process.cwd(),process.env,n.storeUri??Oe(n.positional,"--store-uri"));if(!y.enabled)return 0;let{warmResidentServer:T}=await Promise.resolve().then(()=>(Fe(),ht));return await T({...m,socketPath:g,wakeLockPath:w},{storeUri:y.storeUri,ttlDays:U(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:U(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:U(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:U(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:U(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:U(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:U(n.positional,"--idle-ms")??y.idleMs,clientVersion:t.version}),0}if(n.command==="proxy"){let{runProxy:m}=await Promise.resolve().then(()=>(Xr(),Zr));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(()=>(Fe(),ht)),w=n.command==="sweep"?await g(u):await m(u);return process.stdout.write(`${J(w)}
160
- `),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(Gr(),ju)),g=gR(n.positional);if(!g)return process.stdout.write(N({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 w=await m({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${n.positional.join(" ")}`});return process.stdout.write(w.stdout),w.stderr&&process.stderr.write(`${w.stderr}
161
- `),w.status}if(!n.command){let m=await z_(s);return process.stdout.write(Y_(m)),0}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!vt(is(s.storeUri)))return i?await U_(n,s,u.rootDir):(process.stdout.write(N({command:nt(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(()=>(ze(),Gt));return await m.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},p=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),h;try{if(n.command==="stats"){let{stats:m,telemetry:g}=await Io(s,Ro(n.positional,30));return process.stdout.write(yR(m,g,hR(n.positional))),0}if(n.command==="gains"){let m=await p();if(h=()=>m.close(),!j_(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
162
- `),1;let g=await m.telemetryGains(Ro(n.positional,28));return process.stdout.write(wR(g)),0}if(n.command==="git"){if(et(f()),xo(n.positional)){let T=process.hrtime.bigint();return await ne(n,await vo(),T,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(St(),Yi)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await ne(n,y,w,g,u.rootDir)}if(n.command==="gh"){et(f());let{runGhWrapper:m}=await Promise.resolve().then(()=>(io(),so)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g});return await ne(n,y,w,g,u.rootDir)}if(n.command==="vitest"||n.command==="cargo"){et(f());let{runTestWrapper:m}=await Promise.resolve().then(()=>(uo(),co)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g});return await ne(n,y,w,g,u.rootDir)}if(n.command==="cat"){et(f());let{runCatWrapper:m}=await Promise.resolve().then(()=>(po(),mo)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await ne(n,y,w,g,u.rootDir)}if(n.command==="exec"){et(f());let{runExecWrapper:m}=await Promise.resolve().then(()=>(Wn(),qn)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await ne(n,y,w,g,u.rootDir)}if(n.command==="show"&&n.handle){let m=await p();h=()=>m.close();let g=await m.get(n.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await _o(u.rootDir,n.handle,!0,g.original.length),0;if(g?.status==="expired"){let y=N({command:`rsp show ${n.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(y),await _o(u.rootDir,n.handle,!1,y.length),1}let w=N({command:`rsp show ${n.handle}`,category:"real-error",error:"expired unknown",help:n.handle});return process.stdout.write(w),await _o(u.rootDir,n.handle,!1,w.length),1}return process.stdout.write(N({command:n.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(m){if(Ao(m))return process.stdout.write(m.render()),2;if(i)return await Oo("wrapper failed",n.positional,m,u.rootDir);throw m}finally{await h?.()}}async function I_(e,t,n){let r=process.hrtime.bigint(),s=await A_(e.positional),i=Number(process.hrtime.bigint()-r)/1e6;return B_(t,e,s,i,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function A_(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let n;if(t==="exec"||t==="proxy"){let i=t==="proxy"?await Promise.resolve().then(()=>(Xr(),Zr)).then(o=>o.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(Wn(),qn)).then(o=>o.parseExecCommandLine(e));n=Eo(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=Eo(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let r=0,s=0;return n.stdout?.on("data",i=>{r+=i.length,process.stdout.write(i)}),n.stderr?.on("data",i=>{s+=i.length,process.stderr.write(i)}),await new Promise(i=>{n.on("error",o=>{let a=`${o instanceof Error?o.message:String(o)}
163
- `;s+=Buffer.byteLength(a),process.stderr.write(a),i({stdoutBytes:r,stderrBytes:s,status:127,signal:null})}),n.on("close",(o,a)=>i({stdoutBytes:r,stderrBytes:s,status:o,signal:a}))})}function N_(e){return e>0&&Math.random()<e}function B_(e,t,n,r,s){let i=n.stdoutBytes+n.stderrBytes,o={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:nt(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:i,emitted_bytes:i,wrapper_ms:r};gt(e,{collection:"rsp_accounting_events_v1",...o}),gt(e,{collection:"rsp_telemetry_invocations_v1",...o,accounting_recorded:!0})}function Oe(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function U(e,t){let n=Oe(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function xo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function vo(){if(M_(process.cwd()))return{stdout:bo(),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:bo(),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?bo():n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function bo(){return Buffer.from(`${J({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
164
- `)}async function L_(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Fe(),ht));return t(e).rootDir}catch{return e}}function M_(e){try{return!vt(`${e}/.git`)||vt(`${e}/.git/index`)?!1:O_(e).every(t=>t===".git")}catch{return!1}}function j_(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var xt=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}},To=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function U_(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new To,i=process.hrtime.bigint();try{if(e.command==="git"){if(xo(e.positional))return await ne(e,await vo(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(St(),Yi)),a=await o(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await ne(e,a,i,s,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(io(),so)),a=await o(e.positional,{level:e.level,store:s});return await ne(e,a,i,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(uo(),co)),a=await o(e.positional,{level:e.level,store:s});return await ne(e,a,i,s,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(po(),mo)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await ne(e,a,i,s,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(Wn(),qn)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await ne(e,a,i,s)}}catch(o){return Ao(o)?(process.stdout.write(o.render()),2):await Oo("wrapper failed",e.positional,o,n)}finally{await s.close()}return await Oo("wrapper failed",e.positional,r,n)}async function Io(e,t){let n={stats:RR(e.telemetryByteBudget),telemetry:$o(t)};if(!e.storeUri.startsWith("file://"))return n;let r=is(e.storeUri);if(!vt(r))return n;if(!r.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(ze(),Gt)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:$o(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(ze(),Gt));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(Ee(),Pn)),a=await Ct(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}async function J_(e,t,n){let r=[],s=!e.enabled;if(r.push(s?q("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):q("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(q("hook_wiring","skipped because rsp is disabled"),q("proxy_mode","skipped because rsp is disabled"),q("resident_liveness","skipped because rsp is disabled"),q("store_provisioning","skipped because rsp is disabled"),q("recent_degradation_rate","skipped because rsp is disabled")),Td("disabled",r,n);r.push(await F_(e)),r.push(e.proxyEnabled?q("proxy_mode","proxy routing enabled for pre-exec rewrites"):Xt("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:i}=await Promise.resolve().then(()=>(Fe(),ht));if(r.push(G_(await i(t))),r.push(H_(e)),Pd(e)){let{telemetry:o}=await Io(e,n);r.push(q_(o,n))}else r.push(q("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return Td(r.some(o=>!o.pass)?"fail":"pass",r,n)}async function F_(e){try{if(e.proxyEnabled)return q("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(An(),Nr)),n=t("git status");return n.kind==="rewrite"?q("hook_wiring",`pre-exec hook would rewrite git status through ${n.capabilityId}`):Xt("hook_wiring",`pre-exec hook passed git status through: ${n.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Xt("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?ss(t.message):"unknown error"}`,"rsp setup")}}function G_(e){return e.state==="registered-alive-socket-healthy"?q("resident_liveness","resident registry points at a healthy socket"):Xt("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function H_(e){return e.storeUri.startsWith("file://")?Pd(e)?q("store_provisioning","rsp store exists for this directory"):Xt("store_provisioning","rsp store is not provisioned","rsp setup"):q("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function q_(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return q("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let r=e.health.degradations,s=n?.reason??e.health.most_recent?.reason??"unknown",i=n?.count??r;return Xt("recent_degradation_rate",`${r} degradation(s) in the recent ${t}d window; dominant reason ${s} (${i})`,W_(s,t))}function W_(e,t){return/unavailable|not provisioned|missing/i.test(e)?"rsp setup":/resident|socket|registry/i.test(e)?"rsp warm-resident":`rsp stats --since ${t}d --full`}function Pd(e){if(!e.storeUri.startsWith("file://"))return!0;try{return vt(is(e.storeUri))}catch{return!1}}function q(e,t){return{name:e,pass:!0,finding:t}}function Xt(e,t,n){return{name:e,pass:!1,finding:t,fix_command:n,error:Vs({command:`rsp doctor:${e}`,category:"real-error",error:t,help:n})}}function Td(e,t,n){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:n,probes:t,errors:t.map(r=>r.error).filter(r=>!!r)}}function V_(e){let{exitCode:t,...n}=e;return`${J({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
165
- `}async function z_(e){let{stats:t,telemetry:n}=await Io(e,30),[r,s]=await Promise.all([K_(e),Promise.resolve().then(()=>(ji(),Mi)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s}}async function K_(e){if(!e.storeUri.startsWith("file://"))return[];let t=is(e.storeUri);if(!vt(t))return[];let{RspElisionStore:n}=await Promise.resolve().then(()=>(ze(),Gt)),r=await n.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return await r.recoveryHandles(5)}finally{await r.close()}}function Y_(e){let t=Cd(e.stats,e.telemetry,!1),n=Gs({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??No()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},Q_(e));return`${J(n)}
166
- `}function Q_(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}async function ne(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?(et(nR(s,e,t,o,r.lastResponseMetrics())),i&&Z_(s,i)):rR(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Z_(e,t){try{let n=Ue(e),r=P_(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!tR(n,Date.now()-s))return;let i=X_(e),o=eR(i),a=tt(o,"rsp.sock"),c=tt(o,"rsp.pid"),u=tt(z(i),"rsp-resident.pid.json"),l=tt(i,".red","tmp","rsp.wake.lock");Eo(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 X_(e){let t=e;for(;;){if(vt(tt(t,".git")))return t;let n=C_(t);if(n===t)return e;t=n}}function eR(e){let t=v_("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=tt(n,"red-skills",t);if(tt(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return tt(D_(),`red-skills-${r}`,t)}function tR(e,t){try{let n=T_(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 nR(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(()=>(Ee(),Pn));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:nt(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:nt(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:nt(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:nt(t),reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead,accounting_recorded:!0}))}function rR(e,t,n,r){try{let s=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]);gt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:nt(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}),gt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:nt(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 Oo(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 Dd(t);if(r){let i=sR(e,t,n),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ee(),Pn));et(o(r,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Do(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})),et(o(r,{collection:c,ts:new Date().toISOString(),command:Do(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}function sR(e,t,n){let r=t[0]??"unknown",s=iR(n)||e;return{reason:Od(n)==="ENOENT"||Od(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:aR(n)??1,stderrHead:oR(s,240)}}function iR(e){return e instanceof Error?ss(e.message):ss(String(e??""))}function ss(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function oR(e,t){let n=ss(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function Od(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function aR(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 et(e){e.catch(()=>{})}async function _o(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(Ee(),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 cR(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Po()}, passing through
168
- `),await Dd(e)}function Po(){return"rsp is not enabled in this directory; run /red-setup"}function uR(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}async function Dd(e){if(e[0]==="exec"||e[0]==="proxy")return await lR(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 lR(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:s}=await Promise.resolve().then(()=>(Xr(),Zr));t=s(e)}else{let{parseExecCommandLine:s}=await Promise.resolve().then(()=>(Wn(),qn));t=s(e)}}catch(s){return process.stderr.write(`${s instanceof Error?s.message:String(s)}
155
+ `:""}`,truncated:o.length<s.length}}function zb(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&&!Kb(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function rs(e){let t=e.split(`
156
+ `);return t.at(-1)===""?t.slice(0,-1):t}function ld(e){return e.includes(0)||!Lb(e)}function od(e){return Fb.has(jb(e).toLowerCase())}function Kb(e){return["for","if","switch","while"].includes(e)}function ad(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function cd(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var id,lo,Ub,Jb,Fb,po=E(()=>{"use strict";ne();St();ut();id=8*1024,lo=10,Ub=8,Jb=2,Fb=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});function md(e,t={}){let n=Yb(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 p of new Set(d.tokens))r.set(p,(r.get(p)??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=go(i),u=go(o),l=go(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(p=>n_(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:ho(d.length,c)+ho(d.tokens.length,u)+ho(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+e_(d.tokens,r,n.length)+t_(d.signature,s,n.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,p)=>p.score-d.score||d.line.index-p.line.index).slice(0,t.maxOutliers??3).sort((d,p)=>d.line.index-p.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function Yb(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(dd(r++,n,i,e.slice(n,i).replace(/\r$/,""))),n=i+1}return(n<e.length||e.length===0)&&t.push(dd(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function dd(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:Qb(r),tokens:Zb(r),numbers:Xb(r),length:r.length}}function Qb(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 Zb(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function Xb(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function e_(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 t_(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function go(e){let t=fd(e),n=fd(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function ho(e,t){return Math.abs(e-t.median)/t.mad}function fd(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 n_(e,t,n,r){return e<r&&n<t}var pd=E(()=>{"use strict"});var qn={};M(qn,{parseExecCommandLine:()=>_d,renderExecContract:()=>bd,runExecWrapper:()=>a_});import{isUtf8 as r_}from"node:buffer";import{spawn as s_}from"node:child_process";async function a_(e,t){let n=_d(e),r=await c_(n);return await bd(n,r,t)}async function bd(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=fe(e,t.stdout,t.stderr);return{stdout:N(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=u_(r),o=i.kind==="text"?Buffer.from(i.text):r,a=P_(n.heavyByteThreshold,i_);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"?d_(i.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):f_(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 _d(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 c_(e){let t=s_(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 u_(e){return r_(e)?{kind:"text",text:l_(e.toString("utf8"))}:{kind:"bytes"}}function l_(e){let t=e;for(let n of[Lr,Mr,jr,Ur])t=n.apply(t);return t}function d_(e,t,n,r,s,i=S_,o=Nn){let c=Math.max(1,Math.floor((r==="terse"?wd:o_)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=R_(e,c,l,i),d=m_(e),p=p_(d,e,u,c,l,f.kind==="ok"?f.lines:[],o),h=Rd(s,d,t,O_(u),n,p.summary),m=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Td(f.error)}:p.degradation;return{text:vd(h),degradation:m}}function f_(e,t,n,r){let s=Math.max(1,Math.floor(wd/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:vd(Rd(r,"bytes",t,0,n,i))}}function Rd(e,t,n,r,s,i){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:i,recovery:{original:ge(s)}}}function m_(e){let t=e.trim();return t?kd(t)?"json":Ed(e)?"jsonl":k_(e)?"unified-diff":xd(e)?"tabular":E_(e)?"log-like":x_(e)?"prose":"untyped":"untyped"}function p_(e,t,n,r,s,i,o=Nn){switch(e){case"json":return g_(t,o);case"jsonl":return{summary:h_(t)};case"unified-diff":return{summary:y_(t)};case"tabular":return{summary:w_(t)};case"log-like":return{summary:b_(t,i)};case"prose":return{summary:__(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Sd(n,r,s,i)}}}function g_(e,t){let n=kd(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(Xe),item_keys:wo(n)}}}catch(r){return{summary:hd(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Td(r)}}}return{summary:hd(n)}}if(Hn(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,Xe(i)]))}}}return{summary:{root_type:typeof n,value:Xe(n)}}}function hd(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Xe),item_keys:wo(e)}}function h_(e){let t=Ed(e)??[],n=v_(t,"level");return{records:t.length,keys:wo(t),levels:n,first:Xe(t[0]),last:Xe(t.at(-1))}}function y_(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 w_(e){let t=xd(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Sd(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function b_(e,t){let n=Gn(e);return{entries:n.length,levels:T_(n),first:Et(n[0]??""),last:Et(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:Et(r.text)}))}}function __(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:Et(t[0]??""),closing:Et(t.at(-1)??"")}}function Sd(e,t,n,r){let s=yd(e.subarray(0,t)),i=yd(e.subarray(n));return{head:s,tail:i,outliers:r.map(o=>({line:o.lineNumber,score:Number(o.score.toFixed(2)),text:Et(o.text)}))}}function R_(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function S_(e,t){return md(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function kd(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return Hn(n)||Array.isArray(n)?n:null}catch{return null}}function Ed(e){let t=Gn(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 k_(e){let t=Gn(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 xd(e){let t=Gn(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 E_(e){let t=Gn(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 x_(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 Gn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function wo(e){let t=new Map;for(let n of e)if(Hn(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 v_(e,t){let n=new Map;for(let r of e){if(!Hn(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 T_(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 Xe(e){return typeof e=="string"?Et(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(Xe):Hn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,Xe(n)])):String(e)}function Et(e){let t=e.replace(/\s+/g," ").trim();return t.length<=gd?t:`${t.slice(0,gd-1)}\u2026`}function vd(e){let t=D(e).trimEnd(),n=Y(t);if(!yo(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
157
+ `}function yo(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)=>yo(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)&&yo(n[o],r[o]))}function Hn(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 yd(e){return e.toString("utf8").replace(/�$/g,"")}function O_(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 P_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var i_,o_,wd,gd,Wn=E(()=>{"use strict";ne();pd();St();Bn();ut();i_=8*1024,o_=2*1024,wd=1024,gd=240});Ts();Ce();pn();import{spawn as Eo}from"node:child_process";import{createHash as D_}from"node:crypto";import{existsSync as vt,readFileSync as C_,readdirSync as $_,statSync as I_}from"node:fs";import{tmpdir as A_}from"node:os";import{dirname as N_,join as tt}from"node:path";import{fileURLToPath as is}from"node:url";function Ca(e){let t={app:e,version:bm(Bt("__RED_BUILD_VERSION__",()=>"2.65.3")??"0.0.0-dev"),gitSha:Bt("__RED_BUILD_GIT_SHA__",()=>"a5a57c4bde41ee3e3e7cf2551da07bb0b884b40c")??"unknown",buildTime:Bt("__RED_BUILD_TIME__",()=>"2026-07-17T18:00:29-03:00")??"unknown",bundleAsset:Bt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Bt("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Bt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function bm(e){return e.startsWith("v")?e.slice(1):e}function Bt(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}gn();Ws();ut();Ee();async function B_(e=process.argv.slice(2)){let t=Ca("rsp");if(gR(e))return process.stdout.write(hR(e)),0;let n=wR(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(An(),Nr));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(An(),Nr));return await m()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(Bn(),Si));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(Bn(),Si));return await m()}if(n.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Du(),Pu)),g=await m(process.cwd());return process.stdout.write(vR(g)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Bu(),Nu));return await m(),0}if(n.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(ji(),Mi));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(N({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(()=>(Qu(),Yu));return process.stdout.write(g(m)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(Re(),sc)),s=r(process.cwd(),process.env,n.storeUri);if(n.command==="doctor"){let{resolveResidentPaths:m}=await Promise.resolve().then(()=>(Fe(),ht)),g=m(process.cwd()),w=await q_(s,g,Ro(n.positional,1));return process.stdout.write(Q_(w)),w.exitCode}let i=mR(n.command);if(!s.enabled)return i?await fR(n.positional):(process.stdout.write(`${Po()}
158
+ `),0);if(n.command==="git"&&xo(n.positional)){let m=process.hrtime.bigint();return await se(n,await vo(),m,void 0,await J_(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Fe(),ht)),u=o(process.cwd());if(i&&j_(s.measurementHoldoutShare))return await L_(n,u.rootDir,s.measurementHoldoutShare);if(n.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(Pl(),Ol)),g=o(process.cwd()),w=Oe(n.positional,"--socket")??g.socketPath,y=r(process.cwd(),process.env,n.storeUri??Oe(n.positional,"--store-uri"));return y.enabled?(await m({socketPath:w,pidPath:Oe(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:y.storeUri,ttlDays:U(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:U(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:U(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:U(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:U(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:U(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:U(n.positional,"--idle-ms")??y.idleMs,residentVersion:Oe(n.positional,"--resident-version")??t.version,registryPath:Oe(n.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${Po()}
159
+ `),0)}if(n.command==="warm-resident"){let m=o(process.cwd()),g=Oe(n.positional,"--socket")??m.socketPath,w=Oe(n.positional,"--wake-lock")??m.wakeLockPath,y=r(process.cwd(),process.env,n.storeUri??Oe(n.positional,"--store-uri"));if(!y.enabled)return 0;let{warmResidentServer:T}=await Promise.resolve().then(()=>(Fe(),ht));return await T({...m,socketPath:g,wakeLockPath:w},{storeUri:y.storeUri,ttlDays:U(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:U(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:U(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:U(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:U(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:U(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:U(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:U(n.positional,"--idle-ms")??y.idleMs,clientVersion:t.version}),0}if(n.command==="proxy"){let{runProxy:m}=await Promise.resolve().then(()=>(Xr(),Zr));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(()=>(Fe(),ht)),w=n.command==="sweep"?await g(u):await m(u);return process.stdout.write(`${F(w)}
160
+ `),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(Gr(),Uu)),g=bR(n.positional);if(!g)return process.stdout.write(N({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 w=await m({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${n.positional.join(" ")}`});return process.stdout.write(w.stdout),w.stderr&&process.stderr.write(`${w.stderr}
161
+ `),w.status}if(!n.command){let m=await Z_(s);return process.stdout.write(eR(m)),0}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!vt(is(s.storeUri)))return i?await H_(n,s,u.rootDir):(process.stdout.write(N({command:nt(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(()=>(ze(),Gt));return await m.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},p=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),h;try{if(n.command==="stats"){let{stats:m,telemetry:g}=await Io(s,Ro(n.positional,30));return process.stdout.write(RR(m,g,_R(n.positional))),0}if(n.command==="gains"){let m=await p();if(h=()=>m.close(),!G_(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
162
+ `),1;let g=await m.telemetryGains(Ro(n.positional,28));return process.stdout.write(SR(g)),0}if(n.command==="git"){if(et(f()),xo(n.positional)){let T=process.hrtime.bigint();return await se(n,await vo(),T,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(St(),Yi)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await se(n,y,w,g,u.rootDir)}if(n.command==="gh"){et(f());let{runGhWrapper:m}=await Promise.resolve().then(()=>(io(),so)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g});return await se(n,y,w,g,u.rootDir)}if(n.command==="vitest"||n.command==="cargo"){et(f());let{runTestWrapper:m}=await Promise.resolve().then(()=>(uo(),co)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g});return await se(n,y,w,g,u.rootDir)}if(n.command==="cat"){et(f());let{runCatWrapper:m}=await Promise.resolve().then(()=>(po(),mo)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await se(n,y,w,g,u.rootDir)}if(n.command==="exec"){et(f());let{runExecWrapper:m}=await Promise.resolve().then(()=>(Wn(),qn)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await se(n,y,w,g,u.rootDir)}if(n.command==="show"&&n.handle){let m=await p();h=()=>m.close();let g=await m.get(n.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await _o(u.rootDir,n.handle,!0,g.original.length),0;if(g?.status==="expired"){let y=N({command:`rsp show ${n.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(y),await _o(u.rootDir,n.handle,!1,y.length),1}let w=N({command:`rsp show ${n.handle}`,category:"real-error",error:"expired unknown",help:n.handle});return process.stdout.write(w),await _o(u.rootDir,n.handle,!1,w.length),1}return process.stdout.write(N({command:n.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(m){if(Ao(m))return process.stdout.write(m.render()),2;if(i)return await Oo("wrapper failed",n.positional,m,u.rootDir);throw m}finally{await h?.()}}async function L_(e,t,n){let r=process.hrtime.bigint(),s=await M_(e.positional),i=Number(process.hrtime.bigint()-r)/1e6;return U_(t,e,s,i,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function M_(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let n;if(t==="exec"||t==="proxy"){let i=t==="proxy"?await Promise.resolve().then(()=>(Xr(),Zr)).then(o=>o.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(Wn(),qn)).then(o=>o.parseExecCommandLine(e));n=Eo(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=Eo(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let r=0,s=0;return n.stdout?.on("data",i=>{r+=i.length,process.stdout.write(i)}),n.stderr?.on("data",i=>{s+=i.length,process.stderr.write(i)}),await new Promise(i=>{n.on("error",o=>{let a=`${o instanceof Error?o.message:String(o)}
163
+ `;s+=Buffer.byteLength(a),process.stderr.write(a),i({stdoutBytes:r,stderrBytes:s,status:127,signal:null})}),n.on("close",(o,a)=>i({stdoutBytes:r,stderrBytes:s,status:o,signal:a}))})}function j_(e){return e>0&&Math.random()<e}function U_(e,t,n,r,s){let i=n.stdoutBytes+n.stderrBytes,o={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:nt(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:i,emitted_bytes:i,wrapper_ms:r};gt(e,{collection:"rsp_accounting_events_v1",...o}),gt(e,{collection:"rsp_telemetry_invocations_v1",...o,accounting_recorded:!0})}function Oe(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function U(e,t){let n=Oe(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function xo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function vo(){if(F_(process.cwd()))return{stdout:bo(),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:bo(),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?bo():n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function bo(){return Buffer.from(`${F({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
164
+ `)}async function J_(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Fe(),ht));return t(e).rootDir}catch{return e}}function F_(e){try{return!vt(`${e}/.git`)||vt(`${e}/.git/index`)?!1:$_(e).every(t=>t===".git")}catch{return!1}}function G_(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var xt=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}},To=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function H_(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new To,i=process.hrtime.bigint();try{if(e.command==="git"){if(xo(e.positional))return await se(e,await vo(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(St(),Yi)),a=await o(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await se(e,a,i,s,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(io(),so)),a=await o(e.positional,{level:e.level,store:s});return await se(e,a,i,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(uo(),co)),a=await o(e.positional,{level:e.level,store:s});return await se(e,a,i,s,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(po(),mo)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,i,s,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(Wn(),qn)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,i,s)}}catch(o){return Ao(o)?(process.stdout.write(o.render()),2):await Oo("wrapper failed",e.positional,o,n)}finally{await s.close()}return await Oo("wrapper failed",e.positional,r,n)}async function Io(e,t){let n={stats:xR(e.telemetryByteBudget),telemetry:$o(t)};if(!e.storeUri.startsWith("file://"))return n;let r=is(e.storeUri);if(!vt(r))return n;if(!r.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(ze(),Gt)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:$o(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(ze(),Gt));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(Ee(),Pn)),a=await Ct(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}async function q_(e,t,n){let r=[],s=!e.enabled;if(r.push(s?W("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):W("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(W("hook_wiring","skipped because rsp is disabled"),W("proxy_mode","skipped because rsp is disabled"),W("resident_liveness","skipped because rsp is disabled"),W("store_provisioning","skipped because rsp is disabled"),W("recent_degradation_rate","skipped because rsp is disabled")),Od("disabled",r,n);r.push(await W_(e)),r.push(e.proxyEnabled?W("proxy_mode","proxy routing enabled for pre-exec rewrites"):Xt("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:i}=await Promise.resolve().then(()=>(Fe(),ht));if(r.push(V_(await i(t))),r.push(z_(e)),Dd(e)){let{telemetry:o}=await Io(e,n);r.push(K_(o,n))}else r.push(W("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return Od(r.some(o=>!o.pass)?"fail":"pass",r,n)}async function W_(e){try{if(e.proxyEnabled)return W("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(An(),Nr)),n=t("git status");return n.kind==="rewrite"?W("hook_wiring",`pre-exec hook would rewrite git status through ${n.capabilityId}`):Xt("hook_wiring",`pre-exec hook passed git status through: ${n.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Xt("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?ss(t.message):"unknown error"}`,"rsp setup")}}function V_(e){return e.state==="registered-alive-socket-healthy"?W("resident_liveness","resident registry points at a healthy socket"):Xt("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function z_(e){return e.storeUri.startsWith("file://")?Dd(e)?W("store_provisioning","rsp store exists for this directory"):Xt("store_provisioning","rsp store is not provisioned","rsp setup"):W("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function K_(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return W("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let r=e.health.degradations,s=n?.reason??e.health.most_recent?.reason??"unknown",i=n?.count??r;return Xt("recent_degradation_rate",`${r} degradation(s) in the recent ${t}d window; dominant reason ${s} (${i})`,Y_(s,t))}function Y_(e,t){return/unavailable|not provisioned|missing/i.test(e)?"rsp setup":/resident|socket|registry/i.test(e)?"rsp warm-resident":`rsp stats --since ${t}d --full`}function Dd(e){if(!e.storeUri.startsWith("file://"))return!0;try{return vt(is(e.storeUri))}catch{return!1}}function W(e,t){return{name:e,pass:!0,finding:t}}function Xt(e,t,n){return{name:e,pass:!1,finding:t,fix_command:n,error:Vs({command:`rsp doctor:${e}`,category:"real-error",error:t,help:n})}}function Od(e,t,n){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:n,probes:t,errors:t.map(r=>r.error).filter(r=>!!r)}}function Q_(e){let{exitCode:t,...n}=e;return`${F({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
165
+ `}async function Z_(e){let{stats:t,telemetry:n}=await Io(e,30),[r,s]=await Promise.all([X_(e),Promise.resolve().then(()=>(ji(),Mi)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s}}async function X_(e){if(!e.storeUri.startsWith("file://"))return[];let t=is(e.storeUri);if(!vt(t))return[];let{RspElisionStore:n}=await Promise.resolve().then(()=>(ze(),Gt)),r=await n.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return await r.recoveryHandles(5)}finally{await r.close()}}function eR(e){let t=$d(e.stats,e.telemetry,!1),n=Gs({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??No()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},tR(e));return`${F(n)}
166
+ `}function tR(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}async function se(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?(et(oR(s,e,t,o,r.lastResponseMetrics())),i&&nR(s,i)):aR(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function nR(e,t){try{let n=Ue(e),r=I_(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!iR(n,Date.now()-s))return;let i=rR(e),o=sR(i),a=tt(o,"rsp.sock"),c=tt(o,"rsp.pid"),u=tt(J(i),"rsp-resident.pid.json"),l=tt(i,".red","tmp","rsp.wake.lock");Eo(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 rR(e){let t=e;for(;;){if(vt(tt(t,".git")))return t;let n=N_(t);if(n===t)return e;t=n}}function sR(e){let t=D_("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=tt(n,"red-skills",t);if(tt(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return tt(A_(),`red-skills-${r}`,t)}function iR(e,t){try{let n=C_(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 oR(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(()=>(Ee(),Pn));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:nt(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:nt(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:nt(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:nt(t),reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead,accounting_recorded:!0}))}function aR(e,t,n,r){try{let s=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]);gt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:nt(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}),gt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:nt(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 Oo(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 Cd(t);if(r){let i=cR(e,t,n),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ee(),Pn));et(o(r,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Do(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})),et(o(r,{collection:c,ts:new Date().toISOString(),command:Do(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}function cR(e,t,n){let r=t[0]??"unknown",s=uR(n)||e;return{reason:Pd(n)==="ENOENT"||Pd(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:dR(n)??1,stderrHead:lR(s,240)}}function uR(e){return e instanceof Error?ss(e.message):ss(String(e??""))}function ss(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function lR(e,t){let n=ss(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function Pd(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function dR(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 et(e){e.catch(()=>{})}async function _o(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(Ee(),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 fR(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Po()}, passing through
168
+ `),await Cd(e)}function Po(){return"rsp is not enabled in this directory; run /red-setup"}function mR(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}async function Cd(e){if(e[0]==="exec"||e[0]==="proxy")return await pR(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 pR(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:s}=await Promise.resolve().then(()=>(Xr(),Zr));t=s(e)}else{let{parseExecCommandLine:s}=await Promise.resolve().then(()=>(Wn(),qn));t=s(e)}}catch(s){return process.stderr.write(`${s instanceof Error?s.message:String(s)}
170
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)}
171
- `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function nt(e){return Do(e.positional)}function Do(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 dR(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function fR(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${mR(t).join(`
171
+ `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function nt(e){return Do(e.positional)}function Do(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 gR(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function hR(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${yR(t).join(`
172
172
  `)}
173
- `}function mR(e){switch(e){case"stats":return B("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return B("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return B("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return B("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return B("rsp gh <pr|issue|run> <list|view> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp gh pr list --query <title-or-label>","rsp gh issue view <number>","rsp gh run list --limit 20"]);case"vitest":return B("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return B("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return B("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return B('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return B("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return B("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return B("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return B("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return B("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return B("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return B("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return B("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return B("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return B("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"hook":return B("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," stats, gains, show, git, gh, vitest, cargo, cat, exec, proxy, wait"," doctor, status, sweep, setup, mcp, shell-init, server, warm-resident, gh-api-json, hook","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return B(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function B(e,t,n){return[`usage: ${e}`,"","Flags and defaults:",...t.map(r=>` ${r}`),"","Examples:",...n.map(r=>` ${r}`)]}function pR(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 Co(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 Co=class extends Error{constructor(n){super(`unknown flag: ${n}`);this.flag=n}render(){return tr("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Ao(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function gR(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 Ro(e,t){let n=Oe(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 hR(e){return e.includes("--full")}function yR(e,t=$o(30),n=!1){return`${J(Cd(e,t,n))}
174
- `}function Cd(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??No(),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:bR(t.savings),dollars_saved_estimate_usd_display:_R(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:ko(t.health.degradation_rate),show_hit_rate_display:ko(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:ko(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:So(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:So(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:So(t.latency.store_elapsed_ms_avg)}}}function wR(e){return`${J(e)}
175
- `}function bR(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 _R(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?hn(e.dollars_saved_estimate_usd):`${hn(e.dollars_saved_low_usd)}-${hn(e.dollars_saved_high_usd)} (estimate_midpoint: ${hn(e.dollars_saved_estimate_usd)})`}function So(e){return e==null?"none":String(e)}function ko(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function $o(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 RR(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:No()}}function No(){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 SR(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
176
- `)}import.meta.url===`file://${process.argv[1]}`&&$_().then(e=>process.exit(e),e=>{Ao(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(N({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{$_ as main,SR as renderSetupResult,yR as renderStats};
173
+ `}function yR(e){switch(e){case"stats":return B("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return B("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return B("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return B("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return B("rsp gh <pr|issue|run> <list|view> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp gh pr list --query <title-or-label>","rsp gh issue view <number>","rsp gh run list --limit 20"]);case"vitest":return B("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return B("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return B("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return B('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return B("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return B("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return B("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return B("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return B("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return B("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return B("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return B("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return B("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return B("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"hook":return B("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," stats, gains, show, git, gh, vitest, cargo, cat, exec, proxy, wait"," doctor, status, sweep, setup, mcp, shell-init, server, warm-resident, gh-api-json, hook","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return B(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function B(e,t,n){return[`usage: ${e}`,"","Flags and defaults:",...t.map(r=>` ${r}`),"","Examples:",...n.map(r=>` ${r}`)]}function wR(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 Co(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 Co=class extends Error{constructor(n){super(`unknown flag: ${n}`);this.flag=n}render(){return tr("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Ao(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function bR(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 Ro(e,t){let n=Oe(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 _R(e){return e.includes("--full")}function RR(e,t=$o(30),n=!1){return`${F($d(e,t,n))}
174
+ `}function $d(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??No(),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:kR(t.savings),dollars_saved_estimate_usd_display:ER(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:ko(t.health.degradation_rate),show_hit_rate_display:ko(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:ko(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:So(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:So(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:So(t.latency.store_elapsed_ms_avg)}}}function SR(e){return`${F(e)}
175
+ `}function kR(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 ER(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?hn(e.dollars_saved_estimate_usd):`${hn(e.dollars_saved_low_usd)}-${hn(e.dollars_saved_high_usd)} (estimate_midpoint: ${hn(e.dollars_saved_estimate_usd)})`}function So(e){return e==null?"none":String(e)}function ko(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function $o(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 xR(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:No()}}function No(){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 vR(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
176
+ `)}import.meta.url===`file://${process.argv[1]}`&&B_().then(e=>process.exit(e),e=>{Ao(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(N({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{B_ as main,vR as renderSetupResult,RR as renderStats};