@reddb-io/red-skills 2.74.0 → 2.74.2

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,90 +1,90 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var Ad=Object.defineProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var n in t)Ad(e,n,{get:t[n],enumerable:!0})};async function Mo(e,t){return Nd?Md(e,t):Bd?Ud(e,t):Ld(e,t)}async function Ld(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(s){return new Promise((i,o)=>{r.stdin.write(s,a=>a?o(a):i())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(s=>{r.on("exit",i=>s(i??0))})}}}function Md(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:jd(n.stdout),kill(){n.kill()},wait(){return n.exited}}}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()}}async function Ud(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 Nd,Bd,jo=E(()=>{Nd=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Bd=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Fd}from"node:fs";import{join as Gd}from"node:path";function Uo(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=Gd(n,"bin",t);if(Fd(i))return i;throw new Error(`reddb: binary "${t}" not found.
3
+ var Ld=Object.defineProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var n in t)Ld(e,n,{get:t[n],enumerable:!0})};async function Uo(e,t){return Md?Jd(e,t):jd?Gd(e,t):Ud(e,t)}async function Ud(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 Jd(e,t){let n=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),r=n.stdin.getWriter?n.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(s){r?await r.write(s):(n.stdin.write(s),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:Fd(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*Fd(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}async function Gd(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:Hd(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Hd(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Md,jd,Jo=E(()=>{Md=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",jd=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as qd}from"node:fs";import{join as Wd}from"node:path";function Fo(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=Wd(n,"bin",t);if(qd(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 Jo=E(()=>{});import{fileURLToPath as Hd}from"node:url";import{dirname as qd,resolve as Wd,join as NR}from"node:path";function Kd(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Fo(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Uo({name:Kd(),packageRoot:zd,envVar:"REDDB_BIN"})}var Vd,zd,Go=E(()=>{Jo();Vd=qd(Hd(import.meta.url)),zd=Wd(Vd,"..")});var Yd,Qd,k,zn,He=E(()=>{Yd=new TextEncoder,Qd=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(Yd.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(Qd.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:/"?Zd(e):Xd(e)}function Zd(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=ef(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 Xd(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 ef(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 nf(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Ho(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Ho(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Ho(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 rf(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 tf,tn,fs=E(()=>{He();tf=new Set(["embedded"]),tn=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&tf.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:rf(r.value)}async put(t,n,r,s={}){this._guard("put");let i=nf(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)}.${sf(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 sf(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function of(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 qo(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(qo).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${ms(s,t)} = ${of(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(qo).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 Go=E(()=>{});import{fileURLToPath as Vd}from"node:url";import{dirname as zd,resolve as Kd,join as qR}from"node:path";function Zd(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ho(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Fo({name:Zd(),packageRoot:Qd,envVar:"REDDB_BIN"})}var Yd,Qd,qo=E(()=>{Go();Yd=zd(Vd(import.meta.url)),Qd=Kd(Yd,"..")});var Xd,ef,k,Kn,He=E(()=>{Xd=new TextEncoder,ef=new TextDecoder("utf-8"),k=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},Kn=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(Xd.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(ef.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 fs(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:/"?tf(e):nf(e)}function tf(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=rf(s),a=n.port?Number(n.port):ds(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 nf(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):ds(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):ds(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 rf(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 ds(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 ms=E(()=>{He()});function of(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Wo(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Wo(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Wo(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 af(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 sf,tn,ps=E(()=>{He();sf=new Set(["embedded"]),tn=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&sf.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:af(r.value)}async put(t,n,r,s={}){this._guard("put");let i=of(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 gs(e,t){return`${hs(e)}.${cf(t)}`}function hs(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 cf(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function uf(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 Vo(e){return`'${String(e).replace(/'/g,"''")}'`}var Pt,ys=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(Vo).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${gs(s,t)} = ${uf(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 ${gs(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 ${gs(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 ${hs(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(Vo).join(", ")}] FROM ${hs(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 af(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 cf(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function uf(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 ${cf(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 lf(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=uf(r);return this.client.call("query",{sql:`QUEUE PUSH ${De(t)} ${lf(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=af(t,n,r),i=await this.client.call("query",{sql:s});return hs(i)}}});function Wo(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function df(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(Vo).join(".")}function Vo(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 ff(e){return zo(JSON.stringify(e))}function mf(e){return JSON.stringify(e)}function pf(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?ff(e):zo(e)}function zo(e){return`'${String(e).replace(/'/g,"''")}'`}var rn,_s=E(()=>{He();rn=class{constructor(t){this.db=t}async insert(t,n){Wo(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Kn(t)} DOCUMENT VALUES (${mf(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=df(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){Wo(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])=>`${Vo(c)} = ${pf(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 gf(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${qe(n)}.${qe(r)})`}return yf(e)}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 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 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 sn,Rs=E(()=>{sn=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){hf(r,"config");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:`PUT CONFIG ${qe(s)} ${qe(t)} = ${gf(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 wf(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 bf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Yo(e)}function Yo(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={}){wf(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Yo).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Dt(s)}.${Dt(t)} = ${bf(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 Zo(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(_f)}async function Xo(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Sf(t)}`)).rows??[]).some(r=>r.name===String(t))}function _f(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Qo(e){return String(e).split(".").map(Rf).join(".")}function Rf(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 Sf(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(Qo).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Qo(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($f(n),n.kind==="embedded"){let r=Cf(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=Df(n),i=t.binary??Fo(),o=await Mo(i,s),a=new zn(o);return await a.call("version",{}),new xs(a,{transport:"embedded"})}}function ta(e){return xf(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:Tf(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Pf(e)?{$uuid:e}:e}function xf(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 vf(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ta):e.map(ta)}function Tf(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 Of(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 Pf(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 Of(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 Df(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Cf(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 $f(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",kf)}function vs(){return new k(ea,`${ea}: nested transactions are not supported on one connection`)}function ra(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function If(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${na} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Af(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new k("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${na} 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 kf,Ef,na,ea,Qn,Es,xs,Ts=E(()=>{jo();Go();He();ds();fs();gs();bs();_s();Rs();Ss();ks();fs();gs();bs();_s();Rs();Ss();ks();ds();kf="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Ef="1.0",na="1.0.9",ea="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){ra(n,r)}throw n}}},xs=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Ef,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=vf(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 If(r,"insert")}async bulkInsert(t,n){if(Array.isArray(n)&&n.length===0)return{affected:0,rids:[],ids:[]};let r=await this.client.call("bulk_insert",{collection:t,payloads:n});return Af(r,n.length)}tx(){return new 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){ra(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return Xo(this,t)}list(){return Zo(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 RS,join as $t,resolve as SS}from"node:path";function Bf(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function sa(e){return $t(Bf(e),Nf)}function ia(e){return $t(sa(e),"state")}function Lf(e){return $t(sa(e),"tmp")}function F(e){return $t(ia(e),"rsp")}function Mf(e){return $t(ia(e),"red-skills.rdb")}function jf(e){return $t(Lf(e),"red-skills.rdb")}function ca(e,t){let n=Mf(e);if(t(n))return n;let r=jf(e);if(t(r))throw Uf();return n}function Uf(){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 Nf,oa,aa,Ce=E(()=>{Nf=".red";oa=".red/state/red-skills.rdb";aa=".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 ua(e,t);if(e.includes('"'))throw ye(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Jf(e)?Number(e):e}function $e(e,t){let n=e.trim();if(n.startsWith('"'))return[ua(n,t),!0];if(n.includes('"')||/\s/.test(n))throw _(t,"expected non-empty field name");return[n,!1]}function ua(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 Y(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 Jf(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ff(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Gf(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw _(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 Gf(e);if(typeof e=="string")return qf(e,t);throw _(0,"not a primitive")}function Hf(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function de(e){return Hf(e)?e:la(e)}function qf(e,t){return Wf(e,t)?la(e):e}function Wf(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Ff(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function la(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 Vf(e={}){return{indent:Math.max(1,e.indent??Ns),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function zf(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 j(e,t){let n=Vf(t),r=zf(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,Y(s.content,":",s.number))}catch(l){if(n.strict)throw Is(l,s.number);u=void 0}if(u!==void 0)return Qf(u,r,n)}if(i&&Y(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}=Kf(e,t,n,r);ma(s,o,a,c,r,i.number)}return s}function Kf(e,t,n,r){let s=e[t.index],i=s.content,o=Y(i,":",s.number);if(o===-1)throw _(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=Y(a,"[",s.number),l=Y(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=tm(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=Yf(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 Yf(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=Y(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)}),ma(i,c,u,f,s,o.number),n.index+=1}return i}function Qf(e,t,n){let r=t[0],s=Y(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 Zf(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 Xf(e,n,r,s+1,i)}function Zf(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(!da(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&&da(a.content,e.delimiter,a.number))throw _(a.number,"array length mismatch");return o}function da(e,t,n){let r=Y(e,":",n);if(r===-1)return!0;let s=Y(e,t,n);return s===-1?!1:s<r}function Xf(e,t,n,r,s){let i=[];for(;i.length<e.len;){let a=t[n.index];if(a===void 0||a.depth<r)throw 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(em(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 em(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=Y(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(Y(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=Y(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=fa(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 tm(e){let t=Y(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=fa(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 fa(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(nm(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 nm(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 ma(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(rm)){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 rm(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)?pa(r,e,0,n):r.push(be(e,I)),r.join("")}function fn(e,t){e.push(" ".repeat(t*Ns))}function pa(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?im(n,s):void 0;if(i!==void 0){e.push(de(t),"{",i.fields.map(Us).join(I),`}:
15
- `);for(let[o,a]of Object.entries(n))fn(e,r+1),e.push(de(o),": ",i.paths.map(c=>be(wa(a,c),I)).join(I),`
11
+ `).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function lf(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?bs(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 bs(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 df(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function ff(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 ${df(e.priority)}`),e.key!=null&&(t+=` KEY ${_s(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${_s(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function mf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?_s(e):JSON.stringify(e)}function _s(e){return`'${String(e).replace(/'/g,"''")}'`}function ws(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var nn,Rs=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=ff(r);return this.client.call("query",{sql:`QUEUE PUSH ${De(t)} ${mf(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${De(t)}${bs(n)}`});return ws(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${De(t)}${bs(n)}`});return ws(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=lf(t,n,r),i=await this.client.call("query",{sql:s});return ws(i)}}});function zo(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function pf(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 Yn(e){return String(e).split(".").map(Ko).join(".")}function Ko(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 gf(e){return Yo(JSON.stringify(e))}function hf(e){return JSON.stringify(e)}function yf(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?gf(e):Yo(e)}function Yo(e){return`'${String(e).replace(/'/g,"''")}'`}var rn,Ss=E(()=>{He();rn=class{constructor(t){this.db=t}async insert(t,n){zo(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Yn(t)} DOCUMENT VALUES (${hf(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=pf(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 ${Yn(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){zo(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])=>`${Ko(c)} = ${yf(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Yn(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 ${Yn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function wf(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${qe(n)}.${qe(r)})`}return _f(e)}function bf(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 _f(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Qo(e)}function Qo(e){return`'${String(e).replace(/'/g,"''")}'`}var sn,ks=E(()=>{sn=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){bf(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Qo).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${qe(s)} ${qe(t)} = ${wf(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 Rf(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 Sf(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 on,Es=E(()=>{on=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){Rf(r,"vault");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:`VAULT PUT ${Dt(s)}.${Dt(t)} = ${Sf(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 ea(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(kf)}async function ta(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${xf(t)}`)).rows??[]).some(r=>r.name===String(t))}function kf(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Xo(e){return String(e).split(".").map(Ef).join(".")}function Ef(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 xf(e){return`'${String(e).replace(/'/g,"''")}'`}var an,xs=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(Xo).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Xo(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=fs(e);if(Nf(n),n.kind==="embedded"){let r=If(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=Af(n),i=t.binary??Ho(),o=await Uo(i,s),a=new Kn(o);return await a.call("version",{}),new Ts(a,{transport:"embedded"})}}function ra(e){return Of(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:Df(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&$f(e)?{$uuid:e}:e}function Of(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 Pf(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ra):e.map(ra)}function Df(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 Cf(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 $f(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Qn(e){if(Array.isArray(e))return e.map(Qn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Cf(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]=Qn(s);return n}return e}function Af(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function If(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 Nf(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",vf)}function Os(){return new k(na,`${na}: nested transactions are not supported on one connection`)}function ia(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Bf(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${sa} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Lf(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 >= ${sa} 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 vf,Tf,sa,na,Zn,vs,Ts,Ps=E(()=>{Jo();qo();He();ms();ps();ys();Rs();Ss();ks();Es();xs();ps();ys();Rs();Ss();ks();Es();xs();ms();vf="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Tf="1.0",sa="1.0.9",na="NESTED_TX_NOT_SUPPORTED";Zn=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 Os()}},vs=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Os();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 Zn(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){ia(n,r)}throw n}}},Ts=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Tf,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=Pf(n);return r==null?this.client.call("query",{sql:t}).then(Qn):this.client.call("query",{sql:t,params:r}).then(Qn)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return Bf(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 Lf(r,n.length)}tx(){return new vs(this)}async transaction(t){if(this.inTransaction)throw Os();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 Zn(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){ia(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return ta(this,t)}list(){return ea(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 CS,join as $t,resolve as $S}from"node:path";function jf(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function oa(e){return $t(jf(e),Mf)}function aa(e){return $t(oa(e),"state")}function Uf(e){return $t(oa(e),"tmp")}function F(e){return $t(aa(e),"rsp")}function Jf(e){return $t(aa(e),"red-skills.rdb")}function Ff(e){return $t(Uf(e),"red-skills.rdb")}function la(e,t){let n=Jf(e);if(t(n))return n;let r=Ff(e);if(t(r))throw Gf();return n}function Gf(){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 Mf,ca,ua,Ce=E(()=>{Mf=".red";ca=".red/state/red-skills.rdb";ua=".red/tmp/red-skills.rdb"});function _(e,t){return new cn(e,t)}function C(e,t){return new ot(e,t)}function At(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 Xn(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 da(e,t);if(e.includes('"'))throw ye(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Hf(e)?Number(e):e}function $e(e,t){let n=e.trim();if(n.startsWith('"'))return[da(n,t),!0];if(n.includes('"')||/\s/.test(n))throw _(t,"expected non-empty field name");return[n,!1]}function da(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 Y(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 Hf(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function qf(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Wf(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 Wf(e);if(typeof e=="string")return zf(e,t);throw _(0,"not a primitive")}function Vf(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function de(e){return Vf(e)?e:fa(e)}function zf(e,t){return Kf(e,t)?fa(e):e}function Kf(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||qf(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function fa(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 It(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var A,Ds=E(()=>{un();A=","});function Yf(e={}){return{indent:Math.max(1,e.indent??Ls),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Qf(e,t){let n=[],r=!1;return Xn(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 j(e,t){let n=Yf(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=Us(s.content,Y(s.content,":",s.number))}catch(l){if(n.strict)throw Ns(l,s.number);u=void 0}if(u!==void 0)return em(u,r,n)}if(i&&Y(s.content,":",s.number)===-1)return we(s.content.trim(),s.number);let o={index:0},a=Ms(r,o,0,n),c=r[o.index];if(c!==void 0)throw _(c.number,"expected end of document");return a}function Ms(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);ga(s,o,a,c,r,i.number)}return s}function Zf(e,t,n,r){let s=e[t.index],i=s.content,o=Y(i,":",s.number);if(o===-1)throw _(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=Y(a,"[",s.number),l=Y(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=sm(a)}catch(g){if(r.strict)throw Ns(g,s.number);t.index+=1;let w=Cs(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=Xf(h,e,t,n+1,r);return{key:h.key,quoted:h.keyQuoted,value:m}}if(u!==-1){let h;try{h=Us(a,o)}catch(g){if(r.strict)throw Ns(g,s.number);t.index+=1;let w=Cs(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=js(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=Cs(e,t,n,c,s.number,r);return{key:f,quoted:d,value:p}}function Cs(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?Ms(e,t,n+1,i):{}}function Xf(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=Y(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)}),ga(i,c,u,f,s,o.number),n.index+=1}return i}function em(e,t,n){let r=t[0],s=Y(r.content,":",r.number);if(s===-1)throw _(r.number,"expected `key: value`");let i=r.content.slice(s+1),o={index:0},a=js(e,i,t,o,0,n),c=t[o.index];if(c!==void 0)throw _(c.number,"expected end of document");return a}function js(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 tm(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 nm(e,n,r,s+1,i)}function tm(e,t,n,r,s,i){let o=[];for(;o.length<e.len;){let c=n[r.index];if(c===void 0)throw As(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(!ma(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 As(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&ma(a.content,e.delimiter,a.number))throw _(a.number,"array length mismatch");return o}function ma(e,t,n){let r=Y(e,":",n);if(r===-1)return!0;let s=Y(e,t,n);return s===-1?!1:s<r}function nm(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 As(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(rm(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 rm(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=Y(i,":",s.number),a;try{a=Us(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return js(a,c,e,t,n,r)}}if(Y(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 Ms(o,{index:0},n+1,r)}return t.index+=1,we(i,s.number)}function As(e,t){let n=e[t]??e[e.length-1];return _(n===void 0?1:n.number,"array length mismatch")}function Us(e,t){if(t===-1)throw _(0,"array header missing colon");let n=e.slice(0,t),r=Y(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=pa(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 sm(e){let t=Y(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=pa(e.slice(t+1,-1),A)}catch(i){throw _(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:n,keyQuoted:r,delimiter:A,fields:s}}function pa(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(im(n[a],n[c])||Is(n[a],n[c])||Is(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 im(e,t){return e.length===t.length&&Is(e,t)}function Is(e,t){return t.every((n,r)=>e[r]===n)}function Ns(e,t){return _(t,e.reason??String(e.message))}function ga(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(om)){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");It(e,i,n);return}if(o&&!Nt(e[i])){if(r.strict)throw _(s,"path expansion conflict");It(e,i,{})}else o||It(e,i,{});dn(e[i],t.slice(1),n,r,s)}function om(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)?ha(r,e,0,n):r.push(be(e,A)),r.join("")}function fn(e,t){e.push(" ".repeat(t*Ls))}function ha(e,t,n,r){for(let[s,i]of Object.entries(t))fn(e,n),Bs(e,s,i,n,r)}function Bs(e,t,n,r,s){if(Array.isArray(n)){Js(e,t,n,r,!1,s);return}if(Nt(n)){let i=s.keyedMapCollapse?cm(n,s):void 0;if(i!==void 0){e.push(de(t),"{",i.fields.map(Fs).join(A),`}:
15
+ `);for(let[o,a]of Object.entries(n))fn(e,r+1),e.push(de(o),": ",i.paths.map(c=>be(_a(a,c),A)).join(A),`
16
16
  `);return}e.push(de(t),`:
17
- `),pa(e,n,r+1,s);return}e.push(de(t),": ",be(n,I),`
18
- `)}function js(e,t,n,r,s,i){if(n.length===0){t!==void 0?e.push(de(t),`: []
17
+ `),ha(e,n,r+1,s);return}e.push(de(t),": ",be(n,A),`
18
+ `)}function Js(e,t,n,r,s,i){if(n.length===0){t!==void 0?e.push(de(t),`: []
19
19
  `):s?e.push(`[0]:
20
20
  `):e.push(`[]
21
- `);return}if(n.every(ln)){Ds(e,t,n.length,void 0),e.push(" "),e.push(n.map(a=>be(a,I)).join(I)),e.push(`
22
- `);return}let o=s?void 0:ga(n,i);if(o!==void 0){Ds(e,t,n.length,o.fields),e.push(`
23
- `);for(let a of n)fn(e,r+1),e.push(o.paths.map(c=>be(wa(a,c),I)).join(I)),e.push(`
24
- `);return}Ds(e,t,n.length,void 0),e.push(`
25
- `);for(let a of n)fn(e,r+1),sm(e,a,r+1,i)}function sm(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
- `);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 ga(e,t){let n=ha(e.map(r=>({value:r})),t);return n===void 0?void 0:{fields:n,paths:ya(n)}}function im(e,t){let n=Object.values(e);if(!(n.length<2))return ga(n,t)}function ha(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=ha(i,t);if(o===void 0)return;s.children=o}return r}}function ya(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children===void 0?[r]:ya(n.children,r)})}function wa(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 ba=E(()=>{mn()});function am(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 Da(e,t){if(!Pa.test(e))throw C(t,"invalid tag")}function cm(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n);if(!Pa.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 um(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(!Ta.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),Da(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 lm(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 _a(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 dm(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 fm(e,t,n){if(e.startsWith("- "))throw C(t,"reserved line prefix");let r=am(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=um(e,t);if(s!==null)return s.continuation?(lm(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=cm(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:_a(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:_a(e,n.delimiter,n.fields.length,t)}}function mm(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>=Oa)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=fm(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 mm(e).flatMap(t=>t.rows.map(n=>dm(t.fields,n,0)))}function pm(e){if(!Ta.includes(e))throw C(0,"invalid header delimiter")}function Ra(e,t,n=!1){return`[${`${n?"~":""}${e===I?"":e}`}]{${t}}:
28
- `}function Sa(e,t){return`[]<${e}>{${t}}:
29
- `}function Js(e,t){return t.map(de).join(e)}function gm(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 ka(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function Ea(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw C(0,"TOONL continuation cadence must be positive")}function hm(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function xa(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 ym(e){return JSON.stringify([...e].sort())}function va(e,t){let n=ym(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}={}){pm(e),Ea(n),Ea(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=()=>hm(d,c,u)?(c=0,u=0,Ra(e,i,!0)):"",m=g=>{Da(g,0);let w=l.get(g);if(w===void 0){if(l.size>=Oa)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=va(xa(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+=Ra(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=gm(w),T=Js(I,y),x=m(g);return ka(x.fields,y)?"":(x.fields=y,Sa(g,T))},pushTagged(g,w){if(f)throw C(0,"TOONL encoder is closed");let y=m(g),T=va(xa(w),y.fieldsByShape),x=Js(I,T),O=T.map(ce=>be(w[ce],I)),L="";return ka(y.fields,T)||(y.fields=T,L+=Sa(g,x)),`${L}${g}:${O.join(I)}
32
- `},end(){return f?"":(f=!0,p())}}}var Ta,Oa,Pa,NS,BS,Ca=E(()=>{un();mn();Os();Ta=[I,"|"," "],Oa=8,Pa=/^[A-Za-z0-9_-]+$/,NS=new TextEncoder,BS=new TextDecoder});var Q=E(()=>{un();mn();mn();ba();Ca()});function G(e){return D(e,{keyedMapCollapse:!0})}var wm,bm,uk,pn=E(()=>{Q();Ce();wm=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],bm=[{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/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.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"}],uk=[...wm,...bm]});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 Rm(e,t){if(!t)return!0;let n=Fs(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function H(e,t){return t?e.filter(n=>Rm(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=Ia){let r=Math.max(0,Math.floor(e)),s=n in Aa?n:Ia,i=Aa[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:Sm}}function Hs(e,t){return km(Math.max(0,e)/1e6*t)}function hn(e){return`$${e.toFixed(6)}`}function km(e){return Math.round(e*1e6)/1e6}var Ia,Aa,Sm,Ws=E(()=>{"use strict";Ia="gpt-5",Aa={"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},Sm="estimate derived from byte-based token estimate when token counts are estimated"});function Em(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??Em(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=xm(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 xm(e,t){return e.split(/\r?\n/).slice(0,t).join(`
34
- `).trim()}var ut=E(()=>{"use strict";Q()});import{existsSync as vm,readFileSync as yk}from"node:fs";import{dirname as Tm,join as Om}from"node:path";function Na(e,t){let n=e;for(let r=0;r<16;r++){let s=Om(n,t);if(vm(s))return s;let i=Tm(n);if(i===n)break;n=i}return null}function Pm(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 Pm(u)}}var Ba=E(()=>{});import{createConnection as Dm}from"node:net";async function Lt(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=Dm(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)}
21
+ `);return}if(n.every(ln)){$s(e,t,n.length,void 0),e.push(" "),e.push(n.map(a=>be(a,A)).join(A)),e.push(`
22
+ `);return}let o=s?void 0:ya(n,i);if(o!==void 0){$s(e,t,n.length,o.fields),e.push(`
23
+ `);for(let a of n)fn(e,r+1),e.push(o.paths.map(c=>be(_a(a,c),A)).join(A)),e.push(`
24
+ `);return}$s(e,t,n.length,void 0),e.push(`
25
+ `);for(let a of n)fn(e,r+1),am(e,a,r+1,i)}function am(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
+ `);return}e.push("- "),Bs(e,s[0][0],s[0][1],n+1,r);for(let[i,o]of s.slice(1))fn(e,n+1),Bs(e,i,o,n+1,r);return}e.push("- ",be(t,A),`
27
+ `)}function $s(e,t,n,r){t!==void 0&&e.push(de(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(Fs).join(A),"}"),e.push(":")}function ya(e,t){let n=wa(e.map(r=>({value:r})),t);return n===void 0?void 0:{fields:n,paths:ba(n)}}function cm(e,t){let n=Object.values(e);if(!(n.length<2))return ya(n,t)}function wa(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=wa(i,t);if(o===void 0)return;s.children=o}return r}}function ba(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children===void 0?[r]:ba(n.children,r)})}function _a(e,t){let n=e;for(let r of t)n=n[r];return n}function Fs(e){return e.children===void 0?de(e.key):`${de(e.key)}{${e.children.map(Fs).join(A)}}`}var Ls,mn=E(()=>{un();Ds();Ls=2});var Ra=E(()=>{mn()});function lm(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 $a(e,t){if(!Ca.test(e))throw C(t,"invalid tag")}function dm(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n);if(!Ca.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 fm(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(!Pa.includes(o)&&o!=="")throw C(t,"invalid header delimiter");let a=o===""?A: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),$a(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 At(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 mm(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 Sa(e,t,n,r){let s;try{s=at(e,t,r)}catch(i){throw At(i)}if(s.length!==n)throw C(r,"row arity mismatch");for(let i of s)try{we(i,r)}catch(o){throw At(o)}return s}function pm(e,t,n){let r={};return e.forEach((s,i)=>{try{It(r,s,we(t[i],n))}catch(o){throw At(o)}}),r}function gm(e,t,n){if(e.startsWith("- "))throw C(t,"reserved line prefix");let r=lm(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=fm(e,t);if(s!==null)return s.continuation?(mm(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=dm(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:Sa(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:Sa(e,n.delimiter,n.fields.length,t)}}function hm(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>=Da)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(Xn(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=gm(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 er(e){return hm(e).flatMap(t=>t.rows.map(n=>pm(t.fields,n,0)))}function ym(e){if(!Pa.includes(e))throw C(0,"invalid header delimiter")}function ka(e,t,n=!1){return`[${`${n?"~":""}${e===A?"":e}`}]{${t}}:
28
+ `}function Ea(e,t){return`[]<${e}>{${t}}:
29
+ `}function Gs(e,t){return t.map(de).join(e)}function wm(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 At(r)}if(n==="")throw C(0,"TOONL header requires fields");return n})}function xa(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function va(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw C(0,"TOONL continuation cadence must be positive")}function bm(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function Ta(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 _m(e){return JSON.stringify([...e].sort())}function Oa(e,t){let n=_m(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function tr({delimiter:e=A,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){ym(e),va(n),va(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=()=>bm(d,c,u)?(c=0,u=0,ka(e,i,!0)):"",m=g=>{$a(g,0);let w=l.get(g);if(w===void 0){if(l.size>=Da)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=Oa(Ta(g),o),y="";(s===null||s.length!==w.length||s.some((O,L)=>O!==w[L]))&&(y+=p(),s=w,i=Gs(e,s),a=0,c=0,u=0,y+=ka(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=wm(w),T=Gs(A,y),x=m(g);return xa(x.fields,y)?"":(x.fields=y,Ea(g,T))},pushTagged(g,w){if(f)throw C(0,"TOONL encoder is closed");let y=m(g),T=Oa(Ta(w),y.fieldsByShape),x=Gs(A,T),O=T.map(ce=>be(w[ce],A)),L="";return xa(y.fields,T)||(y.fields=T,L+=Ea(g,x)),`${L}${g}:${O.join(A)}
32
+ `},end(){return f?"":(f=!0,p())}}}var Pa,Da,Ca,qS,WS,Aa=E(()=>{un();mn();Ds();Pa=[A,"|"," "],Da=8,Ca=/^[A-Za-z0-9_-]+$/,qS=new TextEncoder,WS=new TextDecoder});var Q=E(()=>{un();mn();mn();Ra();Aa()});function G(e){return D(e,{keyedMapCollapse:!0})}var Rm,Sm,bk,pn=E(()=>{Q();Ce();Rm=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],Sm=[{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/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.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"}],bk=[...Rm,...Sm]});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 Em(e,t){if(!t)return!0;let n=Hs(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function H(e,t){return t?e.filter(n=>Em(n,t)):[...e]}function Ae(e,t){return qs(e,t,{includeLegacyHelp:!0})}function qs(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function Hs(e){return Array.isArray(e)?e.map(Hs).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Hs).join(" "):String(e??"")}var gn=E(()=>{"use strict"});function Vs(e,t,n=Na){let r=Math.max(0,Math.floor(e)),s=n in Ba?n:Na,i=Ba[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:Ws(r,i),dollars_saved_low_usd:o==null?null:Ws(o,i),dollars_saved_high_usd:a==null?null:Ws(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:xm}}function Ws(e,t){return vm(Math.max(0,e)/1e6*t)}function hn(e){return`$${e.toFixed(6)}`}function vm(e){return Math.round(e*1e6)/1e6}var Na,Ba,xm,zs=E(()=>{"use strict";Na="gpt-5",Ba={"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},xm="estimate derived from byte-based token estimate when token counts are estimated"});function Tm(e){return e==="no-op"?0:e==="usage"?2:1}function N(e){return Buffer.from(`${D(Ks(e))}
33
+ `)}function Ks(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??Tm(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=Om(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 nr(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 Om(e,t){return e.split(/\r?\n/).slice(0,t).join(`
34
+ `).trim()}var ut=E(()=>{"use strict";Q()});import{existsSync as Pm,readFileSync as Tk}from"node:fs";import{dirname as Dm,join as Cm}from"node:path";function La(e,t){let n=e;for(let r=0;r<16;r++){let s=Cm(n,t);if(Pm(s))return s;let i=Dm(n);if(i===n)break;n=i}return null}function $m(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function rr(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 $m(u)}}var Ma=E(()=>{});import{createConnection as Am}from"node:net";async function Lt(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=Am(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 Cm,randomUUID as Ja}from"node:crypto";import{spawn as Fa}from"node:child_process";import{constants as Ks}from"node:fs";import{readFileSync as $m}from"node:fs";import{mkdir as rr,open as Im,readFile as Ga,rename as Am,rm as _e,stat as Nm,writeFile as Bm}from"node:fs/promises";import{tmpdir as Lm}from"node:os";import{dirname as We,join as ie,resolve as sr}from"node:path";import{fileURLToPath as Ha}from"node:url";function Ve(e){let t=Km(e)??sr(e),n=zm(t),r=F(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 ja(e.socketPath,t))return;await Ma(e,t);let n=await Ka(e.lockPath);if(n)try{if(await ja(e.socketPath,t))return;await Ma(e,t),await Jm(e.socketPath);let r=Fm(e,t);await La(e.socketPath,r);return}finally{await n.close(),await _e(e.lockPath,{force:!0})}await La(e.socketPath)}async function lt(e,t=200){try{return await Wa(e,t)!=null}catch{return!1}}async function Wa(e,t=200){let n=await Lt({socketPath:e,timeoutMs:t},{id:Ja(),op:"ping"});return n.ok?Xa(n.value)?{version:Xm(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 Ka(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=Qa(t);return Fa(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 Va(e,t){try{await ir(e,t)}finally{await _e(e.wakeLockPath,{force:!0})}}async function bn(e){try{let t=qm(await Ga(e,"utf8"));return ep(t)?t:null}catch{return null}}async function ar(e,t){let n={version:qa,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 Bm(r,`${D(n)}
38
- `,{encoding:"utf8",mode:384}),await Am(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 Ga(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 Vm(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 za(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 Ya(t.entry.pid),await _e(e.registryPath,{force:!0}),await _e(t.entry.socket_path,{force:!0}),await wn(e)):t}async function La(e,t){let n=Date.now()+Um(),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 Um(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:jm}async function Jm(e){await _e(e,{force:!0})}async function Ka(e){await rr(We(e),{recursive:!0,mode:448});try{return await Im(e,Ks.O_CREAT|Ks.O_EXCL|Ks.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Fm(e,t){let[n,r]=Qa(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Fa(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=Hm(`${o}${c}`,Gm)})),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 Ys=E(()=>{});import{createHash as Im,randomUUID as Ga}from"node:crypto";import{spawn as Ha}from"node:child_process";import{constants as Qs}from"node:fs";import{readFileSync as Nm}from"node:fs";import{mkdir as sr,open as Bm,readFile as qa,rename as Lm,rm as _e,stat as Mm,writeFile as jm}from"node:fs/promises";import{tmpdir as Um}from"node:os";import{dirname as We,join as ie,resolve as ir}from"node:path";import{fileURLToPath as Wa}from"node:url";function Ve(e){let t=Zm(e)??ir(e),n=Qm(t),r=F(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 or(e,t){if(await sr(We(e.socketPath),{recursive:!0,mode:448}),await Ja(e.socketPath,t))return;await Ua(e,t);let n=await Qa(e.lockPath);if(n)try{if(await Ja(e.socketPath,t))return;await Ua(e,t),await Hm(e.socketPath);let r=qm(e,t);await ja(e.socketPath,r);return}finally{await n.close(),await _e(e.lockPath,{force:!0})}await ja(e.socketPath)}async function lt(e,t=200){try{return await za(e,t)!=null}catch{return!1}}async function za(e,t=200){let n=await Lt({socketPath:e,timeoutMs:t},{id:Ga(),op:"ping"});return n.ok?tc(n.value)?{version:np(n.value.version)}:{}:null}async function ar(e,t){if(await sr(We(e.socketPath),{recursive:!0,mode:448}),await lt(e.socketPath,50))return!1;let n=await Qa(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=Xa(t);return Ha(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 Ka(e,t){try{await or(e,t)}finally{await _e(e.wakeLockPath,{force:!0})}}async function bn(e){try{let t=zm(await qa(e,"utf8"));return rp(t)?t:null}catch{return null}}async function cr(e,t){let n={version:Va,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 sr(We(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await jm(r,`${D(n)}
38
+ `,{encoding:"utf8",mode:384}),await Lm(r,e)}async function ur(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 qa(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 Ym(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 Ya(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 Za(t.entry.pid),await _e(e.registryPath,{force:!0}),await _e(t.entry.socket_path,{force:!0}),await wn(e)):t}async function ja(e,t){let n=Date.now()+Gm(),r;for(;Date.now()<n;){if(await lt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Zs("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Zs("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Zs("resident rsp server did not start",t):"resident rsp server did not start")}function Gm(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Fm}async function Hm(e){await _e(e,{force:!0})}async function Qa(e){await sr(We(e),{recursive:!0,mode:448});try{return await Bm(e,Qs.O_CREAT|Qs.O_EXCL|Qs.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function qm(e,t){let[n,r]=Xa(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Ha(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=Vm(`${o}${c}`,Wm)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function Zs(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 Hm(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function qm(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return j(t)}}async function Ma(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(Za(t.clientVersion,n.resident_version)&&(await Wm(n.pid,1500),!Mt(n.pid))){await _e(e.registryPath,{force:!0});return}await Ya(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 Ya(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 Wm(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Mt(e))return;await new Promise(r=>setTimeout(r,50))}}async function Vm(e){if(!e.startsWith("file://"))return!1;try{return await Nm(Ha(e)),!1}catch(t){return t.code==="ENOENT"}}function Qa(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?sr(process.argv[1]):Ha(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function zm(e){let t=Cm("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<Mm)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ie(Lm(),`red-skills-${r}`,t)}function Km(e){let t=sr(e);for(let n=0;n<32;n++){try{let s=Qs(ie(t,".git"));if(s!=null)return Ym(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 Ym(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 $m(e,"utf8")}catch{return null}}async function ja(e,t){let n=await Wa(e).catch(()=>null);return n?Za(t.clientVersion,n.version)?(await Qm(e,t.clientVersion),await tp(e),!1):!0:!1}async function Qm(e,t){try{await Lt({socketPath:e,timeoutMs:200},{id:Ja(),op:"handover",clientVersion:t})}catch{}}function Za(e,t){return!e||!t?!1:Zm(e,t)>0}function Zm(e,t){let n=Ua(e),r=Ua(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Ua(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 Xa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Xm(e){return typeof e=="string"&&e.length>0?e:void 0}function ep(e){return Xa(e)&&e.version===qa&&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 tp(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await lt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Mm,qa,jm,Gm,ur=E(()=>{Q();Ce();zs();Mm=108,qa=1,jm=5e3;Gm=8*1024});var ic={};M(ic,{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:()=>sc,DEFAULT_RSP_STORE_PATH:()=>Zs,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>dr,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>tc,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>nc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>lr,DEFAULT_RSP_TTL_DAYS:()=>Be,MIN_RSP_IDLE_MS:()=>rc,resolveRspConfig:()=>je});import{existsSync as np,readFileSync as rp}from"node:fs";import{join as sp,resolve as ec}from"node:path";function je(e,t,n){let r=Na(ec(e),sp(".red","config.yaml")),s=r?rp(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"),tc),h=Ae(jt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??me(s,"rsp.telemetryDrainTimeoutMs"),nc),m=ip(jt(t.RSP_IDLE_MS)??me(s,"rsp.idleMs"),fr,rc),g=Ae(jt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??me(s,"rsp.heavyGitByteThreshold"),Ne),w=op(jt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??me(s,"rsp.measurement.holdoutShare"),sc),y=Ve(e).rootDir,T=n??t.RSP_STORE_URI??`file://${ca(ec(y),np)}`;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 ip(e,t,n){let r=Ae(e,t);return Math.max(r,n)}function op(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,tc,nc,fr,rc,sc,Re=E(()=>{"use strict";Ba();Ce();ur();Ne=8*1024,Zs=oa,Be=7,Le=6,Me=64*1024*1024,lr=90,dr=4*1024*1024,tc=3e4,nc=2e3,fr=5*6e4,rc=5e3,sc=0});var Gt={};M(Gt,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_TTL_DAYS:()=>Be,RSP_ELISION_COLLECTION:()=>Z,RspElisionStore:()=>xn,ensureReddbBinaryFromWarmCache:()=>kc,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 gc,readFile as hc,readdir as yc,rename as gr,rm as _n,stat as Xs,writeFile as ap}from"node:fs/promises";import{homedir as cp}from"node:os";import{basename as wc,dirname as bc,join as Rn}from"node:path";import{fileURLToPath as up}from"node:url";import{gunzipSync as lp,gzipSync as dp}from"node:zlib";function oc(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 fp(e){return`blob:${e}`}function mp(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 _c(e){return Rr(e.storage_class)?e.storage_class:ft(e.command)}function ac(e){let t=bp(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=_c(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 cc(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:pp(i),storage_class:_c(s),recover:`rsp show ${s.handle}`}})}function pp(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 uc(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 lc(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:gp(n),original_bytes:e.length}:null}function gp(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 dc(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!_r(n))return null;let r=Rc(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 fc(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 mc(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 pc(e,t,n){let r=dp(e);return{key:fp(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function hp(e){try{let t=lp(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function yp(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 wp(e){if(!_r(e.argv))return null;let t=Rc(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 Rc(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 bp(){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 _p(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 Rp(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 Sp(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 yc(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 kp(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=xp(e.derivation_recipe),r=vp(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&wr(s);return e.collection===Z&&typeof e.handle=="string"&&yr(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||ai(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"&&Ep(e.loss)&&(e.storage_class===void 0||Rr(e.storage_class))}function Sc(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)&&ai(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 Ep(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 xp(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 vp(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"&&ai(e.content_hash)}function ai(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 Tp(e){try{let r=(await hc(e,"utf8")).trim();if(r==="")return pr();let s;try{s=JSON.parse(r)}catch{s=j(r)}if(Dp(s))return{...s,blobs:s.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 Op(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Pp(e){return wc(e)==="red-skills.rdb"}async function kc(){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(cp(),".cache","red-skills","bundles")),t=Rn(e,"reddb"),n;try{n=await yc(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 gc(bc(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await ap(n,`${D(oi(t))}
42
- `,"utf8"),await gr(n,e)}function oi(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>oi(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=oi(r));return t}return String(e)}function pr(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Dp(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)&&Sc(e.index)}function Cp(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return up(e)}var Z,xn,ze=E(()=>{"use strict";Ts();Q();Re();Z="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=Cp(t.uri),r=await Op(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 Pp(r)?(await kc(),await gc(bc(r),{recursive:!0}),s.db=await Ct(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Tp(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=oc(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?lc(r,n.command):null,l=c==="re-executable"?dc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=uc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?pc(r,p,i):null,m=fc(r,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:Z,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:mc(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:Z,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:ac(n)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),cc(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 yp(t.derivation_recipe);if(t.reexecution_recipe)return wp(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)?hp(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(Z)}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===Z);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${Z}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${Z}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${Z}`),await this.db.query(`CREATE KV IF NOT EXISTS ${Z}`)}}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=oc(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?lc(r,n.command):null,l=c==="re-executable"?dc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=uc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?pc(r,p,i):null,m=fc(r,u,l,h);h&&!si(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:Z,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:mc(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:Z,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:ac(t.records)}}async recoveryHandlesRedDb(t){let n=await this.pruneRedDb(await this.readRedDbIndex());return cc(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=_p(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Rp(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 Sp(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await hc(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=wc(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=>kp(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 Sc(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 ${mp(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===Z){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:Z,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:()=>X,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ke,RSP_TELEMETRY_INDEX_COLLECTION:()=>On,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ke,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Bc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Lc,RSP_TELEMETRY_SPOOL_FILE:()=>Nc,appendTelemetryEvent:()=>Je,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>mi,parseTelemetryEvent:()=>zt,readAccountingLaneStats:()=>pi,readTelemetryGainsReport:()=>gi,readTelemetryStats:()=>vr,takeTelemetrySpool:()=>Mp,telemetryLegacySpoolPath:()=>xr,telemetrySpoolCorrectionsPath:()=>fi,telemetrySpoolPath:()=>Ue});import{randomUUID as ui,createHash as $p}from"node:crypto";import{appendFileSync as Dc,existsSync as Ip,mkdirSync as Cc}from"node:fs";import{mkdir as $c,readdir as Ap,readFile as Ic,rename as Np,rm as Ac,writeFile as li}from"node:fs/promises";import{basename as ci,dirname as Tn,join as Wt,resolve as Ec}from"node:path";function Er(e){if(!e)return null;let t=Ec(e);for(;;){if(Ip(Wt(t,".red")))return t;let n=Ec(Wt(t,".."));if(n===t)break;t=n}return null}function Ue(e){return Wt(F(e),Nc)}function xr(e){return Wt(F(e),Bc)}function fi(e){return Wt(F(e),Lc)}async function Je(e,t){gt(e,t)}function gt(e,t){try{let n=Er(e);if(!n)return;let r=Ue(n);Cc(Tn(r),{recursive:!0}),Dc(r,Jp({spool_id:ui(),event:Lp(t)}),{encoding:"utf8",mode:384})}catch{}}function Lp(e){return xc(xc(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function xc(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=Bp)return e;let i={...e};return delete i[t],Se(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function Mp(e){let t=Er(e);if(!t)return[];let n=Ue(t);await $c(Tn(n),{recursive:!0}).catch(()=>{});let r=await Uc(t),s=[...await Jc(t),...await Gp(r)];return await Promise.all(r.map(i=>Ac(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function mi(e,t){let n=Er(e);if(!n)return;let r=Ue(n);await $c(Tn(r),{recursive:!0}).catch(()=>{}),await Fp(n);for(let s of await jp(n))await vc(n,s,t);for(let s of await Jc(n))await Mc(n,s,t,!0);for(let s of await Uc(n))await vc(n,s,t)}async function jp(e){let t=[Ue(e),xr(e)],n=Tn(t[0]);return(await Ap(n).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${ci(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${ci(c)}.`));if(!i)return!1;let o=`${ci(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Up(a))}).sort().map(s=>Wt(n,s))}function Up(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function vc(e,t,n){try{let r=await jc(t);for(let s of Fc(r))await Mc(e,s,n,!1)}finally{await Ac(t,{force:!0})}}async function Mc(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&Tc(e,{correction_id:ui(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Tc(e,{correction_id:ui(),target_spool_id:t.spool_id,action:"retry",created_at:new Date().toISOString(),event_json:t.event?JSON.stringify(t.event):void 0})}async function jc(e){let t="";for(let n=0;n<5;n++){let r=await Ic(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!==X&&t.collection!==ke&&t.collection!==Ke?null:t}catch{return null}}function Jp(e){return er().push(Wp(e))}function Tc(e,t){try{let n=Er(e);if(!n)return;let r=fi(n);Cc(Tn(r),{recursive:!0});let s=er();Dc(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 Uc(e){let t=[Ue(e),xr(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await Np(r,s),await li(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return n}async function Fp(e){await Promise.all([li(Ue(e),"",{flag:"a"}),li(xr(e),"",{flag:"a"})]).catch(()=>{})}async function Gp(e){let t=[];for(let n of e)t.push(...Fc(await jc(n)));return t}async function Jc(e){let t=await Ic(fi(e),"utf8").catch(()=>""),n=new Map;for(let r of Hp(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 Fc(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 Vm(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function zm(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return j(t)}}async function Ua(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(ec(t.clientVersion,n.resident_version)&&(await Km(n.pid,1500),!Mt(n.pid))){await _e(e.registryPath,{force:!0});return}await Za(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 Za(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 Km(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Mt(e))return;await new Promise(r=>setTimeout(r,50))}}async function Ym(e){if(!e.startsWith("file://"))return!1;try{return await Mm(Wa(e)),!1}catch(t){return t.code==="ENOENT"}}function Xa(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?ir(process.argv[1]):Wa(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Qm(e){let t=Im("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<Jm)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ie(Um(),`red-skills-${r}`,t)}function Zm(e){let t=ir(e);for(let n=0;n<32;n++){try{let s=Xs(ie(t,".git"));if(s!=null)return Xm(t,s)??t;if(Xs(ie(t,".git","HEAD"))!=null||Xs(ie(t,".red","config.yaml"))!=null)return t}catch{}let r=We(t);if(r===t)return null;t=r}return null}function Xm(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=ir(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?We(We(We(r))):null}function Xs(e){try{return Nm(e,"utf8")}catch{return null}}async function Ja(e,t){let n=await za(e).catch(()=>null);return n?ec(t.clientVersion,n.version)?(await ep(e,t.clientVersion),await sp(e),!1):!0:!1}async function ep(e,t){try{await Lt({socketPath:e,timeoutMs:200},{id:Ga(),op:"handover",clientVersion:t})}catch{}}function ec(e,t){return!e||!t?!1:tp(e,t)>0}function tp(e,t){let n=Fa(e),r=Fa(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Fa(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 tc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function np(e){return typeof e=="string"&&e.length>0?e:void 0}function rp(e){return tc(e)&&e.version===Va&&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 sp(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await lt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Jm,Va,Fm,Wm,lr=E(()=>{Q();Ce();Ys();Jm=108,Va=1,Fm=5e3;Wm=8*1024});var ac={};M(ac,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,DEFAULT_RSP_IDLE_MS:()=>mr,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>oc,DEFAULT_RSP_STORE_PATH:()=>ei,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>fr,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>rc,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>sc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>dr,DEFAULT_RSP_TTL_DAYS:()=>Be,MIN_RSP_IDLE_MS:()=>ic,resolveRspConfig:()=>je});import{existsSync as ip,readFileSync as op}from"node:fs";import{join as ap,resolve as nc}from"node:path";function je(e,t,n){let r=La(nc(e),ap(".red","config.yaml")),s=r?op(r,"utf8"):"",i=rr(s,"rsp.enabled")==="true",o=rr(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=Ie(me(s,"rsp.ttlDays"),Be),u=Ie(jt(t.RSP_EPHEMERAL_TTL_HOURS)??me(s,"rsp.ephemeralTtlHours"),Le),l=Ie(me(s,"rsp.byteBudget"),Me),f=Ie(me(s,"rsp.telemetryTtlDays"),dr),d=Ie(me(s,"rsp.telemetryByteBudget")??me(s,"rsp.byteBudget"),fr),p=Ie(jt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??me(s,"rsp.telemetryDrainIntervalMs"),rc),h=Ie(jt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??me(s,"rsp.telemetryDrainTimeoutMs"),sc),m=cp(jt(t.RSP_IDLE_MS)??me(s,"rsp.idleMs"),mr,ic),g=Ie(jt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??me(s,"rsp.heavyGitByteThreshold"),Ne),w=up(jt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??me(s,"rsp.measurement.holdoutShare"),oc),y=Ve(e).rootDir,T=n??t.RSP_STORE_URI??`file://${la(nc(y),ip)}`;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=rr(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Ie(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function cp(e,t,n){let r=Ie(e,t);return Math.max(r,n)}function up(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,ei,Be,Le,Me,dr,fr,rc,sc,mr,ic,oc,Re=E(()=>{"use strict";Ma();Ce();lr();Ne=8*1024,ei=ca,Be=7,Le=6,Me=64*1024*1024,dr=90,fr=4*1024*1024,rc=3e4,sc=2e3,mr=5*6e4,ic=5e3,oc=0});var Gt={};M(Gt,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_TTL_DAYS:()=>Be,RSP_ELISION_COLLECTION:()=>Z,RspElisionStore:()=>xn,ensureReddbBinaryFromWarmCache:()=>xc,storageClassForCommand:()=>ft});import{createHash as _r}from"node:crypto";import{spawnSync as En}from"node:child_process";import{existsSync as ii}from"node:fs";import{mkdir as yc,readFile as wc,readdir as bc,rename as hr,rm as _n,stat as ti,writeFile as lp}from"node:fs/promises";import{homedir as dp}from"node:os";import{basename as _c,dirname as Rc,join as Rn}from"node:path";import{fileURLToPath as fp}from"node:url";import{gunzipSync as mp,gzipSync as pp}from"node:zlib";function cc(e,t){return`el:${_r("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 ni(){return"index:v1"}function gp(e){return`blob:${e}`}function hp(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":Rr(t)?"re-executable":"ephemeral"}return"ephemeral"}function pr(e){return Sr(e.storage_class)?e.storage_class:ft(e.command)}function Sc(e){return Sr(e.storage_class)?e.storage_class:ft(e.command)}function uc(e){let t=Sp(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=Sc(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 lc(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:yp(i),storage_class:Sc(s),recover:`rsp show ${s.handle}`}})}function yp(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 dc(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 fc(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:wp(n),original_bytes:e.length}:null}function wp(e){let t=ri(e,["rev-parse","HEAD"])||"unborn",n=ri(e,["write-tree"])||"no-index",r=ri(e,["status","--porcelain=v1","-z"])||"";return _r("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function ri(e,t){let n=En("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function mc(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!Rr(n))return null;let r=kc(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 Rr(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 _r("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function pc(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 gc(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 hc(e,t,n){let r=pp(e);return{key:gp(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function bp(e){try{let t=mp(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function _p(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 Rp(e){if(!Rr(e.argv))return null;let t=kc(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 kc(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 Sp(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function wr(e){return/^el:[a-f0-9]{12}$/.test(e)}function br(e){return/^blob:[a-f0-9]{64}$/.test(e)}function kp(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 Ep(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 xp(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 bc(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 vp(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 si(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function yr(e){if(!oe(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=Op(e.derivation_recipe),r=Pp(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&br(s);return e.collection===Z&&typeof e.handle=="string"&&wr(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||ui(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&br(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Tp(e.loss)&&(e.storage_class===void 0||Sr(e.storage_class))}function Ec(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"&&wr(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||Sr(t.storage_class))&&(n===void 0||typeof n=="string"&&br(n))})}function oi(e){return oe(e)&&typeof e.key=="string"&&br(e.key)&&ui(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 ai(e){return oe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Tp(e){return oe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Sr(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Op(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 Pp(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")&&Rr(e.argv)&&typeof e.original_bytes=="number"&&ui(e.content_hash)}function ui(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 Dp(e){try{let r=(await wc(e,"utf8")).trim();if(r==="")return gr();let s;try{s=JSON.parse(r)}catch{s=j(r)}if(Ap(s))return{...s,blobs:s.blobs??{}}}catch(n){if(n.code==="ENOENT"){let s=gr();return await kn(e,s),s}let r=gr();return await kn(e,r),r}let t=gr();return await kn(e,t),t}async function Cp(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function $p(e){return _c(e)==="red-skills.rdb"}async function xc(){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(dp(),".cache","red-skills","bundles")),t=Rn(e,"reddb"),n;try{n=await bc(t)}catch{return}n.sort().reverse();for(let r of n){let s=Rn(t,r,process.platform==="win32"?"red.exe":"red");if(ii(s)){process.env.REDDB_BIN=s;return}}}async function kn(e,t){await yc(Rc(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await lp(n,`${D(ci(t))}
42
+ `,"utf8"),await hr(n,e)}function ci(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>ci(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=ci(r));return t}return String(e)}function gr(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Ap(e){return oe(e)&&e.version===1&&oe(e.records)&&Object.values(e.records).every(yr)&&(e.blobs===void 0||oe(e.blobs)&&Object.values(e.blobs).every(oi))&&oe(e.tombstones)&&Object.values(e.tombstones).every(ai)&&Ec(e.index)}function Ip(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return fp(e)}var Z,xn,ze=E(()=>{"use strict";Ps();Q();Re();Z="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=Ip(t.uri),r=await Cp(n),s=new e(r,{uri:t.uri,ttlDays:si(t.ttlDays,Be),ephemeralTtlHours:si(t.ephemeralTtlHours,Le),byteBudget:si(t.byteBudget,Me),now:t.now??(()=>new Date)});return $p(r)?(await xc(),await yc(Rc(r),{recursive:!0}),s.db=await Ct(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Dp(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=cc(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?fc(r,n.command):null,l=c==="re-executable"?mc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=dc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?hc(r,p,i):null,m=pc(r,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:Z,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(!wr(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[dt(t)];if(!yr(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:gc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:pr(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:Z,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:pr(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:uc(n)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),lc(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 ai(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return _p(t.derivation_recipe);if(t.reexecution_recipe)return Rp(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return oi(n)?bp(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 ti(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(Z)}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===Z);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${Z}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${Z}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${Z}`),await this.db.query(`CREATE KV IF NOT EXISTS ${Z}`)}}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=cc(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?fc(r,n.command):null,l=c==="re-executable"?mc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=dc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?hc(r,p,i):null,m=pc(r,u,l,h);h&&!oi(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:Z,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(!wr(t))return null;let n=await this.kvGet(Ut(t));if(ai(n))return n;let r=await this.kvGet(dt(t));if(!yr(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:gc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:pr(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:Z,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:pr(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:uc(t.records)}}async recoveryHandlesRedDb(t){let n=await this.pruneRedDb(await this.readRedDbIndex());return lc(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=kp(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Ep(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 xp(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await wc(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=_c(s),c=_r("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=>vp(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(ni());return Ec(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ni(),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 ti(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 ${hp(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 ti(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 hr(this.path,o),await hr(i,this.path),await _n(o,{force:!0})}catch(u){throw!ii(this.path)&&ii(o)&&await hr(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===Z){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:ni(),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:Z,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(!yr(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:()=>X,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ke,RSP_TELEMETRY_INDEX_COLLECTION:()=>On,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ke,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Mc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>jc,RSP_TELEMETRY_SPOOL_FILE:()=>Lc,appendTelemetryEvent:()=>Je,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>gi,parseTelemetryEvent:()=>zt,readAccountingLaneStats:()=>hi,readTelemetryGainsReport:()=>yi,readTelemetryStats:()=>Tr,takeTelemetrySpool:()=>Jp,telemetryLegacySpoolPath:()=>vr,telemetrySpoolCorrectionsPath:()=>pi,telemetrySpoolPath:()=>Ue});import{randomUUID as di,createHash as Np}from"node:crypto";import{appendFileSync as $c,existsSync as Bp,mkdirSync as Ac}from"node:fs";import{mkdir as Ic,readdir as Lp,readFile as Nc,rename as Mp,rm as Bc,writeFile as fi}from"node:fs/promises";import{basename as li,dirname as Tn,join as Wt,resolve as vc}from"node:path";function xr(e){if(!e)return null;let t=vc(e);for(;;){if(Bp(Wt(t,".red")))return t;let n=vc(Wt(t,".."));if(n===t)break;t=n}return null}function Ue(e){return Wt(F(e),Lc)}function vr(e){return Wt(F(e),Mc)}function pi(e){return Wt(F(e),jc)}async function Je(e,t){gt(e,t)}function gt(e,t){try{let n=xr(e);if(!n)return;let r=Ue(n);Ac(Tn(r),{recursive:!0}),$c(r,Hp({spool_id:di(),event:Up(t)}),{encoding:"utf8",mode:384})}catch{}}function Up(e){return Tc(Tc(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Tc(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=jp)return e;let i={...e};return delete i[t],Se(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function Jp(e){let t=xr(e);if(!t)return[];let n=Ue(t);await Ic(Tn(n),{recursive:!0}).catch(()=>{});let r=await Fc(t),s=[...await Gc(t),...await Wp(r)];return await Promise.all(r.map(i=>Bc(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function gi(e,t){let n=xr(e);if(!n)return;let r=Ue(n);await Ic(Tn(r),{recursive:!0}).catch(()=>{}),await qp(n);for(let s of await Fp(n))await Oc(n,s,t);for(let s of await Gc(n))await Uc(n,s,t,!0);for(let s of await Fc(n))await Oc(n,s,t)}async function Fp(e){let t=[Ue(e),vr(e)],n=Tn(t[0]);return(await Lp(n).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${li(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${li(c)}.`));if(!i)return!1;let o=`${li(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Gp(a))}).sort().map(s=>Wt(n,s))}function Gp(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function Oc(e,t,n){try{let r=await Jc(t);for(let s of Hc(r))await Uc(e,s,n,!1)}finally{await Bc(t,{force:!0})}}async function Uc(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&Pc(e,{correction_id:di(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Pc(e,{correction_id:di(),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 Jc(e){let t="";for(let n=0;n<5;n++){let r=await Nc(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!Or(t)||t.collection!==ae&&t.collection!==X&&t.collection!==ke&&t.collection!==Ke?null:t}catch{return null}}function Hp(e){return tr().push(Kp(e))}function Pc(e,t){try{let n=xr(e);if(!n)return;let r=pi(n);Ac(Tn(r),{recursive:!0});let s=tr();$c(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 Fc(e){let t=[Ue(e),vr(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await Mp(r,s),await fi(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return n}async function qp(e){await Promise.all([fi(Ue(e),"",{flag:"a"}),fi(vr(e),"",{flag:"a"})]).catch(()=>{})}async function Wp(e){let t=[];for(let n of e)t.push(...Hc(await Jc(n)));return t}async function Gc(e){let t=await Nc(pi(e),"utf8").catch(()=>""),n=new Map;for(let r of Vp(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 Hc(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(Or(i)){let o=zt(JSON.stringify(i));t.push(o?{spool_id:kr(JSON.stringify(i)),event:o}:{spool_id:kr(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n){t.push({spool_id:kr(s),raw_line:s});continue}try{for(let i of er(`${n}
45
45
  ${s}
46
- `))di(i)&&Vp(i)&&t.push({spool_id:i.spool_id,event:Gc(i)})}catch{s.startsWith("{")&&t.push({spool_id:Sr(s),raw_line:s})}}}return t}function Hp(e){return qp(e).map(zp).filter(t=>t!==null)}function qp(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let i=JSON.parse(s);di(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let i of Xn(`${n}
46
+ `))mi(i)&&Yp(i)&&t.push({spool_id:i.spool_id,event:qc(i)})}catch{s.startsWith("{")&&t.push({spool_id:kr(s),raw_line:s})}}}return t}function Vp(e){return zp(e).map(Qp).filter(t=>t!==null)}function zp(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let i=JSON.parse(s);mi(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let i of er(`${n}
47
47
  ${s}
48
- `))di(i)&&t.push(i)}catch{}}}return t}function Sr(e){return`legacy:${$p("sha256").update(e).digest("hex").slice(0,24)}`}function Wp(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 Gc(e){let{spool_id:t,...n}=e;return zt(JSON.stringify(n))}function Vp(e){return typeof e.spool_id=="string"&&Gc(e)!==null}function zp(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 di(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 Hc(e,s),o=(await vn(e,X)).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 z=a.length+u.length,Ge=c.filter(R=>R.hit===!0).length,K=qs(p,h),en=Kp(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:K.tokens_saved_estimated,token_estimate_range_pct:K.token_estimate_range_pct,tokens_saved_low:K.tokens_saved_low,tokens_saved_high:K.tokens_saved_high,dollars_saved_estimate_usd:K.dollars_saved_estimate_usd,dollars_saved_low_usd:K.dollars_saved_low_usd,dollars_saved_high_usd:K.dollars_saved_high_usd,pricing_model_family:K.pricing_model_family,pricing_input_usd_per_million_tokens:K.pricing_input_usd_per_million_tokens,pricing_note:K.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:z===0?0:u.length/z,show_total:c.length,show_hits:Ge,show_misses:Math.max(0,c.length-Ge),show_hit_rate:c.length===0?0:q(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:q(T),store_elapsed_ms_avg:x===0?null:q(T/x)},decisions:en}}function Kp(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:q(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 pi(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:sg(s)}}async function gi(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 Hc(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)/mg()))),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,z=null,Ge=0,K=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 Lo=g.get(ue)??[];Lo.push(os),g.set(ue,Lo)}st&&w.set(st,(w.get(st)??0)+1),it&&y.set(it,(y.get(it)??0)+1);let as=cg(v);as&&T.set(as,(T.get(as)??0)+1);let cs=dg(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&&K++),le>0&&(!z||le>z.tokens_saved||le===z.tokens_saved&&Ot>z.bytes_saved)&&(z={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 $=Xp(en),Pe=Zp(l),rt=tg([...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:Pc(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,...Pc(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:q([...y.values()].reduce((b,v)=>b+v,0)/y.size),peak_minute:Tt?{minute:Tt[0],requests:Tt[1]}:null,hour_weekday_heatmap:ug(T)},savings:{tokens:qs(L,ce),measured_control_holdout:Yp(c,u),weekly_tokens_saved:fg(x),elision_rate:c.length===0?0:q(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:z},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:K,warm_hits:Ge===0?null:Math.max(0,Ge-K)},mining:{recovery_usage_by_family:Pe,degradation_clusters:$,threshold_tuning_suggestions:rt}}}async function Hc(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 Yp(e,t){let n=rg(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(Oc).filter(a=>a!=null),s=t.map(Oc).filter(a=>a!=null),i=r.length>0?r:s,o=i.length===0?null:q(ng(i));return{enabled:!0,holdout_share:q(n),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:Qp(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Oc(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 Qp(e,t){if(e.length<=1)return{low:q(Math.max(0,t)),high:q(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:q(Math.max(0,t-r)),high:q(Math.min(1,t+r))}}function Zp(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:q(n.show_hits/n.show_total)}))}function Xp(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:eg(n)}))}function eg(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 tg(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 ng(e){return e.reduce((t,n)=>t+n,0)/e.length}function rg(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function sg(e){let t=og();for(let n of e){if(P(n.event_type)==="show"||P(n.degradation_reason)!==""||n.elided!==!0)continue;let r=ig(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 ig(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function og(){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=>ag(r.value)).filter(r=>Tr(r))}function ag(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 q(n[r])}function Pc(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 q(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 cg(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${lg(t.getUTCDay())}:${t.getUTCHours()}`:null}function ug(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 lg(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function dg(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 fg(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:q((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function mg(){return 24*60*60*1e3}function Tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Nc,Bc,Lc,ae,X,ke,Ke,On,Bp,Ee=E(()=>{"use strict";Ce();Q();ze();Ws();Nc="rsp-telemetry.spool.toonl",Bc="rsp-telemetry.spool.jsonl",Lc="rsp-telemetry.spool.corrections.toonl",ae="rsp_accounting_events_v1",X="rsp_decisions_v1",ke="rsp_telemetry_invocations_v1",Ke="rsp_telemetry_degradations_v1",On="rsp_telemetry_index_v1",Bp=64*1024});var qc=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:()=>za,warmResidentServer:()=>Va,writeResidentRegistry:()=>ar});import{randomUUID as pg}from"node:crypto";function Wc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Dn,Fe=E(()=>{"use strict";qc();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?Wc(n)&&n.status==="expired"?n:!Wc(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:pg()});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:()=>Qc,formatHookDecision:()=>Yc,hookDecisionFromClaudePreExecJson:()=>bg,hookDecisionFromCodexPreExecJson:()=>_g,rewriteCommand:()=>zc,rewriteTableFromCapabilities:()=>Vc,runClaudePreExecHook:()=>Rg,runCodexPreExecHook:()=>Sg});import{readFileSync as Cr}from"node:fs";import{existsSync as gg}from"node:fs";import{fileURLToPath as hg}from"node:url";function Vc(e){let t=new Map;for(let n of e)t.set(Ug(n.command),["rsp",...n.wrapper]);return t}function zc(e){let t=Cg(e);if(t)return t;let n=Pg(e);if(!n)return Pr(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&cu(r[0]))return Pr(e);let s=wg(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=>Dg(r,c.command));if(!i)return Pr(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=ru(n.redirectSuffix);return{kind:"rewrite",command:[...o.map($n),...a].join(" "),capabilityId:i.id}}function wg(e){let t=e.tokens.map(s=>s.text),n=t[0],r=ru(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 bg(e,t){return await Kc(e,t)}async function _g(e,t){return await Kc(e,t)}async function Kc(e,t){return(await yi(e,t,"pre-exec")).decision}async function yi(e,t,n){let r=uu(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??kg)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:hi(s),decision:d,reason:"disabled"})}}let a=hi(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?Ig(a):(t.rewrite??zc)(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 xg(i,t.wakeResident??Eg),{decision:l,telemetryRoot:i,event:Cn({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Yc(e){return e.kind==="rewrite"?Zc(e.command):{stdout:"",status:0}}function Qc(e){return e.kind==="rewrite"?Zc(e.command):{stdout:"",status:0}}function Zc(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
49
- `,status:0}}async function Rg(e){let t="";try{t=e?Cr(e,"utf8"):Cr(0,"utf8");let n=await yi(t,{cwd:process.cwd()},"claude-pre-exec");$r(n.telemetryRoot,n.event);let r=n.decision;eu("claude-pre-exec",r);let s=Yc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return $r(process.cwd(),Xc("claude-pre-exec",t,n)),tu("claude-pre-exec",n),0}}async function Sg(e){let t="";try{t=e?Cr(e,"utf8"):Cr(0,"utf8");let n=await yi(t,{cwd:process.cwd()},"codex-pre-exec");$r(n.telemetryRoot,n.event);let r=n.decision;eu("codex-pre-exec",r);let s=Qc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return $r(process.cwd(),Xc("codex-pre-exec",t,n)),tu("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:X,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:au(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function Xc(e,t,n){let r=uu(t),s=r.ok?hi(r.payload):"";return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:au(s),decision:"failed-open",reason:"hook-exception",error:wi(n)}}function kg(e){return je(e,process.env).enabled}async function Eg(e){let t=je(e,process.env);if(!t.enabled||!Og(t))return;let n=Ve(e);await or(n,Tg(t))}async function xg(e,t){try{await Promise.resolve(t(e))}catch(n){vg(n)}}function eu(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
48
+ `))mi(i)&&t.push(i)}catch{}}}return t}function kr(e){return`legacy:${Np("sha256").update(e).digest("hex").slice(0,24)}`}function Kp(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 qc(e){let{spool_id:t,...n}=e;return zt(JSON.stringify(n))}function Yp(e){return typeof e.spool_id=="string"&&qc(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 mi(e){return Or(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}async function Tr(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await Wc(e,s),o=(await vn(e,X)).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)||Er(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 z=a.length+u.length,Ge=c.filter(R=>R.hit===!0).length,K=Vs(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:K.tokens_saved_estimated,token_estimate_range_pct:K.token_estimate_range_pct,tokens_saved_low:K.tokens_saved_low,tokens_saved_high:K.tokens_saved_high,dollars_saved_estimate_usd:K.dollars_saved_estimate_usd,dollars_saved_low_usd:K.dollars_saved_low_usd,dollars_saved_high_usd:K.dollars_saved_high_usd,pricing_model_family:K.pricing_model_family,pricing_input_usd_per_million_tokens:K.pricing_input_usd_per_million_tokens,pricing_note:K.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:z===0?0:u.length/z,show_total:c.length,show_hits:Ge,show_misses:Math.max(0,c.length-Ge),show_hit_rate:c.length===0?0:q(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:q(T),store_elapsed_ms_avg:x===0?null:q(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:q(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 hi(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:ag(s)}}async function yi(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 Wc(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)/hg()))),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,z=null,Ge=0,K=0;for(let b of c){let v=pt(b),st=v.slice(0,10),it=v.slice(0,16),ue=Er(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)),cs=mt(b.wrapper_ms);if(cs!=null){m.push(cs);let jo=g.get(ue)??[];jo.push(cs),g.set(ue,jo)}st&&w.set(st,(w.get(st)??0)+1),it&&y.set(it,(y.get(it)??0)+1);let us=dg(v);us&&T.set(us,(T.get(us)??0)+1);let ls=pg(v);ls&&x.set(ls,(x.get(ls)??0)+le);let zn=O.get(ue)??{command_family:ue,invocations:0,tokens_saved:0,bytes_saved:0};zn.invocations++,zn.tokens_saved+=le,zn.bytes_saved+=Ot,O.set(ue,zn),b.elided===!0&&he++,(b.store_open_count!=null||b.store_elapsed_ms!=null)&&(Ge++,Se(b.store_open_count)>0&&K++),le>0&&(!z||le>z.tokens_saved||le===z.tokens_saved&&Ot>z.bytes_saved)&&(z={timestamp:v,command_family:ue,tokens_saved:le,bytes_saved:Ot})}let en=f.map(b=>({timestamp:pt(b),command_family:Er(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 $=ng(en),Pe=tg(l),rt=sg([...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:Cc(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,...Cc(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:q([...y.values()].reduce((b,v)=>b+v,0)/y.size),peak_minute:Tt?{minute:Tt[0],requests:Tt[1]}:null,hour_weekday_heatmap:fg(T)},savings:{tokens:Vs(L,ce),measured_control_holdout:Xp(c,u),weekly_tokens_saved:gg(x),elision_rate:c.length===0?0:q(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:z},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:K,warm_hits:Ge===0?null:Math.max(0,Ge-K)},mining:{recovery_usage_by_family:Pe,degradation_clusters:$,threshold_tuning_suggestions:rt}}}async function Wc(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 Xp(e,t){let n=og(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(Dc).filter(a=>a!=null),s=t.map(Dc).filter(a=>a!=null),i=r.length>0?r:s,o=i.length===0?null:q(ig(i));return{enabled:!0,holdout_share:q(n),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:eg(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Dc(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 eg(e,t){if(e.length<=1)return{low:q(Math.max(0,t)),high:q(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:q(Math.max(0,t-r)),high:q(Math.min(1,t+r))}}function tg(e){let t=new Map;for(let n of e){let r=Er(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:q(n.show_hits/n.show_total)}))}function ng(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:rg(n)}))}function rg(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 sg(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 ig(e){return e.reduce((t,n)=>t+n,0)/e.length}function og(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function ag(e){let t=ug();for(let n of e){if(P(n.event_type)==="show"||P(n.degradation_reason)!==""||n.elided!==!0)continue;let r=cg(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 cg(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function ug(){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=>lg(r.value)).filter(r=>Or(r))}function lg(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 q(n[r])}function Cc(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 q(e){return Math.round(e*100)/100}function Er(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 dg(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${mg(t.getUTCDay())}:${t.getUTCHours()}`:null}function fg(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 mg(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function pg(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 gg(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:q((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function hg(){return 24*60*60*1e3}function Or(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Lc,Mc,jc,ae,X,ke,Ke,On,jp,Ee=E(()=>{"use strict";Ce();Q();ze();zs();Lc="rsp-telemetry.spool.toonl",Mc="rsp-telemetry.spool.jsonl",jc="rsp-telemetry.spool.corrections.toonl",ae="rsp_accounting_events_v1",X="rsp_decisions_v1",ke="rsp_telemetry_invocations_v1",Ke="rsp_telemetry_degradations_v1",On="rsp_telemetry_index_v1",jp=64*1024});var Vc=E(()=>{"use strict";Ys()});var ht={};M(ht,{ResidentRspElisionStore:()=>Dn,ensureResidentServer:()=>or,kickResidentServer:()=>ar,pingResident:()=>lt,readResidentRegistry:()=>bn,removeResidentRegistry:()=>ur,residentRegistryStatus:()=>wn,resolveResidentPaths:()=>Ve,sweepResidentRegistry:()=>Ya,warmResidentServer:()=>Ka,writeResidentRegistry:()=>cr});import{randomUUID as yg}from"node:crypto";function zc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Dn,Fe=E(()=>{"use strict";Vc();lr();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?zc(n)&&n.status==="expired"?n:!zc(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 or(this.paths,this.config);let n=await Lt(this.paths,{...t,id:yg()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Br={};M(Br,{RSP_WRAPPER_CAPABILITIES:()=>An,formatCodexHookDecision:()=>Xc,formatHookDecision:()=>Zc,hookDecisionFromClaudePreExecJson:()=>Sg,hookDecisionFromCodexPreExecJson:()=>kg,rewriteCommand:()=>Yc,rewriteTableFromCapabilities:()=>Kc,runClaudePreExecHook:()=>Eg,runCodexPreExecHook:()=>xg});import{readFileSync as $r}from"node:fs";import{existsSync as wg}from"node:fs";import{fileURLToPath as bg}from"node:url";function Kc(e){let t=new Map;for(let n of e)t.set(Gg(n.command),["rsp",...n.wrapper]);return t}function Yc(e){let t=Ig(e);if(t)return t;let n=$g(e);if(!n)return Dr(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&lu(r[0]))return Dr(e);let s=Rg(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return Dr(e);let i=[...An].sort((c,u)=>u.command.length-c.command.length).find(c=>Ag(r,c.command));if(!i)return Dr(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=iu(n.redirectSuffix);return{kind:"rewrite",command:[...o.map($n),...a].join(" "),capabilityId:i.id}}function Rg(e){let t=e.tokens.map(s=>s.text),n=t[0],r=iu(e.redirectSuffix);return n==="cat"&&t.length===2&&Pr(t[1])?{kind:"rewrite",command:["rsp","cat",$n(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&Pr(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])&&Pr(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])&&Pr(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),$n(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function Pr(e){return!!e&&!e.startsWith("-")}async function Sg(e,t){return await Qc(e,t)}async function kg(e,t){return await Qc(e,t)}async function Qc(e,t){return(await bi(e,t,"pre-exec")).decision}async function bi(e,t,n){let r=du(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??vg)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:wi(s),decision:d,reason:"disabled"})}}let a=wi(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?Bg(a):(t.rewrite??Yc)(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 Og(i,t.wakeResident??Tg),{decision:l,telemetryRoot:i,event:Cn({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Zc(e){return e.kind==="rewrite"?eu(e.command):{stdout:"",status:0}}function Xc(e){return e.kind==="rewrite"?eu(e.command):{stdout:"",status:0}}function eu(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
49
+ `,status:0}}async function Eg(e){let t="";try{t=e?$r(e,"utf8"):$r(0,"utf8");let n=await bi(t,{cwd:process.cwd()},"claude-pre-exec");Ar(n.telemetryRoot,n.event);let r=n.decision;nu("claude-pre-exec",r);let s=Zc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Ar(process.cwd(),tu("claude-pre-exec",t,n)),ru("claude-pre-exec",n),0}}async function xg(e){let t="";try{t=e?$r(e,"utf8"):$r(0,"utf8");let n=await bi(t,{cwd:process.cwd()},"codex-pre-exec");Ar(n.telemetryRoot,n.event);let r=n.decision;nu("codex-pre-exec",r);let s=Xc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Ar(process.cwd(),tu("codex-pre-exec",t,n)),ru("codex-pre-exec",n),0}}function Ar(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:X,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:uu(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function tu(e,t,n){let r=du(t),s=r.ok?wi(r.payload):"";return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:uu(s),decision:"failed-open",reason:"hook-exception",error:_i(n)}}function vg(e){return je(e,process.env).enabled}async function Tg(e){let t=je(e,process.env);if(!t.enabled||!Cg(t))return;let n=Ve(e);await ar(n,Dg(t))}async function Og(e,t){try{await Promise.resolve(t(e))}catch(n){Pg(n)}}function nu(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
- `)}}function tu(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${wi(t)}
52
- `)}function vg(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${wi(e)}
53
- `)}function wi(e){return e instanceof Error?e.name||"Error":typeof e}function Tg(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 Og(e){if(!e.storeUri.startsWith("file://"))return!0;try{return gg(hg(e.storeUri))}catch{return!1}}function hi(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 Pg(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=nu(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&cu(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 nu(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 Dg(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function Cg(e){let t=nu(e.trim()).map(n=>n.text);return Dr(t)?{kind:"passthrough",reason:yg}:null}function Dr(e){return e[0]==="gh"&&e.some($g)}function $g(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function ru(e){return e.map(t=>t.text)}function $n(e){return/[^\w@%+=:,./-]/.test(e)?bi(e):e}function Ig(e){let t=Ag(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${bi(e.trim())}`,capabilityId:"proxy:universal"}}function Ag(e){let t=e.trim();if(!t)return"missing-command";if(iu(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&&su.has(n))return"interactive"}function Pr(e){let t=e.trim();return Ng(t)?{kind:"rewrite",command:`rsp exec -- ${bi(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Ng(e){return!(!e||!Bg(e)||!Lg(e)||iu(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Mg(e,"rsp")||ou(e,su)||jg(e))}function Bg(e){return/&&|[;|]/.test(e)}function iu(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 Lg(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 ou(e,t){return Ir(e).some(n=>{let r=Ar(n)[0];return r?t.has(r):!1})}function Mg(e,t){return ou(e,new Set([t]))}function jg(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 bi(e){return`'${e.replace(/'/g,"'\\''")}'`}function au(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 cu(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Ug(e){return e.join("\0")}function uu(e){try{let t=JSON.parse(e);return lu(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(!lu(n))return"";n=n[r]}return typeof n=="string"?n:""}function lu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var In,g0,yg,su,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"]}],g0=Vc(In),yg="lossless-gh-json-jq";su=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var ki={};M(ki,{NORMALIZATION_ALLOWLIST:()=>yu,NORMALIZE_ANSI:()=>Lr,NORMALIZE_BLANK_LINES:()=>Ur,NORMALIZE_CR_PROGRESS:()=>Mr,NORMALIZE_JSON_TOON:()=>hu,NORMALIZE_TRAILING_WHITESPACE:()=>jr,crushJsonArrayItems:()=>Nn,formatCodexNormalizeDecision:()=>Su,formatNormalizeDecision:()=>Ru,hookDecisionFromClaudePostExecJson:()=>wu,hookDecisionFromCodexPostExecJson:()=>bu,normalizeOutput:()=>Jr,renderGenericJsonLane:()=>Ri,runClaudePostExecHook:()=>Gg,runCodexPostExecHook:()=>Hg,transcodeJsonToToon:()=>gu});import{readFileSync as Br}from"node:fs";function gu(e,t){let n=t?.encode??D,r=t?.decode??j,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 _i(i,a)?o.trimEnd():e}async function Ri(e,t={}){let n=zg(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=pu(t.minTokens,Jg),o=pu(t.maxItems,Fg);if(!(s>o&&Xg(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:eh(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=Kg(e),s=new Set;r&&e.forEach((a,c)=>{Si(a)!==r&&s.add(c)});let i=Yg(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 yu)t=n.apply(t);return t}async function wu(e,t){return await _u(e,t)}async function bu(e,t){return await _u(e,t)}async function _u(e,t){let n=Vg(e),r=th(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Wg)(r))return{kind:"passthrough",reason:"disabled"};let i=nh(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 Ru(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Su(e){return{stdout:"",status:0}}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}async function Hg(e){let t=e?Br(e,"utf8"):Br(0,"utf8"),n=await bu(t,{cwd:process.cwd()}),r=Su(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function qg(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&&du(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&du(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function du(e){return e>=32&&e<=63}function Wg(e){return je(e,process.env).enabled}function Vg(e){try{let t=JSON.parse(e);return Kt(t)?t:{}}catch{return{}}}function zg(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 Kg(e){let t=new Map;for(let s of e){let i=Si(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 Si(e){return Array.isArray(e)?"array":Kt(e)?Object.keys(e).sort().map(t=>`${t}:${fu(e[t])}`).join("|"):fu(e)}function Yg(e,t){let n=new Set,r=new Map;e.forEach((s,i)=>{if(!(t&&Si(s)!==t))for(let[o,a]of ku(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 Qg(s))n.add(i);for(let i of Zg(s))n.add(i)}return n}function Qg(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=mu(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),i=mu(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 Zg(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 ku(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])=>ku(r,t?`${t}.${n}`:n)):[]}function fu(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function mu(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 Xg(e){return Math.ceil(e.length/4)}function pu(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function eh(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 th(e,t){let n=e;for(let r of t){if(!Kt(n))return"";n=n[r]}return typeof n=="string"?n:""}function nh(e,t){let n=e[t];return Kt(n)?n:null}function Kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function _i(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)=>_i(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)&&_i(n[o],r[o]))}var Lr,Mr,jr,Ur,hu,Jg,Fg,yu,Bn=E(()=>{"use strict";Q();Re();Lr={id:"ansi",apply:qg},Mr={id:"cr-progress",apply:e=>e.split(`
51
+ `)}}function ru(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${_i(t)}
52
+ `)}function Pg(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${_i(e)}
53
+ `)}function _i(e){return e instanceof Error?e.name||"Error":typeof e}function Dg(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 Cg(e){if(!e.storeUri.startsWith("file://"))return!0;try{return wg(bg(e.storeUri))}catch{return!1}}function wi(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 $g(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=su(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&lu(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 su(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 Ag(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function Ig(e){let t=su(e.trim()).map(n=>n.text);return Cr(t)?{kind:"passthrough",reason:_g}:null}function Cr(e){return e[0]==="gh"&&e.some(Ng)}function Ng(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function iu(e){return e.map(t=>t.text)}function $n(e){return/[^\w@%+=:,./-]/.test(e)?Ri(e):e}function Bg(e){let t=Lg(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${Ri(e.trim())}`,capabilityId:"proxy:universal"}}function Lg(e){let t=e.trim();if(!t)return"missing-command";if(au(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=Nr(Ir(t)[0]??"")[0];if(n==="rsp")return"opt-out";if(n&&ou.has(n))return"interactive"}function Dr(e){let t=e.trim();return Mg(t)?{kind:"rewrite",command:`rsp exec -- ${Ri(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Mg(e){return!(!e||!jg(e)||!Ug(e)||au(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Jg(e,"rsp")||cu(e,ou)||Fg(e))}function jg(e){return/&&|[;|]/.test(e)}function au(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 Ug(e){return Ir(e).some(t=>{let n=Nr(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 cu(e,t){return Ir(e).some(n=>{let r=Nr(n)[0];return r?t.has(r):!1})}function Jg(e,t){return cu(e,new Set([t]))}function Fg(e){return Ir(e).some(t=>{let n=Nr(t);return n[0]==="grep"&&n.includes("-q")})}function Ir(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Nr(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function Ri(e){return`'${e.replace(/'/g,"'\\''")}'`}function uu(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Cr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Cr(t)&&t[1]?`gh ${t[1]} json-jq`:Cr(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 lu(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Gg(e){return e.join("\0")}function du(e){try{let t=JSON.parse(e);return fu(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(!fu(n))return"";n=n[r]}return typeof n=="string"?n:""}function fu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var An,x0,_g,ou,In=E(()=>{"use strict";Re();Fe();Ee();An=[{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"]}],x0=Kc(An),_g="lossless-gh-json-jq";ou=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var xi={};M(xi,{NORMALIZATION_ALLOWLIST:()=>bu,NORMALIZE_ANSI:()=>Mr,NORMALIZE_BLANK_LINES:()=>Jr,NORMALIZE_CR_PROGRESS:()=>jr,NORMALIZE_JSON_TOON:()=>wu,NORMALIZE_TRAILING_WHITESPACE:()=>Ur,crushJsonArrayItems:()=>Nn,formatCodexNormalizeDecision:()=>Eu,formatNormalizeDecision:()=>ku,hookDecisionFromClaudePostExecJson:()=>_u,hookDecisionFromCodexPostExecJson:()=>Ru,normalizeOutput:()=>Fr,renderGenericJsonLane:()=>ki,runClaudePostExecHook:()=>Wg,runCodexPostExecHook:()=>Vg,transcodeJsonToToon:()=>yu});import{readFileSync as Lr}from"node:fs";function yu(e,t){let n=t?.encode??D,r=t?.decode??j,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 Si(i,a)?o.trimEnd():e}async function ki(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:D(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,i=hu(t.minTokens,Hg),o=hu(t.maxItems,qg);if(!(s>o&&nh(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:rh(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)=>{Ei(a)!==r&&s.add(c)});let i=Xg(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 Fr(e){let t=e;for(let n of bu)t=n.apply(t);return t}async function _u(e,t){return await Su(e,t)}async function Ru(e,t){return await Su(e,t)}async function Su(e,t){let n=Yg(e),r=sh(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Kg)(r))return{kind:"passthrough",reason:"disabled"};let i=ih(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??Fr)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function ku(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Eu(e){return{stdout:"",status:0}}async function Wg(e){let t=e?Lr(e,"utf8"):Lr(0,"utf8"),n=await _u(t,{cwd:process.cwd()}),r=ku(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function Vg(e){let t=e?Lr(e,"utf8"):Lr(0,"utf8"),n=await Ru(t,{cwd:process.cwd()}),r=Eu(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function zg(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&&mu(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&mu(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function mu(e){return e>=32&&e<=63}function Kg(e){return je(e,process.env).enabled}function Yg(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 Zg(e){let t=new Map;for(let s of e){let i=Ei(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 Ei(e){return Array.isArray(e)?"array":Kt(e)?Object.keys(e).sort().map(t=>`${t}:${pu(e[t])}`).join("|"):pu(e)}function Xg(e,t){let n=new Set,r=new Map;e.forEach((s,i)=>{if(!(t&&Ei(s)!==t))for(let[o,a]of xu(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 eh(s))n.add(i);for(let i of th(s))n.add(i)}return n}function eh(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=gu(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),i=gu(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 th(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 xu(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])=>xu(r,t?`${t}.${n}`:n)):[]}function pu(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function gu(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 nh(e){return Math.ceil(e.length/4)}function hu(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function rh(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 sh(e,t){let n=e;for(let r of t){if(!Kt(n))return"";n=n[r]}return typeof n=="string"?n:""}function ih(e,t){let n=e[t];return Kt(n)?n:null}function Kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Si(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)=>Si(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)&&Si(n[o],r[o]))}var Mr,jr,Ur,Jr,wu,Hg,qg,bu,Bn=E(()=>{"use strict";Q();Re();Mr={id:"ansi",apply:zg},jr={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
- `)},jr={id:"trailing-whitespace",apply:e=>e.split(`
56
+ `)},Ur={id:"trailing-whitespace",apply:e=>e.split(`
57
57
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
58
- `)},Ur={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
58
+ `)},Jr={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
59
59
 
60
- `)};hu={id:"json-to-toon",apply:e=>gu(e)},Jg=200,Fg=15;yu=[Lr,Mr,jr,Ur,hu]});var Du={};M(Du,{REPO_STORE_PATH:()=>xi,mergeRspBlock:()=>Tu,provisionRspRepoStore:()=>fh});import{constants as rh}from"node:fs";import{access as sh,copyFile as ih,mkdir as Eu,readFile as oh,rename as ah,writeFile as xu}from"node:fs/promises";import{dirname as ch,join as Ln,resolve as uh}from"node:path";async function fh(e,t={}){let n=uh(e),r=Ln(n,".red"),s=Ln(r,"config.yaml"),i=Ln(n,xi);await Eu(r,{recursive:!0}),await Eu(ch(i),{recursive:!0});let o="";try{o=await oh(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=Tu(o,{enabled:!0,ttlDays:t.ttlDays??Be,ephemeralTtlHours:t.ephemeralTtlHours??Le,byteBudget:t.byteBudget??Me,heavyGitByteThreshold:t.heavyGitByteThreshold??Ne}),c=a!==o;c&&await xu(s,a,"utf8");let u=!await Ei(i),l=!1,f=!1;if(u){let p=Ln(n,lh),h=Ln(n,dh);if(await Ei(p))await ah(p,i),f=!0;else if(await Ei(h))await ih(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=mh(a,xi);return d!==a&&await xu(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function Tu(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
- `),s=Ou(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
60
+ `)};wu={id:"json-to-toon",apply:e=>yu(e)},Hg=200,qg=15;bu=[Mr,jr,Ur,Jr,wu]});var $u={};M($u,{REPO_STORE_PATH:()=>Ti,mergeRspBlock:()=>Pu,provisionRspRepoStore:()=>gh});import{constants as oh}from"node:fs";import{access as ah,copyFile as ch,mkdir as vu,readFile as uh,rename as lh,writeFile as Tu}from"node:fs/promises";import{dirname as dh,join as Ln,resolve as fh}from"node:path";async function gh(e,t={}){let n=fh(e),r=Ln(n,".red"),s=Ln(r,"config.yaml"),i=Ln(n,Ti);await vu(r,{recursive:!0}),await vu(dh(i),{recursive:!0});let o="";try{o=await uh(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=Pu(o,{enabled:!0,ttlDays:t.ttlDays??Be,ephemeralTtlHours:t.ephemeralTtlHours??Le,byteBudget:t.byteBudget??Me,heavyGitByteThreshold:t.heavyGitByteThreshold??Ne}),c=a!==o;c&&await Tu(s,a,"utf8");let u=!await vi(i),l=!1,f=!1;if(u){let p=Ln(n,mh),h=Ln(n,ph);if(await vi(p))await lh(p,i),f=!0;else if(await vi(h))await ch(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=hh(a,Ti);return d!==a&&await Tu(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function Pu(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Gr(t.ttlDays,Be)}`,` ephemeralTtlHours: ${Gr(t.ephemeralTtlHours,Le)}`,` byteBudget: ${Gr(t.byteBudget,Me)}`,` heavyGitByteThreshold: ${Gr(t.heavyGitByteThreshold,Ne)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
61
+ `),s=Du(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
- `}let i=vi(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
63
+ `}let i=Oi(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
64
64
  `)}
65
- `}function Ou(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Oi(r)&&Ti(r)===0&&Pu(r)===t)return n}return-1}function vi(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(Oi(e[s])&&Ti(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Ti(e){return(e.match(/^ */)?.[0]??"").length}function Oi(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Pu(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Fr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function mh(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
66
- `),r=Ou(n,"plugins");if(r===-1)return e;let s=vi(n,r,0),i=vu(n,"memory",r+1,s,2);if(i===-1)return e;let o=vi(n,i,2),a=[...n],c=vu(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
65
+ `}function Du(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Di(r)&&Pi(r)===0&&Cu(r)===t)return n}return-1}function Oi(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(Di(e[s])&&Pi(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Pi(e){return(e.match(/^ */)?.[0]??"").length}function Di(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Cu(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Gr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function hh(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
66
+ `),r=Du(n,"plugins");if(r===-1)return e;let s=Oi(n,r,0),i=Ou(n,"memory",r+1,s,2);if(i===-1)return e;let o=Oi(n,i,2),a=[...n],c=Ou(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 vu(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(Oi(o)&&Ti(o)===s&&Pu(o)===t)return i}return-1}async function Ei(e){try{return await sh(e,rh.F_OK),!0}catch{return!1}}var xi,lh,dh,Cu=E(()=>{"use strict";Ce();Re();xi=Zs,lh=aa,dh=".red/memory/graph.rdb"});var Bu={};M(Bu,{runRspMcpServer:()=>gh});import{createInterface as ph}from"node:readline";async function gh(){let e=je(process.cwd(),process.env),t=ph({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 hh(r,e);Au({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Au({jsonrpc:"2.0",id:typeof Nu(n)?.id>"u"?null:Nu(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function hh(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:Iu(t)}]};if(!t.enabled)return{content:[{type:"text",text:Iu(t)}],isError:!0};let r=Eh(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(yh(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await wh(n.arguments,r)}]}}return{}}function yt(e){return`${G(e)}
69
- `}function yh(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function wh(e,t){let n=bh(e?.payload),r=_h(e?.level),s=await Ri(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return Sh(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 Rh(i,o.length,a,r)}function bh(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function _h(e){return e==="terse"?"terse":"brief"}function Rh(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=$u(i.subarray(0,o)),c=$u(i.subarray(Math.max(0,i.length-o)));return yt({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:kh(i),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function Sh(e){return e.endsWith(`
68
+ `}function Ou(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(Di(o)&&Pi(o)===s&&Cu(o)===t)return i}return-1}async function vi(e){try{return await ah(e,oh.F_OK),!0}catch{return!1}}var Ti,mh,ph,Au=E(()=>{"use strict";Ce();Re();Ti=ei,mh=ua,ph=".red/memory/graph.rdb"});var Mu={};M(Mu,{runRspMcpServer:()=>wh});import{createInterface as yh}from"node:readline";async function wh(){let e=je(process.cwd(),process.env),t=yh({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 bh(r,e);Bu({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Bu({jsonrpc:"2.0",id:typeof Lu(n)?.id>"u"?null:Lu(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function bh(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:Nu(t)}]};if(!t.enabled)return{content:[{type:"text",text:Nu(t)}],isError:!0};let r=Th(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(_h(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await Rh(n.arguments,r)}]}}return{}}function yt(e){return`${G(e)}
69
+ `}function _h(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function Rh(e,t){let n=Sh(e?.payload),r=kh(e?.level),s=await ki(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return xh(s.output);let i=Fr(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 Eh(i,o.length,a,r)}function Sh(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function kh(e){return e==="terse"?"terse":"brief"}function Eh(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=Iu(i.subarray(0,o)),c=Iu(i.subarray(Math.max(0,i.length-o)));return yt({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:vh(i),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function xh(e){return e.endsWith(`
70
70
  `)?e:`${e}
71
- `}function $u(e){return e.toString("utf8").replace(/�$/g,"")}function kh(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 Eh(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 Iu(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 Au(e){process.stdout.write(`${JSON.stringify(e)}
72
- `)}function Nu(e){try{return JSON.parse(e)}catch{return null}}var Lu=E(()=>{"use strict";pn();Re();Bn();Fe()});var Ju={};M(Ju,{readGhConditionalJson:()=>ee});import{spawn as xh}from"node:child_process";import{createHash as vh,randomUUID as Th}from"node:crypto";import{mkdir as Oh,readFile as Ph,rename as Dh,writeFile as Ch}from"node:fs/promises";import{dirname as $h,join as Mu}from"node:path";async function ee(e){let t=e.cwd??process.cwd(),n=e.telemetryRoot??t,r=Nh(e.path,e.params),s=Bh(r),i=await jh(n),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[f,d]of ju(e.params))a.push("-f",`${f}=${String(d)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await Lh(a,t,e.env),u=Mh(c.stdout);if(u.statusCode===304&&!!o)return await Pi(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 Uh(n,i)),await Pi(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 Pi(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function ju(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function Nh(e,t){return JSON.stringify({method:"GET",path:e,params:ju(t)})}function Bh(e){return vh("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Lh(e,t,n){return await new Promise(r=>{let s=xh("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 Mh(e){let t=e.replace(/\r\n/g,`
71
+ `}function Iu(e){return e.toString("utf8").replace(/�$/g,"")}function vh(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 Th(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 Nu(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 Bu(e){process.stdout.write(`${JSON.stringify(e)}
72
+ `)}function Lu(e){try{return JSON.parse(e)}catch{return null}}var ju=E(()=>{"use strict";pn();Re();Bn();Fe()});var Gu={};M(Gu,{readGhConditionalJson:()=>ee});import{spawn as Oh}from"node:child_process";import{createHash as Ph,randomUUID as Dh}from"node:crypto";import{mkdir as Ch,readFile as $h,rename as Ah,writeFile as Ih}from"node:fs/promises";import{dirname as Nh,join as Uu}from"node:path";async function ee(e){let t=e.cwd??process.cwd(),n=e.telemetryRoot??t,r=Mh(e.path,e.params),s=jh(r),i=await Fh(n),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[f,d]of Ju(e.params))a.push("-f",`${f}=${String(d)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await Uh(a,t,e.env),u=Jh(c.stdout);if(u.statusCode===304&&!!o)return await Ci(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 Gh(n,i)),await Ci(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 Ci(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function Ju(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function Mh(e,t){return JSON.stringify({method:"GET",path:e,params:Ju(t)})}function jh(e){return Ph("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Uh(e,t,n){return await new Promise(r=>{let s=Oh("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 Jh(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 jh(e){for(let t of[Uu(e),Jh(e)])try{let n=Fh(await Ph(t,"utf8"));if(Gh(n))return n}catch{}return{version:1,entries:{}}}async function Uh(e,t){let n=Uu(e);await Oh($h(n),{recursive:!0});let r=`${n}.${process.pid}.${Date.now()}.tmp`;await Ch(r,`${D(t)}
77
- `,{encoding:"utf8",mode:384}),await Dh(r,n)}function Uu(e){return Mu(F(e),Ih)}function Jh(e){return Mu(F(e),Ah)}function Fh(e){try{return JSON.parse(e)}catch{return j(e)}}async function Pi(e,t,n){await Je(e,{collection:X,id:Th(),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 Gh(e){return Di(e)&&e.version===1&&Di(e.entries)&&Object.values(e.entries).every(Hh)}function Hh(e){return Di(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Di(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ih,Ah,Gr=E(()=>{"use strict";Ce();Q();Ee();Ih="gh-etag-cache.toon",Ah="gh-etag-cache.json"});var ji={};M(ji,{listWaits:()=>Wu,renderWaitHelp:()=>Ni,runWait:()=>Qh});import{spawn as Li}from"node:child_process";import{existsSync as Ai}from"node:fs";import{mkdir as qh,readdir as Wh,readFile as Vh,rm as qu,writeFile as zh}from"node:fs/promises";import{join as Un,resolve as Ci}from"node:path";import{randomUUID as Kh}from"node:crypto";async function Qh(e,t=process.cwd()){let n=Xh(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Ni()),0;if(n.kind==="ls")return process.stdout.write(`${G({waits:await Wu(t)})}
78
- `),0;if(!Zh(n.kind))return process.stdout.write(Ni()),2;let r=n.kind,s={id:Kh(),target:my(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:Yh[n.kind],status:"running"},i=Un(await Bi(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await qh(await Bi(t),{recursive:!0}),await Vu(i,s),o=await ey({...n,kind:r},t,i,s),process.stdout.write(`${G(fy(r,s,o))}
79
- `),await dy(n.options),o.exitCode}finally{await qu(i,{force:!0})}}function Zh(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Ni(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after a verdict.',""].join(`
80
- `)}function Xh(e){let t=e[1],n={timeoutMs:Fu.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=Fu[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=zu(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=hy(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 ey(e,t,n,r){switch(e.kind){case"cmd":return await ty(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await $i(ny(e.target??"",t,{emptyChecksGraceMs:Hu("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,Hu("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await $i(()=>sy(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await $i(()=>oy(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function ty(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=Li(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 ${Ku(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 $i(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 by(Math.min(c,Math.max(0,i-Date.now())))}return await jn(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Ku(t)}`}}function ny(e,t,n){let r=Date.now();return()=>ry(e,t,n,r)}async function ry(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=Mi(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(py),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 sy(e,t){let n=e.target??(e.latest&&e.branch?await iy(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=Mi(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`,Gu(s)):wt("failure",`run ${n} concluded ${o||"unknown"}`,Gu(s))}async function iy(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 oy(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||yy(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 ay(e,t);return n||await new Promise(r=>{let s=Li("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 ay(e,t){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await cy(e[2],t);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ee({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:W(r,"status").toUpperCase(),conclusion:W(r,"conclusion").toUpperCase(),workflowName:W(r,"workflow_name")||W(r,"name"),headBranch:W(r,"head_branch"),url:W(r,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Ii(e,"--branch"),r=Ii(e,"--limit")??"20",s=await ee({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=Ii(e,"--limit")??"20",r=await ee({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:W(i,"tag_name"),publishedAt:W(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(s),stderr:r.stderr}}return null}async function cy(e,t){let n=await ee({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=W(Yt(r.head),"sha"),[i,o]=s?await Promise.all([ee({path:`repos/{owner}/{repo}/commits/${s}/status`,cwd:t,command:`gh pr view ${e} status`}),ee({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:W(r,"state").toUpperCase(),mergeable:uy(r),statusCheckRollup:[...a.map(u=>({conclusion:W(u,"state").toUpperCase()})),...c.map(u=>({status:W(u,"status").toUpperCase(),conclusion:W(u,"conclusion").toUpperCase()}))],url:W(r,"html_url")})}}function uy(e){let t=W(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}async function Wu(e){let t=await Bi(e);if(!Ai(t))return[];let n=await Wh(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=Un(t,s),o=gy(await Vh(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!wy(a)){await qu(i,{force:!0});continue}r.push(o)}return r}async function Bi(e){return Un(await ly(e),".red","tmp","waits")}async function ly(e){let t=Ci(e);for(;;){if(Ai(Un(t,".red"))||Ai(Un(t,".git")))return t;let n=Ci(t,"..");if(n===t)return Ci(e);t=n}}async function jn(e,t,n){await Vu(e,{...t,status:n}).catch(()=>{})}async function Vu(e,t){await zh(e,`${G(t)}
82
- `,"utf8")}async function dy(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=Li(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function fy(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 my(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 py(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 Gu(e){return{database_id:typeof e.databaseId=="number"?e.databaseId:String(e.databaseId??""),conclusion:String(e.conclusion??""),workflow:String(e.workflowName??""),branch:String(e.headBranch??""),url:String(e.url??"")}}function Mi(e){let t=JSON.parse(e);if(!bt(t))throw new Error("expected JSON object");return t}function gy(e){let t=e.trim();if(!t)return{};try{return Mi(t)}catch{let n=j(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 W(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 Ii(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function zu(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let n=Number(t[1]),r=t[2]??"ms";return r==="ms"?n:r==="s"?n*1e3:r==="m"?n*6e4:n*60*6e4}function Hu(e,t){let n=process.env[e];if(!n)return t;try{return zu(n)}catch{return t}}function hy(e){return e.startsWith("SIG")?e:`SIG${e}`}function Ku(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function yy(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function wy(e){try{return process.kill(e,0),!0}catch{return!1}}async function by(e){await new Promise(t=>setTimeout(t,e))}var Fu,Yh,Ui=E(()=>{"use strict";Q();pn();Gr();Fu={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},Yh={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Qu={};M(Qu,{renderShellInit:()=>_y});function _y(e,t=In){if(e==="fish")return Ry(t);if(e==="bash"||e==="zsh")return Sy(e,t);throw new Error(`unsupported shell: ${e}`)}function Ry(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} '${vy(`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 Sy(e,t){let n=Ey(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=>Yu(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of ky(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${xy(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Yu(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function ky(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 Ey(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 Yu(e){return e.replace(/[\\|)&;]/g,"\\$&")}function xy(e){return e.replace(/'/g,"'\\''")}function vy(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Zu=E(()=>{"use strict";An()});function Ji(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"&&Ty(t.chosenOption)&&Oy(t.outcome)&&Py(t.cost)}function Ty(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Oy(e){return e==="success"||e==="failure"||e==="escalated"}function Py(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 Xu=E(()=>{});import{createHash as Dy}from"node:crypto";function dl(e,t){return new Gi(e,t)}function el(e){let t=Number(e.red_entity_id??e.rid),n=Hi(e.properties??e.PROPERTIES),r=fl(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 tl(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=ml(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:Hi(e.properties??e.PROPERTIES)}}function Iy(e){let t=Number(e.red_entity_id??e.rid),n=Hi(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Ji(n)?null:{rid:t,event:n}}function Hi(e){return e==null?{}:typeof e=="string"?JSON.parse(e):zr(e)?e:{}}function fl(e){let t=e==="contact"?"person":e;if(Cy.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function ml(e){if($y.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Ay(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function nl(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 rl(e,t){return Rt(e)[t]}function sl(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function il(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function ol(e){let t=Rt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function te(e){return typeof e=="string"&&e.length>0?e:void 0}function zr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Fi(e){return e!=null}function Ny(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function By(e){return Dy("sha256").update(JSON.stringify(e)).digest("hex")}function Ly(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function al(e){return`artifact-hash:${e}`}function cl(e,t,n){return`connection:${e}:${t}:${n}`}function ul(){return"model-tier-bandit:v1"}function My(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ll(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function pl(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+ll(n,a)*3+ll(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 jy(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=gl({...pl(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return _t(s)}function gl(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 Uy(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 Jy(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 Fy(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var xe,Cy,$y,Gi,hl=E(()=>{"use strict";Xu();xe={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Cy=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),$y=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Gi=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(rl(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Rt(n);return await this.search(sl(r,"query"),il(r,"limit")??10,ol(r.options))}if(t==="think"){let r=Rt(n);return await this.think(sl(r,"query"),il(r,"limit")??8,ol(r.options))}if(t==="link")return await this.link(Rt(n));if(t==="backlinks")return await this.backlinks(rl(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:Fy(t.map(r=>r.kind))}}async capture(t){let n=te(t.title)||"Untitled artifact",r=te(t.content);if(!r)throw new Error("brain capture requires content");let s=fl(te(t.kind)||"note"),i=Ny(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=By([s,n,r,i,te(t.sourcePath),te(t.sourceSession)]),c=await this.kv().get(al(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${Ly(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:te(t.sourceAgent),source_runner:te(t.sourceRunner),source_session:te(t.sourceSession),source_path:te(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=el(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(al(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(el).filter(Fi)}async search(t,n,r={}){let s=My(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=pl(u,s),f=gl({...l,connections:jy(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:Uy(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 Jy(t,s)}async link(t){let n=await this.getArtifact(nl(t.from)),r=await this.getArtifact(nl(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=ml(te(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:te(t.reason),confidence:te(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=tl(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(cl(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(tl).filter(Fi)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=Ay(te(t.interval)||"day"),s=te(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(!Ji(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(Iy).filter(Fi).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(ul());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(ul(),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(cl(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(xe.kv)}}});var Pl={};M(Pl,{runResidentServer:()=>Yy});import{randomUUID as Qt}from"node:crypto";import{execFileSync as Gy,spawn as Hy}from"node:child_process";import{existsSync as qy}from"node:fs";import{mkdir as kl,rename as Wy,rm as yl,writeFile as El}from"node:fs/promises";import{createServer as Vy}from"node:net";import{dirname as zi,join as Kr}from"node:path";import{fileURLToPath as zy,pathToFileURL as Ky}from"node:url";async function Yy(e){await kl(zi(e.socketPath),{recursive:!0});let t=uw();cw();let n=e.telemetryDrainTimeoutMs??xl,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=Vy(x=>{l.add(x),x.once("close",()=>l.delete(x)),h(),hw(x,async O=>{h();let L=await yw(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};Ol(x,ce),O.op==="handover"&&setImmediate(()=>p())})});function p(){i=!0,u=!0,c=aw(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(z=>setTimeout(z,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 Vi(L,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??lr,byteBudget:e.telemetryByteBudget??e.byteBudget??dr});if(i){await L.close();return}if(await qi(he,n),i){await L.close();return}r={kind:"ready",store:L,telemetry:he,storeOpenCount:1,storeElapsedMs:ce},s=setInterval(()=>{let z=r.kind==="ready"?r:void 0;z&&qi(z.telemetry,n)},f),s.unref(),h()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},h()}),e.pidPath&&await El(e.pidPath,`${process.pid}
85
- `,{encoding:"utf8",mode:384});let w=e.residentVersion??"0.0.0-dev",y=e.registryPath??Kr(F(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 yl(e.socketPath,{force:!0});let T=r;T.kind==="ready"&&(await qi(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 yl(e.pidPath,{force:!0}),await cr(y)}async function nw(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(F(t),ew),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 kl(zi(a),{recursive:!0}),await El(c,`${G(u)}
86
- `,{encoding:"utf8",mode:384}),await Wy(c,a)}async function qi(e,t=xl,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Tl(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 rw(e){let t=[];for(let n of tw){let r=await sw(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await iw(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${vl(n)}`))}return t}async function sw(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 iw(e,t,n){let r=ow(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${vl(t)}`)}function ow(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 vl(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function aw(e){return e&&clearTimeout(e),setTimeout(()=>{Yr(),process.exit(0)},Xy)}function cw(){wl||(wl=!0,process.on("exit",()=>Yr()))}function uw(){if(process.platform==="win32")return;let t=Hy(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 Fh(e){for(let t of[Fu(e),Hh(e)])try{let n=qh(await $h(t,"utf8"));if(Wh(n))return n}catch{}return{version:1,entries:{}}}async function Gh(e,t){let n=Fu(e);await Ch(Nh(n),{recursive:!0});let r=`${n}.${process.pid}.${Date.now()}.tmp`;await Ih(r,`${D(t)}
77
+ `,{encoding:"utf8",mode:384}),await Ah(r,n)}function Fu(e){return Uu(F(e),Bh)}function Hh(e){return Uu(F(e),Lh)}function qh(e){try{return JSON.parse(e)}catch{return j(e)}}async function Ci(e,t,n){await Je(e,{collection:X,id:Dh(),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 Wh(e){return $i(e)&&e.version===1&&$i(e.entries)&&Object.values(e.entries).every(Vh)}function Vh(e){return $i(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function $i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Bh,Lh,Hr=E(()=>{"use strict";Ce();Q();Ee();Bh="gh-etag-cache.toon",Lh="gh-etag-cache.json"});var Ji={};M(Ji,{listWaits:()=>zu,renderWaitHelp:()=>Li,runWait:()=>ey});import{spawn as ji}from"node:child_process";import{existsSync as Bi}from"node:fs";import{mkdir as zh,readdir as Kh,readFile as Yh,rm as Vu,writeFile as Qh}from"node:fs/promises";import{join as Un,resolve as Ai}from"node:path";import{randomUUID as Zh}from"node:crypto";async function ey(e,t=process.cwd()){let n=ny(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Li()),0;if(n.kind==="ls")return process.stdout.write(`${G({waits:await zu(t)})}
78
+ `),0;if(!ty(n.kind))return process.stdout.write(Li()),2;let r=n.kind,s={id:Zh(),target:hy(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:Xh[n.kind],status:"running"},i=Un(await Mi(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await zh(await Mi(t),{recursive:!0}),await Ku(i,s),o=await ry({...n,kind:r},t,i,s),process.stdout.write(`${G(gy(r,s,o))}
79
+ `),await py(n.options),o.exitCode}finally{await Vu(i,{force:!0})}}function ty(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Li(){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 ny(e){let t=e[1],n={timeoutMs:Hu.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=Hu[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=Yu(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=by(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 ry(e,t,n,r){switch(e.kind){case"cmd":return await sy(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await Ii(iy(e.target??"",t,{emptyChecksGraceMs:Wu("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,Wu("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await Ii(()=>ay(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await Ii(()=>uy(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function sy(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=ji(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 ${Qu(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 Ii(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 Sy(Math.min(c,Math.max(0,i-Date.now())))}return await jn(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Qu(t)}`}}function iy(e,t,n){let r=Date.now();return()=>oy(e,t,n,r)}async function oy(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await Wr(["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=Ui(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(yy),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 ay(e,t){let n=e.target??(e.latest&&e.branch?await cy(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await Wr(["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=Ui(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`,qu(s)):wt("failure",`run ${n} concluded ${o||"unknown"}`,qu(s))}async function cy(e,t){let n=await Wr(["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 uy(e,t,n){let r=await Wr(["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||_y(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 Wr(e,t){let n=await ly(e,t);return n||await new Promise(r=>{let s=ji("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 ly(e,t){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await dy(e[2],t);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ee({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:W(r,"status").toUpperCase(),conclusion:W(r,"conclusion").toUpperCase(),workflowName:W(r,"workflow_name")||W(r,"name"),headBranch:W(r,"head_branch"),url:W(r,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Ni(e,"--branch"),r=Ni(e,"--limit")??"20",s=await ee({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=qr(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=Ni(e,"--limit")??"20",r=await ee({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=qr(JSON.parse(r.stdout)).map(i=>({tagName:W(i,"tag_name"),publishedAt:W(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(s),stderr:r.stderr}}return null}async function dy(e,t){let n=await ee({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=W(Yt(r.head),"sha"),[i,o]=s?await Promise.all([ee({path:`repos/{owner}/{repo}/commits/${s}/status`,cwd:t,command:`gh pr view ${e} status`}),ee({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?qr(Yt(JSON.parse(i.stdout)).statuses):[],c=o.status===0?qr(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:W(r,"state").toUpperCase(),mergeable:fy(r),statusCheckRollup:[...a.map(u=>({conclusion:W(u,"state").toUpperCase()})),...c.map(u=>({status:W(u,"status").toUpperCase(),conclusion:W(u,"conclusion").toUpperCase()}))],url:W(r,"html_url")})}}function fy(e){let t=W(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}async function zu(e){let t=await Mi(e);if(!Bi(t))return[];let n=await Kh(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=Un(t,s),o=wy(await Yh(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Ry(a)){await Vu(i,{force:!0});continue}r.push(o)}return r}async function Mi(e){return Un(await my(e),".red","tmp","waits")}async function my(e){let t=Ai(e);for(;;){if(Bi(Un(t,".red"))||Bi(Un(t,".git")))return t;let n=Ai(t,"..");if(n===t)return Ai(e);t=n}}async function jn(e,t,n){await Ku(e,{...t,status:n}).catch(()=>{})}async function Ku(e,t){await Qh(e,`${G(t)}
82
+ `,"utf8")}async function py(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=ji(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function gy(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 hy(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 yy(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 qu(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 Ui(e){let t=JSON.parse(e);if(!bt(t))throw new Error("expected JSON object");return t}function wy(e){let t=e.trim();if(!t)return{};try{return Ui(t)}catch{let n=j(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 qr(e){return Array.isArray(e)?e.filter(bt):[]}function W(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 Ni(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function Yu(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 Wu(e,t){let n=process.env[e];if(!n)return t;try{return Yu(n)}catch{return t}}function by(e){return e.startsWith("SIG")?e:`SIG${e}`}function Qu(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function _y(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Ry(e){try{return process.kill(e,0),!0}catch{return!1}}async function Sy(e){await new Promise(t=>setTimeout(t,e))}var Hu,Xh,Fi=E(()=>{"use strict";Q();pn();Hr();Hu={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},Xh={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Xu={};M(Xu,{renderShellInit:()=>ky});function ky(e,t=An){if(e==="fish")return Ey(t);if(e==="bash"||e==="zsh")return xy(e,t);throw new Error(`unsupported shell: ${e}`)}function Ey(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(zr))].map(n=>` abbr --add --position command -- ${n} '${Py(`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 xy(e,t){let n=Ty(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Vr("git",n.get("git")??[]),...Vr("gh",n.get("gh")??[]),...Vr("vitest",n.get("vitest")??[]),...Vr("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 Vr(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(zr),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(zr)),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 vy(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Oy(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 vy(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 Ty(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!zr(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function zr(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Zu(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Oy(e){return e.replace(/'/g,"'\\''")}function Py(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var el=E(()=>{"use strict";In()});function Gi(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"&&Dy(t.chosenOption)&&Cy(t.outcome)&&$y(t.cost)}function Dy(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Cy(e){return e==="success"||e==="failure"||e==="escalated"}function $y(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 tl=E(()=>{});import{createHash as Ay}from"node:crypto";function ml(e,t){return new qi(e,t)}function nl(e){let t=Number(e.red_entity_id??e.rid),n=Wi(e.properties??e.PROPERTIES),r=pl(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 rl(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=gl(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:Wi(e.properties??e.PROPERTIES)}}function By(e){let t=Number(e.red_entity_id??e.rid),n=Wi(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Gi(n)?null:{rid:t,event:n}}function Wi(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Kr(e)?e:{}}function pl(e){let t=e==="contact"?"person":e;if(Iy.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function gl(e){if(Ny.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Ly(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function sl(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Rt(e){return Kr(e)?e:{}}function il(e,t){return Rt(e)[t]}function ol(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function al(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function cl(e){let t=Rt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function te(e){return typeof e=="string"&&e.length>0?e:void 0}function Kr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Hi(e){return e!=null}function My(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function jy(e){return Ay("sha256").update(JSON.stringify(e)).digest("hex")}function Uy(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function ul(e){return`artifact-hash:${e}`}function ll(e,t,n){return`connection:${e}:${t}:${n}`}function dl(){return"model-tier-bandit:v1"}function Jy(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function fl(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function hl(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+fl(n,a)*3+fl(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 Fy(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=yl({...hl(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return _t(s)}function yl(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 Gy(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 Hy(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 qy(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var xe,Iy,Ny,qi,wl=E(()=>{"use strict";tl();xe={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Iy=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Ny=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),qi=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(il(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Rt(n);return await this.search(ol(r,"query"),al(r,"limit")??10,cl(r.options))}if(t==="think"){let r=Rt(n);return await this.think(ol(r,"query"),al(r,"limit")??8,cl(r.options))}if(t==="link")return await this.link(Rt(n));if(t==="backlinks")return await this.backlinks(il(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:qy(t.map(r=>r.kind))}}async capture(t){let n=te(t.title)||"Untitled artifact",r=te(t.content);if(!r)throw new Error("brain capture requires content");let s=pl(te(t.kind)||"note"),i=My(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=jy([s,n,r,i,te(t.sourcePath),te(t.sourceSession)]),c=await this.kv().get(ul(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${Uy(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:te(t.sourceAgent),source_runner:te(t.sourceRunner),source_session:te(t.sourceSession),source_path:te(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Kr(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=nl(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(ul(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(nl).filter(Hi)}async search(t,n,r={}){let s=Jy(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=hl(u,s),f=yl({...l,connections:Fy(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:Gy(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 Hy(t,s)}async link(t){let n=await this.getArtifact(sl(t.from)),r=await this.getArtifact(sl(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=gl(te(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:te(t.reason),confidence:te(t.confidence)||"explicit",created_at:Date.now(),metadata:Kr(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=rl(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(ll(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(rl).filter(Hi)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=Ly(te(t.interval)||"day"),s=te(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(!Gi(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(By).filter(Hi).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(dl());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(dl(),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(ll(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(xe.kv)}}});var Cl={};M(Cl,{runResidentServer:()=>Xy});import{randomUUID as Qt}from"node:crypto";import{execFileSync as Wy,spawn as Vy}from"node:child_process";import{existsSync as zy}from"node:fs";import{mkdir as xl,rename as Ky,rm as bl,writeFile as vl}from"node:fs/promises";import{createServer as Yy}from"node:net";import{dirname as Yi,join as Yr}from"node:path";import{fileURLToPath as Qy,pathToFileURL as Zy}from"node:url";async function Xy(e){await xl(Yi(e.socketPath),{recursive:!0});let t=fw();dw();let n=e.telemetryDrainTimeoutMs??Tl,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??mr,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=Yy(x=>{l.add(x),x.once("close",()=>l.delete(x)),h(),bw(x,async O=>{h();let L=await _w(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};Dl(x,ce),O.op==="handover"&&setImmediate(()=>p())})});function p(){i=!0,u=!0,c=lw(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=()=>{Qr(),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(z=>setTimeout(z,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 Ki(L,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??dr,byteBudget:e.telemetryByteBudget??e.byteBudget??fr});if(i){await L.close();return}if(await Vi(he,n),i){await L.close();return}r={kind:"ready",store:L,telemetry:he,storeOpenCount:1,storeElapsedMs:ce},s=setInterval(()=>{let z=r.kind==="ready"?r:void 0;z&&Vi(z.telemetry,n)},f),s.unref(),h()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},h()}),e.pidPath&&await vl(e.pidPath,`${process.pid}
85
+ `,{encoding:"utf8",mode:384});let w=e.residentVersion??"0.0.0-dev",y=e.registryPath??Yr(F(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await cr(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 bl(e.socketPath,{force:!0});let T=r;T.kind==="ready"&&(await Vi(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"),Qr(),e.pidPath&&await bl(e.pidPath,{force:!0}),await ur(y)}async function iw(e,t,n=new Date){let r=await Tr(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=Yr(F(t),rw),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 xl(Yi(a),{recursive:!0}),await vl(c,`${G(u)}
86
+ `,{encoding:"utf8",mode:384}),await Ky(c,a)}async function Vi(e,t=Tl,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Pl(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 ow(e){let t=[];for(let n of sw){let r=await aw(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await cw(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Ol(n)}`))}return t}async function aw(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 cw(e,t,n){let r=uw(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Ol(t)}`)}function uw(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 Ol(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function lw(e){return e&&clearTimeout(e),setTimeout(()=>{Qr(),process.exit(0)},nw)}function dw(){_l||(_l=!0,process.on("exit",()=>Qr()))}function fw(){if(process.platform==="win32")return;let t=Vy(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 lw())try{process.kill(e,"SIGTERM")}catch{}}function lw(){if(process.platform==="win32")return[];let e="";try{e=Gy("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 dw(e){if(e.collection!==ke)return e;let t=await bl(e.raw_text,Rl(e.raw_bytes)),n=await bl(e.emitted_text,Rl(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 bl(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Qy)try{return await Tl((async()=>({tokens:(await fw())("cl100k_base").encode(e).length,estimated:!1}))(),Zy,"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 fw(){return _l??=import(Ky(mw()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await _l}function mw(){let e=zi(zy(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=>qy(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Rl(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function U(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Wi(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Tl(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 pw(e){try{return JSON.parse(e)}catch{return e}}function gw(e){return Sl(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Sl(t)&&(t.collection===ae||t.collection===X||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 Sl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function hw(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)};Ol(e,u)}finally{e.end()}})()})}function Ol(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
130
- `)}catch{}}async function yw(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 pi(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 gi(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return bw(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await ww(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function ww(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await dl(s,t).request(n,r)}function bw(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Qy,Zy,xl,Xy,ew,tw,Vi,wl,_l,Dl=E(()=>{"use strict";Ce();ur();pn();ze();hl();Ee();Re();Qy=256*1024,Zy=500,xl=2e3,Xy=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),ew="rsp-status-summary.json",tw=[ae,X,ke,Ke,On],Vi=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 rw(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 mi(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:U(c.command)||"unknown",source_id:U(c.id),source_collection:U(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 nw(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 dw(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:${U(n.id)||Qt()}`,created_at:U(n.created_at)||U(n.ts)||new Date().toISOString(),event_type:"invocation",command:U(n.command)||"unknown",command_class:Wi(U(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:${U(n.id)||Qt()}`,created_at:U(n.created_at)||U(n.ts)||new Date().toISOString(),event_type:"invocation",command:U(n.command)||"unknown",command_class:Wi(U(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:U(n.reason)||"unknown",wrapper_family:U(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:U(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:Wi(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"?pw(n):n;return gw(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})}};wl=!1});var Zr={};M(Zr,{parseProxyCommandLine:()=>Al,rewriteProxyCommandLine:()=>Il,runProxy:()=>Rw});import{spawn as _w}from"node:child_process";async function Rw(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=Al(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Il(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await Sw(t.telemetryRoot,n,c),await Cl(n);throw c}for(let c of s)await kw(t.telemetryRoot,c);let o=await Cl(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 Il(e,t="lossless"){let n=Pw(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||Ow(n,o)==="|")return i.text;let a=Ew(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function Al(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp proxy -- <command line>");return r}async function Sw(e,t,n){await Je(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Yi(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function kw(e,t){await Je(e,{collection:X,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 Cl(e){let t=_w(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 Ew(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=Cw(s);if(!i)return null;let o=Tw(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:Yi(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=xw(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:Yi(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function xw(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}:vw(t,n)}function vw(e,t){return e[0]==="cat"&&e.length===2&&Ki(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Ki(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])&&Ki(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Ki(e){return!!e&&!e.startsWith("-")}function Tw(e){let t=0;for(;t<e.length&&$l(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&$l(e[t].value);)t+=1;return t}function Ow(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function Pw(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=Dw(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 Dw(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 Cw(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 Yi(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($w)}function $w(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function $l(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Xr=E(()=>{"use strict";Ee()});var Qi={};M(Qi,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,GIT_LOG_MACHINE_FIELDS:()=>Nl,StructuredUsageError:()=>es,cleanStatusPayload:()=>jl,recoveryInstruction:()=>ge,renderGitContract:()=>Bl,runGitWrapper:()=>Aw});import{spawn as Iw}from"node:child_process";async function Aw(e,t){let n=Ll(e),r=Ml(n.argv),s=await Mw(r,n.argv.slice(1));return Bl(e,s,t)}async function Bl(e,t,n){let r=Ll(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=Ml(r.argv),i=jw(s,r.argv,t.stdout,r.query),o=D(i);if(Nw(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=Yw(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)}
128
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Qr(){for(let e of mw())try{process.kill(e,"SIGTERM")}catch{}}function mw(){if(process.platform==="win32")return[];let e="";try{e=Wy("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 pw(e){if(e.collection!==ke)return e;let t=await Rl(e.raw_text,kl(e.raw_bytes)),n=await Rl(e.emitted_text,kl(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 Rl(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=ew)try{return await Pl((async()=>({tokens:(await gw())("cl100k_base").encode(e).length,estimated:!1}))(),tw,"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 gw(){return Sl??=import(Zy(hw()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Sl}function hw(){let e=Yi(Qy(import.meta.url)),n=[Yr(e,"..","node_modules","js-tiktoken","dist","index.js"),Yr(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>zy(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function kl(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function U(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function zi(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Pl(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 yw(e){try{return JSON.parse(e)}catch{return e}}function ww(e){return El(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>El(t)&&(t.collection===ae||t.collection===X||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 El(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function bw(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)};Dl(e,u)}finally{e.end()}})()})}function Dl(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
130
+ `)}catch{}}async function _w(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 hi(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 Tr(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 yi(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Sw(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await Rw(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Rw(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await ml(s,t).request(n,r)}function Sw(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var ew,tw,Tl,nw,rw,sw,Ki,_l,Sl,$l=E(()=>{"use strict";Ce();lr();pn();ze();wl();Ee();Re();ew=256*1024,tw=500,Tl=2e3,nw=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),rw="rsp-status-summary.json",sw=[ae,X,ke,Ke,On],Ki=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 ow(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 gi(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:U(c.command)||"unknown",source_id:U(c.id),source_collection:U(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 iw(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 pw(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:${U(n.id)||Qt()}`,created_at:U(n.created_at)||U(n.ts)||new Date().toISOString(),event_type:"invocation",command:U(n.command)||"unknown",command_class:zi(U(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:${U(n.id)||Qt()}`,created_at:U(n.created_at)||U(n.ts)||new Date().toISOString(),event_type:"invocation",command:U(n.command)||"unknown",command_class:zi(U(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:U(n.reason)||"unknown",wrapper_family:U(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:U(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:zi(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"?yw(n):n;return ww(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})}};_l=!1});var Xr={};M(Xr,{parseProxyCommandLine:()=>Bl,rewriteProxyCommandLine:()=>Nl,runProxy:()=>Ew});import{spawn as kw}from"node:child_process";async function Ew(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=Bl(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Nl(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await xw(t.telemetryRoot,n,c),await Al(n);throw c}for(let c of s)await vw(t.telemetryRoot,c);let o=await Al(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 Nl(e,t="lossless"){let n=$w(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||Cw(n,o)==="|")return i.text;let a=Tw(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function Bl(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 xw(e,t,n){await Je(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Zi(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function vw(e,t){await Je(e,{collection:X,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 Al(e){let t=kw(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 Tw(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=Iw(s);if(!i)return null;let o=Dw(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(p=>p.value);if(Zr(c))return{text:e,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Zi(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=Ow(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:Zi(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function Ow(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}:Pw(t,n)}function Pw(e,t){return e[0]==="cat"&&e.length===2&&Qi(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Qi(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])&&Qi(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Qi(e){return!!e&&!e.startsWith("-")}function Dw(e){let t=0;for(;t<e.length&&Il(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Il(e[t].value);)t+=1;return t}function Cw(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function $w(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=Aw(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 Aw(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 Iw(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 Zi(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Zr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Zr(t)&&t[1]?`gh ${t[1]} json-jq`:Zr(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 Zr(e){return e[0]==="gh"&&e.some(Nw)}function Nw(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Il(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var es=E(()=>{"use strict";Ee()});var Xi={};M(Xi,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,GIT_LOG_MACHINE_FIELDS:()=>Ml,StructuredUsageError:()=>ts,cleanStatusPayload:()=>Fl,recoveryInstruction:()=>ge,renderGitContract:()=>jl,runGitWrapper:()=>Lw});import{spawn as Bw}from"node:child_process";async function Lw(e,t){let n=Ul(e),r=Jl(n.argv),s=await Jw(r,n.argv.slice(1));return jl(e,s,t)}async function jl(e,t,n){let r=Ul(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=Jl(r.argv),i;try{i=Fw(s,r.argv,t.stdout,r.query)}catch(f){if(f instanceof ns)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:Buffer.from(t.stdout),degradation:{reason:f.reason,family:"git status",stderrHead:f.message}};throw f}let o=D(i);if(Mw(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=ob(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
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 Ll(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 Nw(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Bw(e)||r.level!=="lossless")return!0;let s=Kw(r.heavyGitByteThreshold,Ne);return Buffer.byteLength(t)<=s}function Bw(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ml(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 Lw(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Nl.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 Mw(e,t){let n=Iw("git",Lw(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 jw(e,t,n,r){switch(e){case"status":return Uw(t,n,r);case"log":return Jw(t,n,r);case"diff":return Fw(t,n,r);case"commit":return Ye(Gw(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ye(Hw(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return qw(t,n,r);case"branch":return Ww(t,n,r);case"show":return Vw(t,n,r)}}function Uw(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:zw(u)})}if(s.length===0)return jl(e.join(" "),r);let i=H(s,n),o=Ul(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 jl(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 Jw(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=H(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 Fw(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=H(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 Gw(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 Hw(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 qw(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=H(s,n),a=Ul(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 Ww(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=H(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 Vw(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(`
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 Ul(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 ts(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:n,query:t.query,full:r}}function Mw(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!jw(e)||r.level!=="lossless")return!0;let s=ib(r.heavyGitByteThreshold,Ne);return Buffer.byteLength(t)<=s}function jw(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Jl(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 Uw(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Ml.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 Jw(e,t){let n=Bw("git",Uw(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 Fw(e,t,n,r){switch(e){case"status":return Gw(t,n,r);case"log":return Qw(t,n,r);case"diff":return Zw(t,n,r);case"commit":return Ye(Xw(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ye(eb(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return tb(t,n,r);case"branch":return nb(t,n,r);case"show":return rb(t,n,r)}}function Gw(e,t,n){let r="",s=[],i=!1,o=!1;for(let u of Hw(t)){if(!u)continue;if(o=!0,u.startsWith("# branch.head ")){r=u.slice(14),i=!0;continue}if(u.startsWith("# ")){i=!0;continue}if(u.startsWith("## ")){r=Vw(u),i=!0;continue}let l=qw(u);if(l){i=!0,s.push(l);continue}let f=Ww(u);f&&(i=!0,s.push(f))}if(s.length===0){if(!o||i)return Fl(e.join(" "),r);throw new ns("git-status-unparseable")}let a=H(s,n),c=Gl(a,"state");return Ye({command:e.join(" "),branch:r,rows:a,summary:Yw(a.length,s.length,c,n)},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function Hw(e){return e.includes("\0")?e.split("\0"):e.split(/\r?\n/)}function qw(e){if(e.startsWith("1 ")){let t=e.split(" "),n=t[1]??"..",r=t.slice(8).join(" ");return Jn(r,n)}if(e.startsWith("2 ")){let t=e.split(" "),n=t[1]??"..";return Jn(t.slice(9).join(" "),n)}if(e.startsWith("u ")){let t=e.split(" "),n=t[1]??"..";return Jn(t.slice(10).join(" "),n)}return e.startsWith("? ")?Jn(e.slice(2),"??"):null}function Ww(e){if(e.length<4||e[2]!==" ")return null;let t=e.slice(0,2);return/^[ MADRCU?!][ MADRCU?!?]$/.test(t)?Jn(zw(e.slice(3),t),t):null}function Jn(e,t){let n=Ll(t[0]??"."),r=Ll(t[1]??".");return{path:Kw(e),index:n,worktree:r,state:sb(`${n}${r}`)}}function Ll(e){return e===" "?".":e}function Vw(e){let t=e.slice(3).split("...")[0]?.trim()??"";return t==="HEAD (no branch)"?"HEAD":t}function zw(e,t){if(!t.includes("R")&&!t.includes("C"))return e;let n=e.lastIndexOf(" -> ");return n>=0?e.slice(n+4):e}function Kw(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function Yw(e,t,n,r){let s=[];return n.renamed&&s.push(`${n.renamed} renamed`),n.untracked&&s.push(`${n.untracked} untracked`),n.changed&&s.push(`${n.changed} changed`),`${r?`${e}/${t}`:e} changes: ${n.added??0} added, ${n.modified??0} modified, ${n.deleted??0} deleted${s.length?`, ${s.join(", ")}`:""}`}function Fl(e="git status",t=""){return{command:e,category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:t,rows:[],summary:"git status clean: 0 changes"}}function Qw(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=H(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 Zw(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=H(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 Xw(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 eb(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 tb(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=H(s,n),a=Gl(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 nb(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=H(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 rb(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
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=H(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 zw(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Ul(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function Kw(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Yw(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 Nl,es,St=E(()=>{"use strict";Q();Re();gn();ut();Re();Nl=["%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 io={};M(io,{renderGhContract:()=>Wl,runGhWrapper:()=>nb});import{spawn as Qw}from"node:child_process";async function nb(e,t){let n=Vl(e),r=await sb(n);return Wl(e,r,t)}async function Wl(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=Vl(e),s=Jn(t.stdout),i=fb(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=_b(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=Rb(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)}
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?Ae(e,n):e}function sb(e){return e==="??"?"untracked":e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Gl(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function ib(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ob(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 Ml,ts,ns,St=E(()=>{"use strict";Q();Re();gn();ut();Re();Ml=["%h","%an","%as","%s"];ts=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return nr(this.command,this.flag,this.validFlags,`${this.command} --help`)}},ns=class extends Error{constructor(n){super("git status output was not recognized; passing raw stdout through");this.reason=n}}});var ao={};M(ao,{renderGhContract:()=>Kl,runGhWrapper:()=>fb});import{spawn as ab}from"node:child_process";async function fb(e,t){let n=Yl(e),r=await pb(n);return Kl(e,r,t)}async function Kl(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=Yl(e),s=Fn(t.stdout),i=Sb(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=Db(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=Cb(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
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 Vl(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=Fl(l[++p]??""):h.startsWith("--fields=")?u=Fl(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 rb(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?Xw[t]:Zw[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function Fl(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function rb(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=tb[t];for(let r of e.fields)if(!n.includes(r))throw new ts(e,`unknown field: ${r}`,n)}async function sb(e){if(e.action==="combined")return await ib(e);let t=ob(e);if(!t)return await db(Jl(e));let n=await ee({...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 ab(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function ib(e){let t=e.target??"",[n,r,s]=await Promise.all([ee({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ee({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ee({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=Kl(Jn(n.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:re(Jn(s.stdout)).map(ub)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function ob(e){let t=Yl(e.passthrough),n=lb(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 ab(e,t){let n=Jn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return re(n).map(zl);case"pr:view":return Kl(n);case"issue:list":return re(n).filter(r=>!kt(r.pull_request)).map(Gl);case"issue:view":return Gl(n);case"run:list":return{items:re(A(n).workflow_runs).map(Hl),total:ne(A(n),"total_count")};case"run:view":{let r=Hl(n),s=Yl(e.passthrough);if(!s)return r;let i=await ee({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(cb):[]}}default:return n}}function zl(e){let t=A(e);return{number:ne(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:ro(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 Kl(e){return zl(e)}function Gl(e){let t=A(e);return{number:ne(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:re(t.labels).map(n=>({name:S(n,"name")})),author:ro(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function Hl(e){let t=A(e);return{databaseId:ne(t,"database_id")||ne(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 cb(e){let t=A(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function ub(e){let t=A(e);return{author:ro(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function ro(e){let t=A(e);return{login:S(t,"login")}}function Yl(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 lb(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 db(e){let t=Qw("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 fb(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Zi(n,"prs"),i=s.rows.map(c=>Ql(c,e)),o=H(i,e.query),a=Xi(o.length,i.length,s.total,e.query);return o.length===0?eo(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Zt({...r,prs:o,aggregate:a,summary:`${to(o.length,i.length,e.query)} ${ql(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Zt({...r,pr:Zl(A(n),e),summary:`PR #${ne(A(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return mb(e,t,A(n));case"issue:list":{let s=Zi(n,"issues"),i=s.rows.map(c=>Xl(c,e)),o=H(i,e.query),a=Xi(o.length,i.length,s.total,e.query);return o.length===0?eo(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:`${to(o.length,i.length,e.query)} ${ql(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Zt({...r,issue:wb(A(n),e),summary:`issue #${ne(A(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Zi(n,"runs"),i=s.rows.map(c=>ed(c,e)),o=H(i,e.query),a=Xi(o.length,i.length,s.total,e.query);return o.length===0?eo(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:`${to(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:bb(A(n),e),summary:`run ${ne(A(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function mb(e,t,n){let r=Zl(A(n.view),{...e,action:"view",wide:!0}),s=H(re(n.checks).map(pb),e.query),i=A(n.comments).comments,o=H(re(i).map(gb).slice(-3),e.query);return Ie({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${ne(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 pb(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 gb(e){return{author:nd(e.author),body:ns(e,"body",no,!1),created:S(e,"createdAt")}}function Zi(e,t){if(Array.isArray(e))return{rows:re(e)};let n=A(e),r=ne(n,"total")||ne(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 Xi(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function eo(e,t,n,r,s){return Ie({...e,empty:!0,scope:hb(t),[n]:[],aggregate:r,summary:`0 ${yb(t)}`},s)}function hb(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 yb(e){let t=ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Ql(e,t){let n={number:ne(e,"number"),title:S(e,"title"),state:Fn(e),draft:!!e.isDraft};return so(n,e,t,["author","labels","url","updated"]),n}function Zl(e,t){let n=Ql(e,t);return n.body=ns(e,"body",no,t.full),t.wide&&(n.base=S(e,"baseRefName"),n.head=S(e,"headRefName")),n}function Xl(e,t){let n={number:ne(e,"number"),title:S(e,"title"),state:Fn(e),labels:td(e.labels)};return so(n,e,t,["author","url","updated"]),n}function wb(e,t){let n=Xl(e,t);return n.body=ns(e,"body",no,t.full),n}function ed(e,t){let n={id:ne(e,"databaseId"),name:S(e,"name"),status:Fn(e),conclusion:S(e,"conclusion")};return so(n,e,t,["event","branch","workflow","created"]),n}function bb(e,t){let n=ed(e,t),r=re(e.jobs).map(s=>({name:S(s,"name"),status:Fn(s),conclusion:S(s,"conclusion"),log:ns(s,"log",eb,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 _b(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 Rb(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 ql(e,t){return e.every(n=>n.state===t)?t:"returned"}function to(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 so(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=nd(t.author):s==="labels"?e.labels=td(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 td(e){return Array.isArray(e)?e.map(t=>kt(t)?S(t,"name"):String(t)).filter(Boolean):[]}function nd(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 ne(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 Zw,Xw,no,eb,tb,ts,oo=E(()=>{"use strict";Q();Gr();St();gn();ut();Zw={"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"]},Xw={"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"]},no=160,eb=160,tb={"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 uo={};M(uo,{renderTestContract:()=>rd,runTestWrapper:()=>vb});import{spawn as Sb}from"node:child_process";async function vb(e,t){let n=ct(e),r=await Cb(n.argv);return await rd(e,r,t)}async function rd(e,t,n){let r=ct(e),i=sd(r.argv)==="vitest"?$b(t.stdout):Ib(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 ${Bb(i.durationSeconds)}`,c=H(i.failures,r.query);if(n.level==="terse")return await Tb(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,f=0;for(let h of c){let m=await Ab(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:co(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 Tb(e,t,n,r,s,i,o){let a=Ob(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:co(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:co(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:m,rowsElided:f,rawOutput:Buffer.from(h)}}function co(e){return e===0||e===null?0:1}function Ob(e){let t=[],n=Eb;for(let r of e.slice(0,xb)){let s=Pb(r.excerpt,Math.min(kb,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function Pb(e,t){if(t<=0)return"";let n=e.split(`
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 Yl(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=ql(l[++p]??""):h.startsWith("--fields=")?u=ql(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 mb(d),d}function Hl(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?ub[t]:cb[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function ql(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function mb(e){if(e.fields.size===0)return;if(e.action!=="list")throw new rs(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,n=db[t];for(let r of e.fields)if(!n.includes(r))throw new rs(e,`unknown field: ${r}`,n)}async function pb(e){if(e.action==="combined")return await gb(e);let t=hb(e);if(!t)return await Rb(Hl(e));let n=await ee({...t,command:["gh",...Hl(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await yb(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function gb(e){let t=e.target??"",[n,r,s]=await Promise.all([ee({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ee({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ee({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(Fn(n.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:re(Fn(s.stdout)).map(bb)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function hb(e){let t=Xl(e.passthrough),n=_b(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 yb(e,t){let n=Fn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return re(n).map(Ql);case"pr:view":return Zl(n);case"issue:list":return re(n).filter(r=>!kt(r.pull_request)).map(Wl);case"issue:view":return Wl(n);case"run:list":return{items:re(I(n).workflow_runs).map(Vl),total:ne(I(n),"total_count")};case"run:view":{let r=Vl(n),s=Xl(e.passthrough);if(!s)return r;let i=await ee({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...r,jobs:i.status===0?re(I(Fn(i.stdout)).jobs).map(wb):[]}}default:return n}}function Ql(e){let t=I(e);return{number:ne(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:io(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(I(t.base),"ref"),headRefName:S(I(t.head),"ref")}}function Zl(e){return Ql(e)}function Wl(e){let t=I(e);return{number:ne(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:re(t.labels).map(n=>({name:S(n,"name")})),author:io(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function Vl(e){let t=I(e);return{databaseId:ne(t,"database_id")||ne(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 wb(e){let t=I(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function bb(e){let t=I(e);return{author:io(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function io(e){let t=I(e);return{login:S(t,"login")}}function Xl(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 _b(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 Rb(e){let t=ab("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 Sb(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=eo(n,"prs"),i=s.rows.map(c=>ed(c,e)),o=H(i,e.query),a=to(o.length,i.length,s.total,e.query);return o.length===0?no(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Zt({...r,prs:o,aggregate:a,summary:`${ro(o.length,i.length,e.query)} ${zl(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Zt({...r,pr:td(I(n),e),summary:`PR #${ne(I(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return kb(e,t,I(n));case"issue:list":{let s=eo(n,"issues"),i=s.rows.map(c=>nd(c,e)),o=H(i,e.query),a=to(o.length,i.length,s.total,e.query);return o.length===0?no(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:`${ro(o.length,i.length,e.query)} ${zl(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Zt({...r,issue:Ob(I(n),e),summary:`issue #${ne(I(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=eo(n,"runs"),i=s.rows.map(c=>rd(c,e)),o=H(i,e.query),a=to(o.length,i.length,s.total,e.query);return o.length===0?no(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:`${ro(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(I(n),e),summary:`run ${ne(I(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function kb(e,t,n){let r=td(I(n.view),{...e,action:"view",wide:!0}),s=H(re(n.checks).map(Eb),e.query),i=I(n.comments).comments,o=H(re(i).map(xb).slice(-3),e.query);return Ae({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${ne(I(n.view),"number")}: ${s.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function Eb(e){return{name:S(e,"name"),state:Gn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function xb(e){return{author:id(e.author),body:ss(e,"body",so,!1),created:S(e,"createdAt")}}function eo(e,t){if(Array.isArray(e))return{rows:re(e)};let n=I(e),r=ne(n,"total")||ne(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 to(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function no(e,t,n,r,s){return Ae({...e,empty:!0,scope:vb(t),[n]:[],aggregate:r,summary:`0 ${Tb(t)}`},s)}function vb(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 Tb(e){let t=ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function ed(e,t){let n={number:ne(e,"number"),title:S(e,"title"),state:Gn(e),draft:!!e.isDraft};return oo(n,e,t,["author","labels","url","updated"]),n}function td(e,t){let n=ed(e,t);return n.body=ss(e,"body",so,t.full),t.wide&&(n.base=S(e,"baseRefName"),n.head=S(e,"headRefName")),n}function nd(e,t){let n={number:ne(e,"number"),title:S(e,"title"),state:Gn(e),labels:sd(e.labels)};return oo(n,e,t,["author","url","updated"]),n}function Ob(e,t){let n=nd(e,t);return n.body=ss(e,"body",so,t.full),n}function rd(e,t){let n={id:ne(e,"databaseId"),name:S(e,"name"),status:Gn(e),conclusion:S(e,"conclusion")};return oo(n,e,t,["event","branch","workflow","created"]),n}function Pb(e,t){let n=rd(e,t),r=re(e.jobs).map(s=>({name:S(s,"name"),status:Gn(s),conclusion:S(s,"conclusion"),log:ss(s,"log",lb,t.full)}));return n.jobs=r,n}function ss(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 Db(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 Cb(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 zl(e,t){return e.every(n=>n.state===t)?t:"returned"}function ro(e,t,n){return n?`${e}/${t}`:String(e)}function Zt(e,t,n){return t.query?Ae(e,n):e}function Gn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function oo(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=id(t.author):s==="labels"?e.labels=sd(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 sd(e){return Array.isArray(e)?e.map(t=>kt(t)?S(t,"name"):String(t)).filter(Boolean):[]}function id(e){return kt(e)?S(e,"login"):""}function Fn(e){return e.trim()?JSON.parse(e):null}function re(e){return Array.isArray(e)?e.filter(kt):[]}function I(e){return kt(e)?e:{}}function S(e,t){let n=e[t];return typeof n=="string"?n:""}function ne(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 cb,ub,so,lb,db,rs,co=E(()=>{"use strict";Q();Hr();St();gn();ut();cb={"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"]},ub={"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"]},so=160,lb=160,db={"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"]};rs=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 fo={};M(fo,{renderTestContract:()=>od,runTestWrapper:()=>Bb});import{spawn as $b}from"node:child_process";async function Bb(e,t){let n=ct(e),r=await Jb(n.argv);return await od(e,r,t)}async function od(e,t,n){let r=ct(e),i=ad(r.argv)==="vitest"?Fb(t.stdout):Gb(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 ${Wb(i.durationSeconds)}`,c=H(i.failures,r.query);if(n.level==="terse")return await Lb(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,f=0;for(let h of c){let m=await Hb(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?Ae(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(D(p)),stderr:Buffer.from(t.stderr),status:lo(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 Lb(e,t,n,r,s,i,o){let a=Mb(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?Ae(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:lo(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:lo(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:m,rowsElided:f,rawOutput:Buffer.from(h)}}function lo(e){return e===0||e===null?0:1}function Mb(e){let t=[],n=Ib;for(let r of e.slice(0,Nb)){let s=jb(r.excerpt,Math.min(Ab,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function jb(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 sd(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 Db(e){if(sd(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 Cb(e){let t=Db(e),n=Sb(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 $b(e){let t=id(e);if(!Qe(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Ze(t.numTotalTests),i=Ze(t.numFailedTests),o=Lb(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:Nb(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 Ib(e){let t=e.split(`
146
- `).filter(Boolean).map(c=>id(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 Ab(e,t,n){let r=Buffer.from(e);if(r.length<=ao)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,ao).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 id(e){try{return JSON.parse(e)}catch{return null}}function Nb(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
149
- `):""}function Bb(e){return`${Number(e.toFixed(1))}s`}function Lb(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 ao,kb,Eb,xb,lo=E(()=>{"use strict";Q();St();gn();ut();ao=320,kb=160,Eb=ao,xb=3});var po={};M(po,{parseCatCommand:()=>mo,renderCatContract:()=>qb,runCatWrapper:()=>Hb});import{isUtf8 as Mb}from"node:buffer";import{readFile as jb}from"node:fs/promises";import{extname as Ub}from"node:path";async function Hb(e,t){let n=mo(e),r;try{r=await jb(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 dd(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await ld(e,n,r,t)}async function qb(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=mo(e),s=Buffer.from(t.stdout,"utf8");return dd(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await ld(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function mo(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=ud(t[++o],fo);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=ud(u,fo);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 ld(e,t,n,r){let s=n.toString("utf8"),i=zb(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>cd(r.heavyByteThreshold,od)||i.truncated;if(!ad(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=ad(t.file)?Wb(e,t.file,n,s,r.level,i):Vb(e,t.file,n,s,i),c=`${D(a)}
151
- `;if(!o&&Buffer.byteLength(c)<=cd(r.heavyByteThreshold,od))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 Wb(e,t,n,r,s,i){let o=rs(r),a=s==="terse"?Fb:Jb,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:Kb(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function Vb(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 zb(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
153
- `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??fo,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
145
+ ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function ad(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 Ub(e){if(ad(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 Jb(e){let t=Ub(e),n=$b(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 Fb(e){let t=cd(e);if(!Qe(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Ze(t.numTotalTests),i=Ze(t.numFailedTests),o=Vb(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:qb(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 Gb(e){let t=e.split(`
146
+ `).filter(Boolean).map(c=>cd(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 Hb(e,t,n){let r=Buffer.from(e);if(r.length<=uo)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,uo).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 cd(e){try{return JSON.parse(e)}catch{return null}}function qb(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
149
+ `):""}function Wb(e){return`${Number(e.toFixed(1))}s`}function Vb(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 uo,Ab,Ib,Nb,mo=E(()=>{"use strict";Q();St();gn();ut();uo=320,Ab=160,Ib=uo,Nb=3});var ho={};M(ho,{parseCatCommand:()=>go,renderCatContract:()=>t_,runCatWrapper:()=>e_});import{isUtf8 as zb}from"node:buffer";import{readFile as Kb}from"node:fs/promises";import{extname as Yb}from"node:path";async function e_(e,t){let n=go(e),r;try{r=await Kb(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 pd(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await md(e,n,r,t)}async function t_(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=go(e),s=Buffer.from(t.stdout,"utf8");return pd(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await md(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function go(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=fd(t[++o],po);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=fd(u,po);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 md(e,t,n,r){let s=n.toString("utf8"),i=s_(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>dd(r.heavyByteThreshold,ud)||i.truncated;if(!ld(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=ld(t.file)?n_(e,t.file,n,s,r.level,i):r_(e,t.file,n,s,i),c=`${D(a)}
151
+ `;if(!o&&Buffer.byteLength(c)<=dd(r.heavyByteThreshold,ud))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 n_(e,t,n,r,s,i){let o=is(r),a=s==="terse"?Zb:Qb,c=is(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:i_(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function r_(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:is(r).length,content:is(s.text),truncated:s.truncated}}function s_(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
153
+ `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??po,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 Kb(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&&!Yb(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 dd(e){return e.includes(0)||!Mb(e)}function ad(e){return Gb.has(Ub(e).toLowerCase())}function Yb(e){return["for","if","switch","while"].includes(e)}function cd(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ud(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var od,fo,Jb,Fb,Gb,go=E(()=>{"use strict";Q();St();ut();od=8*1024,fo=10,Jb=8,Fb=2,Gb=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});function pd(e,t={}){let n=Qb(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=ho(i),u=ho(o),l=ho(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(p=>r_(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:yo(d.length,c)+yo(d.tokens.length,u)+yo(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+t_(d.tokens,r,n.length)+n_(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 Qb(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(fd(r++,n,i,e.slice(n,i).replace(/\r$/,""))),n=i+1}return(n<e.length||e.length===0)&&t.push(fd(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function fd(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:Zb(r),tokens:Xb(r),numbers:e_(r),length:r.length}}function Zb(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 Xb(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function e_(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function t_(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 n_(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function ho(e){let t=md(e),n=md(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function yo(e,t){return Math.abs(e-t.median)/t.mad}function md(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 r_(e,t,n,r){return e<r&&n<t}var gd=E(()=>{"use strict"});var qn={};M(qn,{parseExecCommandLine:()=>Rd,renderExecContract:()=>_d,runExecWrapper:()=>c_});import{isUtf8 as s_}from"node:buffer";import{spawn as i_}from"node:child_process";async function c_(e,t){let n=Rd(e),r=await u_(n);return await _d(n,r,t)}async function _d(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=l_(r),o=i.kind==="text"?Buffer.from(i.text):r,a=D_(n.heavyByteThreshold,o_);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"?f_(i.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):m_(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 Rd(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 u_(e){let t=i_(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 l_(e){return s_(e)?{kind:"text",text:d_(e.toString("utf8"))}:{kind:"bytes"}}function d_(e){let t=e;for(let n of[Lr,Mr,jr,Ur])t=n.apply(t);return t}function f_(e,t,n,r,s,i=k_,o=Nn){let c=Math.max(1,Math.floor((r==="terse"?bd:a_)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=S_(e,c,l,i),d=p_(e),p=g_(d,e,u,c,l,f.kind==="ok"?f.lines:[],o),h=Sd(s,d,t,P_(u),n,p.summary),m=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Od(f.error)}:p.degradation;return{text:Td(h),degradation:m}}function m_(e,t,n,r){let s=Math.max(1,Math.floor(bd/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Td(Sd(r,"bytes",t,0,n,i))}}function Sd(e,t,n,r,s,i){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:i,recovery:{original:ge(s)}}}function p_(e){let t=e.trim();return t?Ed(t)?"json":xd(e)?"jsonl":E_(e)?"unified-diff":vd(e)?"tabular":x_(e)?"log-like":v_(e)?"prose":"untyped":"untyped"}function g_(e,t,n,r,s,i,o=Nn){switch(e){case"json":return h_(t,o);case"jsonl":return{summary:y_(t)};case"unified-diff":return{summary:w_(t)};case"tabular":return{summary:b_(t)};case"log-like":return{summary:__(t,i)};case"prose":return{summary:R_(t)};case"bytes":return{summary:{}};case"untyped":return{summary:kd(n,r,s,i)}}}function h_(e,t){let n=Ed(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:bo(n)}}}catch(r){return{summary:yd(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Od(r)}}}return{summary:yd(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 yd(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Xe),item_keys:bo(e)}}function y_(e){let t=xd(e)??[],n=T_(t,"level");return{records:t.length,keys:bo(t),levels:n,first:Xe(t[0]),last:Xe(t.at(-1))}}function w_(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 b_(e){let t=vd(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:kd(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function __(e,t){let n=Gn(e);return{entries:n.length,levels:O_(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 R_(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 kd(e,t,n,r){let s=wd(e.subarray(0,t)),i=wd(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 S_(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function k_(e,t){return pd(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Ed(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 xd(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 E_(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 vd(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 x_(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 v_(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 bo(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 T_(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 O_(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<=hd?t:`${t.slice(0,hd-1)}\u2026`}function Td(e){let t=D(e).trimEnd(),n=j(t);if(!wo(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
157
- `}function wo(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)=>wo(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)&&wo(n[o],r[o]))}function Hn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Od(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 wd(e){return e.toString("utf8").replace(/�$/g,"")}function P_(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 D_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var o_,a_,bd,hd,Wn=E(()=>{"use strict";Q();gd();St();Bn();ut();o_=8*1024,a_=2*1024,bd=1024,hd=240});Ts();Ce();pn();import{spawn as xo}from"node:child_process";import{createHash as C_}from"node:crypto";import{existsSync as vt,readFileSync as $_,readdirSync as I_,statSync as A_}from"node:fs";import{tmpdir as N_}from"node:os";import{dirname as B_,join as tt}from"node:path";import{fileURLToPath as is}from"node:url";function $a(e){let t={app:e,version:_m(Bt("__RED_BUILD_VERSION__",()=>"2.74.0")??"0.0.0-dev"),gitSha:Bt("__RED_BUILD_GIT_SHA__",()=>"353fb936f7811540bc4282b060041633338c5894")??"unknown",buildTime:Bt("__RED_BUILD_TIME__",()=>"2026-07-18T12:28:46-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 _m(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 L_(e=process.argv.slice(2)){let t=$a("rsp");if(hR(e))return process.stdout.write(yR(e)),0;let n=bR(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(),ki));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(Bn(),ki));return await m()}if(n.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Cu(),Du)),g=await m(process.cwd());return process.stdout.write(TR(g)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Lu(),Bu));return await m(),0}if(n.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(Ui(),ji));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(()=>(Zu(),Qu));return process.stdout.write(g(m)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(Re(),ic)),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 W_(s,g,So(n.positional,1));return process.stdout.write(Z_(w)),w.exitCode}let i=pR(n.command);if(!s.enabled)return i?await mR(n.positional):(process.stdout.write(`${Do()}
158
- `),0);if(n.command==="git"&&vo(n.positional)){let m=process.hrtime.bigint();return await se(n,await To(),m,void 0,await F_(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Fe(),ht)),u=o(process.cwd());if(i&&U_(s.measurementHoldoutShare))return await M_(n,u.rootDir,s.measurementHoldoutShare);if(n.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(Dl(),Pl)),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:J(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:J(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:J(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:J(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:J(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:J(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:J(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:J(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(`${Do()}
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:J(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:J(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:J(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:J(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:J(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:J(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:J(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:J(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(`${G(w)}
160
- `),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(Gr(),Ju)),g=_R(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 X_(s);return process.stdout.write(tR(m)),0}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!vt(is(s.storeUri)))return i?await q_(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 Ao(s,So(n.positional,30));return process.stdout.write(SR(m,g,RR(n.positional))),0}if(n.command==="gains"){let m=await p();if(h=()=>m.close(),!H_(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
162
- `),1;let g=await m.telemetryGains(So(n.positional,28));return process.stdout.write(kR(g)),0}if(n.command==="git"){if(et(f()),vo(n.positional)){let T=process.hrtime.bigint();return await se(n,await To(),T,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(St(),Qi)),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(()=>(oo(),io)),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(()=>(lo(),uo)),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(()=>(go(),po)),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 Ro(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 Ro(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 Ro(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(No(m))return process.stdout.write(m.render()),2;if(i)return await Po("wrapper failed",n.positional,m,u.rootDir);throw m}finally{await h?.()}}async function M_(e,t,n){let r=process.hrtime.bigint(),s=await j_(e.positional),i=Number(process.hrtime.bigint()-r)/1e6;return J_(t,e,s,i,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function j_(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=xo(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=xo(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 U_(e){return e>0&&Math.random()<e}function J_(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 J(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 vo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function To(){if(G_(process.cwd()))return{stdout:_o(),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:_o(),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?_o():n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function _o(){return Buffer.from(`${G({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 F_(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Fe(),ht));return t(e).rootDir}catch{return e}}function G_(e){try{return!vt(`${e}/.git`)||vt(`${e}/.git/index`)?!1:I_(e).every(t=>t===".git")}catch{return!1}}function H_(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}},Oo=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function q_(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new Oo,i=process.hrtime.bigint();try{if(e.command==="git"){if(vo(e.positional))return await se(e,await To(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(St(),Qi)),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(()=>(oo(),io)),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(()=>(lo(),uo)),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(()=>(go(),po)),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 No(o)?(process.stdout.write(o.render()),2):await Po("wrapper failed",e.positional,o,n)}finally{await s.close()}return await Po("wrapper failed",e.positional,r,n)}async function Ao(e,t){let n={stats:vR(e.telemetryByteBudget),telemetry:Io(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:Io(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 W_(e,t,n){let r=[],s=!e.enabled;if(r.push(s?V("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):V("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(V("hook_wiring","skipped because rsp is disabled"),V("proxy_mode","skipped because rsp is disabled"),V("resident_liveness","skipped because rsp is disabled"),V("store_provisioning","skipped because rsp is disabled"),V("recent_degradation_rate","skipped because rsp is disabled")),Pd("disabled",r,n);r.push(await V_(e)),r.push(e.proxyEnabled?V("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(z_(await i(t))),r.push(K_(e)),Cd(e)){let{telemetry:o}=await Ao(e,n);r.push(Y_(o,n))}else r.push(V("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return Pd(r.some(o=>!o.pass)?"fail":"pass",r,n)}async function V_(e){try{if(e.proxyEnabled)return V("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"?V("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 z_(e){return e.state==="registered-alive-socket-healthy"?V("resident_liveness","resident registry points at a healthy socket"):Xt("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function K_(e){return e.storeUri.startsWith("file://")?Cd(e)?V("store_provisioning","rsp store exists for this directory"):Xt("store_provisioning","rsp store is not provisioned","rsp setup"):V("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function Y_(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return V("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})`,Q_(s,t))}function Q_(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 Cd(e){if(!e.storeUri.startsWith("file://"))return!0;try{return vt(is(e.storeUri))}catch{return!1}}function V(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 Pd(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 Z_(e){let{exitCode:t,...n}=e;return`${G({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
165
- `}async function X_(e){let{stats:t,telemetry:n}=await Ao(e,30),[r,s]=await Promise.all([eR(e),Promise.resolve().then(()=>(Ui(),ji)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s}}async function eR(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 tR(e){let t=Id(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??Bo()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},nR(e));return`${G(n)}
166
- `}function nR(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(aR(s,e,t,o,r.lastResponseMetrics())),i&&rR(s,i)):cR(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function rR(e,t){try{let n=Ue(e),r=A_(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!oR(n,Date.now()-s))return;let i=sR(e),o=iR(i),a=tt(o,"rsp.sock"),c=tt(o,"rsp.pid"),u=tt(F(i),"rsp-resident.pid.json"),l=tt(i,".red","tmp","rsp.wake.lock");xo(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 sR(e){let t=e;for(;;){if(vt(tt(t,".git")))return t;let n=B_(t);if(n===t)return e;t=n}}function iR(e){let t=C_("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(N_(),`red-skills-${r}`,t)}function oR(e,t){try{let n=$_(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 aR(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 cR(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 Po(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 $d(t);if(r){let i=uR(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:Co(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:Co(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}function uR(e,t,n){let r=t[0]??"unknown",s=lR(n)||e;return{reason:Dd(n)==="ENOENT"||Dd(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:fR(n)??1,stderrHead:dR(s,240)}}function lR(e){return e instanceof Error?ss(e.message):ss(String(e??""))}function ss(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function dR(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 Dd(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function fR(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 Ro(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 mR(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Do()}, passing through
168
- `),await $d(e)}function Do(){return"rsp is not enabled in this directory; run /red-setup"}function pR(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}async function $d(e){if(e[0]==="exec"||e[0]==="proxy")return await gR(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 gR(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 i_(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&&!o_(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function is(e){let t=e.split(`
156
+ `);return t.at(-1)===""?t.slice(0,-1):t}function pd(e){return e.includes(0)||!zb(e)}function ld(e){return Xb.has(Yb(e).toLowerCase())}function o_(e){return["for","if","switch","while"].includes(e)}function dd(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function fd(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var ud,po,Qb,Zb,Xb,yo=E(()=>{"use strict";Q();St();ut();ud=8*1024,po=10,Qb=8,Zb=2,Xb=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});function yd(e,t={}){let n=a_(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=wo(i),u=wo(o),l=wo(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(p=>m_(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:bo(d.length,c)+bo(d.tokens.length,u)+bo(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+d_(d.tokens,r,n.length)+f_(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 a_(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(gd(r++,n,i,e.slice(n,i).replace(/\r$/,""))),n=i+1}return(n<e.length||e.length===0)&&t.push(gd(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function gd(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:c_(r),tokens:u_(r),numbers:l_(r),length:r.length}}function c_(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 u_(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function l_(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function d_(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 f_(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function wo(e){let t=hd(e),n=hd(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function bo(e,t){return Math.abs(e-t.median)/t.mad}function hd(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 m_(e,t,n,r){return e<r&&n<t}var wd=E(()=>{"use strict"});var Wn={};M(Wn,{parseExecCommandLine:()=>Ed,renderExecContract:()=>kd,runExecWrapper:()=>w_});import{isUtf8 as p_}from"node:buffer";import{spawn as g_}from"node:child_process";async function w_(e,t){let n=Ed(e),r=await b_(n);return await kd(n,r,t)}async function kd(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=__(r),o=i.kind==="text"?Buffer.from(i.text):r,a=U_(n.heavyByteThreshold,h_);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"?S_(i.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):k_(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 Ed(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 b_(e){let t=g_(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 __(e){return p_(e)?{kind:"text",text:R_(e.toString("utf8"))}:{kind:"bytes"}}function R_(e){let t=e;for(let n of[Mr,jr,Ur,Jr])t=n.apply(t);return t}function S_(e,t,n,r,s,i=A_,o=Nn){let c=Math.max(1,Math.floor((r==="terse"?Sd:y_)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=$_(e,c,l,i),d=E_(e),p=x_(d,e,u,c,l,f.kind==="ok"?f.lines:[],o),h=xd(s,d,t,j_(u),n,p.summary),m=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Cd(f.error)}:p.degradation;return{text:Dd(h),degradation:m}}function k_(e,t,n,r){let s=Math.max(1,Math.floor(Sd/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Dd(xd(r,"bytes",t,0,n,i))}}function xd(e,t,n,r,s,i){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:i,recovery:{original:ge(s)}}}function E_(e){let t=e.trim();return t?Td(t)?"json":Od(e)?"jsonl":I_(e)?"unified-diff":Pd(e)?"tabular":N_(e)?"log-like":B_(e)?"prose":"untyped":"untyped"}function x_(e,t,n,r,s,i,o=Nn){switch(e){case"json":return v_(t,o);case"jsonl":return{summary:T_(t)};case"unified-diff":return{summary:O_(t)};case"tabular":return{summary:P_(t)};case"log-like":return{summary:D_(t,i)};case"prose":return{summary:C_(t)};case"bytes":return{summary:{}};case"untyped":return{summary:vd(n,r,s,i)}}}function v_(e,t){let n=Td(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:Ro(n)}}}catch(r){return{summary:_d(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Cd(r)}}}return{summary:_d(n)}}if(qn(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 _d(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Xe),item_keys:Ro(e)}}function T_(e){let t=Od(e)??[],n=L_(t,"level");return{records:t.length,keys:Ro(t),levels:n,first:Xe(t[0]),last:Xe(t.at(-1))}}function O_(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=Pd(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:vd(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function D_(e,t){let n=Hn(e);return{entries:n.length,levels:M_(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 C_(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 vd(e,t,n,r){let s=Rd(e.subarray(0,t)),i=Rd(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 $_(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function A_(e,t){return yd(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Td(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return qn(n)||Array.isArray(n)?n:null}catch{return null}}function Od(e){let t=Hn(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 I_(e){let t=Hn(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 Pd(e){let t=Hn(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 N_(e){let t=Hn(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 B_(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 Hn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function Ro(e){let t=new Map;for(let n of e)if(qn(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 L_(e,t){let n=new Map;for(let r of e){if(!qn(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 M_(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):qn(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<=bd?t:`${t.slice(0,bd-1)}\u2026`}function Dd(e){let t=D(e).trimEnd(),n=j(t);if(!_o(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
157
+ `}function _o(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)=>_o(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)&&_o(n[o],r[o]))}function qn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Cd(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 Rd(e){return e.toString("utf8").replace(/�$/g,"")}function j_(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 U_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var h_,y_,Sd,bd,Vn=E(()=>{"use strict";Q();wd();St();Bn();ut();h_=8*1024,y_=2*1024,Sd=1024,bd=240});Ps();Ce();pn();import{spawn as To}from"node:child_process";import{createHash as J_}from"node:crypto";import{existsSync as vt,readFileSync as F_,readdirSync as G_,statSync as H_}from"node:fs";import{tmpdir as q_}from"node:os";import{dirname as W_,join as tt}from"node:path";import{fileURLToPath as as}from"node:url";function Ia(e){let t={app:e,version:km(Bt("__RED_BUILD_VERSION__",()=>"2.74.2")??"0.0.0-dev"),gitSha:Bt("__RED_BUILD_GIT_SHA__",()=>"dffb8fc505b1d4e921f8cb5a0a190b8ceba956ff")??"unknown",buildTime:Bt("__RED_BUILD_TIME__",()=>"2026-07-18T19:46:33.447Z")??"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 km(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();zs();ut();Ee();async function V_(e=process.argv.slice(2)){let t=Ia("rsp");if(vR(e))return process.stdout.write(TR(e)),0;let n=PR(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(In(),Br));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(In(),Br));return await m()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(Bn(),xi));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(Bn(),xi));return await m()}if(n.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Au(),$u)),g=await m(process.cwd());return process.stdout.write(LR(g)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(ju(),Mu));return await m(),0}if(n.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(Fi(),Ji));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(()=>(el(),Xu));return process.stdout.write(g(m)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(Re(),ac)),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 nR(s,g,Eo(n.positional,1));return process.stdout.write(cR(w)),w.exitCode}let i=ER(n.command);if(!s.enabled)return i?await kR(n.positional):(process.stdout.write(`${$o()}
158
+ `),0);if(n.command==="git"&&Oo(n.positional)){let m=process.hrtime.bigint();return await se(n,await Po(),m,void 0,await Z_(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Fe(),ht)),u=o(process.cwd());if(i&&Y_(s.measurementHoldoutShare))return await z_(n,u.rootDir,s.measurementHoldoutShare);if(n.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>($l(),Cl)),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:J(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:J(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:J(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:J(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:J(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:J(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:J(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:J(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(`${$o()}
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:J(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:J(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:J(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:J(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:J(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:J(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:J(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:J(n.positional,"--idle-ms")??y.idleMs,clientVersion:t.version}),0}if(n.command==="proxy"){let{runProxy:m}=await Promise.resolve().then(()=>(es(),Xr));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(`${G(w)}
160
+ `),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(Hr(),Gu)),g=DR(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 uR(s);return process.stdout.write(dR(m)),0}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!vt(as(s.storeUri)))return i?await tR(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 Bo(s,Eo(n.positional,30));return process.stdout.write($R(m,g,CR(n.positional))),0}if(n.command==="gains"){let m=await p();if(h=()=>m.close(),!eR(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
162
+ `),1;let g=await m.telemetryGains(Eo(n.positional,28));return process.stdout.write(AR(g)),0}if(n.command==="git"){if(et(f()),Oo(n.positional)){let T=process.hrtime.bigint();return await se(n,await Po(),T,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(St(),Xi)),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(()=>(co(),ao)),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(()=>(mo(),fo)),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(()=>(yo(),ho)),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(()=>(Vn(),Wn)),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 ko(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 ko(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 ko(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(Lo(m))return process.stdout.write(m.render()),2;if(i)return await Co("wrapper failed",n.positional,m,u.rootDir);throw m}finally{await h?.()}}async function z_(e,t,n){let r=process.hrtime.bigint(),s=await K_(e.positional),i=Number(process.hrtime.bigint()-r)/1e6;return Q_(t,e,s,i,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function K_(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(()=>(es(),Xr)).then(o=>o.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(Vn(),Wn)).then(o=>o.parseExecCommandLine(e));n=To(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=To(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 Y_(e){return e>0&&Math.random()<e}function Q_(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 J(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 Oo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Po(){if(X_(process.cwd()))return{stdout:So(),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:So(),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?So():n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function So(){return Buffer.from(`${G({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 Z_(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Fe(),ht));return t(e).rootDir}catch{return e}}function X_(e){try{return!vt(`${e}/.git`)||vt(`${e}/.git/index`)?!1:G_(e).every(t=>t===".git")}catch{return!1}}function eR(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}},Do=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function tR(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new Do,i=process.hrtime.bigint();try{if(e.command==="git"){if(Oo(e.positional))return await se(e,await Po(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(St(),Xi)),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(()=>(co(),ao)),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(()=>(mo(),fo)),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(()=>(yo(),ho)),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(()=>(Vn(),Wn)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,i,s)}}catch(o){return Lo(o)?(process.stdout.write(o.render()),2):await Co("wrapper failed",e.positional,o,n)}finally{await s.close()}return await Co("wrapper failed",e.positional,r,n)}async function Bo(e,t){let n={stats:BR(e.telemetryByteBudget),telemetry:No(t)};if(!e.storeUri.startsWith("file://"))return n;let r=as(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:No(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 nR(e,t,n){let r=[],s=!e.enabled;if(r.push(s?V("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):V("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(V("hook_wiring","skipped because rsp is disabled"),V("proxy_mode","skipped because rsp is disabled"),V("resident_liveness","skipped because rsp is disabled"),V("store_provisioning","skipped because rsp is disabled"),V("recent_degradation_rate","skipped because rsp is disabled")),$d("disabled",r,n);r.push(await rR(e)),r.push(e.proxyEnabled?V("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(sR(await i(t))),r.push(iR(e)),Id(e)){let{telemetry:o}=await Bo(e,n);r.push(oR(o,n))}else r.push(V("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return $d(r.some(o=>!o.pass)?"fail":"pass",r,n)}async function rR(e){try{if(e.proxyEnabled)return V("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(In(),Br)),n=t("git status");return n.kind==="rewrite"?V("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?os(t.message):"unknown error"}`,"rsp setup")}}function sR(e){return e.state==="registered-alive-socket-healthy"?V("resident_liveness","resident registry points at a healthy socket"):Xt("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function iR(e){return e.storeUri.startsWith("file://")?Id(e)?V("store_provisioning","rsp store exists for this directory"):Xt("store_provisioning","rsp store is not provisioned","rsp setup"):V("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function oR(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return V("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})`,aR(s,t))}function aR(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 Id(e){if(!e.storeUri.startsWith("file://"))return!0;try{return vt(as(e.storeUri))}catch{return!1}}function V(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:Ks({command:`rsp doctor:${e}`,category:"real-error",error:t,help:n})}}function $d(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 cR(e){let{exitCode:t,...n}=e;return`${G({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
165
+ `}async function uR(e){let{stats:t,telemetry:n}=await Bo(e,30),[r,s]=await Promise.all([lR(e),Promise.resolve().then(()=>(Fi(),Ji)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s}}async function lR(e){if(!e.storeUri.startsWith("file://"))return[];let t=as(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 dR(e){let t=Bd(e.stats,e.telemetry,!1),n=qs({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??Mo()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},fR(e));return`${G(n)}
166
+ `}function fR(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(yR(s,e,t,o,r.lastResponseMetrics())),i&&mR(s,i)):wR(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function mR(e,t){try{let n=Ue(e),r=H_(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!hR(n,Date.now()-s))return;let i=pR(e),o=gR(i),a=tt(o,"rsp.sock"),c=tt(o,"rsp.pid"),u=tt(F(i),"rsp-resident.pid.json"),l=tt(i,".red","tmp","rsp.wake.lock");To(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 pR(e){let t=e;for(;;){if(vt(tt(t,".git")))return t;let n=W_(t);if(n===t)return e;t=n}}function gR(e){let t=J_("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(q_(),`red-skills-${r}`,t)}function hR(e,t){try{let n=F_(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 yR(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 wR(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 Co(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 Nd(t);if(r){let i=bR(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:Ao(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:Ao(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}function bR(e,t,n){let r=t[0]??"unknown",s=_R(n)||e;return{reason:Ad(n)==="ENOENT"||Ad(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:SR(n)??1,stderrHead:RR(s,240)}}function _R(e){return e instanceof Error?os(e.message):os(String(e??""))}function os(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function RR(e,t){let n=os(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function Ad(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function SR(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 ko(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 kR(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${$o()}, passing through
168
+ `),await Nd(e)}function $o(){return"rsp is not enabled in this directory; run /red-setup"}function ER(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}async function Nd(e){if(e[0]==="exec"||e[0]==="proxy")return await xR(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 xR(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:s}=await Promise.resolve().then(()=>(es(),Xr));t=s(e)}else{let{parseExecCommandLine:s}=await Promise.resolve().then(()=>(Vn(),Wn));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 Co(e.positional)}function Co(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 hR(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function yR(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${wR(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 Ao(e.positional)}function Ao(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 vR(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function TR(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${OR(t).join(`
172
172
  `)}
173
- `}function wR(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 bR(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 $o(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 $o=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 No(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function _R(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 So(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 RR(e){return e.includes("--full")}function SR(e,t=Io(30),n=!1){return`${G(Id(e,t,n))}
174
- `}function Id(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??Bo(),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:ER(t.savings),dollars_saved_estimate_usd_display:xR(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:Eo(t.health.degradation_rate),show_hit_rate_display:Eo(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:Eo(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:ko(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:ko(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:ko(t.latency.store_elapsed_ms_avg)}}}function kR(e){return`${G(e)}
175
- `}function ER(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 xR(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 ko(e){return e==null?"none":String(e)}function Eo(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function Io(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 vR(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Bo()}}function Bo(){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 TR(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]}`&&L_().then(e=>process.exit(e),e=>{No(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{L_ as main,TR as renderSetupResult,SR as renderStats};
173
+ `}function OR(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 Io(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 Io=class extends Error{constructor(n){super(`unknown flag: ${n}`);this.flag=n}render(){return nr("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function Lo(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function DR(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 Eo(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 CR(e){return e.includes("--full")}function $R(e,t=No(30),n=!1){return`${G(Bd(e,t,n))}
174
+ `}function Bd(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??Mo(),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:IR(t.savings),dollars_saved_estimate_usd_display:NR(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:vo(t.health.degradation_rate),show_hit_rate_display:vo(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:vo(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:xo(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:xo(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:xo(t.latency.store_elapsed_ms_avg)}}}function AR(e){return`${G(e)}
175
+ `}function IR(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 NR(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 xo(e){return e==null?"none":String(e)}function vo(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function No(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 BR(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Mo()}}function Mo(){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 LR(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]}`&&V_().then(e=>process.exit(e),e=>{Lo(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{V_ as main,LR as renderSetupResult,$R as renderStats};