@reddb-io/red-skills 2.57.3 → 2.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,72 +1,74 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var ou=Object.defineProperty;var R=(e,t)=>()=>(e&&(t=e(e=0)),t);var N=(e,t)=>{for(var n in t)ou(e,n,{get:t[n],enumerable:!0})};async function oi(e,t){return au?lu(e,t):cu?fu(e,t):uu(e,t)}async function uu(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 lu(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:du(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*du(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 fu(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:mu(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*mu(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var au,cu,ai=R(()=>{au=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",cu=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as pu}from"node:fs";import{join as gu}from"node:path";function ci(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=gu(n,"bin",t);if(pu(i))return i;throw new Error(`reddb: binary "${t}" not found.
3
+ var ou=Object.defineProperty;var R=(e,t)=>()=>(e&&(t=e(e=0)),t);var C=(e,t)=>{for(var n in t)ou(e,n,{get:t[n],enumerable:!0})};async function oi(e,t){return au?lu(e,t):cu?fu(e,t):uu(e,t)}async function uu(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 lu(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:du(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*du(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 fu(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:mu(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*mu(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var au,cu,ai=R(()=>{au=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",cu=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as pu}from"node:fs";import{join as gu}from"node:path";function ci(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=gu(n,"bin",t);if(pu(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 ui=R(()=>{});import{fileURLToPath as hu}from"node:url";import{dirname as yu,resolve as wu,join as Xh}from"node:path";function Ru(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function li(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:ci({name:Ru(),packageRoot:_u,envVar:"REDDB_BIN"})}var bu,_u,di=R(()=>{ui();bu=yu(hu(import.meta.url)),_u=wu(bu,"..")});var Su,Eu,b,on,be=R(()=>{Su=new TextEncoder,Eu=new TextDecoder("utf-8"),b=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},on=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new b("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(Su.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(Eu.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 b(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 b("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function cr(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:/"?ku(e):xu(e)}function ku(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 b("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=Tu(s),a=n.port?Number(n.port):ar(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 xu(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 b("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):ar(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 b("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):ar(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 b("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Tu(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 b("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function ar(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 ur=R(()=>{be()});function Pu(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return fi(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return fi(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function fi(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 Ou(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 vu,Rt,lr=R(()=>{be();vu=new Set(["embedded"]),Rt=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&vu.has(this._transport))throw new b("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:Ou(r.value)}async put(t,n,r,s={}){this._guard("put");let i=Pu(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 dr(e,t){return`${fr(e)}.${Du(t)}`}function fr(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new b("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Du(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Iu(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 mi(e){return`'${String(e).replace(/'/g,"''")}'`}var tt,mr=R(()=>{be();tt=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(mi).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${dr(s,t)} = ${Iu(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 ${dr(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 ${dr(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 b("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 ${fr(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(mi).join(", ")}] FROM ${fr(r)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new b("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 b("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 ui=R(()=>{});import{fileURLToPath as hu}from"node:url";import{dirname as yu,resolve as wu,join as ty}from"node:path";function Ru(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function li(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:ci({name:Ru(),packageRoot:_u,envVar:"REDDB_BIN"})}var bu,_u,di=R(()=>{ui();bu=yu(hu(import.meta.url)),_u=wu(bu,"..")});var Su,Eu,b,an,Re=R(()=>{Su=new TextEncoder,Eu=new TextDecoder("utf-8"),b=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},an=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 b("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(Su.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(Eu.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 b(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 b("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function cr(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:/"?ku(e):xu(e)}function ku(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 b("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=Tu(s),a=n.port?Number(n.port):ar(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 xu(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 b("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):ar(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 b("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):ar(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 b("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Tu(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 b("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function ar(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 ur=R(()=>{Re()});function Pu(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return fi(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return fi(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function fi(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 Ou(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 vu,St,lr=R(()=>{Re();vu=new Set(["embedded"]),St=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&vu.has(this._transport))throw new b("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:Ou(r.value)}async put(t,n,r,s={}){this._guard("put");let i=Pu(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 dr(e,t){return`${fr(e)}.${Du(t)}`}function fr(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new b("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Du(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Iu(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 mi(e){return`'${String(e).replace(/'/g,"''")}'`}var nt,mr=R(()=>{Re();nt=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(mi).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${dr(s,t)} = ${Iu(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 ${dr(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 ${dr(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 b("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 ${fr(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(mi).join(", ")}] FROM ${fr(r)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new b("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 b("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
9
9
 
10
10
  `)){let l=u.split(`
11
- `).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function $u(e,t,n){let{waitMs:r,group:s=null,count:i=null}=n??{};if(!Number.isInteger(r)||r<0)throw new b("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=ue(e),a=ue(t),c=s!=null?` GROUP ${ue(s)}`:"",u=i!=null?gr(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function ue(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function gr(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new b("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Nu(e){if(!Number.isInteger(e))throw new b("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Cu(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new b("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Nu(e.priority)}`),e.key!=null&&(t+=` KEY ${hr(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${hr(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Bu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?hr(e):JSON.stringify(e)}function hr(e){return`'${String(e).replace(/'/g,"''")}'`}function pr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var St,yr=R(()=>{be();St=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${ue(t)}`})}push(t,n,r={}){let s=Cu(r);return this.client.call("query",{sql:`QUEUE PUSH ${ue(t)} ${Bu(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${ue(t)}${gr(n)}`});return pr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${ue(t)}${gr(n)}`});return pr(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${ue(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${ue(t)}`})}async readWait(t,n,r={}){let s=$u(t,n,r),i=await this.client.call("query",{sql:s});return pr(i)}}});function pi(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new b("INVALID_ARGUMENT",`${t} must be an object`)}function Au(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new b("INVALID_ARGUMENT","limit must be a positive integer");return e}function an(e){return String(e).split(".").map(gi).join(".")}function gi(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Lu(e){return hi(JSON.stringify(e))}function Mu(e){return JSON.stringify(e)}function ju(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Lu(e):hi(e)}function hi(e){return`'${String(e).replace(/'/g,"''")}'`}var Et,wr=R(()=>{be();Et=class{constructor(t){this.db=t}async insert(t,n){pi(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${an(t)} DOCUMENT VALUES (${Mu(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new b("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 b("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=Au(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 ${an(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){pi(r,"documents.patch patch");let s=Object.entries(r);if(s.length===0)throw new b("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new b("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${gi(c)} = ${ju(u)}`).join(", "),a=(await this.db.query(`UPDATE ${an(t)} SET ${i} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new b("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 ${an(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function Uu(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${_e(n)}.${_e(r)})`}return Fu(e)}function Gu(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 _e(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 Fu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):yi(e)}function yi(e){return`'${String(e).replace(/'/g,"''")}'`}var kt,br=R(()=>{kt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){Gu(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(yi).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${_e(s)} ${_e(t)} = ${Uu(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${_e(r)} ${_e(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${_e(r)} ${_e(t)}`})}}});function qu(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 nt(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 Ju(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):wi(e)}function wi(e){return`'${String(e).replace(/'/g,"''")}'`}var xt,_r=R(()=>{xt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){qu(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(wi).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${nt(s)}.${nt(t)} = ${Ju(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${nt(r)}.${nt(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${nt(r)}.${nt(t)}`})}}});async function _i(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Wu)}async function Ri(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Vu(t)}`)).rows??[]).some(r=>r.name===String(t))}function Wu(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function bi(e){return String(e).split(".").map(Hu).join(".")}function Hu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Vu(e){return`'${String(e).replace(/'/g,"''")}'`}var Tt,Rr=R(()=>{be();Tt=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 b("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(bi).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${bi(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 ln(e,t={}){let n=cr(e);if(rl(n),n.kind==="embedded"){let r=nl(n,t.auth);if(r.token||r.username)throw new b("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=tl(n),i=t.binary??li(),o=await oi(i,s),a=new on(o);return await a.call("version",{}),new Er(a,{transport:"embedded"})}}function Ei(e){return Yu(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:Xu(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&el(e)?{$uuid:e}:e}function Yu(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new b("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 b("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new b("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function Qu(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Ei):e.map(Ei)}function Xu(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 Zu(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 el(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function cn(e){if(Array.isArray(e))return e.map(cn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Zu(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]=cn(s);return n}return e}function tl(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function nl(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 rl(e){if(e.kind!=="embedded")throw new b("EMBEDDED_ONLY",Ku)}function kr(){return new b(Si,`${Si}: nested transactions are not supported on one connection`)}function xi(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function sl(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new b("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${ki} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function il(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new b("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${ki} 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 b("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var Ku,zu,ki,Si,un,Sr,Er,xr=R(()=>{ai();di();be();ur();lr();mr();yr();wr();br();_r();Rr();lr();mr();yr();wr();br();_r();Rr();ur();Ku="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",zu="1.0",ki="1.0.9",Si="NESTED_TX_NOT_SUPPORTED";un=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 kr()}},Sr=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw kr();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 b("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 b("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 b("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new un(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){xi(n,r)}throw n}}},Er=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=zu,this.cache=new Rt(t,this.transport),this.queue=new St(t),this.queues=this.queue,this.documents=new Et(this);let r=new tt(t);this.kv=Object.assign((s="kv_default")=>new tt(t,s),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(s="red.config")=>new kt(t,s),this.vault=(s="red.vault")=>new xt(t,s),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new b("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=Qu(n);return r==null?this.client.call("query",{sql:t}).then(cn):this.client.call("query",{sql:t,params:r}).then(cn)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return sl(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 il(r,n.length)}tx(){return new Sr(this)}async transaction(t){if(this.inTransaction)throw kr();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 un(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){xi(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return Ri(this,t)}list(){return _i(this)}from(t){return new Tt(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()}}});function S(e,t){return new dn(e,t)}var dn,vt=R(()=>{dn=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}}});function Tr(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 X(e){return S(e,"invalid quoted string")}function Be(e,t){if(e==="")return"";if(e.startsWith('"'))return Ti(e,t);if(e.includes('"'))throw X(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:ol(e)?Number(e):e}function Pt(e,t){let n=e.trim();if(n.startsWith('"'))return[Ti(n,t),!0];if(n.includes('"')||/\s/.test(n))throw S(t,"expected non-empty field name");return[n,!1]}function Ti(e,t){if(e[0]!=='"')throw X(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 X(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 X(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw X(t);n+=String.fromCharCode(a),r+=4;break}default:throw X(t)}continue}if(s<" "&&s!==" ")throw X(t);n+=s}throw X(t)}function Ot(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 X(n);return r.push(e.slice(s).trim()),r}function z(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 X(n);return-1}function ol(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function al(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function cl(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw S(0,"number is not representable in TOON");return String(e)}function fn(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Ae(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return cl(e);if(typeof e=="string")return ll(e,t);throw S(0,"not a primitive")}function ul(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function Le(e){return ul(e)?e:vi(e)}function ll(e,t){return dl(e,t)?vi(e):e}function dl(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||al(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function vi(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 rt(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var Z,vr=R(()=>{vt();Z=","});function fl(e={}){return{indent:Math.max(1,e.indent??$r),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function ml(e,t){let n=[],r=!1;return Tr(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 S(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw S(o,"invalid indentation");n.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:r}),r=!1}),n}function Dt(e,t){let n=fl(t),r=ml(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw S(s.number,"invalid indentation");let i=r.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Br(s.content,z(s.content,":",s.number))}catch(l){if(n.strict)throw Di(l,s.number);u=void 0}if(u!==void 0)return gl(u,r,n)}if(i&&z(s.content,":",s.number)===-1)return Be(s.content.trim(),s.number);let o={index:0},a=Nr(r,o,0,n),c=r[o.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Nr(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 S(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=pl(e,t,n,r);bl(s,o,a,c,r,i.number)}return s}function pl(e,t,n,r){let s=e[t.index],i=s.content,o=z(i,":",s.number);if(o===-1)throw S(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1);if(z(a,"[",s.number)!==-1){let f;try{f=Br(a,o)}catch(g){if(r.strict)throw Di(g,s.number);t.index+=1;let m=Pi(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:m}}if(f.key===""&&!f.keyQuoted)throw S(s.number,"expected non-empty field name");let y=Cr(f,c,e,t,n,r);return{key:f.key,quoted:f.keyQuoted,value:y}}let[u,l]=Pt(a,s.number);if(u===""&&!l)throw S(s.number,"expected non-empty field name");t.index+=1;let d=Pi(e,t,n,c,s.number,r);return{key:u,quoted:l,value:d}}function Pi(e,t,n,r,s,i){let o=r.trim();if(o==="[]")return[];if(o!=="")return Be(o,s);let a=e[t.index];return a!==void 0&&a.depth>n?Nr(e,t,n+1,i):{}}function gl(e,t,n){let r=t[0],s=z(r.content,":",r.number);if(s===-1)throw S(r.number,"expected `key: value`");let i=r.content.slice(s+1),o={index:0},a=Cr(e,i,t,o,0,n),c=t[o.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Cr(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 S(o,"expected tabular rows");return hl(e,e.fields,n,r,s+1,i)}if(a!==""){let c=Ot(a,e.delimiter,o).map(u=>Be(u,o));if(c.length!==e.len)throw S(o,"array length mismatch");return c}return yl(e,n,r,s+1,i)}function hl(e,t,n,r,s,i){let o=[];for(;o.length<e.len;){let c=n[r.index];if(c===void 0)throw Or(n,r.index);if(c.depth<s)break;if(c.depth>s)throw S(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw S(c.number,"blank line inside array");if(!Oi(c.content,e.delimiter,c.number))break;let u=Ot(c.content,e.delimiter,c.number);if(u.length!==t.length)throw S(c.number,"array row length mismatch");let l={};t.forEach((d,f)=>{rt(l,d,Be(u[f],c.number))}),o.push(l),r.index+=1}if(o.length!==e.len)throw Or(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&Oi(a.content,e.delimiter,a.number))throw S(a.number,"array length mismatch");return o}function Oi(e,t,n){let r=z(e,":",n);if(r===-1)return!0;let s=z(e,t,n);return s===-1?!1:s<r}function yl(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 Or(t,n.index);if(a.depth>r)throw S(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw S(a.number,"blank line inside array");i.push(wl(t,n,r,s))}let o=t[n.index];if(o!==void 0&&o.depth>=r)throw S(o.number,"array length mismatch");return i}function wl(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw S(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=z(i,":",s.number),a;try{a=Br(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return Cr(a,c,e,t,n,r)}}if(z(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 Nr(o,{index:0},n+1,r)}return t.index+=1,Be(i,s.number)}function Or(e,t){let n=e[t]??e[e.length-1];return S(n===void 0?1:n.number,"array length mismatch")}function Br(e,t){if(t===-1)throw S(0,"array header missing colon");let n=e.slice(0,t),r=z(n,"[",0);if(r===-1)throw S(0,"invalid array header");let s,i;try{[s,i]=Pt(n.slice(0,r),0)}catch{throw S(0,"invalid array header")}let o=n.slice(r+1),a=o.indexOf("]");if(a===-1)throw S(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 S(0,"invalid array header");let l=Number.parseInt(u,10),d;switch(c.slice(u.length)){case"":d=",";break;case" ":d=" ";break;case"|":d="|";break;default:throw S(0,"invalid array header")}let f=o.slice(a+1),y;if(f==="")y=void 0;else if(f.startsWith("{")&&f.endsWith("}")&&f.length>=2){let g;try{g=Ot(f.slice(1,-1),d,0),y=g.map(m=>Pt(m,0)[0])}catch{throw S(0,"invalid array header")}}else throw S(0,"invalid array header");return{key:s,keyQuoted:i,len:l,delimiter:d,fields:y}}function Di(e,t){return S(t,e.reason??String(e.message))}function bl(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(_l)){Dr(e,o,r,s,i);return}}Dr(e,[t],r,s,i)}function Dr(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(s,"duplicate key");rt(e,i,n);return}if(o&&!st(e[i])){if(r.strict)throw S(s,"path expansion conflict");rt(e,i,{})}else o||rt(e,i,{});Dr(e[i],t.slice(1),n,r,s)}function _l(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function st(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function v(e){let t=[];return Array.isArray(e)?Ar(t,void 0,e,0,!1):st(e)?Ii(t,e,0):t.push(Ae(e,Z)),t.join("")}function mn(e,t){e.push(" ".repeat(t*$r))}function Ii(e,t,n){for(let[r,s]of Object.entries(t))mn(e,n),Ir(e,r,s,n)}function Ir(e,t,n,r){if(Array.isArray(n)){Ar(e,t,n,r,!1);return}if(st(n)){e.push(Le(t),`:
15
- `),Ii(e,n,r+1);return}e.push(Le(t),": ",Ae(n,Z),`
16
- `)}function Ar(e,t,n,r,s){if(n.length===0){t!==void 0?e.push(Le(t),`: []
11
+ `).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function $u(e,t,n){let{waitMs:r,group:s=null,count:i=null}=n??{};if(!Number.isInteger(r)||r<0)throw new b("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=le(e),a=le(t),c=s!=null?` GROUP ${le(s)}`:"",u=i!=null?gr(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function le(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function gr(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new b("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Cu(e){if(!Number.isInteger(e))throw new b("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Nu(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new b("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Cu(e.priority)}`),e.key!=null&&(t+=` KEY ${hr(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${hr(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Bu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?hr(e):JSON.stringify(e)}function hr(e){return`'${String(e).replace(/'/g,"''")}'`}function pr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Et,yr=R(()=>{Re();Et=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${le(t)}`})}push(t,n,r={}){let s=Nu(r);return this.client.call("query",{sql:`QUEUE PUSH ${le(t)} ${Bu(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${le(t)}${gr(n)}`});return pr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${le(t)}${gr(n)}`});return pr(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${le(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${le(t)}`})}async readWait(t,n,r={}){let s=$u(t,n,r),i=await this.client.call("query",{sql:s});return pr(i)}}});function pi(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new b("INVALID_ARGUMENT",`${t} must be an object`)}function Au(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new b("INVALID_ARGUMENT","limit must be a positive integer");return e}function cn(e){return String(e).split(".").map(gi).join(".")}function gi(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Lu(e){return hi(JSON.stringify(e))}function Mu(e){return JSON.stringify(e)}function ju(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Lu(e):hi(e)}function hi(e){return`'${String(e).replace(/'/g,"''")}'`}var kt,wr=R(()=>{Re();kt=class{constructor(t){this.db=t}async insert(t,n){pi(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${cn(t)} DOCUMENT VALUES (${Mu(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new b("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 b("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=Au(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 ${cn(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){pi(r,"documents.patch patch");let s=Object.entries(r);if(s.length===0)throw new b("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new b("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${gi(c)} = ${ju(u)}`).join(", "),a=(await this.db.query(`UPDATE ${cn(t)} SET ${i} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new b("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 ${cn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function Uu(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${Se(n)}.${Se(r)})`}return Fu(e)}function Gu(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 Se(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 Fu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):yi(e)}function yi(e){return`'${String(e).replace(/'/g,"''")}'`}var xt,br=R(()=>{xt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){Gu(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(yi).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${Se(s)} ${Se(t)} = ${Uu(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${Se(r)} ${Se(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${Se(r)} ${Se(t)}`})}}});function qu(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 rt(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 Ju(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):wi(e)}function wi(e){return`'${String(e).replace(/'/g,"''")}'`}var Tt,_r=R(()=>{Tt=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){qu(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(wi).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${rt(s)}.${rt(t)} = ${Ju(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${rt(r)}.${rt(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${rt(r)}.${rt(t)}`})}}});async function _i(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Wu)}async function Ri(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Vu(t)}`)).rows??[]).some(r=>r.name===String(t))}function Wu(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function bi(e){return String(e).split(".").map(Hu).join(".")}function Hu(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new b("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Vu(e){return`'${String(e).replace(/'/g,"''")}'`}var vt,Rr=R(()=>{Re();vt=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 b("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(bi).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${bi(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 dn(e,t={}){let n=cr(e);if(rl(n),n.kind==="embedded"){let r=nl(n,t.auth);if(r.token||r.username)throw new b("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=tl(n),i=t.binary??li(),o=await oi(i,s),a=new an(o);return await a.call("version",{}),new Er(a,{transport:"embedded"})}}function Ei(e){return Yu(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:Xu(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&el(e)?{$uuid:e}:e}function Yu(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new b("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 b("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new b("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function Qu(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Ei):e.map(Ei)}function Xu(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 Zu(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 el(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function un(e){if(Array.isArray(e))return e.map(un);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Zu(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let r=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(r/1000000n))}}let n={};for(let[r,s]of Object.entries(e))n[r]=un(s);return n}return e}function tl(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function nl(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 rl(e){if(e.kind!=="embedded")throw new b("EMBEDDED_ONLY",Ku)}function kr(){return new b(Si,`${Si}: nested transactions are not supported on one connection`)}function xi(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function sl(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new b("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${ki} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function il(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new b("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${ki} 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 b("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var Ku,zu,ki,Si,ln,Sr,Er,xr=R(()=>{ai();di();Re();ur();lr();mr();yr();wr();br();_r();Rr();lr();mr();yr();wr();br();_r();Rr();ur();Ku="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",zu="1.0",ki="1.0.9",Si="NESTED_TX_NOT_SUPPORTED";ln=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 kr()}},Sr=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw kr();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 b("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 b("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 b("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new ln(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){xi(n,r)}throw n}}},Er=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=zu,this.cache=new St(t,this.transport),this.queue=new Et(t),this.queues=this.queue,this.documents=new kt(this);let r=new nt(t);this.kv=Object.assign((s="kv_default")=>new nt(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 xt(t,s),this.vault=(s="red.vault")=>new Tt(t,s),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new b("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=Qu(n);return r==null?this.client.call("query",{sql:t}).then(un):this.client.call("query",{sql:t,params:r}).then(un)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return sl(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 il(r,n.length)}tx(){return new Sr(this)}async transaction(t){if(this.inTransaction)throw kr();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 ln(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){xi(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return Ri(this,t)}list(){return _i(this)}from(t){return new vt(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()}}});function S(e,t){return new fn(e,t)}var fn,Pt=R(()=>{fn=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}}});function Tr(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 X(e){return S(e,"invalid quoted string")}function Ae(e,t){if(e==="")return"";if(e.startsWith('"'))return Ti(e,t);if(e.includes('"'))throw X(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:ol(e)?Number(e):e}function Ot(e,t){let n=e.trim();if(n.startsWith('"'))return[Ti(n,t),!0];if(n.includes('"')||/\s/.test(n))throw S(t,"expected non-empty field name");return[n,!1]}function Ti(e,t){if(e[0]!=='"')throw X(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 X(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 X(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw X(t);n+=String.fromCharCode(a),r+=4;break}default:throw X(t)}continue}if(s<" "&&s!==" ")throw X(t);n+=s}throw X(t)}function Dt(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 X(n);return r.push(e.slice(s).trim()),r}function z(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 X(n);return-1}function ol(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function al(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function cl(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw S(0,"number is not representable in TOON");return String(e)}function mn(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function Le(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return cl(e);if(typeof e=="string")return ll(e,t);throw S(0,"not a primitive")}function ul(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function Me(e){return ul(e)?e:vi(e)}function ll(e,t){return dl(e,t)?vi(e):e}function dl(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||al(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function vi(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 st(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var Z,vr=R(()=>{Pt();Z=","});function fl(e={}){return{indent:Math.max(1,e.indent??$r),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function ml(e,t){let n=[],r=!1;return Tr(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 S(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw S(o,"invalid indentation");n.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:r}),r=!1}),n}function de(e,t){let n=fl(t),r=ml(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw S(s.number,"invalid indentation");let i=r.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Br(s.content,z(s.content,":",s.number))}catch(l){if(n.strict)throw Di(l,s.number);u=void 0}if(u!==void 0)return gl(u,r,n)}if(i&&z(s.content,":",s.number)===-1)return Ae(s.content.trim(),s.number);let o={index:0},a=Cr(r,o,0,n),c=r[o.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Cr(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 S(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=pl(e,t,n,r);bl(s,o,a,c,r,i.number)}return s}function pl(e,t,n,r){let s=e[t.index],i=s.content,o=z(i,":",s.number);if(o===-1)throw S(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1);if(z(a,"[",s.number)!==-1){let f;try{f=Br(a,o)}catch(g){if(r.strict)throw Di(g,s.number);t.index+=1;let m=Pi(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:m}}if(f.key===""&&!f.keyQuoted)throw S(s.number,"expected non-empty field name");let y=Nr(f,c,e,t,n,r);return{key:f.key,quoted:f.keyQuoted,value:y}}let[u,l]=Ot(a,s.number);if(u===""&&!l)throw S(s.number,"expected non-empty field name");t.index+=1;let d=Pi(e,t,n,c,s.number,r);return{key:u,quoted:l,value:d}}function Pi(e,t,n,r,s,i){let o=r.trim();if(o==="[]")return[];if(o!=="")return Ae(o,s);let a=e[t.index];return a!==void 0&&a.depth>n?Cr(e,t,n+1,i):{}}function gl(e,t,n){let r=t[0],s=z(r.content,":",r.number);if(s===-1)throw S(r.number,"expected `key: value`");let i=r.content.slice(s+1),o={index:0},a=Nr(e,i,t,o,0,n),c=t[o.index];if(c!==void 0)throw S(c.number,"expected end of document");return a}function Nr(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 S(o,"expected tabular rows");return hl(e,e.fields,n,r,s+1,i)}if(a!==""){let c=Dt(a,e.delimiter,o).map(u=>Ae(u,o));if(c.length!==e.len)throw S(o,"array length mismatch");return c}return yl(e,n,r,s+1,i)}function hl(e,t,n,r,s,i){let o=[];for(;o.length<e.len;){let c=n[r.index];if(c===void 0)throw Or(n,r.index);if(c.depth<s)break;if(c.depth>s)throw S(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw S(c.number,"blank line inside array");if(!Oi(c.content,e.delimiter,c.number))break;let u=Dt(c.content,e.delimiter,c.number);if(u.length!==t.length)throw S(c.number,"array row length mismatch");let l={};t.forEach((d,f)=>{st(l,d,Ae(u[f],c.number))}),o.push(l),r.index+=1}if(o.length!==e.len)throw Or(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&Oi(a.content,e.delimiter,a.number))throw S(a.number,"array length mismatch");return o}function Oi(e,t,n){let r=z(e,":",n);if(r===-1)return!0;let s=z(e,t,n);return s===-1?!1:s<r}function yl(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 Or(t,n.index);if(a.depth>r)throw S(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw S(a.number,"blank line inside array");i.push(wl(t,n,r,s))}let o=t[n.index];if(o!==void 0&&o.depth>=r)throw S(o.number,"array length mismatch");return i}function wl(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw S(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=z(i,":",s.number),a;try{a=Br(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return Nr(a,c,e,t,n,r)}}if(z(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 Cr(o,{index:0},n+1,r)}return t.index+=1,Ae(i,s.number)}function Or(e,t){let n=e[t]??e[e.length-1];return S(n===void 0?1:n.number,"array length mismatch")}function Br(e,t){if(t===-1)throw S(0,"array header missing colon");let n=e.slice(0,t),r=z(n,"[",0);if(r===-1)throw S(0,"invalid array header");let s,i;try{[s,i]=Ot(n.slice(0,r),0)}catch{throw S(0,"invalid array header")}let o=n.slice(r+1),a=o.indexOf("]");if(a===-1)throw S(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 S(0,"invalid array header");let l=Number.parseInt(u,10),d;switch(c.slice(u.length)){case"":d=",";break;case" ":d=" ";break;case"|":d="|";break;default:throw S(0,"invalid array header")}let f=o.slice(a+1),y;if(f==="")y=void 0;else if(f.startsWith("{")&&f.endsWith("}")&&f.length>=2){let g;try{g=Dt(f.slice(1,-1),d,0),y=g.map(m=>Ot(m,0)[0])}catch{throw S(0,"invalid array header")}}else throw S(0,"invalid array header");return{key:s,keyQuoted:i,len:l,delimiter:d,fields:y}}function Di(e,t){return S(t,e.reason??String(e.message))}function bl(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(_l)){Dr(e,o,r,s,i);return}}Dr(e,[t],r,s,i)}function Dr(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(s,"duplicate key");st(e,i,n);return}if(o&&!it(e[i])){if(r.strict)throw S(s,"path expansion conflict");st(e,i,{})}else o||st(e,i,{});Dr(e[i],t.slice(1),n,r,s)}function _l(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function it(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function T(e){let t=[];return Array.isArray(e)?Ar(t,void 0,e,0,!1):it(e)?Ii(t,e,0):t.push(Le(e,Z)),t.join("")}function pn(e,t){e.push(" ".repeat(t*$r))}function Ii(e,t,n){for(let[r,s]of Object.entries(t))pn(e,n),Ir(e,r,s,n)}function Ir(e,t,n,r){if(Array.isArray(n)){Ar(e,t,n,r,!1);return}if(it(n)){e.push(Me(t),`:
15
+ `),Ii(e,n,r+1);return}e.push(Me(t),": ",Le(n,Z),`
16
+ `)}function Ar(e,t,n,r,s){if(n.length===0){t!==void 0?e.push(Me(t),`: []
17
17
  `):s?e.push(`[0]:
18
18
  `):e.push(`[]
19
- `);return}if(n.every(fn)){Pr(e,t,n.length,void 0),e.push(" "),e.push(n.map(o=>Ae(o,Z)).join(Z)),e.push(`
19
+ `);return}if(n.every(mn)){Pr(e,t,n.length,void 0),e.push(" "),e.push(n.map(o=>Le(o,Z)).join(Z)),e.push(`
20
20
  `);return}let i=s?void 0:Sl(n);if(i!==void 0){Pr(e,t,n.length,i),e.push(`
21
- `);for(let o of n)mn(e,r+1),e.push(i.map(a=>Ae(o[a],Z)).join(Z)),e.push(`
21
+ `);for(let o of n)pn(e,r+1),e.push(i.map(a=>Le(o[a],Z)).join(Z)),e.push(`
22
22
  `);return}Pr(e,t,n.length,void 0),e.push(`
23
- `);for(let o of n)mn(e,r+1),Rl(e,o,r+1)}function Rl(e,t,n){if(Array.isArray(t)){e.push("- "),Ar(e,void 0,t,n,!0);return}if(st(t)){let r=Object.entries(t);if(r.length===0){e.push(`-
24
- `);return}e.push("- "),Ir(e,r[0][0],r[0][1],n+1);for(let[s,i]of r.slice(1))mn(e,n+1),Ir(e,s,i,n+1);return}e.push("- ",Ae(t,Z),`
25
- `)}function Pr(e,t,n,r){t!==void 0&&e.push(Le(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(Le).join(Z),"}"),e.push(":")}function Sl(e){let t=e[0];if(!st(t))return;let n=Object.keys(t);if(n.length!==0){for(let r of e){if(!st(r))return;let s=Object.keys(r);if(s.length!==n.length||s.some(i=>!fn(r[i]))||n.some(i=>!Object.prototype.hasOwnProperty.call(r,i)))return}return n}}var $r,It=R(()=>{vt();vr();$r=2});var $i=R(()=>{It()});var Ni=R(()=>{vt();It();vr()});var Re=R(()=>{vt();It();It();$i();Ni()});function Mr(e,t,n=Bi){let r=Math.max(0,Math.floor(e)),s=n in Ai?n:Bi,i=Ai[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:Lr(r,i),dollars_saved_low_usd:o==null?null:Lr(o,i),dollars_saved_high_usd:a==null?null:Lr(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:kl}}function Lr(e,t){return xl(Math.max(0,e)/1e6*t)}function $t(e){return`$${e.toFixed(6)}`}function xl(e){return Math.round(e*1e6)/1e6}var Bi,Ai,kl,jr=R(()=>{"use strict";Bi="gpt-5",Ai={"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},kl="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Tl,readFileSync as kw}from"node:fs";import{dirname as vl,join as Pl}from"node:path";function Li(e,t){let n=e;for(let r=0;r<16;r++){let s=Pl(n,t);if(Tl(s))return s;let i=vl(n);if(i===n)break;n=i}return null}function Ol(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function pn(e,t){let n=[];for(let r of e.split(`
26
- `)){let s=r.replace(/\r$/,""),i=s.trim();if(!i||i.startsWith("#"))continue;let o=s.indexOf(":");if(o<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,o).trim();if(!c)continue;let u=s.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(d=>d.key).join(".")===t)return Ol(u)}}var Mi=R(()=>{});import{createConnection as Dl}from"node:net";async function ot(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=Dl(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)}
23
+ `);for(let o of n)pn(e,r+1),Rl(e,o,r+1)}function Rl(e,t,n){if(Array.isArray(t)){e.push("- "),Ar(e,void 0,t,n,!0);return}if(it(t)){let r=Object.entries(t);if(r.length===0){e.push(`-
24
+ `);return}e.push("- "),Ir(e,r[0][0],r[0][1],n+1);for(let[s,i]of r.slice(1))pn(e,n+1),Ir(e,s,i,n+1);return}e.push("- ",Le(t,Z),`
25
+ `)}function Pr(e,t,n,r){t!==void 0&&e.push(Me(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(Me).join(Z),"}"),e.push(":")}function Sl(e){let t=e[0];if(!it(t))return;let n=Object.keys(t);if(n.length!==0){for(let r of e){if(!it(r))return;let s=Object.keys(r);if(s.length!==n.length||s.some(i=>!mn(r[i]))||n.some(i=>!Object.prototype.hasOwnProperty.call(r,i)))return}return n}}var $r,It=R(()=>{Pt();vr();$r=2});var $i=R(()=>{It()});var Ci=R(()=>{Pt();It();vr()});var ee=R(()=>{Pt();It();It();$i();Ci()});function Mr(e,t,n=Bi){let r=Math.max(0,Math.floor(e)),s=n in Ai?n:Bi,i=Ai[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:Lr(r,i),dollars_saved_low_usd:o==null?null:Lr(o,i),dollars_saved_high_usd:a==null?null:Lr(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:kl}}function Lr(e,t){return xl(Math.max(0,e)/1e6*t)}function $t(e){return`$${e.toFixed(6)}`}function xl(e){return Math.round(e*1e6)/1e6}var Bi,Ai,kl,jr=R(()=>{"use strict";Bi="gpt-5",Ai={"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},kl="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Tl,readFileSync as vw}from"node:fs";import{dirname as vl,join as Pl}from"node:path";function Li(e,t){let n=e;for(let r=0;r<16;r++){let s=Pl(n,t);if(Tl(s))return s;let i=vl(n);if(i===n)break;n=i}return null}function Ol(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function gn(e,t){let n=[];for(let r of e.split(`
26
+ `)){let s=r.replace(/\r$/,""),i=s.trim();if(!i||i.startsWith("#"))continue;let o=s.indexOf(":");if(o<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,o).trim();if(!c)continue;let u=s.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(d=>d.key).join(".")===t)return Ol(u)}}var Mi=R(()=>{});import{createConnection as Dl}from"node:net";async function at(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=Dl(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)}
27
27
  `)}),i.on("data",l=>{a+=l.toString("utf8");let d=a.indexOf(`
28
- `);if(d<0)return;let f=a.slice(0,d);u(()=>{try{r(JSON.parse(f))}catch(y){s(y)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var Ur=R(()=>{});import{createHash as Il,randomUUID as qi}from"node:crypto";import{spawn as Ji}from"node:child_process";import{constants as Gr}from"node:fs";import{readFileSync as $l}from"node:fs";import{mkdir as gn,open as Nl,readFile as Wi,rename as Cl,rm as ee,stat as Bl,writeFile as Al}from"node:fs/promises";import{tmpdir as Ll}from"node:os";import{dirname as Se,join as q,resolve as hn}from"node:path";import{fileURLToPath as Hi}from"node:url";function Ee(e){let t=Kl(e)??hn(e),n=Vl(t);return{rootDir:t,socketPath:q(n,"rsp.sock"),pidPath:q(n,"rsp.pid"),lockPath:q(n,"rsp.lock"),wakeLockPath:q(t,".red","tmp","rsp.wake.lock"),summaryPath:q(t,".red","tmp","rsp-status-summary.json"),registryPath:q(t,".red","tmp","rsp-resident.pid.json")}}async function yn(e,t){if(await gn(Se(e.socketPath),{recursive:!0,mode:448}),await Gi(e.socketPath,t))return;await Ui(e,t);let n=await Qi(e.lockPath);if(n)try{if(await Gi(e.socketPath,t))return;await Ui(e,t),await Gl(e.socketPath);let r=Fl(e,t);await ji(e.socketPath,r);return}finally{await n.close(),await ee(e.lockPath,{force:!0})}await ji(e.socketPath)}async function Me(e,t=200){try{return await Ki(e,t)!=null}catch{return!1}}async function Ki(e,t=200){let n=await ot({socketPath:e,timeoutMs:t},{id:qi(),op:"ping"});return n.ok?to(n.value)?{version:Xl(n.value.version)}:{}:null}async function wn(e,t){if(await gn(Se(e.socketPath),{recursive:!0,mode:448}),await Me(e.socketPath,50))return!1;let n=await Qi(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=Zi(t);return Ji(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 zi(e,t){try{await yn(e,t)}finally{await ee(e.wakeLockPath,{force:!0})}}async function Ct(e){try{let t=JSON.parse(await Wi(e,"utf8"));return Zl(t)?t:null}catch{return null}}async function bn(e,t){let n={version:Vi,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 gn(Se(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await Al(r,`${JSON.stringify(n)}
29
- `,{encoding:"utf8",mode:384}),await Cl(r,e)}async function _n(e,t=process.pid){try{let n=await Ct(e);if(n&&n.pid!==t)return;await ee(e,{force:!0})}catch{}}async function Nt(e){let t=await Ct(e.registryPath);if(!t)try{return await Wi(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!at(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await Me(t.socket_path,100);return n&&await Hl(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 Yi(e){let t=await Nt(e);return t.state==="registered-dead"||t.state==="invalid"?(await ee(e.registryPath,{force:!0}),await Nt(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Xi(t.entry.pid),await ee(e.registryPath,{force:!0}),await ee(t.entry.socket_path,{force:!0}),await Nt(e)):t}async function ji(e,t){let n=Date.now()+Ul(),r;for(;Date.now()<n;){if(await Me(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Fr("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Fr("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Fr("resident rsp server did not start",t):"resident rsp server did not start")}function Ul(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:jl}async function Gl(e){await ee(e,{force:!0})}async function Qi(e){await gn(Se(e),{recursive:!0,mode:448});try{return await Nl(e,Gr.O_CREAT|Gr.O_EXCL|Gr.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Fl(e,t){let[n,r]=Zi(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Ji(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=Jl(`${o}${c}`,ql)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function Fr(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:
28
+ `);if(d<0)return;let f=a.slice(0,d);u(()=>{try{r(JSON.parse(f))}catch(y){s(y)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var Ur=R(()=>{});import{createHash as Il,randomUUID as qi}from"node:crypto";import{spawn as Ji}from"node:child_process";import{constants as Gr}from"node:fs";import{readFileSync as $l}from"node:fs";import{mkdir as hn,open as Cl,readFile as Wi,rename as Nl,rm as te,stat as Bl,writeFile as Al}from"node:fs/promises";import{tmpdir as Ll}from"node:os";import{dirname as Ee,join as q,resolve as yn}from"node:path";import{fileURLToPath as Hi}from"node:url";function ke(e){let t=zl(e)??yn(e),n=Kl(t);return{rootDir:t,socketPath:q(n,"rsp.sock"),pidPath:q(n,"rsp.pid"),lockPath:q(n,"rsp.lock"),wakeLockPath:q(t,".red","tmp","rsp.wake.lock"),summaryPath:q(t,".red","tmp","rsp-status-summary.json"),registryPath:q(t,".red","tmp","rsp-resident.pid.json")}}async function wn(e,t){if(await hn(Ee(e.socketPath),{recursive:!0,mode:448}),await Gi(e.socketPath,t))return;await Ui(e,t);let n=await Qi(e.lockPath);if(n)try{if(await Gi(e.socketPath,t))return;await Ui(e,t),await Gl(e.socketPath);let r=Fl(e,t);await ji(e.socketPath,r);return}finally{await n.close(),await te(e.lockPath,{force:!0})}await ji(e.socketPath)}async function je(e,t=200){try{return await Ki(e,t)!=null}catch{return!1}}async function Ki(e,t=200){let n=await at({socketPath:e,timeoutMs:t},{id:qi(),op:"ping"});return n.ok?to(n.value)?{version:Zl(n.value.version)}:{}:null}async function bn(e,t){if(await hn(Ee(e.socketPath),{recursive:!0,mode:448}),await je(e.socketPath,50))return!1;let n=await Qi(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=Zi(t);return Ji(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 zi(e,t){try{await wn(e,t)}finally{await te(e.wakeLockPath,{force:!0})}}async function Nt(e){try{let t=Wl(await Wi(e,"utf8"));return ed(t)?t:null}catch{return null}}async function _n(e,t){let n={version:Vi,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 hn(Ee(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await Al(r,`${T(n)}
29
+ `,{encoding:"utf8",mode:384}),await Nl(r,e)}async function Rn(e,t=process.pid){try{let n=await Nt(e);if(n&&n.pid!==t)return;await te(e,{force:!0})}catch{}}async function Ct(e){let t=await Nt(e.registryPath);if(!t)try{return await Wi(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!ct(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await je(t.socket_path,100);return n&&await Vl(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 Yi(e){let t=await Ct(e);return t.state==="registered-dead"||t.state==="invalid"?(await te(e.registryPath,{force:!0}),await Ct(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Xi(t.entry.pid),await te(e.registryPath,{force:!0}),await te(t.entry.socket_path,{force:!0}),await Ct(e)):t}async function ji(e,t){let n=Date.now()+Ul(),r;for(;Date.now()<n;){if(await je(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Fr("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Fr("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Fr("resident rsp server did not start",t):"resident rsp server did not start")}function Ul(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:jl}async function Gl(e){await te(e,{force:!0})}async function Qi(e){await hn(Ee(e),{recursive:!0,mode:448});try{return await Cl(e,Gr.O_CREAT|Gr.O_EXCL|Gr.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Fl(e,t){let[n,r]=Zi(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Ji(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=Jl(`${o}${c}`,ql)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function Fr(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:
30
30
  ${s}`),r.join(`
31
- `)}function Jl(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}async function Ui(e,t){try{let n=await Ct(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!at(n.pid)){await ee(e.registryPath,{force:!0});return}if(await Me(n.socket_path,100))return;if(eo(t.clientVersion,n.resident_version)&&(await Wl(n.pid,1500),!at(n.pid))){await ee(e.registryPath,{force:!0});return}await Xi(n.pid),await ee(e.registryPath,{force:!0})}catch{}}function at(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Xi(e){if(!at(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!at(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Wl(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!at(e))return;await new Promise(r=>setTimeout(r,50))}}async function Hl(e){if(!e.startsWith("file://"))return!1;try{return await Bl(Hi(e)),!1}catch(t){return t.code==="ENOENT"}}function Zi(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?hn(process.argv[1]):Hi(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Vl(e){let t=Il("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=q(n,"red-skills",t);if(q(s,"rsp.sock").length<Ml)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return q(Ll(),`red-skills-${r}`,t)}function Kl(e){let t=hn(e);for(let n=0;n<32;n++){try{let s=qr(q(t,".git"));if(s!=null)return zl(t,s)??t;if(qr(q(t,".git","HEAD"))!=null||qr(q(t,".red","config.yaml"))!=null)return t}catch{}let r=Se(t);if(r===t)return null;t=r}return null}function zl(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=hn(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?Se(Se(Se(r))):null}function qr(e){try{return $l(e,"utf8")}catch{return null}}async function Gi(e,t){let n=await Ki(e).catch(()=>null);return n?eo(t.clientVersion,n.version)?(await Yl(e,t.clientVersion),await ed(e),!1):!0:!1}async function Yl(e,t){try{await ot({socketPath:e,timeoutMs:200},{id:qi(),op:"handover",clientVersion:t})}catch{}}function eo(e,t){return!e||!t?!1:Ql(e,t)>0}function Ql(e,t){let n=Fi(e),r=Fi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Fi(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 to(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Xl(e){return typeof e=="string"&&e.length>0?e:void 0}function Zl(e){return to(e)&&e.version===Vi&&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 ed(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Me(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Ml,Vi,jl,ql,Rn=R(()=>{Ur();Ml=108,Vi=1,jl=5e3;ql=8*1024});var ao={};N(ao,{DEFAULT_RSP_BYTE_BUDGET:()=>pe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>me,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>de,DEFAULT_RSP_IDLE_MS:()=>xn,DEFAULT_RSP_STORE_PATH:()=>Sn,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>kn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>so,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>io,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>En,DEFAULT_RSP_TTL_DAYS:()=>fe,MIN_RSP_IDLE_MS:()=>oo,resolveRspConfig:()=>ge});import{readFileSync as td}from"node:fs";import{join as no,resolve as ro}from"node:path";function ge(e,t,n){let r=Li(ro(e),no(".red","config.yaml")),s=r?td(r,"utf8"):"",i=pn(s,"rsp.enabled")==="true",o=pn(s,"rsp.proxy.enabled")==="true",a=le(te(s,"rsp.ttlDays"),fe),c=le(Bt(t.RSP_EPHEMERAL_TTL_HOURS)??te(s,"rsp.ephemeralTtlHours"),me),u=le(te(s,"rsp.byteBudget"),pe),l=le(te(s,"rsp.telemetryTtlDays"),En),d=le(te(s,"rsp.telemetryByteBudget")??te(s,"rsp.byteBudget"),kn),f=le(Bt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??te(s,"rsp.telemetryDrainIntervalMs"),so),y=le(Bt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??te(s,"rsp.telemetryDrainTimeoutMs"),io),g=nd(Bt(t.RSP_IDLE_MS)??te(s,"rsp.idleMs"),xn,oo),m=le(Bt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??te(s,"rsp.heavyGitByteThreshold"),de),p=Ee(e).rootDir,k=n??t.RSP_STORE_URI??`file://${no(ro(p),Sn)}`;return{enabled:i,proxyEnabled:o,storeUri:k,ttlDays:a,ephemeralTtlHours:c,byteBudget:u,telemetryTtlDays:l,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:y,idleMs:g,heavyGitByteThreshold:m}}function te(e,t){let n=pn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function le(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function nd(e,t,n){let r=le(e,t);return Math.max(r,n)}function Bt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var de,Sn,fe,me,pe,En,kn,so,io,xn,oo,ne=R(()=>{"use strict";Mi();Rn();de=8*1024,Sn=".red/tmp/red-skills.rdb",fe=7,me=6,pe=64*1024*1024,En=90,kn=4*1024*1024,so=3e4,io=2e3,xn=5*6e4,oo=5e3});var co=R(()=>{"use strict";Ur()});var Lt={};N(Lt,{ResidentRspElisionStore:()=>At,ensureResidentServer:()=>yn,kickResidentServer:()=>wn,pingResident:()=>Me,readResidentRegistry:()=>Ct,removeResidentRegistry:()=>_n,residentRegistryStatus:()=>Nt,resolveResidentPaths:()=>Ee,sweepResidentRegistry:()=>Yi,warmResidentServer:()=>zi,writeResidentRegistry:()=>bn});import{randomUUID as rd}from"node:crypto";function uo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var At,je=R(()=>{"use strict";co();Rn();At=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?uo(n)&&n.status==="expired"?n:!uo(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 yn(this.paths,this.config);let n=await ot(this.paths,{...t,id:rd()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Ft={};N(Ft,{DEFAULT_RSP_BYTE_BUDGET:()=>pe,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>me,DEFAULT_RSP_TTL_DAYS:()=>fe,RSP_ELISION_COLLECTION:()=>U,RspElisionStore:()=>Ut,ensureReddbBinaryFromWarmCache:()=>Eo,storageClassForCommand:()=>Ge});import{createHash as On}from"node:crypto";import{spawnSync as jt}from"node:child_process";import{existsSync as sd}from"node:fs";import{mkdir as id,readFile as Yr,readdir as bo,rename as od,writeFile as ad}from"node:fs/promises";import{homedir as cd}from"node:os";import{basename as Qr,dirname as _o,join as ut}from"node:path";import{fileURLToPath as ud}from"node:url";import{gunzipSync as ld,gzipSync as dd}from"node:zlib";function lo(e,t){return`el:${On("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 he(e){return`record:${e.slice(3)}`}function Ue(e){return`expired:${e.slice(3)}`}function Jr(){return"index:v1"}function fd(e){return`blob:${e}`}function Ge(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":Dn(t)?"re-executable":"ephemeral"}return"ephemeral"}function Mt(e){return In(e.storage_class)?e.storage_class:Ge(e.command)}function md(e){return In(e.storage_class)?e.storage_class:Ge(e.command)}function fo(e){let t=wd(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=md(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 mo(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 ct(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 po(e,t){let n=process.cwd(),r=jt("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=jt("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:pd(n),original_bytes:e.length}:null}function pd(e){let t=Wr(e,["rev-parse","HEAD"])||"unborn",n=Wr(e,["write-tree"])||"no-index",r=Wr(e,["status","--porcelain=v1","-z"])||"";return On("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function Wr(e,t){let n=jt("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function go(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!Dn(n))return null;let r=Ro(process.cwd(),n,e.length);return!r||dt(r)!==dt(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:n,original_bytes:e.length,content_hash:dt(e)}}function Dn(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 dt(e){return On("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function ho(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 Hr(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 yo(e,t,n){let r=dd(e);return{key:fd(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function gd(e){try{let t=ld(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function hd(e){let t=e.object_ids[0];if(!t)return null;let n=jt("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 yd(e){if(!Dn(e.argv))return null;let t=Ro(e.cwd,e.argv,e.original_bytes);return t?dt(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
32
- `,"utf8"),t]):null}function Ro(e,t,n){let r=t[0];if(!r)return null;let s=jt(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 wd(){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 Gt(e){return/^el:[a-f0-9]{12}$/.test(e)}function Tn(e){return/^blob:[a-f0-9]{64}$/.test(e)}function bd(e){if(!ft(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:ft(e.scope)?e.scope:void 0,ranking:ft(e.ranking)?e.ranking:void 0}}}function _d(e){if(!ft(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 ft(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Rd(e){return ft(e)?typeof e.key=="string"&&e.key.trim()!==""?{key:e.key,value:vn(e.value)}:typeof e.record_key=="string"&&e.record_key.trim()!==""?{key:e.record_key,value:vn(e.value)}:lt(e)?{key:he(e.handle),value:e}:Pn(e)&&typeof e.handle=="string"&&Gt(e.handle)?{key:Ue(e.handle),value:e}:null:null}function vn(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}async function Sd(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 bo(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let u=ut(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 Ed(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,s=ft(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 Vr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function lt(e){if(!J(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=xd(e.derivation_recipe),r=Td(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&Tn(s);return e.collection===U&&typeof e.handle=="string"&&Gt(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Xr(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&Tn(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&kd(e.loss)&&(e.storage_class===void 0||In(e.storage_class))}function Kr(e){return!J(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!J(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&Gt(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||In(t.storage_class))&&(n===void 0||typeof n=="string"&&Tn(n))})}function zr(e){return J(e)&&typeof e.key=="string"&&Tn(e.key)&&Xr(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 Pn(e){return J(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function kd(e){return J(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function In(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function xd(e){return J(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 Td(e){return J(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&Dn(e.argv)&&typeof e.original_bytes=="number"&&Xr(e.content_hash)}function Xr(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function J(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function vd(e){try{let t=await Yr(e,"utf8");if(t.trim()==="")return wo();let n=JSON.parse(t);if(Id(n))return{...n,blobs:n.blobs??{}}}catch(t){if(t.code==="ENOENT"){let n=wo();return await ko(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Pd(e){try{let t=await Yr(e);return So(e)?e:Od(t)?Dd(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Od(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Dd(e){return Qr(e)==="red.rdb"?ut(_o(e),"tmp","rsp-elisions.json"):`${e}.json`}function So(e){return Qr(e)==="red-skills.rdb"}async function Eo(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?ut(process.env.XDG_CACHE_HOME,"red-skills","bundles"):ut(cd(),".cache","red-skills","bundles")),t=ut(e,"reddb"),n;try{n=await bo(t)}catch{return}n.sort().reverse();for(let r of n){let s=ut(t,r,process.platform==="win32"?"red.exe":"red");if(sd(s)){process.env.REDDB_BIN=s;return}}}async function ko(e,t){await id(_o(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await ad(n,`${JSON.stringify(t)}
33
- `,"utf8"),await od(n,e)}function wo(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Id(e){return J(e)&&e.version===1&&J(e.records)&&Object.values(e.records).every(lt)&&(e.blobs===void 0||J(e.blobs)&&Object.values(e.blobs).every(zr))&&J(e.tombstones)&&Object.values(e.tombstones).every(Pn)&&Kr(e.index)}function $d(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return ud(e)}var U,Ut,Fe=R(()=>{"use strict";xr();ne();U="rsp_elisions_v1",Ut=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=$d(t.uri),r=await Pd(n),s=new e(r,{uri:t.uri,ttlDays:Vr(t.ttlDays,fe),ephemeralTtlHours:Vr(t.ephemeralTtlHours,me),byteBudget:Vr(t.byteBudget,pe),now:t.now??(()=>new Date)});return So(r)?(await Eo(),s.db=await ln(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await vd(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=lo(r,n),a=he(o),c=Ge(n.command),u=c==="derivable"?po(r,n.command):null,l=c==="re-executable"?go(r,n.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=mo(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),y=dt(r),g=d==="ephemeral"?yo(r,y,i):null,m=ho(r,u,l,g);g&&!this.document.blobs[g.key]&&(this.document.blobs[g.key]=g,this.dirty=!0);let p={collection:U,handle:o,original_bytes:r.length,stored_bytes:m,command:n.command,created_at:i,expires_at:f,loss:n.loss,storage_class:d,content_hash:y,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:g?.key}};return delete this.document.tombstones[Ue(o)],this.document.records[a]=p,this.upsertIndex({handle:o,key:a,bytes:m,raw_bytes:r.length,command:n.command,created_at:i,expires_at:f,storage_class:d,blob_key:g?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!Gt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[he(t)];if(!lt(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:he(r.handle),bytes:Hr(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Mt(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:U,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Mt(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:ct(n),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget,storage_classes:fo(n)}}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(s=>s.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),s=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=ct(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=ct(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[Ue(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[Ue(t)];return Pn(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return hd(t.derivation_recipe);if(t.reexecution_recipe)return yd(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return zr(n)?gd(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 ko(this.path,this.document),this.dirty=!1)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(U)}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(r=>r.name===U);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${U}`);return}if(t.model==="kv")return;if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${U}: unsupported model ${t.model}`);let n=await this.readLegacyElisionTableRows();await this.db.query(`DROP TABLE ${U}`),await this.db.query(`CREATE KV IF NOT EXISTS ${U}`);for(let r of n)await this.kv().put(r.key,r.value);await this.ensureMigratedRedDbIndex(n)}async readLegacyElisionTableRows(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=await this.db.query(`SELECT * FROM ${U}`),n=[];for(let r of t.rows){let s=Rd(r);s&&n.push(s)}return n}async ensureMigratedRedDbIndex(t){if(t.some(s=>s.key===Jr()&&Kr(vn(s.value))))return;let r=t.map(s=>{let i=vn(s.value);return lt(i)?{handle:i.handle,key:he(i.handle),bytes:Hr(i),raw_bytes:i.original_bytes,command:i.command,created_at:i.created_at,expires_at:i.expires_at,storage_class:Mt(i),blob_key:i.blob_key}:null}).filter(s=>s!=null);await this.writeRedDbIndex({version:1,records:r})}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=lo(r,n),a=he(o),c=Ge(n.command),u=c==="derivable"?po(r,n.command):null,l=c==="re-executable"?go(r,n.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=mo(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),y=dt(r),g=d==="ephemeral"?yo(r,y,i):null,m=ho(r,u,l,g);g&&!zr(await this.kvGet(g.key))&&await this.kv().put(g.key,g);let p={collection:U,handle:o,original_bytes:r.length,stored_bytes:m,command:n.command,created_at:i,expires_at:f,loss:n.loss,storage_class:d,content_hash:y,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:g?.key}};await this.kv().delete(Ue(o)),await this.kv().put(a,p);let w=(await this.readRedDbIndex()).records.filter(T=>T.handle!==o);return w.push({handle:o,key:a,bytes:m,raw_bytes:r.length,command:n.command,created_at:i,expires_at:f,storage_class:d,blob_key:g?.key}),await this.pruneRedDb({version:1,records:w},!0),await this.assertRedDbMintPersisted(o,m),o}async getRedDb(t){if(!Gt(t))return null;let n=await this.kvGet(Ue(t));if(Pn(n))return n;let r=await this.kvGet(he(t));if(!lt(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:he(r.handle),bytes:Hr(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Mt(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:U,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Mt(r)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:ct(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:fo(t.records)}}async memory(t,n){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let r=bd(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=_d(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 Sd(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await Yr(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=Qr(s),c=On("sha256").update("resident-memory-v1\0").update(s).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:o,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},d=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),f=Number(d.rows[0]?.red_entity_id??d.rows[0]?.rid);Number.isFinite(f)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,f),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),i=r.rows.map(o=>Ed(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(`
34
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Jr());return Kr(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Jr(),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=ct(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=ct(i)}let a={version:1,records:i};return(n||i.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(i),a}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ue(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(he(t));if(!lt(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 Ht={};N(Ht,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>W,RSP_DECISIONS_COLLECTION:()=>H,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>xe,RSP_TELEMETRY_INDEX_COLLECTION:()=>Wt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>re,RSP_TELEMETRY_SPOOL:()=>$o,appendTelemetryEvent:()=>Je,drainTelemetrySpool:()=>ts,parseTelemetryEvent:()=>ns,readAccountingLaneStats:()=>rs,readTelemetryGainsReport:()=>ss,readTelemetryStats:()=>Bn,takeTelemetrySpool:()=>Gd,telemetrySpoolPath:()=>Cn});import{appendFileSync as Nd,mkdirSync as Cd,readFileSync as Bd}from"node:fs";import{mkdir as Oo,readdir as Ad,readFile as Ld,rename as Do,rm as Io,writeFile as Zr}from"node:fs/promises";import{basename as Md,dirname as Nn,join as es}from"node:path";function Cn(e){return es(e,$o)}async function Je(e,t){try{let n=Cn(e);Cd(Nn(n),{recursive:!0}),Nd(n,`${JSON.stringify(Ud(t))}
35
- `,{encoding:"utf8",mode:384})}catch{}}function Ud(e){return xo(xo(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function xo(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=jd)return e;let i={...e};return delete i[t],ye(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function Gd(e){let t=Cn(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await Oo(Nn(t),{recursive:!0}),await Do(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await Zr(t,"",{flag:"wx"}).catch(()=>{}),(await No(n)).split(/\r?\n/).filter(s=>s.trim()!=="")}finally{await Io(n,{force:!0})}}async function ts(e,t){let n=Cn(e);await Oo(Nn(n),{recursive:!0}).catch(()=>{});for(let s of await Fd(n))await To(n,s,t);let r=`${n}.${process.pid}.${Date.now()}.drain`;try{await Do(n,r)}catch{return}await Zr(n,"",{flag:"wx"}).catch(()=>{}),await To(n,r,t)}async function Fd(e){let t=Nn(e),n=`${Md(e)}.`;return(await Ad(t).catch(()=>[])).filter(s=>s.startsWith(n)&&s.endsWith(".drain")).filter(s=>{let i=Number(s.slice(n.length).split(".")[0]);return!(Number.isInteger(i)&&i!==process.pid&&qd(i))}).sort().map(s=>es(t,s))}function qd(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function To(e,t,n){let r=[];try{let i=(await No(t)).split(/\r?\n/).filter(o=>o.trim()!=="");for(let o of i){try{if(await n(o))continue}catch{}r.push(o)}}finally{if(r.length>0){let s=Jd(e);await Zr(e,`${r.join(`
31
+ `)}function Jl(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function Wl(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return de(t)}}async function Ui(e,t){try{let n=await Nt(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!ct(n.pid)){await te(e.registryPath,{force:!0});return}if(await je(n.socket_path,100))return;if(eo(t.clientVersion,n.resident_version)&&(await Hl(n.pid,1500),!ct(n.pid))){await te(e.registryPath,{force:!0});return}await Xi(n.pid),await te(e.registryPath,{force:!0})}catch{}}function ct(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Xi(e){if(!ct(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!ct(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Hl(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!ct(e))return;await new Promise(r=>setTimeout(r,50))}}async function Vl(e){if(!e.startsWith("file://"))return!1;try{return await Bl(Hi(e)),!1}catch(t){return t.code==="ENOENT"}}function Zi(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?yn(process.argv[1]):Hi(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Kl(e){let t=Il("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=q(n,"red-skills",t);if(q(s,"rsp.sock").length<Ml)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return q(Ll(),`red-skills-${r}`,t)}function zl(e){let t=yn(e);for(let n=0;n<32;n++){try{let s=qr(q(t,".git"));if(s!=null)return Yl(t,s)??t;if(qr(q(t,".git","HEAD"))!=null||qr(q(t,".red","config.yaml"))!=null)return t}catch{}let r=Ee(t);if(r===t)return null;t=r}return null}function Yl(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=yn(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?Ee(Ee(Ee(r))):null}function qr(e){try{return $l(e,"utf8")}catch{return null}}async function Gi(e,t){let n=await Ki(e).catch(()=>null);return n?eo(t.clientVersion,n.version)?(await Ql(e,t.clientVersion),await td(e),!1):!0:!1}async function Ql(e,t){try{await at({socketPath:e,timeoutMs:200},{id:qi(),op:"handover",clientVersion:t})}catch{}}function eo(e,t){return!e||!t?!1:Xl(e,t)>0}function Xl(e,t){let n=Fi(e),r=Fi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Fi(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 to(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zl(e){return typeof e=="string"&&e.length>0?e:void 0}function ed(e){return to(e)&&e.version===Vi&&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 td(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await je(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Ml,Vi,jl,ql,Sn=R(()=>{ee();Ur();Ml=108,Vi=1,jl=5e3;ql=8*1024});var ao={};C(ao,{DEFAULT_RSP_BYTE_BUDGET:()=>he,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>ge,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>me,DEFAULT_RSP_IDLE_MS:()=>Tn,DEFAULT_RSP_STORE_PATH:()=>En,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>xn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>so,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>io,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>kn,DEFAULT_RSP_TTL_DAYS:()=>pe,MIN_RSP_IDLE_MS:()=>oo,resolveRspConfig:()=>ye});import{readFileSync as nd}from"node:fs";import{join as no,resolve as ro}from"node:path";function ye(e,t,n){let r=Li(ro(e),no(".red","config.yaml")),s=r?nd(r,"utf8"):"",i=gn(s,"rsp.enabled")==="true",o=gn(s,"rsp.proxy.enabled")==="true",a=fe(ne(s,"rsp.ttlDays"),pe),c=fe(Bt(t.RSP_EPHEMERAL_TTL_HOURS)??ne(s,"rsp.ephemeralTtlHours"),ge),u=fe(ne(s,"rsp.byteBudget"),he),l=fe(ne(s,"rsp.telemetryTtlDays"),kn),d=fe(ne(s,"rsp.telemetryByteBudget")??ne(s,"rsp.byteBudget"),xn),f=fe(Bt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??ne(s,"rsp.telemetryDrainIntervalMs"),so),y=fe(Bt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??ne(s,"rsp.telemetryDrainTimeoutMs"),io),g=rd(Bt(t.RSP_IDLE_MS)??ne(s,"rsp.idleMs"),Tn,oo),m=fe(Bt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??ne(s,"rsp.heavyGitByteThreshold"),me),p=ke(e).rootDir,k=n??t.RSP_STORE_URI??`file://${no(ro(p),En)}`;return{enabled:i,proxyEnabled:o,storeUri:k,ttlDays:a,ephemeralTtlHours:c,byteBudget:u,telemetryTtlDays:l,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:y,idleMs:g,heavyGitByteThreshold:m}}function ne(e,t){let n=gn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function fe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function rd(e,t,n){let r=fe(e,t);return Math.max(r,n)}function Bt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var me,En,pe,ge,he,kn,xn,so,io,Tn,oo,re=R(()=>{"use strict";Mi();Sn();me=8*1024,En=".red/tmp/red-skills.rdb",pe=7,ge=6,he=64*1024*1024,kn=90,xn=4*1024*1024,so=3e4,io=2e3,Tn=5*6e4,oo=5e3});var co=R(()=>{"use strict";Ur()});var Lt={};C(Lt,{ResidentRspElisionStore:()=>At,ensureResidentServer:()=>wn,kickResidentServer:()=>bn,pingResident:()=>je,readResidentRegistry:()=>Nt,removeResidentRegistry:()=>Rn,residentRegistryStatus:()=>Ct,resolveResidentPaths:()=>ke,sweepResidentRegistry:()=>Yi,warmResidentServer:()=>zi,writeResidentRegistry:()=>_n});import{randomUUID as sd}from"node:crypto";function uo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var At,Ue=R(()=>{"use strict";co();Sn();At=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?uo(n)&&n.status==="expired"?n:!uo(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 wn(this.paths,this.config);let n=await at(this.paths,{...t,id:sd()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Ft={};C(Ft,{DEFAULT_RSP_BYTE_BUDGET:()=>he,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>ge,DEFAULT_RSP_TTL_DAYS:()=>pe,RSP_ELISION_COLLECTION:()=>U,RspElisionStore:()=>Ut,ensureReddbBinaryFromWarmCache:()=>Eo,storageClassForCommand:()=>Fe});import{createHash as Dn}from"node:crypto";import{spawnSync as jt}from"node:child_process";import{existsSync as id}from"node:fs";import{mkdir as od,readFile as Yr,readdir as bo,rename as ad,writeFile as cd}from"node:fs/promises";import{homedir as ud}from"node:os";import{basename as Qr,dirname as _o,join as lt}from"node:path";import{fileURLToPath as ld}from"node:url";import{gunzipSync as dd,gzipSync as fd}from"node:zlib";function lo(e,t){return`el:${Dn("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 we(e){return`record:${e.slice(3)}`}function Ge(e){return`expired:${e.slice(3)}`}function Jr(){return"index:v1"}function md(e){return`blob:${e}`}function Fe(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":In(t)?"re-executable":"ephemeral"}return"ephemeral"}function Mt(e){return $n(e.storage_class)?e.storage_class:Fe(e.command)}function pd(e){return $n(e.storage_class)?e.storage_class:Fe(e.command)}function fo(e){let t=bd(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=pd(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 mo(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 ut(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 po(e,t){let n=process.cwd(),r=jt("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=jt("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:gd(n),original_bytes:e.length}:null}function gd(e){let t=Wr(e,["rev-parse","HEAD"])||"unborn",n=Wr(e,["write-tree"])||"no-index",r=Wr(e,["status","--porcelain=v1","-z"])||"";return Dn("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function Wr(e,t){let n=jt("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function go(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!In(n))return null;let r=Ro(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 In(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 Dn("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function ho(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 Hr(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 yo(e,t,n){let r=fd(e);return{key:md(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function hd(e){try{let t=dd(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function yd(e){let t=e.object_ids[0];if(!t)return null;let n=jt("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 wd(e){if(!In(e.argv))return null;let t=Ro(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
32
+ `,"utf8"),t]):null}function Ro(e,t,n){let r=t[0];if(!r)return null;let s=jt(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 bd(){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 Gt(e){return/^el:[a-f0-9]{12}$/.test(e)}function vn(e){return/^blob:[a-f0-9]{64}$/.test(e)}function _d(e){if(!mt(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:mt(e.scope)?e.scope:void 0,ranking:mt(e.ranking)?e.ranking:void 0}}}function Rd(e){if(!mt(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 mt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Sd(e){return mt(e)?typeof e.key=="string"&&e.key.trim()!==""?{key:e.key,value:Pn(e.value)}:typeof e.record_key=="string"&&e.record_key.trim()!==""?{key:e.record_key,value:Pn(e.value)}:dt(e)?{key:we(e.handle),value:e}:On(e)&&typeof e.handle=="string"&&Gt(e.handle)?{key:Ge(e.handle),value:e}:null:null}function Pn(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}async function Ed(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 bo(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let u=lt(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 kd(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,s=mt(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 Vr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function dt(e){if(!J(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=Td(e.derivation_recipe),r=vd(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&vn(s);return e.collection===U&&typeof e.handle=="string"&&Gt(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||Xr(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&vn(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&xd(e.loss)&&(e.storage_class===void 0||$n(e.storage_class))}function Kr(e){return!J(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!J(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&Gt(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||$n(t.storage_class))&&(n===void 0||typeof n=="string"&&vn(n))})}function zr(e){return J(e)&&typeof e.key=="string"&&vn(e.key)&&Xr(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 On(e){return J(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function xd(e){return J(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function $n(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Td(e){return J(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 vd(e){return J(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&In(e.argv)&&typeof e.original_bytes=="number"&&Xr(e.content_hash)}function Xr(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function J(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Pd(e){try{let t=await Yr(e,"utf8");if(t.trim()==="")return wo();let n=JSON.parse(t);if($d(n))return{...n,blobs:n.blobs??{}}}catch(t){if(t.code==="ENOENT"){let n=wo();return await ko(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Od(e){try{let t=await Yr(e);return So(e)?e:Dd(t)?Id(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Dd(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Id(e){return Qr(e)==="red.rdb"?lt(_o(e),"tmp","rsp-elisions.json"):`${e}.json`}function So(e){return Qr(e)==="red-skills.rdb"}async function Eo(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?lt(process.env.XDG_CACHE_HOME,"red-skills","bundles"):lt(ud(),".cache","red-skills","bundles")),t=lt(e,"reddb"),n;try{n=await bo(t)}catch{return}n.sort().reverse();for(let r of n){let s=lt(t,r,process.platform==="win32"?"red.exe":"red");if(id(s)){process.env.REDDB_BIN=s;return}}}async function ko(e,t){await od(_o(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await cd(n,`${JSON.stringify(t)}
33
+ `,"utf8"),await ad(n,e)}function wo(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function $d(e){return J(e)&&e.version===1&&J(e.records)&&Object.values(e.records).every(dt)&&(e.blobs===void 0||J(e.blobs)&&Object.values(e.blobs).every(zr))&&J(e.tombstones)&&Object.values(e.tombstones).every(On)&&Kr(e.index)}function Cd(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return ld(e)}var U,Ut,qe=R(()=>{"use strict";xr();re();U="rsp_elisions_v1",Ut=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=Cd(t.uri),r=await Od(n),s=new e(r,{uri:t.uri,ttlDays:Vr(t.ttlDays,pe),ephemeralTtlHours:Vr(t.ephemeralTtlHours,ge),byteBudget:Vr(t.byteBudget,he),now:t.now??(()=>new Date)});return So(r)?(await Eo(),s.db=await dn(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Pd(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=lo(r,n),a=we(o),c=Fe(n.command),u=c==="derivable"?po(r,n.command):null,l=c==="re-executable"?go(r,n.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=mo(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),y=ft(r),g=d==="ephemeral"?yo(r,y,i):null,m=ho(r,u,l,g);g&&!this.document.blobs[g.key]&&(this.document.blobs[g.key]=g,this.dirty=!0);let p={collection:U,handle:o,original_bytes:r.length,stored_bytes:m,command:n.command,created_at:i,expires_at:f,loss:n.loss,storage_class:d,content_hash:y,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:g?.key}};return delete this.document.tombstones[Ge(o)],this.document.records[a]=p,this.upsertIndex({handle:o,key:a,bytes:m,raw_bytes:r.length,command:n.command,created_at:i,expires_at:f,storage_class:d,blob_key:g?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!Gt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[we(t)];if(!dt(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:we(r.handle),bytes:Hr(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Mt(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:U,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Mt(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:ut(n),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget,storage_classes:fo(n)}}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(s=>s.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),s=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=ut(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=ut(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[Ge(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[Ge(t)];return On(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return yd(t.derivation_recipe);if(t.reexecution_recipe)return wd(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return zr(n)?hd(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 ko(this.path,this.document),this.dirty=!1)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(U)}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(r=>r.name===U);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${U}`);return}if(t.model==="kv")return;if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${U}: unsupported model ${t.model}`);let n=await this.readLegacyElisionTableRows();await this.db.query(`DROP TABLE ${U}`),await this.db.query(`CREATE KV IF NOT EXISTS ${U}`);for(let r of n)await this.kv().put(r.key,r.value);await this.ensureMigratedRedDbIndex(n)}async readLegacyElisionTableRows(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=await this.db.query(`SELECT * FROM ${U}`),n=[];for(let r of t.rows){let s=Sd(r);s&&n.push(s)}return n}async ensureMigratedRedDbIndex(t){if(t.some(s=>s.key===Jr()&&Kr(Pn(s.value))))return;let r=t.map(s=>{let i=Pn(s.value);return dt(i)?{handle:i.handle,key:we(i.handle),bytes:Hr(i),raw_bytes:i.original_bytes,command:i.command,created_at:i.created_at,expires_at:i.expires_at,storage_class:Mt(i),blob_key:i.blob_key}:null}).filter(s=>s!=null);await this.writeRedDbIndex({version:1,records:r})}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=lo(r,n),a=we(o),c=Fe(n.command),u=c==="derivable"?po(r,n.command):null,l=c==="re-executable"?go(r,n.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=mo(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),y=ft(r),g=d==="ephemeral"?yo(r,y,i):null,m=ho(r,u,l,g);g&&!zr(await this.kvGet(g.key))&&await this.kv().put(g.key,g);let p={collection:U,handle:o,original_bytes:r.length,stored_bytes:m,command:n.command,created_at:i,expires_at:f,loss:n.loss,storage_class:d,content_hash:y,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:g?.key}};await this.kv().delete(Ge(o)),await this.kv().put(a,p);let w=(await this.readRedDbIndex()).records.filter(v=>v.handle!==o);return w.push({handle:o,key:a,bytes:m,raw_bytes:r.length,command:n.command,created_at:i,expires_at:f,storage_class:d,blob_key:g?.key}),await this.pruneRedDb({version:1,records:w},!0),await this.assertRedDbMintPersisted(o,m),o}async getRedDb(t){if(!Gt(t))return null;let n=await this.kvGet(Ge(t));if(On(n))return n;let r=await this.kvGet(we(t));if(!dt(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:we(r.handle),bytes:Hr(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Mt(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:U,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Mt(r)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:ut(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:fo(t.records)}}async memory(t,n){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let r=_d(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Rd(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 Ed(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await Yr(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=Qr(s),c=Dn("sha256").update("resident-memory-v1\0").update(s).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:o,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},d=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),f=Number(d.rows[0]?.red_entity_id??d.rows[0]?.rid);Number.isFinite(f)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,f),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),i=r.rows.map(o=>kd(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(`
34
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Jr());return Kr(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Jr(),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=ut(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=ut(i)}let a={version:1,records:i};return(n||i.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(i),a}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ge(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(we(t));if(!dt(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 Ht={};C(Ht,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>W,RSP_DECISIONS_COLLECTION:()=>H,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Te,RSP_TELEMETRY_INDEX_COLLECTION:()=>Wt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>se,RSP_TELEMETRY_SPOOL:()=>$o,appendTelemetryEvent:()=>We,drainTelemetrySpool:()=>ts,parseTelemetryEvent:()=>ns,readAccountingLaneStats:()=>rs,readTelemetryGainsReport:()=>ss,readTelemetryStats:()=>An,takeTelemetrySpool:()=>Fd,telemetrySpoolPath:()=>Bn});import{appendFileSync as Nd,mkdirSync as Bd,readFileSync as Ad}from"node:fs";import{mkdir as Oo,readdir as Ld,readFile as Md,rename as Do,rm as Io,writeFile as Zr}from"node:fs/promises";import{basename as jd,dirname as Nn,join as es}from"node:path";function Bn(e){return es(e,$o)}async function We(e,t){try{let n=Bn(e);Bd(Nn(n),{recursive:!0}),Nd(n,`${JSON.stringify(Gd(t))}
35
+ `,{encoding:"utf8",mode:384})}catch{}}function Gd(e){return xo(xo(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function xo(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=Ud)return e;let i={...e};return delete i[t],be(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function Fd(e){let t=Bn(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await Oo(Nn(t),{recursive:!0}),await Do(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await Zr(t,"",{flag:"wx"}).catch(()=>{}),(await Co(n)).split(/\r?\n/).filter(s=>s.trim()!=="")}finally{await Io(n,{force:!0})}}async function ts(e,t){let n=Bn(e);await Oo(Nn(n),{recursive:!0}).catch(()=>{});for(let s of await qd(n))await To(n,s,t);let r=`${n}.${process.pid}.${Date.now()}.drain`;try{await Do(n,r)}catch{return}await Zr(n,"",{flag:"wx"}).catch(()=>{}),await To(n,r,t)}async function qd(e){let t=Nn(e),n=`${jd(e)}.`;return(await Ld(t).catch(()=>[])).filter(s=>s.startsWith(n)&&s.endsWith(".drain")).filter(s=>{let i=Number(s.slice(n.length).split(".")[0]);return!(Number.isInteger(i)&&i!==process.pid&&Jd(i))}).sort().map(s=>es(t,s))}function Jd(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function To(e,t,n){let r=[];try{let i=(await Co(t)).split(/\r?\n/).filter(o=>o.trim()!=="");for(let o of i){try{if(await n(o))continue}catch{}r.push(o)}}finally{if(r.length>0){let s=Wd(e);await Zr(e,`${r.join(`
36
36
  `)}
37
- ${s}`,"utf8")}await Io(t,{force:!0})}}function Jd(e){try{return Bd(e,"utf8")}catch{return""}}async function No(e){let t="";for(let n=0;n<5;n++){let r=await Ld(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function ns(e){try{let t=JSON.parse(e);return!Bo(t)||t.collection!==W&&t.collection!==H&&t.collection!==re&&t.collection!==xe?null:t}catch{return null}}async function Bn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await Co(e,s),o=(await qt(e,H)).filter(_=>pt(_)>=s),a=i.filter(_=>I(_.event_type)!=="show"&&I(_.degradation_reason)===""),c=i.filter(_=>I(_.event_type)==="show"),u=i.filter(_=>I(_.degradation_reason)!==""),l=0,d=0,f=0,y=0,g=!1,m=new Map,p=new Map,k=[],w=0,T=0,x=0;for(let _ of a){_.elided===!0&&l++;let D=ye(_.raw_bytes),h=ye(_.emitted_bytes),E=Math.max(0,D-h),Qe=$n(_,"raw"),Xe=$n(_,"emitted"),K=Math.max(0,Qe.tokens-Xe.tokens);g||=(_.estimated===!0||Qe.estimated||Xe.estimated)&&K>0,d+=D,f+=h,y+=K;let F=qe(_).slice(0,10);F&&m.set(F,(m.get(F)??0)+K);let Ce=I(_.command)||"unknown",we=p.get(Ce)??{command:Ce,invocations:0,bytes_saved:0,tokens_saved:0};we.invocations++,we.bytes_saved+=E,we.tokens_saved+=K,p.set(Ce,we);let Ze=Jt(_.wrapper_ms);Ze!=null&&k.push(Ze),w+=ye(_.store_open_count);let et=Jt(_.store_elapsed_ms);et!=null&&(T+=et,x++)}let P=new Map,C=null;for(let _ of u){let D=I(_.degradation_reason)||I(_.reason)||"unknown";P.set(D,(P.get(D)??0)+1);let h=qe(_);(!C||h>C.timestamp)&&(C={timestamp:h,reason:D,command:I(_.command)||"unknown"})}let j=a.length+u.length,V=c.filter(_=>_.hit===!0).length,$=Mr(y,g),rn=Wd(o);return{window_days:r,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:d,emitted_bytes:f,bytes_saved:Math.max(0,d-f),tokens_saved:y,tokens_saved_estimated:$.tokens_saved_estimated,token_estimate_range_pct:$.token_estimate_range_pct,tokens_saved_low:$.tokens_saved_low,tokens_saved_high:$.tokens_saved_high,dollars_saved_estimate_usd:$.dollars_saved_estimate_usd,dollars_saved_low_usd:$.dollars_saved_low_usd,dollars_saved_high_usd:$.dollars_saved_high_usd,pricing_model_family:$.pricing_model_family,pricing_input_usd_per_million_tokens:$.pricing_input_usd_per_million_tokens,pricing_note:$.pricing_note,daily_tokens_saved:[...m.entries()].sort(([_],[D])=>_.localeCompare(D)).map(([_,D])=>({date:_,tokens_saved:D})),top_commands:[...p.values()].sort((_,D)=>D.bytes_saved-_.bytes_saved||D.tokens_saved-_.tokens_saved||_.command.localeCompare(D.command))},health:{degradations:u.length,degradation_rate:j===0?0:u.length/j,show_total:c.length,show_hits:V,show_misses:Math.max(0,c.length-V),show_hit_rate:c.length===0?0:ke(V/c.length),by_reason:[...P.entries()].sort((_,D)=>D[1]-_[1]||_[0].localeCompare(D[0])).map(([_,D])=>({reason:_,count:D})),most_recent:C},latency:{wrapper_ms_p50:mt(k,.5),wrapper_ms_p95:mt(k,.95),store_open_count_sum:w,store_elapsed_ms_sum:ke(T),store_elapsed_ms_avg:x===0?null:ke(T/x)},decisions:rn}}function Wd(e){let t=0,n=0,r=0,s=new Map;for(let i of e){let o=I(i.decision);if(o==="contributed"?t++:o==="failed-open"?r++:n++,o!=="contributed"){let a=I(i.reason)||"unknown";s.set(a,(s.get(a)??0)+1)}}return{seen:e.length,contributed:t,passed:n,failed_open:r,contribution_rate:e.length===0?0:ke(t/e.length),top_pass_reasons:[...s.entries()].sort((i,o)=>o[1]-i[1]||i[0].localeCompare(o[0])).map(([i,o])=>({reason:i,count:o}))}}async function rs(e,t,n=new Date){let s=(await qt(e,W)).filter(i=>pt(i)<=n.getTime()||qe(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=qe(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:Hd(s)}}async function ss(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 Co(e,o),c=a.filter(h=>I(h.event_type)!=="show"&&I(h.degradation_reason)===""),u=a.filter(h=>I(h.degradation_reason)!==""),l=[...c,...u].map(pt).filter(h=>Number.isFinite(h)&&h>0),d=l.length===0?null:Math.min(...l),f=d==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-d)/tf()))),y=[],g=new Map,m=new Map,p=new Map,k=new Map,w=new Map,T=new Map,x=0,P=!1,C=0,j=null,V=0,$=0;for(let h of c){let E=qe(h),Qe=E.slice(0,10),Xe=E.slice(0,16),K=Po(I(h.command)),F=Math.max(0,$n(h,"raw").tokens-$n(h,"emitted").tokens);x+=F,P||=h.estimated===!0&&F>0;let Ce=Math.max(0,ye(h.raw_bytes)-ye(h.emitted_bytes)),we=Jt(h.wrapper_ms);if(we!=null){y.push(we);let ii=g.get(K)??[];ii.push(we),g.set(K,ii)}Qe&&m.set(Qe,(m.get(Qe)??0)+1),Xe&&p.set(Xe,(p.get(Xe)??0)+1);let Ze=Yd(E);Ze&&k.set(Ze,(k.get(Ze)??0)+1);let et=Zd(E);et&&w.set(et,(w.get(et)??0)+F);let sn=T.get(K)??{command_family:K,invocations:0,tokens_saved:0,bytes_saved:0};sn.invocations++,sn.tokens_saved+=F,sn.bytes_saved+=Ce,T.set(K,sn),h.elided===!0&&C++,(h.store_open_count!=null||h.store_elapsed_ms!=null)&&(V++,ye(h.store_open_count)>0&&$++),F>0&&(!j||F>j.tokens_saved||F===j.tokens_saved&&Ce>j.bytes_saved)&&(j={timestamp:E,command_family:K,tokens_saved:F,bytes_saved:Ce})}let rn=u.map(h=>({timestamp:qe(h),command_family:Po(I(h.command)),reason:I(h.degradation_reason)||I(h.reason)||"unknown"})).sort((h,E)=>h.timestamp.localeCompare(E.timestamp)),_=new Map;for(let h of rn)_.set(h.reason,(_.get(h.reason)??0)+1);let D=[...p.entries()].sort((h,E)=>E[1]-h[1]||h[0].localeCompare(E[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:f,since:i,until:s,label:`window: ${r}d, data: ${f}d`,empty:c.length===0&&u.length===0,invocations:c.length,degradations:u.length},latency:{global:vo(y),by_command_family:[...g.entries()].sort((h,E)=>E[1].length-h[1].length||h[0].localeCompare(E[0])).map(([h,E])=>({command_family:h,count:E.length,...vo(E)}))},throughput:{requests_per_day:[...m.entries()].sort(([h],[E])=>h.localeCompare(E)).map(([h,E])=>({date:h,requests:E})),active_minute_avg:p.size===0?null:ke([...p.values()].reduce((h,E)=>h+E,0)/p.size),peak_minute:D?{minute:D[0],requests:D[1]}:null,hour_weekday_heatmap:Qd(k)},savings:{tokens:Mr(x,P),weekly_tokens_saved:ef(w),elision_rate:c.length===0?0:ke(C/c.length),top_commands_by_tokens_saved:[...T.values()].sort((h,E)=>E.tokens_saved-h.tokens_saved||E.bytes_saved-h.bytes_saved||h.command_family.localeCompare(E.command_family)).slice(0,10),top_commands_by_invocation_count:[...T.values()].sort((h,E)=>E.invocations-h.invocations||E.tokens_saved-h.tokens_saved||h.command_family.localeCompare(E.command_family)).slice(0,10),single_biggest_elision:j},health:{degradation_timeline:rn,degradations_by_reason:[..._.entries()].sort((h,E)=>E[1]-h[1]||h[0].localeCompare(E[0])).map(([h,E])=>({reason:h,count:E})),cold_boots:V===0?null:$,warm_hits:V===0?null:Math.max(0,V-$)}}}async function Co(e,t){let n=(await qt(e,W)).filter(i=>pt(i)>=t);if(n.length>0)return n;let r=(await qt(e,re)).filter(i=>pt(i)>=t).map(i=>({...i,event_type:"invocation"})),s=(await qt(e,xe)).filter(i=>pt(i)>=t).map(i=>({...i,event_type:"invocation",degradation_reason:I(i.reason)||"unknown"}));return[...r,...s]}function $n(e,t){let n=Jt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=ye(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function Hd(e){let t=Kd();for(let n of e){if(I(n.event_type)==="show"||I(n.degradation_reason)!==""||n.elided!==!0)continue;let r=Vd(n.storage_class)??Ge(I(n.command));t[r].records+=1;let s=ye(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function Vd(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Kd(){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 qt(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=>zd(r.value)).filter(r=>Bo(r))}function zd(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function pt(e){let t=Date.parse(qe(e));return Number.isFinite(t)?t:0}function qe(e){return I(e.created_at)||I(e.ts)||""}function I(e){return typeof e=="string"?e:""}function ye(e){return Jt(e)??0}function Jt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function mt(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 ke(n[r])}function vo(e){return{wrapper_ms_p50:mt(e,.5),wrapper_ms_p90:mt(e,.9),wrapper_ms_p95:mt(e,.95),wrapper_ms_p99:mt(e,.99)}}function ke(e){return Math.round(e*100)/100}function Po(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 Yd(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Xd(t.getUTCDay())}:${t.getUTCHours()}`:null}function Qd(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 Xd(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function Zd(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 ef(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:ke((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function tf(){return 24*60*60*1e3}function Bo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var $o,W,H,re,xe,Wt,jd,Te=R(()=>{"use strict";Fe();jr();$o=es(".red","tmp","rsp-telemetry.spool.jsonl"),W="rsp_accounting_events_v1",H="rsp_decisions_v1",re="rsp_telemetry_invocations_v1",xe="rsp_telemetry_degradations_v1",Wt="rsp_telemetry_index_v1",jd=64*1024});var us={};N(us,{RSP_WRAPPER_CAPABILITIES:()=>zt,formatCodexHookDecision:()=>Uo,formatHookDecision:()=>jo,hookDecisionFromClaudePreExecJson:()=>af,hookDecisionFromCodexPreExecJson:()=>cf,rewriteCommand:()=>Lo,rewriteTableFromCapabilities:()=>Ao,runClaudePreExecHook:()=>uf,runCodexPreExecHook:()=>lf});import{readFileSync as jn}from"node:fs";import{existsSync as nf}from"node:fs";import{fileURLToPath as rf}from"node:url";function Ao(e){let t=new Map;for(let n of e)t.set(Pf(n.command),["rsp",...n.wrapper]);return t}function Lo(e){let t=bf(e);if(t)return t;let n=yf(e);if(!n)return Ln(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&Qo(r[0]))return Ln(e);let s=of(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return Ln(e);let i=[...zt].sort((c,u)=>u.command.length-c.command.length).find(c=>wf(r,c.command));if(!i)return Ln(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=Ho(n.redirectSuffix);return{kind:"rewrite",command:[...o.map(Kt),...a].join(" "),capabilityId:i.id}}function of(e){let t=e.tokens.map(s=>s.text),n=t[0],r=Ho(e.redirectSuffix);return n==="cat"&&t.length===2&&An(t[1])?{kind:"rewrite",command:["rsp","cat",Kt(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&An(t[1])?{kind:"rewrite",command:["rsp","cat",`--${n}`,"10",Kt(t[1]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&An(t[3])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[2],Kt(t[3]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&An(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),Kt(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function An(e){return!!e&&!e.startsWith("-")}async function af(e,t){return await Mo(e,t)}async function cf(e,t){return await Mo(e,t)}async function Mo(e,t){return(await os(e,t,"pre-exec")).decision}async function os(e,t,n){let r=Xo(e);if(!r.ok){let f={kind:"passthrough",reason:r.reason};return{decision:f,telemetryRoot:t.cwd,event:Vt({hook:n,command:"",decision:f,reason:r.reason})}}let s=r.payload,i=Y(s,["cwd"])||Y(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??df)(i)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:i,event:Vt({hook:n,command:is(s),decision:f,reason:"disabled"})}}let a=is(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:i,event:Vt({hook:n,command:a,decision:f,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=ge(i,process.env).proxyEnabled?Rf(a):(t.rewrite??Lo)(a),d=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let f=l.reason?l:{...l,reason:"unsupported-command"};return{decision:f,telemetryRoot:i,event:Vt({hook:n,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:d})}}return await mf(i,t.wakeResident??ff),{decision:l,telemetryRoot:i,event:Vt({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:d})}}function jo(e){return e.kind==="rewrite"?Go(e.command):{stdout:"",status:0}}function Uo(e){return e.kind==="rewrite"?Go(e.command):{stdout:"",status:0}}function Go(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
38
- `,status:0}}async function uf(e){let t="";try{t=e?jn(e,"utf8"):jn(0,"utf8");let n=await os(t,{cwd:process.cwd()},"claude-pre-exec");Un(n.telemetryRoot,n.event);let r=n.decision;qo("claude-pre-exec",r);let s=jo(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Un(process.cwd(),Fo("claude-pre-exec",t,n)),Jo("claude-pre-exec",n),0}}async function lf(e){let t="";try{t=e?jn(e,"utf8"):jn(0,"utf8");let n=await os(t,{cwd:process.cwd()},"codex-pre-exec");Un(n.telemetryRoot,n.event);let r=n.decision;qo("codex-pre-exec",r);let s=Uo(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Un(process.cwd(),Fo("codex-pre-exec",t,n)),Jo("codex-pre-exec",n),0}}function Un(e,t){Je(e,t).catch(()=>{})}function Vt(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:Yo(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function Fo(e,t,n){let r=Xo(t),s=r.ok?is(r.payload):"";return{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:Yo(s),decision:"failed-open",reason:"hook-exception",error:as(n)}}function df(e){return ge(e,process.env).enabled}async function ff(e){let t=ge(e,process.env);if(!t.enabled||!hf(t))return;let n=Ee(e);await wn(n,gf(t))}async function mf(e,t){try{await Promise.resolve(t(e))}catch(n){pf(n)}}function qo(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
37
+ ${s}`,"utf8")}await Io(t,{force:!0})}}function Wd(e){try{return Ad(e,"utf8")}catch{return""}}async function Co(e){let t="";for(let n=0;n<5;n++){let r=await Md(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function ns(e){try{let t=JSON.parse(e);return!Bo(t)||t.collection!==W&&t.collection!==H&&t.collection!==se&&t.collection!==Te?null:t}catch{return null}}async function An(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await No(e,s),o=(await qt(e,H)).filter(_=>gt(_)>=s),a=i.filter(_=>I(_.event_type)!=="show"&&I(_.degradation_reason)===""),c=i.filter(_=>I(_.event_type)==="show"),u=i.filter(_=>I(_.degradation_reason)!==""),l=0,d=0,f=0,y=0,g=!1,m=new Map,p=new Map,k=[],w=0,v=0,x=0;for(let _ of a){_.elided===!0&&l++;let D=be(_.raw_bytes),h=be(_.emitted_bytes),E=Math.max(0,D-h),Xe=Cn(_,"raw"),Ze=Cn(_,"emitted"),K=Math.max(0,Xe.tokens-Ze.tokens);g||=(_.estimated===!0||Xe.estimated||Ze.estimated)&&K>0,d+=D,f+=h,y+=K;let F=Je(_).slice(0,10);F&&m.set(F,(m.get(F)??0)+K);let Be=I(_.command)||"unknown",_e=p.get(Be)??{command:Be,invocations:0,bytes_saved:0,tokens_saved:0};_e.invocations++,_e.bytes_saved+=E,_e.tokens_saved+=K,p.set(Be,_e);let et=Jt(_.wrapper_ms);et!=null&&k.push(et),w+=be(_.store_open_count);let tt=Jt(_.store_elapsed_ms);tt!=null&&(v+=tt,x++)}let P=new Map,N=null;for(let _ of u){let D=I(_.degradation_reason)||I(_.reason)||"unknown";P.set(D,(P.get(D)??0)+1);let h=Je(_);(!N||h>N.timestamp)&&(N={timestamp:h,reason:D,command:I(_.command)||"unknown"})}let j=a.length+u.length,V=c.filter(_=>_.hit===!0).length,$=Mr(y,g),sn=Hd(o);return{window_days:r,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:d,emitted_bytes:f,bytes_saved:Math.max(0,d-f),tokens_saved:y,tokens_saved_estimated:$.tokens_saved_estimated,token_estimate_range_pct:$.token_estimate_range_pct,tokens_saved_low:$.tokens_saved_low,tokens_saved_high:$.tokens_saved_high,dollars_saved_estimate_usd:$.dollars_saved_estimate_usd,dollars_saved_low_usd:$.dollars_saved_low_usd,dollars_saved_high_usd:$.dollars_saved_high_usd,pricing_model_family:$.pricing_model_family,pricing_input_usd_per_million_tokens:$.pricing_input_usd_per_million_tokens,pricing_note:$.pricing_note,daily_tokens_saved:[...m.entries()].sort(([_],[D])=>_.localeCompare(D)).map(([_,D])=>({date:_,tokens_saved:D})),top_commands:[...p.values()].sort((_,D)=>D.bytes_saved-_.bytes_saved||D.tokens_saved-_.tokens_saved||_.command.localeCompare(D.command))},health:{degradations:u.length,degradation_rate:j===0?0:u.length/j,show_total:c.length,show_hits:V,show_misses:Math.max(0,c.length-V),show_hit_rate:c.length===0?0:xe(V/c.length),by_reason:[...P.entries()].sort((_,D)=>D[1]-_[1]||_[0].localeCompare(D[0])).map(([_,D])=>({reason:_,count:D})),most_recent:N},latency:{wrapper_ms_p50:pt(k,.5),wrapper_ms_p95:pt(k,.95),store_open_count_sum:w,store_elapsed_ms_sum:xe(v),store_elapsed_ms_avg:x===0?null:xe(v/x)},decisions:sn}}function Hd(e){let t=0,n=0,r=0,s=new Map;for(let i of e){let o=I(i.decision);if(o==="contributed"?t++:o==="failed-open"?r++:n++,o!=="contributed"){let a=I(i.reason)||"unknown";s.set(a,(s.get(a)??0)+1)}}return{seen:e.length,contributed:t,passed:n,failed_open:r,contribution_rate:e.length===0?0:xe(t/e.length),top_pass_reasons:[...s.entries()].sort((i,o)=>o[1]-i[1]||i[0].localeCompare(o[0])).map(([i,o])=>({reason:i,count:o}))}}async function rs(e,t,n=new Date){let s=(await qt(e,W)).filter(i=>gt(i)<=n.getTime()||Je(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=Je(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:Vd(s)}}async function ss(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 No(e,o),c=a.filter(h=>I(h.event_type)!=="show"&&I(h.degradation_reason)===""),u=a.filter(h=>I(h.degradation_reason)!==""),l=[...c,...u].map(gt).filter(h=>Number.isFinite(h)&&h>0),d=l.length===0?null:Math.min(...l),f=d==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-d)/nf()))),y=[],g=new Map,m=new Map,p=new Map,k=new Map,w=new Map,v=new Map,x=0,P=!1,N=0,j=null,V=0,$=0;for(let h of c){let E=Je(h),Xe=E.slice(0,10),Ze=E.slice(0,16),K=Po(I(h.command)),F=Math.max(0,Cn(h,"raw").tokens-Cn(h,"emitted").tokens);x+=F,P||=h.estimated===!0&&F>0;let Be=Math.max(0,be(h.raw_bytes)-be(h.emitted_bytes)),_e=Jt(h.wrapper_ms);if(_e!=null){y.push(_e);let ii=g.get(K)??[];ii.push(_e),g.set(K,ii)}Xe&&m.set(Xe,(m.get(Xe)??0)+1),Ze&&p.set(Ze,(p.get(Ze)??0)+1);let et=Qd(E);et&&k.set(et,(k.get(et)??0)+1);let tt=ef(E);tt&&w.set(tt,(w.get(tt)??0)+F);let on=v.get(K)??{command_family:K,invocations:0,tokens_saved:0,bytes_saved:0};on.invocations++,on.tokens_saved+=F,on.bytes_saved+=Be,v.set(K,on),h.elided===!0&&N++,(h.store_open_count!=null||h.store_elapsed_ms!=null)&&(V++,be(h.store_open_count)>0&&$++),F>0&&(!j||F>j.tokens_saved||F===j.tokens_saved&&Be>j.bytes_saved)&&(j={timestamp:E,command_family:K,tokens_saved:F,bytes_saved:Be})}let sn=u.map(h=>({timestamp:Je(h),command_family:Po(I(h.command)),reason:I(h.degradation_reason)||I(h.reason)||"unknown"})).sort((h,E)=>h.timestamp.localeCompare(E.timestamp)),_=new Map;for(let h of sn)_.set(h.reason,(_.get(h.reason)??0)+1);let D=[...p.entries()].sort((h,E)=>E[1]-h[1]||h[0].localeCompare(E[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:f,since:i,until:s,label:`window: ${r}d, data: ${f}d`,empty:c.length===0&&u.length===0,invocations:c.length,degradations:u.length},latency:{global:vo(y),by_command_family:[...g.entries()].sort((h,E)=>E[1].length-h[1].length||h[0].localeCompare(E[0])).map(([h,E])=>({command_family:h,count:E.length,...vo(E)}))},throughput:{requests_per_day:[...m.entries()].sort(([h],[E])=>h.localeCompare(E)).map(([h,E])=>({date:h,requests:E})),active_minute_avg:p.size===0?null:xe([...p.values()].reduce((h,E)=>h+E,0)/p.size),peak_minute:D?{minute:D[0],requests:D[1]}:null,hour_weekday_heatmap:Xd(k)},savings:{tokens:Mr(x,P),weekly_tokens_saved:tf(w),elision_rate:c.length===0?0:xe(N/c.length),top_commands_by_tokens_saved:[...v.values()].sort((h,E)=>E.tokens_saved-h.tokens_saved||E.bytes_saved-h.bytes_saved||h.command_family.localeCompare(E.command_family)).slice(0,10),top_commands_by_invocation_count:[...v.values()].sort((h,E)=>E.invocations-h.invocations||E.tokens_saved-h.tokens_saved||h.command_family.localeCompare(E.command_family)).slice(0,10),single_biggest_elision:j},health:{degradation_timeline:sn,degradations_by_reason:[..._.entries()].sort((h,E)=>E[1]-h[1]||h[0].localeCompare(E[0])).map(([h,E])=>({reason:h,count:E})),cold_boots:V===0?null:$,warm_hits:V===0?null:Math.max(0,V-$)}}}async function No(e,t){let n=(await qt(e,W)).filter(i=>gt(i)>=t);if(n.length>0)return n;let r=(await qt(e,se)).filter(i=>gt(i)>=t).map(i=>({...i,event_type:"invocation"})),s=(await qt(e,Te)).filter(i=>gt(i)>=t).map(i=>({...i,event_type:"invocation",degradation_reason:I(i.reason)||"unknown"}));return[...r,...s]}function Cn(e,t){let n=Jt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=be(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function Vd(e){let t=zd();for(let n of e){if(I(n.event_type)==="show"||I(n.degradation_reason)!==""||n.elided!==!0)continue;let r=Kd(n.storage_class)??Fe(I(n.command));t[r].records+=1;let s=be(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function Kd(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function zd(){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 qt(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=>Yd(r.value)).filter(r=>Bo(r))}function Yd(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function gt(e){let t=Date.parse(Je(e));return Number.isFinite(t)?t:0}function Je(e){return I(e.created_at)||I(e.ts)||""}function I(e){return typeof e=="string"?e:""}function be(e){return Jt(e)??0}function Jt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function pt(e,t){if(e.length===0)return null;let n=[...e].sort((s,i)=>s-i),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return xe(n[r])}function vo(e){return{wrapper_ms_p50:pt(e,.5),wrapper_ms_p90:pt(e,.9),wrapper_ms_p95:pt(e,.95),wrapper_ms_p99:pt(e,.99)}}function xe(e){return Math.round(e*100)/100}function Po(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 Qd(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${Zd(t.getUTCDay())}:${t.getUTCHours()}`:null}function Xd(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 Zd(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function ef(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 tf(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:xe((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function nf(){return 24*60*60*1e3}function Bo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var $o,W,H,se,Te,Wt,Ud,ve=R(()=>{"use strict";qe();jr();$o=es(".red","tmp","rsp-telemetry.spool.jsonl"),W="rsp_accounting_events_v1",H="rsp_decisions_v1",se="rsp_telemetry_invocations_v1",Te="rsp_telemetry_degradations_v1",Wt="rsp_telemetry_index_v1",Ud=64*1024});var us={};C(us,{RSP_WRAPPER_CAPABILITIES:()=>zt,formatCodexHookDecision:()=>Uo,formatHookDecision:()=>jo,hookDecisionFromClaudePreExecJson:()=>cf,hookDecisionFromCodexPreExecJson:()=>uf,rewriteCommand:()=>Lo,rewriteTableFromCapabilities:()=>Ao,runClaudePreExecHook:()=>lf,runCodexPreExecHook:()=>df});import{readFileSync as Un}from"node:fs";import{existsSync as rf}from"node:fs";import{fileURLToPath as sf}from"node:url";function Ao(e){let t=new Map;for(let n of e)t.set(Of(n.command),["rsp",...n.wrapper]);return t}function Lo(e){let t=_f(e);if(t)return t;let n=wf(e);if(!n)return Mn(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&Qo(r[0]))return Mn(e);let s=af(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return Mn(e);let i=[...zt].sort((c,u)=>u.command.length-c.command.length).find(c=>bf(r,c.command));if(!i)return Mn(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=Ho(n.redirectSuffix);return{kind:"rewrite",command:[...o.map(Kt),...a].join(" "),capabilityId:i.id}}function af(e){let t=e.tokens.map(s=>s.text),n=t[0],r=Ho(e.redirectSuffix);return n==="cat"&&t.length===2&&Ln(t[1])?{kind:"rewrite",command:["rsp","cat",Kt(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&Ln(t[1])?{kind:"rewrite",command:["rsp","cat",`--${n}`,"10",Kt(t[1]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Ln(t[3])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[2],Kt(t[3]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Ln(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),Kt(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function Ln(e){return!!e&&!e.startsWith("-")}async function cf(e,t){return await Mo(e,t)}async function uf(e,t){return await Mo(e,t)}async function Mo(e,t){return(await os(e,t,"pre-exec")).decision}async function os(e,t,n){let r=Xo(e);if(!r.ok){let f={kind:"passthrough",reason:r.reason};return{decision:f,telemetryRoot:t.cwd,event:Vt({hook:n,command:"",decision:f,reason:r.reason})}}let s=r.payload,i=Y(s,["cwd"])||Y(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??ff)(i)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:i,event:Vt({hook:n,command:is(s),decision:f,reason:"disabled"})}}let a=is(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:i,event:Vt({hook:n,command:a,decision:f,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=ye(i,process.env).proxyEnabled?Sf(a):(t.rewrite??Lo)(a),d=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let f=l.reason?l:{...l,reason:"unsupported-command"};return{decision:f,telemetryRoot:i,event:Vt({hook:n,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:d})}}return await pf(i,t.wakeResident??mf),{decision:l,telemetryRoot:i,event:Vt({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:d})}}function jo(e){return e.kind==="rewrite"?Go(e.command):{stdout:"",status:0}}function Uo(e){return e.kind==="rewrite"?Go(e.command):{stdout:"",status:0}}function Go(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
38
+ `,status:0}}async function lf(e){let t="";try{t=e?Un(e,"utf8"):Un(0,"utf8");let n=await os(t,{cwd:process.cwd()},"claude-pre-exec");Gn(n.telemetryRoot,n.event);let r=n.decision;qo("claude-pre-exec",r);let s=jo(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Gn(process.cwd(),Fo("claude-pre-exec",t,n)),Jo("claude-pre-exec",n),0}}async function df(e){let t="";try{t=e?Un(e,"utf8"):Un(0,"utf8");let n=await os(t,{cwd:process.cwd()},"codex-pre-exec");Gn(n.telemetryRoot,n.event);let r=n.decision;qo("codex-pre-exec",r);let s=Uo(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Gn(process.cwd(),Fo("codex-pre-exec",t,n)),Jo("codex-pre-exec",n),0}}function Gn(e,t){We(e,t).catch(()=>{})}function Vt(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:Yo(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function Fo(e,t,n){let r=Xo(t),s=r.ok?is(r.payload):"";return{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:Yo(s),decision:"failed-open",reason:"hook-exception",error:as(n)}}function ff(e){return ye(e,process.env).enabled}async function mf(e){let t=ye(e,process.env);if(!t.enabled||!yf(t))return;let n=ke(e);await bn(n,hf(t))}async function pf(e,t){try{await Promise.resolve(t(e))}catch(n){gf(n)}}function qo(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
39
39
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
40
40
  `)}}function Jo(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${as(t)}
41
- `)}function pf(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${as(e)}
42
- `)}function as(e){return e instanceof Error?e.name||"Error":typeof e}function gf(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 hf(e){if(!e.storeUri.startsWith("file://"))return!0;try{return nf(rf(e.storeUri))}catch{return!1}}function is(e){return Y(e,["tool_input","command"])||Y(e,["tool_input","cmd"])||Y(e,["tool_input","args","command"])||Y(e,["input","command"])||Y(e,["input","cmd"])||Y(e,["arguments","command"])||Y(e,["arguments","cmd"])||Y(e,["command"])||Y(e,["cmd"])}function yf(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=Wo(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&Qo(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 Wo(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 wf(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function bf(e){let t=Wo(e.trim()).map(n=>n.text);return Mn(t)?{kind:"passthrough",reason:sf}:null}function Mn(e){return e[0]==="gh"&&e.some(_f)}function _f(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Ho(e){return e.map(t=>t.text)}function Kt(e){return/[^\w@%+=:,./-]/.test(e)?cs(e):e}function Rf(e){let t=Sf(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${cs(e.trim())}`,capabilityId:"proxy:universal"}}function Sf(e){let t=e.trim();if(!t)return"missing-command";if(Ko(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=Fn(Gn(t)[0]??"")[0];if(n==="rsp")return"opt-out";if(n&&Vo.has(n))return"interactive"}function Ln(e){let t=e.trim();return Ef(t)?{kind:"rewrite",command:`rsp exec -- ${cs(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Ef(e){return!(!e||!kf(e)||!xf(e)||Ko(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Tf(e,"rsp")||zo(e,Vo)||vf(e))}function kf(e){return/&&|[;|]/.test(e)}function Ko(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 xf(e){return Gn(e).some(t=>{let n=Fn(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 zo(e,t){return Gn(e).some(n=>{let r=Fn(n)[0];return r?t.has(r):!1})}function Tf(e,t){return zo(e,new Set([t]))}function vf(e){return Gn(e).some(t=>{let n=Fn(t);return n[0]==="grep"&&n.includes("-q")})}function Gn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Fn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function cs(e){return`'${e.replace(/'/g,"'\\''")}'`}function Yo(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Mn(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Mn(t)&&t[1]?`gh ${t[1]} json-jq`:Mn(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 Qo(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Pf(e){return e.join("\0")}function Xo(e){try{let t=JSON.parse(e);return Zo(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Y(e,t){let n=e;for(let r of t){if(!Zo(n))return"";n=n[r]}return typeof n=="string"?n:""}function Zo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var zt,gb,sf,Vo,qn=R(()=>{"use strict";ne();je();Te();zt=[{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"]}],gb=Ao(zt),sf="lossless-gh-json-jq";Vo=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var ds={};N(ds,{NORMALIZATION_ALLOWLIST:()=>ca,NORMALIZE_ANSI:()=>na,NORMALIZE_BLANK_LINES:()=>ia,NORMALIZE_CR_PROGRESS:()=>ra,NORMALIZE_JSON_TOON:()=>aa,NORMALIZE_TRAILING_WHITESPACE:()=>sa,formatCodexNormalizeDecision:()=>ma,formatNormalizeDecision:()=>fa,hookDecisionFromClaudePostExecJson:()=>ua,hookDecisionFromCodexPostExecJson:()=>la,normalizeOutput:()=>gt,renderGenericJsonLane:()=>Yt,runClaudePostExecHook:()=>If,runCodexPostExecHook:()=>$f,transcodeJsonToToon:()=>oa});import{readFileSync as Jn}from"node:fs";function oa(e,t){let n=t?.encode??v,r=t?.decode??Dt,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 ls(i,a)?o.trimEnd():e}async function Yt(e,t={}){let n=Af(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:v(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,i=ta(t.minTokens,Of),o=ta(t.maxItems,Df);if(!(s>o&&Gf(e)>=i))return{output:v(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c=Lf(r,o),u={items:c},l=`items: ${c.length} of ${s} kept`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let f=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,y=v(u).trimEnd();return{output:[l,f,y].filter(Boolean).join(`
43
- `),detected:!0,lossy:!0,totalItems:s,keptItems:c.length,handle:d}}function gt(e){let t=e;for(let n of ca)t=n.apply(t);return t}async function ua(e,t){return await da(e,t)}async function la(e,t){return await da(e,t)}async function da(e,t){let n=Bf(e),r=Ff(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Cf)(r))return{kind:"passthrough",reason:"disabled"};let i=qf(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??gt)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function fa(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function ma(e){return{stdout:"",status:0}}async function If(e){let t=e?Jn(e,"utf8"):Jn(0,"utf8"),n=await ua(t,{cwd:process.cwd()}),r=fa(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function $f(e){let t=e?Jn(e,"utf8"):Jn(0,"utf8"),n=await la(t,{cwd:process.cwd()}),r=ma(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Nf(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&&ea(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&ea(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function ea(e){return e>=32&&e<=63}function Cf(e){return ge(e,process.env).enabled}function Bf(e){try{let t=JSON.parse(e);return ve(t)?t:{}}catch{return{}}}function Af(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return ve(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 Lf(e,t){if(e.length<=t)return[...e];let n=new Set,r=Math.max(1,Math.floor(t*.2));for(let i=0;i<r;i++)n.add(i),n.add(e.length-1-i);for(let i=0;i<e.length;i++)Mf(e[i])&&n.add(i);for(let i of jf(e))n.add(i);for(let i of Uf(e))n.add(i);let s=Math.max(1,Math.floor(e.length/Math.max(1,t-n.size)));for(let i=0;n.size<t&&i<s;i++)for(let o=i;n.size<t&&o<e.length;o+=s)n.add(o);return[...n].sort((i,o)=>i-o).slice(0,t).map(i=>e[i])}function Mf(e){if(!ve(e))return!1;let t=e.level;if(typeof t=="string"&&t.toLowerCase()==="error"||Object.prototype.hasOwnProperty.call(e,"error")&&e.error)return!0;let n=e.status;return typeof n=="number"&&n>=400}function jf(e){let t=new Map;e.forEach((r,s)=>{if(ve(r))for(let[i,o]of Object.entries(r)){if(typeof o!="number"||!Number.isFinite(o))continue;let a=t.get(i)??[];a.push({index:s,value:o}),t.set(i,a)}});let n=new Set;for(let r of t.values()){if(r.length<3)continue;let s=r.reduce((a,c)=>a+c.value,0)/r.length,i=r.reduce((a,c)=>a+Math.pow(c.value-s,2),0)/r.length,o=Math.sqrt(i);if(o!==0)for(let a of r)Math.abs(a.value-s)>o*2&&n.add(a.index)}return[...n]}function Uf(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],s=e[n];if(!(!ve(r)||!ve(s)))for(let[i,o]of Object.entries(s)){if(typeof o!="number"||!Number.isFinite(o))continue;let a=r[i];typeof a!="number"||!Number.isFinite(a)||(a===0?Math.abs(o)>10:Math.abs((o-a)/a)>=2)&&t.add(n)}}return[...t]}function Gf(e){return Math.ceil(e.length/4)}function ta(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function Ff(e,t){let n=e;for(let r of t){if(!ve(n))return"";n=n[r]}return typeof n=="string"?n:""}function qf(e,t){let n=e[t];return ve(n)?n:null}function ve(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ls(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)=>ls(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)&&ls(n[o],r[o]))}var na,ra,sa,ia,aa,Of,Df,ca,Qt=R(()=>{"use strict";Re();ne();na={id:"ansi",apply:Nf},ra={id:"cr-progress",apply:e=>e.split(`
41
+ `)}function gf(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${as(e)}
42
+ `)}function as(e){return e instanceof Error?e.name||"Error":typeof e}function hf(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 yf(e){if(!e.storeUri.startsWith("file://"))return!0;try{return rf(sf(e.storeUri))}catch{return!1}}function is(e){return Y(e,["tool_input","command"])||Y(e,["tool_input","cmd"])||Y(e,["tool_input","args","command"])||Y(e,["input","command"])||Y(e,["input","cmd"])||Y(e,["arguments","command"])||Y(e,["arguments","cmd"])||Y(e,["command"])||Y(e,["cmd"])}function wf(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=Wo(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&Qo(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 Wo(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 bf(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function _f(e){let t=Wo(e.trim()).map(n=>n.text);return jn(t)?{kind:"passthrough",reason:of}:null}function jn(e){return e[0]==="gh"&&e.some(Rf)}function Rf(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Ho(e){return e.map(t=>t.text)}function Kt(e){return/[^\w@%+=:,./-]/.test(e)?cs(e):e}function Sf(e){let t=Ef(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${cs(e.trim())}`,capabilityId:"proxy:universal"}}function Ef(e){let t=e.trim();if(!t)return"missing-command";if(Ko(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=qn(Fn(t)[0]??"")[0];if(n==="rsp")return"opt-out";if(n&&Vo.has(n))return"interactive"}function Mn(e){let t=e.trim();return kf(t)?{kind:"rewrite",command:`rsp exec -- ${cs(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function kf(e){return!(!e||!xf(e)||!Tf(e)||Ko(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||vf(e,"rsp")||zo(e,Vo)||Pf(e))}function xf(e){return/&&|[;|]/.test(e)}function Ko(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 Tf(e){return Fn(e).some(t=>{let n=qn(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 zo(e,t){return Fn(e).some(n=>{let r=qn(n)[0];return r?t.has(r):!1})}function vf(e,t){return zo(e,new Set([t]))}function Pf(e){return Fn(e).some(t=>{let n=qn(t);return n[0]==="grep"&&n.includes("-q")})}function Fn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function qn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function cs(e){return`'${e.replace(/'/g,"'\\''")}'`}function Yo(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:jn(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:jn(t)&&t[1]?`gh ${t[1]} json-jq`:jn(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 Qo(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Of(e){return e.join("\0")}function Xo(e){try{let t=JSON.parse(e);return Zo(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Y(e,t){let n=e;for(let r of t){if(!Zo(n))return"";n=n[r]}return typeof n=="string"?n:""}function Zo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var zt,bb,of,Vo,Jn=R(()=>{"use strict";re();Ue();ve();zt=[{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"]}],bb=Ao(zt),of="lossless-gh-json-jq";Vo=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var ds={};C(ds,{NORMALIZATION_ALLOWLIST:()=>ca,NORMALIZE_ANSI:()=>na,NORMALIZE_BLANK_LINES:()=>ia,NORMALIZE_CR_PROGRESS:()=>ra,NORMALIZE_JSON_TOON:()=>aa,NORMALIZE_TRAILING_WHITESPACE:()=>sa,formatCodexNormalizeDecision:()=>ma,formatNormalizeDecision:()=>fa,hookDecisionFromClaudePostExecJson:()=>ua,hookDecisionFromCodexPostExecJson:()=>la,normalizeOutput:()=>ht,renderGenericJsonLane:()=>Yt,runClaudePostExecHook:()=>$f,runCodexPostExecHook:()=>Cf,transcodeJsonToToon:()=>oa});import{readFileSync as Wn}from"node:fs";function oa(e,t){let n=t?.encode??T,r=t?.decode??de,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 ls(i,a)?o.trimEnd():e}async function Yt(e,t={}){let n=Lf(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:T(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,i=ta(t.minTokens,Df),o=ta(t.maxItems,If);if(!(s>o&&Ff(e)>=i))return{output:T(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c=Mf(r,o),u={items:c},l=`items: ${c.length} of ${s} kept`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let f=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,y=T(u).trimEnd();return{output:[l,f,y].filter(Boolean).join(`
43
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:c.length,handle:d}}function ht(e){let t=e;for(let n of ca)t=n.apply(t);return t}async function ua(e,t){return await da(e,t)}async function la(e,t){return await da(e,t)}async function da(e,t){let n=Af(e),r=qf(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Bf)(r))return{kind:"passthrough",reason:"disabled"};let i=Jf(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??ht)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function fa(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function ma(e){return{stdout:"",status:0}}async function $f(e){let t=e?Wn(e,"utf8"):Wn(0,"utf8"),n=await ua(t,{cwd:process.cwd()}),r=fa(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function Cf(e){let t=e?Wn(e,"utf8"):Wn(0,"utf8"),n=await la(t,{cwd:process.cwd()}),r=ma(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Nf(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&&ea(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&ea(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function ea(e){return e>=32&&e<=63}function Bf(e){return ye(e,process.env).enabled}function Af(e){try{let t=JSON.parse(e);return Pe(t)?t:{}}catch{return{}}}function Lf(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Pe(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 Mf(e,t){if(e.length<=t)return[...e];let n=new Set,r=Math.max(1,Math.floor(t*.2));for(let i=0;i<r;i++)n.add(i),n.add(e.length-1-i);for(let i=0;i<e.length;i++)jf(e[i])&&n.add(i);for(let i of Uf(e))n.add(i);for(let i of Gf(e))n.add(i);let s=Math.max(1,Math.floor(e.length/Math.max(1,t-n.size)));for(let i=0;n.size<t&&i<s;i++)for(let o=i;n.size<t&&o<e.length;o+=s)n.add(o);return[...n].sort((i,o)=>i-o).slice(0,t).map(i=>e[i])}function jf(e){if(!Pe(e))return!1;let t=e.level;if(typeof t=="string"&&t.toLowerCase()==="error"||Object.prototype.hasOwnProperty.call(e,"error")&&e.error)return!0;let n=e.status;return typeof n=="number"&&n>=400}function Uf(e){let t=new Map;e.forEach((r,s)=>{if(Pe(r))for(let[i,o]of Object.entries(r)){if(typeof o!="number"||!Number.isFinite(o))continue;let a=t.get(i)??[];a.push({index:s,value:o}),t.set(i,a)}});let n=new Set;for(let r of t.values()){if(r.length<3)continue;let s=r.reduce((a,c)=>a+c.value,0)/r.length,i=r.reduce((a,c)=>a+Math.pow(c.value-s,2),0)/r.length,o=Math.sqrt(i);if(o!==0)for(let a of r)Math.abs(a.value-s)>o*2&&n.add(a.index)}return[...n]}function Gf(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],s=e[n];if(!(!Pe(r)||!Pe(s)))for(let[i,o]of Object.entries(s)){if(typeof o!="number"||!Number.isFinite(o))continue;let a=r[i];typeof a!="number"||!Number.isFinite(a)||(a===0?Math.abs(o)>10:Math.abs((o-a)/a)>=2)&&t.add(n)}}return[...t]}function Ff(e){return Math.ceil(e.length/4)}function ta(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function qf(e,t){let n=e;for(let r of t){if(!Pe(n))return"";n=n[r]}return typeof n=="string"?n:""}function Jf(e,t){let n=e[t];return Pe(n)?n:null}function Pe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ls(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)=>ls(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)&&ls(n[o],r[o]))}var na,ra,sa,ia,aa,Df,If,ca,Qt=R(()=>{"use strict";ee();re();na={id:"ansi",apply:Nf},ra={id:"cr-progress",apply:e=>e.split(`
44
44
  `).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(`
45
45
  `)},sa={id:"trailing-whitespace",apply:e=>e.split(`
46
46
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
47
47
  `)},ia={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
48
48
 
49
- `)};aa={id:"json-to-toon",apply:e=>oa(e)},Of=200,Df=15;ca=[na,ra,sa,ia,aa]});var Ra={};N(Ra,{REPO_STORE_PATH:()=>fs,mergeRspBlock:()=>wa,provisionRspRepoStore:()=>Qf});import{constants as Jf}from"node:fs";import{access as Wf,copyFile as Hf,mkdir as pa,readFile as Vf,writeFile as ga}from"node:fs/promises";import{dirname as Kf,join as Wn,resolve as zf}from"node:path";async function Qf(e,t={}){let n=zf(e),r=Wn(n,".red"),s=Wn(r,"config.yaml"),i=Wn(n,fs);await pa(r,{recursive:!0}),await pa(Kf(i),{recursive:!0});let o="";try{o=await Vf(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=wa(o,{enabled:!0,ttlDays:t.ttlDays??fe,ephemeralTtlHours:t.ephemeralTtlHours??me,byteBudget:t.byteBudget??pe,heavyGitByteThreshold:t.heavyGitByteThreshold??de}),c=a!==o;c&&await ga(s,a,"utf8");let u=!await ya(i),l=!1;if(u){let f=Wn(n,Yf);if(await ya(f))await Hf(f,i),l=!0;else{let{RspElisionStore:y}=await Promise.resolve().then(()=>(Fe(),Ft)),g=process.env.REDDB_BIN;try{await(await y.open({uri:`file://${i}`,ttlDays:t.ttlDays??fe,ephemeralTtlHours:t.ephemeralTtlHours??me,byteBudget:t.byteBudget??pe,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=Xf(a,fs);return d!==a&&await ga(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l}}function wa(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Hn(t.ttlDays,fe)}`,` ephemeralTtlHours: ${Hn(t.ephemeralTtlHours,me)}`,` byteBudget: ${Hn(t.byteBudget,pe)}`,` heavyGitByteThreshold: ${Hn(t.heavyGitByteThreshold,de)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
49
+ `)};aa={id:"json-to-toon",apply:e=>oa(e)},Df=200,If=15;ca=[na,ra,sa,ia,aa]});var Ra={};C(Ra,{REPO_STORE_PATH:()=>fs,mergeRspBlock:()=>wa,provisionRspRepoStore:()=>Xf});import{constants as Wf}from"node:fs";import{access as Hf,copyFile as Vf,mkdir as pa,readFile as Kf,writeFile as ga}from"node:fs/promises";import{dirname as zf,join as Hn,resolve as Yf}from"node:path";async function Xf(e,t={}){let n=Yf(e),r=Hn(n,".red"),s=Hn(r,"config.yaml"),i=Hn(n,fs);await pa(r,{recursive:!0}),await pa(zf(i),{recursive:!0});let o="";try{o=await Kf(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=wa(o,{enabled:!0,ttlDays:t.ttlDays??pe,ephemeralTtlHours:t.ephemeralTtlHours??ge,byteBudget:t.byteBudget??he,heavyGitByteThreshold:t.heavyGitByteThreshold??me}),c=a!==o;c&&await ga(s,a,"utf8");let u=!await ya(i),l=!1;if(u){let f=Hn(n,Qf);if(await ya(f))await Vf(f,i),l=!0;else{let{RspElisionStore:y}=await Promise.resolve().then(()=>(qe(),Ft)),g=process.env.REDDB_BIN;try{await(await y.open({uri:`file://${i}`,ttlDays:t.ttlDays??pe,ephemeralTtlHours:t.ephemeralTtlHours??ge,byteBudget:t.byteBudget??he,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=Zf(a,fs);return d!==a&&await ga(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l}}function wa(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Vn(t.ttlDays,pe)}`,` ephemeralTtlHours: ${Vn(t.ephemeralTtlHours,ge)}`,` byteBudget: ${Vn(t.byteBudget,he)}`,` heavyGitByteThreshold: ${Vn(t.heavyGitByteThreshold,me)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
50
50
  `),s=ba(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
51
51
  `)}
52
52
  `}let i=ms(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
53
53
  `)}
54
- `}function ba(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(gs(r)&&ps(r)===0&&_a(r)===t)return n}return-1}function ms(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(gs(e[s])&&ps(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function ps(e){return(e.match(/^ */)?.[0]??"").length}function gs(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function _a(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Hn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Xf(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
54
+ `}function ba(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(gs(r)&&ps(r)===0&&_a(r)===t)return n}return-1}function ms(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(gs(e[s])&&ps(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function ps(e){return(e.match(/^ */)?.[0]??"").length}function gs(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function _a(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Vn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Zf(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
55
55
  `),r=ba(n,"plugins");if(r===-1)return e;let s=ms(n,r,0),i=ha(n,"memory",r+1,s,2);if(i===-1)return e;let o=ms(n,i,2),a=[...n],c=ha(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
56
56
  `)}
57
- `}function ha(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(gs(o)&&ps(o)===s&&_a(o)===t)return i}return-1}async function ya(e){try{return await Wf(e,Jf.F_OK),!0}catch{return!1}}var fs,Yf,Sa=R(()=>{"use strict";ne();fs=Sn,Yf=".red/memory/graph.rdb"});var Pa={};N(Pa,{runRspMcpServer:()=>em});import{createInterface as Zf}from"node:readline";async function em(){let e=ge(process.cwd(),process.env),t=Zf({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 tm(r,e);Ta({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Ta({jsonrpc:"2.0",id:typeof va(n)?.id>"u"?null:va(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function tm(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:xa(t)}]};if(!t.enabled)return{content:[{type:"text",text:xa(t)}],isError:!0};let r=am(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.accountingStats(t.telemetryByteBudget))}]};if(n?.name==="rsp_show"){let s=String(n.arguments?.handle??""),i=await r.get(s);return i?"status"in i?{content:[{type:"text",text:JSON.stringify(i)}],isError:!0}:{content:[{type:"text",text:i.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await nm(n.arguments,r)}]}}return{}}async function nm(e,t){let n=rm(e?.payload),r=sm(e?.level),s=await Yt(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return Ea(s.output);let i=gt(n);if(r==="brief"&&Buffer.byteLength(i)<=2*1024)return Ea(i);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return im(i,o.length,a,r)}function rm(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function sm(e){return e==="terse"?"terse":"brief"}function im(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=ka(i.subarray(0,o)),c=ka(i.subarray(Math.max(0,i.length-o))),u=["payload summary",`bytes: ${t}`,`lines: ${om(i)}`,"head:",a];return c&&c!==a&&u.push("tail:",c),u.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${u.join(`
57
+ `}function ha(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(gs(o)&&ps(o)===s&&_a(o)===t)return i}return-1}async function ya(e){try{return await Hf(e,Wf.F_OK),!0}catch{return!1}}var fs,Qf,Sa=R(()=>{"use strict";re();fs=En,Qf=".red/memory/graph.rdb"});var Pa={};C(Pa,{runRspMcpServer:()=>tm});import{createInterface as em}from"node:readline";async function tm(){let e=ye(process.cwd(),process.env),t=em({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 nm(r,e);Ta({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Ta({jsonrpc:"2.0",id:typeof va(n)?.id>"u"?null:va(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function nm(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:xa(t)}]};if(!t.enabled)return{content:[{type:"text",text:xa(t)}],isError:!0};let r=cm(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.accountingStats(t.telemetryByteBudget))}]};if(n?.name==="rsp_show"){let s=String(n.arguments?.handle??""),i=await r.get(s);return i?"status"in i?{content:[{type:"text",text:JSON.stringify(i)}],isError:!0}:{content:[{type:"text",text:i.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await rm(n.arguments,r)}]}}return{}}async function rm(e,t){let n=sm(e?.payload),r=im(e?.level),s=await Yt(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return Ea(s.output);let i=ht(n);if(r==="brief"&&Buffer.byteLength(i)<=2*1024)return Ea(i);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return om(i,o.length,a,r)}function sm(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function im(e){return e==="terse"?"terse":"brief"}function om(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=ka(i.subarray(0,o)),c=ka(i.subarray(Math.max(0,i.length-o))),u=["payload summary",`bytes: ${t}`,`lines: ${am(i)}`,"head:",a];return c&&c!==a&&u.push("tail:",c),u.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${u.join(`
58
58
  `)}
59
59
  `}function Ea(e){return e.endsWith(`
60
60
  `)?e:`${e}
61
- `}function ka(e){return e.toString("utf8").replace(/�$/g,"")}function om(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 am(e){return new At(Ee(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 xa(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Ta(e){process.stdout.write(`${JSON.stringify(e)}
62
- `)}function va(e){try{return JSON.parse(e)}catch{return null}}var Oa=R(()=>{"use strict";ne();Qt();je()});var La={};N(La,{renderWaitHelp:()=>bs,runWait:()=>mm});import{spawn as Rs}from"node:child_process";import{existsSync as ws}from"node:fs";import{mkdir as cm,readdir as um,readFile as lm,rm as Na,writeFile as Ca}from"node:fs/promises";import{join as Zt,resolve as hs}from"node:path";import{randomUUID as dm}from"node:crypto";async function mm(e,t=process.cwd()){let n=gm(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(bs()),0;if(n.kind==="ls")return process.stdout.write(`${v({waits:await Em(t)})}
63
- `),0;if(!pm(n.kind))return process.stdout.write(bs()),2;let r=n.kind,s={id:dm(),target:vm(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:fm[n.kind],status:"running"},i=Zt(await _s(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await cm(await _s(t),{recursive:!0}),await Ca(i,JSON.stringify(s,null,2),"utf8"),o=await hm({...n,kind:r},t,i,s),process.stdout.write(`${v(Tm(r,s,o))}
64
- `),await xm(n.options),o.exitCode}finally{await Na(i,{force:!0})}}function pm(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function bs(){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(`
65
- `)}function gm(e){let t=e[1],n={timeoutMs:Da.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=Da[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=Ba(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=Om(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 hm(e,t,n,r){switch(e.kind){case"cmd":return await ym(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await ys(wm(e.target??"",t,{emptyChecksGraceMs:$a("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,$a("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await ys(()=>_m(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await ys(()=>Sm(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function ym(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=Rs(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),Xt(r,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${Aa(t)}`})},t);c.once("error",l=>{clearTimeout(u),Xt(r,s,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,d)=>{if(clearTimeout(u),o)return;let f=l===0;Xt(r,s,f?"success":"failure"),a({status:f?"success":"failure",exitCode:f?0:1,summary:f?"command exited successfully":`command exited with ${d??l??"unknown"}`,details:{status:l??null,signal:d??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function ys(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 Xt(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 $m(Math.min(c,Math.max(0,i-Date.now())))}return await Xt(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Aa(t)}`}}function wm(e,t,n){let r=Date.now();return()=>bm(e,t,n,r)}async function bm(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await Vn(["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=Ss(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(Pm),u=c.filter(d=>d==="failure").length,l=c.filter(d=>d==="pending").length;if(String(i.state)!=="OPEN")return We("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return We("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return{status:"running",exitCode:2,summary:`PR #${e} has ${l} pending checks`};if(o.length===0){let d=Date.now()-r;return a==="UNKNOWN"||d<n.emptyChecksGraceMs?{status:"running",exitCode:2,summary:`PR #${e} has no registered checks yet`,details:{checks:0,mergeable:a,empty_checks_elapsed_ms:d}}:We("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}}:We("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function _m(e,t){let n=e.target??(e.latest&&e.branch?await Rm(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await Vn(["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=Ss(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"?We("success",`run ${n} succeeded`,Ia(s)):We("failure",`run ${n} concluded ${o||"unknown"}`,Ia(s))}async function Rm(e,t){let n=await Vn(["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 Kn(s)&&s.databaseId!=null?String(s.databaseId):""}async function Sm(e,t,n){let r=await Vn(["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(Kn):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||Dm(e,c))&&u>=t});return o?We("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 Vn(e,t){return await new Promise(n=>{let r=Rs("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),s=[],i=[];r.stdout.on("data",o=>s.push(Buffer.from(o))),r.stderr.on("data",o=>i.push(Buffer.from(o))),r.once("error",o=>n({status:1,stdout:"",stderr:o.message})),r.once("close",o=>{n({status:o??1,stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(i).toString("utf8").trim()})})})}async function Em(e){let t=await _s(e);if(!ws(t))return[];let n=await um(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json"))){let i=Zt(t,s),o=Ss(await lm(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Im(a)){await Na(i,{force:!0});continue}r.push(o)}return r}async function _s(e){return Zt(await km(e),".red","tmp","waits")}async function km(e){let t=hs(e);for(;;){if(ws(Zt(t,".red"))||ws(Zt(t,".git")))return t;let n=hs(t,"..");if(n===t)return hs(e);t=n}}async function Xt(e,t,n){await Ca(e,JSON.stringify({...t,status:n},null,2),"utf8").catch(()=>{})}async function xm(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=Rs(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function Tm(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 We(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function vm(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 Pm(e){let t=Kn(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 Ia(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 Ss(e){let t=JSON.parse(e);if(!Kn(t))throw new Error("expected JSON object");return t}function Kn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ba(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 $a(e,t){let n=process.env[e];if(!n)return t;try{return Ba(n)}catch{return t}}function Om(e){return e.startsWith("SIG")?e:`SIG${e}`}function Aa(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function Dm(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Im(e){try{return process.kill(e,0),!0}catch{return!1}}async function $m(e){await new Promise(t=>setTimeout(t,e))}var Da,fm,Ma=R(()=>{"use strict";Re();Da={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},fm={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Ua={};N(Ua,{renderShellInit:()=>Nm});function Nm(e,t=zt){if(e==="fish")return Cm(t);if(e==="bash"||e==="zsh")return Bm(e,t);throw new Error(`unsupported shell: ${e}`)}function Cm(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(Yn))].map(n=>` abbr --add --position command -- ${n} '${jm(`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(`
66
- `)}function Bm(e,t){let n=Lm(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...zn("git",n.get("git")??[]),...zn("gh",n.get("gh")??[]),...zn("vitest",n.get("vitest")??[]),...zn("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(`
67
- `)}function zn(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(Yn),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(Yn)),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=>ja(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of Am(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Mm(u)}' ]`).join(" && ")).join(" || ");s.push(` ${ja(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Am(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 Lm(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Yn(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function Yn(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function ja(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Mm(e){return e.replace(/'/g,"'\\''")}function jm(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ga=R(()=>{"use strict";qn()});function Es(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"&&Um(t.chosenOption)&&Gm(t.outcome)&&Fm(t.cost)}function Um(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Gm(e){return e==="success"||e==="failure"||e==="escalated"}function Fm(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 Fa=R(()=>{});import{createHash as qm}from"node:crypto";function ec(e,t){return new xs(e,t)}function qa(e){let t=Number(e.red_entity_id??e.rid),n=Ts(e.properties??e.PROPERTIES),r=tc(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 Ja(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=nc(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:Ts(e.properties??e.PROPERTIES)}}function Hm(e){let t=Number(e.red_entity_id??e.rid),n=Ts(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Es(n)?null:{rid:t,event:n}}function Ts(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Qn(e)?e:{}}function tc(e){let t=e==="contact"?"person":e;if(Jm.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function nc(e){if(Wm.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Vm(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Wa(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ve(e){return Qn(e)?e:{}}function Ha(e,t){return Ve(e)[t]}function Va(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Ka(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function za(e){let t=Ve(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function L(e){return typeof e=="string"&&e.length>0?e:void 0}function Qn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ks(e){return e!=null}function Km(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function zm(e){return qm("sha256").update(JSON.stringify(e)).digest("hex")}function Ym(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Ya(e){return`artifact-hash:${e}`}function Qa(e,t,n){return`connection:${e}:${t}:${n}`}function Xa(){return"model-tier-bandit:v1"}function Qm(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Za(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function rc(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+Za(n,a)*3+Za(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 Xm(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=sc({...rc(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return He(s)}function sc(e){return{...e,lexical:He(e.lexical),tags:He(e.tags),kind:He(e.kind),connections:He(e.connections),vector:He(e.vector),total:He(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function He(e){return Math.round(e*1e3)/1e3}function Zm(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 ep(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 tp(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var se,Jm,Wm,xs,ic=R(()=>{"use strict";Fa();se={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Jm=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Wm=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),xs=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(Ve(n));if(t==="getArtifact")return await this.getArtifact(Ha(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Ve(n);return await this.search(Va(r,"query"),Ka(r,"limit")??10,za(r.options))}if(t==="think"){let r=Ve(n);return await this.think(Va(r,"query"),Ka(r,"limit")??8,za(r.options))}if(t==="link")return await this.link(Ve(n));if(t==="backlinks")return await this.backlinks(Ha(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Ve(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 ${se.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${se.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${se.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:tp(t.map(r=>r.kind))}}async capture(t){let n=L(t.title)||"Untitled artifact",r=L(t.content);if(!r)throw new Error("brain capture requires content");let s=tc(L(t.kind)||"note"),i=Km(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=zm([s,n,r,i,L(t.sourcePath),L(t.sourceSession)]),c=await this.kv().get(Ya(a));if(c!=null){let g=await this.getArtifact(Number(c));if(g)return g}let u=`${Ym(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:L(t.sourceAgent),source_runner:L(t.sourceRunner),source_session:L(t.sourceSession),source_path:L(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Qn(t.metadata)?t.metadata:void 0},f=(await this.db.query(`INSERT INTO ${se.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!f)throw new Error("INSERT artifact returned no row");let y=qa(f);if(!y)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Ya(a),y.rid),await this.materializeTagConnections(y),y}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${se.artifacts}`)).rows.map(qa).filter(ks)}async search(t,n,r={}){let s=Qm(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=rc(u,s),d=sc({...l,connections:Xm(u,s,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:Zm(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 ep(t,s)}async link(t){let n=await this.getArtifact(Wa(t.from)),r=await this.getArtifact(Wa(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=nc(L(t.kind)||"related_to"),i=await this.findConnection(n.rid,r.rid,s);if(i!=null){let l=(await this.listConnections()).find(d=>d.rid===i);if(l)return l}let o={reason:L(t.reason),confidence:L(t.confidence)||"explicit",created_at:Date.now(),metadata:Qn(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${se.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=Ja(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Qa(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 ${se.connections}`)).rows.map(Ja).filter(ks)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=Vm(L(t.interval)||"day"),s=L(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(!Es(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${se.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 ${se.outcomeEvents}`)).rows.map(Hm).filter(ks).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Xa());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Xa(),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(Qa(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(se.kv)}}});var wc={};N(wc,{runResidentServer:()=>up});import{randomUUID as ht}from"node:crypto";import{execFileSync as np,spawn as rp}from"node:child_process";import{existsSync as sp}from"node:fs";import{mkdir as fc,rename as ip,rm as oc,writeFile as mc}from"node:fs/promises";import{createServer as op}from"node:net";import{dirname as Ds,join as en}from"node:path";import{fileURLToPath as ap,pathToFileURL as cp}from"node:url";async function up(e){await fc(Ds(e.socketPath),{recursive:!0});let t=Sp();Rp();let n=e.telemetryDrainTimeoutMs??pc,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??xn,a,c,u=!1,l=new Set,d=e.telemetryDrainIntervalMs??3e4,f=op(x=>{l.add(x),x.once("close",()=>l.delete(x)),g(),Op(x,async P=>{g();let C=await Dp(r,P,e.storeUri,e.residentVersion??"0.0.0-dev"),j={id:P.id,ok:!0,value:C,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};yc(x,j),P.op==="handover"&&setImmediate(()=>y())})});function y(){i=!0,u=!0,c=_p(c),f.close();for(let x of l)x.destroy()}function g(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{y()},o),a.unref())}let p=["SIGINT","SIGTERM"].map(x=>{let P=()=>{Xn(),f.close();for(let C of l)C.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,P),{signal:x,handler:P}});await new Promise((x,P)=>{f.once("error",P),f.listen(e.socketPath,()=>{f.off("error",P),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let P=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(P)&&P>0&&await new Promise($=>setTimeout($,P));let C=await Ut.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),j=Number(process.hrtime.bigint()-x)/1e6,V=new Os(C,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??En,byteBudget:e.telemetryByteBudget??e.byteBudget??kn});if(i){await C.close();return}if(await vs(V,n),i){await C.close();return}r={kind:"ready",store:C,telemetry:V,storeOpenCount:1,storeElapsedMs:j},s=setInterval(()=>{let $=r.kind==="ready"?r:void 0;$&&vs($.telemetry,n)},d),s.unref(),g()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},g()}),e.pidPath&&await mc(e.pidPath,`${process.pid}
68
- `,{encoding:"utf8",mode:384});let k=e.residentVersion??"0.0.0-dev",w=e.registryPath??en(e.rootDir??process.cwd(),".red","tmp","rsp-resident.pid.json");try{await bn(w,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:k})}catch{}await new Promise(x=>f.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await oc(e.socketPath,{force:!0});let T=r;T.kind==="ready"&&(await vs(T.telemetry,n,u),await T.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:P}of p)process.off(x,P);t?.kill("SIGTERM"),Xn(),e.pidPath&&await oc(e.pidPath,{force:!0}),await _n(w)}async function gp(e,t,n=new Date){let r=await Bn(e,1,n),s=n.toISOString().slice(0,10),i=r.savings.daily_tokens_saved.find(u=>u.date===s)?.tokens_saved??0,o=r.savings.tokens_saved>0?i/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=en(t,mp),c=`${a}.${process.pid}.${Date.now()}.tmp`;await fc(Ds(a),{recursive:!0}),await mc(c,JSON.stringify({version:1,tokens_saved_today:i,dollars_saved_today_usd:Math.round(o*1e6)/1e6,show_total_today:r.health.show_total,show_hit_rate:r.health.show_total>0?r.health.show_hit_rate:void 0,decisions:r.decisions.seen>0?{seen:r.decisions.seen,contributed:r.decisions.contributed}:void 0,updated_at:n.toISOString()}),{encoding:"utf8",mode:384}),await ip(c,a)}async function vs(e,t=pc,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await hc(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
69
- `)}}async function hp(e){let t=[];for(let n of pp){let r=await yp(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await wp(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${gc(n)}`))}return t}async function yp(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 wp(e,t,n){let r=bp(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${gc(t)}`)}function bp(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 gc(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function _p(e){return e&&clearTimeout(e),setTimeout(()=>{Xn(),process.exit(0)},fp)}function Rp(){ac||(ac=!0,process.on("exit",()=>Xn()))}function Sp(){if(process.platform==="win32")return;let t=rp(process.execPath,["-e",`
61
+ `}function ka(e){return e.toString("utf8").replace(/�$/g,"")}function am(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 cm(e){return new At(ke(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 xa(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Ta(e){process.stdout.write(`${JSON.stringify(e)}
62
+ `)}function va(e){try{return JSON.parse(e)}catch{return null}}var Oa=R(()=>{"use strict";re();Qt();Ue()});var La={};C(La,{renderWaitHelp:()=>bs,runWait:()=>gm});import{spawn as Rs}from"node:child_process";import{existsSync as ws}from"node:fs";import{mkdir as um,readdir as lm,readFile as dm,rm as Ca,writeFile as fm}from"node:fs/promises";import{join as Zt,resolve as hs}from"node:path";import{randomUUID as mm}from"node:crypto";async function gm(e,t=process.cwd()){let n=ym(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(bs()),0;if(n.kind==="ls")return process.stdout.write(`${T({waits:await xm(t)})}
63
+ `),0;if(!hm(n.kind))return process.stdout.write(bs()),2;let r=n.kind,s={id:mm(),target:Om(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:pm[n.kind],status:"running"},i=Zt(await _s(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await um(await _s(t),{recursive:!0}),await Na(i,s),o=await wm({...n,kind:r},t,i,s),process.stdout.write(`${T(Pm(r,s,o))}
64
+ `),await vm(n.options),o.exitCode}finally{await Ca(i,{force:!0})}}function hm(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function bs(){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(`
65
+ `)}function ym(e){let t=e[1],n={timeoutMs:Da.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=Da[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=Ba(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=$m(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 wm(e,t,n,r){switch(e.kind){case"cmd":return await bm(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await ys(_m(e.target??"",t,{emptyChecksGraceMs:$a("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,$a("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await ys(()=>Sm(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await ys(()=>km(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function bm(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=Rs(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),Xt(r,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${Aa(t)}`})},t);c.once("error",l=>{clearTimeout(u),Xt(r,s,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,d)=>{if(clearTimeout(u),o)return;let f=l===0;Xt(r,s,f?"success":"failure"),a({status:f?"success":"failure",exitCode:f?0:1,summary:f?"command exited successfully":`command exited with ${d??l??"unknown"}`,details:{status:l??null,signal:d??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function ys(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 Xt(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 Bm(Math.min(c,Math.max(0,i-Date.now())))}return await Xt(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Aa(t)}`}}function _m(e,t,n){let r=Date.now();return()=>Rm(e,t,n,r)}async function Rm(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await Kn(["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=Ss(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(Dm),u=c.filter(d=>d==="failure").length,l=c.filter(d=>d==="pending").length;if(String(i.state)!=="OPEN")return He("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return He("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return{status:"running",exitCode:2,summary:`PR #${e} has ${l} pending checks`};if(o.length===0){let d=Date.now()-r;return a==="UNKNOWN"||d<n.emptyChecksGraceMs?{status:"running",exitCode:2,summary:`PR #${e} has no registered checks yet`,details:{checks:0,mergeable:a,empty_checks_elapsed_ms:d}}:He("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}}:He("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function Sm(e,t){let n=e.target??(e.latest&&e.branch?await Em(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await Kn(["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=Ss(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"?He("success",`run ${n} succeeded`,Ia(s)):He("failure",`run ${n} concluded ${o||"unknown"}`,Ia(s))}async function Em(e,t){let n=await Kn(["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 en(s)&&s.databaseId!=null?String(s.databaseId):""}async function km(e,t,n){let r=await Kn(["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(en):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||Cm(e,c))&&u>=t});return o?He("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 Kn(e,t){return await new Promise(n=>{let r=Rs("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),s=[],i=[];r.stdout.on("data",o=>s.push(Buffer.from(o))),r.stderr.on("data",o=>i.push(Buffer.from(o))),r.once("error",o=>n({status:1,stdout:"",stderr:o.message})),r.once("close",o=>{n({status:o??1,stdout:Buffer.concat(s).toString("utf8"),stderr:Buffer.concat(i).toString("utf8").trim()})})})}async function xm(e){let t=await _s(e);if(!ws(t))return[];let n=await lm(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=Zt(t,s),o=Im(await dm(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Nm(a)){await Ca(i,{force:!0});continue}r.push(o)}return r}async function _s(e){return Zt(await Tm(e),".red","tmp","waits")}async function Tm(e){let t=hs(e);for(;;){if(ws(Zt(t,".red"))||ws(Zt(t,".git")))return t;let n=hs(t,"..");if(n===t)return hs(e);t=n}}async function Xt(e,t,n){await Na(e,{...t,status:n}).catch(()=>{})}async function Na(e,t){await fm(e,`${T(t)}
66
+ `,"utf8")}async function vm(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=Rs(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function Pm(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 He(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function Om(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 Dm(e){let t=en(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 Ia(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 Ss(e){let t=JSON.parse(e);if(!en(t))throw new Error("expected JSON object");return t}function Im(e){let t=e.trim();if(!t)return{};try{return Ss(t)}catch{let n=de(t);if(!en(n))throw new Error("expected structured object");return n}}function en(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ba(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 $a(e,t){let n=process.env[e];if(!n)return t;try{return Ba(n)}catch{return t}}function $m(e){return e.startsWith("SIG")?e:`SIG${e}`}function Aa(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function Cm(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Nm(e){try{return process.kill(e,0),!0}catch{return!1}}async function Bm(e){await new Promise(t=>setTimeout(t,e))}var Da,pm,Ma=R(()=>{"use strict";ee();Da={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},pm={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Ua={};C(Ua,{renderShellInit:()=>Am});function Am(e,t=zt){if(e==="fish")return Lm(t);if(e==="bash"||e==="zsh")return Mm(e,t);throw new Error(`unsupported shell: ${e}`)}function Lm(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(Yn))].map(n=>` abbr --add --position command -- ${n} '${Fm(`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(`
67
+ `)}function Mm(e,t){let n=Um(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...zn("git",n.get("git")??[]),...zn("gh",n.get("gh")??[]),...zn("vitest",n.get("vitest")??[]),...zn("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(`
68
+ `)}function zn(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(Yn),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(Yn)),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=>ja(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of jm(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Gm(u)}' ]`).join(" && ")).join(" || ");s.push(` ${ja(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function jm(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 Um(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Yn(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function Yn(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function ja(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Gm(e){return e.replace(/'/g,"'\\''")}function Fm(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Ga=R(()=>{"use strict";Jn()});function Es(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"&&qm(t.chosenOption)&&Jm(t.outcome)&&Wm(t.cost)}function qm(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Jm(e){return e==="success"||e==="failure"||e==="escalated"}function Wm(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 Fa=R(()=>{});import{createHash as Hm}from"node:crypto";function ec(e,t){return new xs(e,t)}function qa(e){let t=Number(e.red_entity_id??e.rid),n=Ts(e.properties??e.PROPERTIES),r=tc(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 Ja(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=nc(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:Ts(e.properties??e.PROPERTIES)}}function zm(e){let t=Number(e.red_entity_id??e.rid),n=Ts(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Es(n)?null:{rid:t,event:n}}function Ts(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Qn(e)?e:{}}function tc(e){let t=e==="contact"?"person":e;if(Vm.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function nc(e){if(Km.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Ym(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Wa(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Ke(e){return Qn(e)?e:{}}function Ha(e,t){return Ke(e)[t]}function Va(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function Ka(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function za(e){let t=Ke(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function L(e){return typeof e=="string"&&e.length>0?e:void 0}function Qn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ks(e){return e!=null}function Qm(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Xm(e){return Hm("sha256").update(JSON.stringify(e)).digest("hex")}function Zm(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function Ya(e){return`artifact-hash:${e}`}function Qa(e,t,n){return`connection:${e}:${t}:${n}`}function Xa(){return"model-tier-bandit:v1"}function ep(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function Za(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function rc(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+Za(n,a)*3+Za(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 tp(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=sc({...rc(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Ve(s)}function sc(e){return{...e,lexical:Ve(e.lexical),tags:Ve(e.tags),kind:Ve(e.kind),connections:Ve(e.connections),vector:Ve(e.vector),total:Ve(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ve(e){return Math.round(e*1e3)/1e3}function np(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 rp(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 sp(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var ie,Vm,Km,xs,ic=R(()=>{"use strict";Fa();ie={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Vm=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Km=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),xs=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(Ke(n));if(t==="getArtifact")return await this.getArtifact(Ha(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Ke(n);return await this.search(Va(r,"query"),Ka(r,"limit")??10,za(r.options))}if(t==="think"){let r=Ke(n);return await this.think(Va(r,"query"),Ka(r,"limit")??8,za(r.options))}if(t==="link")return await this.link(Ke(n));if(t==="backlinks")return await this.backlinks(Ha(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Ke(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 ${ie.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ie.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${ie.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:sp(t.map(r=>r.kind))}}async capture(t){let n=L(t.title)||"Untitled artifact",r=L(t.content);if(!r)throw new Error("brain capture requires content");let s=tc(L(t.kind)||"note"),i=Qm(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Xm([s,n,r,i,L(t.sourcePath),L(t.sourceSession)]),c=await this.kv().get(Ya(a));if(c!=null){let g=await this.getArtifact(Number(c));if(g)return g}let u=`${Zm(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:L(t.sourceAgent),source_runner:L(t.sourceRunner),source_session:L(t.sourceSession),source_path:L(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Qn(t.metadata)?t.metadata:void 0},f=(await this.db.query(`INSERT INTO ${ie.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!f)throw new Error("INSERT artifact returned no row");let y=qa(f);if(!y)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(Ya(a),y.rid),await this.materializeTagConnections(y),y}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${ie.artifacts}`)).rows.map(qa).filter(ks)}async search(t,n,r={}){let s=ep(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=rc(u,s),d=sc({...l,connections:tp(u,s,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:np(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 rp(t,s)}async link(t){let n=await this.getArtifact(Wa(t.from)),r=await this.getArtifact(Wa(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=nc(L(t.kind)||"related_to"),i=await this.findConnection(n.rid,r.rid,s);if(i!=null){let l=(await this.listConnections()).find(d=>d.rid===i);if(l)return l}let o={reason:L(t.reason),confidence:L(t.confidence)||"explicit",created_at:Date.now(),metadata:Qn(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${ie.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=Ja(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(Qa(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 ${ie.connections}`)).rows.map(Ja).filter(ks)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=Ym(L(t.interval)||"day"),s=L(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(!Es(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${ie.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 ${ie.outcomeEvents}`)).rows.map(zm).filter(ks).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(Xa());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(Xa(),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(Qa(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(ie.kv)}}});var wc={};C(wc,{runResidentServer:()=>fp});import{randomUUID as yt}from"node:crypto";import{execFileSync as ip,spawn as op}from"node:child_process";import{existsSync as ap}from"node:fs";import{mkdir as fc,rename as cp,rm as oc,writeFile as mc}from"node:fs/promises";import{createServer as up}from"node:net";import{dirname as Ds,join as tn}from"node:path";import{fileURLToPath as lp,pathToFileURL as dp}from"node:url";async function fp(e){await fc(Ds(e.socketPath),{recursive:!0});let t=xp();kp();let n=e.telemetryDrainTimeoutMs??pc,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??Tn,a,c,u=!1,l=new Set,d=e.telemetryDrainIntervalMs??3e4,f=up(x=>{l.add(x),x.once("close",()=>l.delete(x)),g(),$p(x,async P=>{g();let N=await Cp(r,P,e.storeUri,e.residentVersion??"0.0.0-dev"),j={id:P.id,ok:!0,value:N,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};yc(x,j),P.op==="handover"&&setImmediate(()=>y())})});function y(){i=!0,u=!0,c=Ep(c),f.close();for(let x of l)x.destroy()}function g(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{y()},o),a.unref())}let p=["SIGINT","SIGTERM"].map(x=>{let P=()=>{Xn(),f.close();for(let N of l)N.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,P),{signal:x,handler:P}});await new Promise((x,P)=>{f.once("error",P),f.listen(e.socketPath,()=>{f.off("error",P),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let P=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(P)&&P>0&&await new Promise($=>setTimeout($,P));let N=await Ut.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),j=Number(process.hrtime.bigint()-x)/1e6,V=new Os(N,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??kn,byteBudget:e.telemetryByteBudget??e.byteBudget??xn});if(i){await N.close();return}if(await vs(V,n),i){await N.close();return}r={kind:"ready",store:N,telemetry:V,storeOpenCount:1,storeElapsedMs:j},s=setInterval(()=>{let $=r.kind==="ready"?r:void 0;$&&vs($.telemetry,n)},d),s.unref(),g()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},g()}),e.pidPath&&await mc(e.pidPath,`${process.pid}
69
+ `,{encoding:"utf8",mode:384});let k=e.residentVersion??"0.0.0-dev",w=e.registryPath??tn(e.rootDir??process.cwd(),".red","tmp","rsp-resident.pid.json");try{await _n(w,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:k})}catch{}await new Promise(x=>f.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await oc(e.socketPath,{force:!0});let v=r;v.kind==="ready"&&(await vs(v.telemetry,n,u),await v.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:P}of p)process.off(x,P);t?.kill("SIGTERM"),Xn(),e.pidPath&&await oc(e.pidPath,{force:!0}),await Rn(w)}async function wp(e,t,n=new Date){let r=await An(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=tn(t,hp),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 fc(Ds(a),{recursive:!0}),await mc(c,`${T(u)}
70
+ `,{encoding:"utf8",mode:384}),await cp(c,a)}async function vs(e,t=pc,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await hc(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
71
+ `)}}async function bp(e){let t=[];for(let n of yp){let r=await _p(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await Rp(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${gc(n)}`))}return t}async function _p(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 Rp(e,t,n){let r=Sp(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${gc(t)}`)}function Sp(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 gc(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Ep(e){return e&&clearTimeout(e),setTimeout(()=>{Xn(),process.exit(0)},gp)}function kp(){ac||(ac=!0,process.on("exit",()=>Xn()))}function xp(){if(process.platform==="win32")return;let t=op(process.execPath,["-e",`
70
72
  const { execFileSync } = require("node:child_process");
71
73
  const parentPid = Number(process.argv[1]);
72
74
  const known = new Set();
@@ -107,64 +109,64 @@ const timer = setInterval(() => {
107
109
  clearInterval(timer);
108
110
  process.exit(0);
109
111
  }, 500);
110
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Xn(){for(let e of Ep())try{process.kill(e,"SIGTERM")}catch{}}function Ep(){if(process.platform==="win32")return[];let e="";try{e=np("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 kp(e){if(e.collection!==re)return e;let t=await cc(e.raw_text,lc(e.raw_bytes)),n=await cc(e.emitted_text,lc(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 cc(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=lp)try{return await hc((async()=>({tokens:(await xp())("cl100k_base").encode(e).length,estimated:!1}))(),dp,"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 xp(){return uc??=import(cp(Tp()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await uc}function Tp(){let e=Ds(ap(import.meta.url)),n=[en(e,"..","node_modules","js-tiktoken","dist","index.js"),en(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>sp(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function lc(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function M(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Ps(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function hc(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 vp(e){try{return JSON.parse(e)}catch{return e}}function Pp(e){return dc(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>dc(t)&&(t.collection===W||t.collection===H||t.collection===re||t.collection===xe)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function dc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Op(e,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",r=>{n+=r;let s=n.indexOf(`
111
- `);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??ht(),ok:!1,error:a instanceof Error?a.message:String(a)};yc(e,u)}finally{e.end()}})()})}function yc(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
112
- `)}catch{}}async function Dp(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 rs(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 Bn(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 ss(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return $p(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await Ip(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Ip(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await ec(s,t).request(n,r)}function $p(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var lp,dp,pc,fp,mp,pp,Os,ac,uc,bc=R(()=>{"use strict";Rn();Fe();ic();Te();ne();lp=256*1024,dp=500,pc=2e3,fp=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),mp=en(".red","tmp","rsp-status-summary.json"),pp=[W,H,re,xe,Wt],Os=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 hp(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 ts(this.opts.rootDir,async a=>{let c=ns(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:M(c.command)||"unknown",source_id:M(c.id),source_collection:M(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 gp(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:ht(),a={...await kp(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===W?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===W||n.accounting_recorded===!0?null:n.collection===re?await this.writeEvent(t,{collection:W,id:`mirror:${M(n.id)||ht()}`,created_at:M(n.created_at)||M(n.ts)||new Date().toISOString(),event_type:"invocation",command:M(n.command)||"unknown",command_class:Ps(M(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===xe?await this.writeEvent(t,{collection:W,id:`mirror:${M(n.id)||ht()}`,created_at:M(n.created_at)||M(n.ts)||new Date().toISOString(),event_type:"invocation",command:M(n.command)||"unknown",command_class:Ps(M(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:M(n.reason)||"unknown"}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:xe,id:ht(),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:W,id:`mirror:${ht()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:Ps(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(Wt).get("index:v1"),r=typeof n=="string"?vp(n):n;return Pp(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Wt).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})}};ac=!1});var Ns={};N(Ns,{parseProxyCommandLine:()=>Ec,rewriteProxyCommandLine:()=>Sc,runProxy:()=>Cp});import{spawn as Np}from"node:child_process";async function Cp(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=Ec(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Sc(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await Bp(t.telemetryRoot,n,c),await _c(n);throw c}for(let c of s)await Ap(t.telemetryRoot,c);let o=await _c(r||n),a=Number(process.hrtime.bigint()-i)/1e6;return await Je(t.telemetryRoot,{collection:re,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 Sc(e,t="lossless"){let n=Fp(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||Gp(n,o)==="|")return i.text;let a=Lp(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function Ec(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 Bp(e,t,n){await Je(e,{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:$s(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function Ap(e,t){await Je(e,{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function _c(e){let t=Np(e,{shell:!0,stdio:"inherit"});return await new Promise(n=>{t.on("error",r=>{process.stderr.write(`${r instanceof Error?r.message:String(r)}
113
- `),n(127)}),t.on("close",(r,s)=>{if(s){process.kill(process.pid,s),n(128);return}n(r??0)})})}function Lp(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=Jp(s);if(!i)return null;let o=Up(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(y=>y.value);if(Zn(c))return{text:e,match:{command:a.map(y=>y.raw).join(" "),commandFamily:$s(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=Mp(a);if(!u)return null;let l=i.slice(0,o).map(y=>y.raw),d=t==="lossless"?[]:[`--${t}`],f=[...l,"rsp",...d,...u.wrapperWords].join(" ");return{text:`${n}${f}${r}`,match:{command:a.map(y=>y.raw).join(" "),commandFamily:$s(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function Mp(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]==="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}:jp(t,n)}function jp(e,t){return e[0]==="cat"&&e.length===2&&Is(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Is(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])&&Is(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Is(e){return!!e&&!e.startsWith("-")}function Up(e){let t=0;for(;t<e.length&&Rc(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Rc(e[t].value);)t+=1;return t}function Gp(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function Fp(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=qp(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 qp(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 Jp(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 $s(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Zn(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Zn(t)&&t[1]?`gh ${t[1]} json-jq`:Zn(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 Zn(e){return e[0]==="gh"&&e.some(Wp)}function Wp(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Rc(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Cs=R(()=>{"use strict";Te()});function Pe(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 kc(e,t){if(!t)return!0;let n=Bs(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function A(e,t){return t?e.filter(n=>kc(n,t)):[...e]}function yt(e,t){if(!t)return e;let r=e.split(`
112
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Xn(){for(let e of Tp())try{process.kill(e,"SIGTERM")}catch{}}function Tp(){if(process.platform==="win32")return[];let e="";try{e=ip("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 vp(e){if(e.collection!==se)return e;let t=await cc(e.raw_text,lc(e.raw_bytes)),n=await cc(e.emitted_text,lc(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 cc(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=mp)try{return await hc((async()=>({tokens:(await Pp())("cl100k_base").encode(e).length,estimated:!1}))(),pp,"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 Pp(){return uc??=import(dp(Op()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await uc}function Op(){let e=Ds(lp(import.meta.url)),n=[tn(e,"..","node_modules","js-tiktoken","dist","index.js"),tn(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>ap(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function lc(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function M(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Ps(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function hc(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 Dp(e){try{return JSON.parse(e)}catch{return e}}function Ip(e){return dc(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>dc(t)&&(t.collection===W||t.collection===H||t.collection===se||t.collection===Te)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function dc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function $p(e,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",r=>{n+=r;let s=n.indexOf(`
113
+ `);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??yt(),ok:!1,error:a instanceof Error?a.message:String(a)};yc(e,u)}finally{e.end()}})()})}function yc(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
114
+ `)}catch{}}async function Cp(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 rs(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 An(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 ss(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Bp(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await Np(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Np(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await ec(s,t).request(n,r)}function Bp(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var mp,pp,pc,gp,hp,yp,Os,ac,uc,bc=R(()=>{"use strict";ee();Sn();qe();ic();ve();re();mp=256*1024,pp=500,pc=2e3,gp=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),hp=tn(".red","tmp","rsp-status-summary.json"),yp=[W,H,se,Te,Wt],Os=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 bp(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 ts(this.opts.rootDir,async a=>{let c=ns(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:M(c.command)||"unknown",source_id:M(c.id),source_collection:M(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 wp(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:yt(),a={...await vp(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===W?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===W||n.accounting_recorded===!0?null:n.collection===se?await this.writeEvent(t,{collection:W,id:`mirror:${M(n.id)||yt()}`,created_at:M(n.created_at)||M(n.ts)||new Date().toISOString(),event_type:"invocation",command:M(n.command)||"unknown",command_class:Ps(M(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===Te?await this.writeEvent(t,{collection:W,id:`mirror:${M(n.id)||yt()}`,created_at:M(n.created_at)||M(n.ts)||new Date().toISOString(),event_type:"invocation",command:M(n.command)||"unknown",command_class:Ps(M(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:M(n.reason)||"unknown"}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Te,id:yt(),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:W,id:`mirror:${yt()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:Ps(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(Wt).get("index:v1"),r=typeof n=="string"?Dp(n):n;return Ip(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Wt).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})}};ac=!1});var Cs={};C(Cs,{parseProxyCommandLine:()=>Ec,rewriteProxyCommandLine:()=>Sc,runProxy:()=>Lp});import{spawn as Ap}from"node:child_process";async function Lp(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=Ec(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Sc(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await Mp(t.telemetryRoot,n,c),await _c(n);throw c}for(let c of s)await jp(t.telemetryRoot,c);let o=await _c(r||n),a=Number(process.hrtime.bigint()-i)/1e6;return await We(t.telemetryRoot,{collection:se,ts:new Date().toISOString(),command:n,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),o}function Sc(e,t="lossless"){let n=Wp(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||Jp(n,o)==="|")return i.text;let a=Up(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function Ec(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 Mp(e,t,n){await We(e,{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:$s(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function jp(e,t){await We(e,{collection:H,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function _c(e){let t=Ap(e,{shell:!0,stdio:"inherit"});return await new Promise(n=>{t.on("error",r=>{process.stderr.write(`${r instanceof Error?r.message:String(r)}
115
+ `),n(127)}),t.on("close",(r,s)=>{if(s){process.kill(process.pid,s),n(128);return}n(r??0)})})}function Up(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=Vp(s);if(!i)return null;let o=qp(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(y=>y.value);if(Zn(c))return{text:e,match:{command:a.map(y=>y.raw).join(" "),commandFamily:$s(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=Gp(a);if(!u)return null;let l=i.slice(0,o).map(y=>y.raw),d=t==="lossless"?[]:[`--${t}`],f=[...l,"rsp",...d,...u.wrapperWords].join(" ");return{text:`${n}${f}${r}`,match:{command:a.map(y=>y.raw).join(" "),commandFamily:$s(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function Gp(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]==="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}:Fp(t,n)}function Fp(e,t){return e[0]==="cat"&&e.length===2&&Is(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Is(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])&&Is(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Is(e){return!!e&&!e.startsWith("-")}function qp(e){let t=0;for(;t<e.length&&Rc(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Rc(e[t].value);)t+=1;return t}function Jp(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function Wp(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=Hp(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 Hp(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 Vp(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 $s(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Zn(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Zn(t)&&t[1]?`gh ${t[1]} json-jq`:Zn(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 Zn(e){return e[0]==="gh"&&e.some(Kp)}function Kp(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Rc(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Ns=R(()=>{"use strict";ve()});function Oe(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 kc(e,t){if(!t)return!0;let n=Bs(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function A(e,t){return t?e.filter(n=>kc(n,t)):[...e]}function wt(e,t){if(!t)return e;let r=e.split(`
114
116
  `).filter(s=>s&&kc(s,t));return r.length>0?`${r.join(`
115
117
  `)}
116
- `:""}function Oe(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function Bs(e){return Array.isArray(e)?e.map(Bs).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Bs).join(" "):String(e??"")}var er=R(()=>{"use strict"});var As={};N(As,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>de,GIT_LOG_MACHINE_FIELDS:()=>xc,recoveryInstruction:()=>Q,renderGitContract:()=>Tc,runGitWrapper:()=>Vp});import{spawn as Hp}from"node:child_process";async function Vp(e,t){let n=vc(e),r=Pc(n.argv),s=await Qp(r,n.argv.slice(1));return Tc(e,s,t)}async function Tc(e,t,n){let r=vc(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(yt(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let s=Pc(r.argv),i=Xp(s,r.argv,t.stdout,r.query);if(i===`git empty
117
- `)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=v(i);if(Kp(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=ug(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 ${Q(u)}
118
- `;return{stdout:Buffer.from(`${v(a.payload)}
119
- ${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 Q(e){return e.startsWith("el:")?`rsp show ${e}`:e}function vc(e){let t=Pe(e),n=[],r=!1;for(let s of t.argv){if(s==="--full"){r=!0;continue}n.push(s)}return{argv:n,query:t.query,full:r}}function Kp(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!zp(e)||r.level!=="lossless")return!0;let s=cg(r.heavyGitByteThreshold,de);return Buffer.byteLength(t)<=s}function zp(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Pc(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 Yp(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${xc.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 Qp(e,t){let n=Hp("git",Yp(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 Xp(e,t,n,r){switch(e){case"status":return Zp(t,n,r);case"log":return eg(t,n,r);case"diff":return tg(t,n,r);case"commit":return De(ng(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return De(rg(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return sg(t,n,r);case"branch":return ig(t,n,r);case"show":return og(t,n,r)}}function Zp(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:ag(u)})}if(s.length===0)return`git empty
120
- `;let i=A(s,n),o=Oc(i,"state");return De({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 eg(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=A(r,n);return De({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 tg(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=A(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 De({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 ng(e,t){let n=t.split(`
121
- `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),i=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(i?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:d,summary:`commit ${c} on ${a}: ${u} files, +${l} -${d}`}}function rg(e,t){let n=t.split(`
122
- `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,d=""]=c.split(" "),[f,y]=(l??"").split(":");return{flag:u??"",from:f??"",to:y??"",summary:d}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:s,summary:`pushed ${o} -> ${r} +${a} commits`}}function sg(e,t,n){let r=t.split(`
123
- `),s=[],i=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){i={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!i)continue;if(c.startsWith("author ")){i.author=c.slice(7);continue}if(c.startsWith("filename ")){i.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),d=i.commit.slice(0,12);l&&l.commit===d&&l.author===i.author&&l.path===i.path&&l.line_end+1===i.finalLine?l.line_end=i.finalLine:s.push({line_start:i.finalLine,line_end:i.finalLine,author:i.author,commit:d,path:i.path}),i=null}let o=A(s,n),a=Oc(o,"author");return De({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 ig(e,t,n){let r=t.split(`
124
- `).filter(Boolean).map(o=>{let[a,c,u,l,d,f]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:d||null,subject:f??""}}),s=A(r,n),i=s.find(o=>o.current)?.name??"";return De({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 og(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,i=r>=0&&s>=0?t.slice(r+1,s):"",o=s>=0?t.slice(s+1):t,[a,c,u,l,d,f=""]=i.split(""),y=[];for(let w of o.split(`
125
- `)){let T=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(w);if(!T)continue;let x=T[3]??"";y.push({path:(T[1]??"").trim(),changed:Number(T[2]??0),added:[...x].filter(P=>P==="+").length,deleted:[...x].filter(P=>P==="-").length,binary:x.startsWith("Bin")})}let g=A(y,n),m=0,p=0,k=0;for(let w of g)m+=typeof w.changed=="number"?w.changed:0,p+=typeof w.added=="number"?w.added:0,k+=typeof w.deleted=="number"?w.deleted:0;return De({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:d??"",body_lines:f.trim()?f.trim().split(`
126
- `).length:0,files:g,summary:`${n?`${g.length}/${y.length}`:g.length} files, ${m} changed, +${p} -${k}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function De(e,t,n){return t?Oe(e,n):e}function ag(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Oc(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function cg(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ug(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 xc,Ke=R(()=>{"use strict";Re();ne();er();ne();xc=["%h","%an","%as","%s"]});var Us={};N(Us,{renderGhContract:()=>$c,runGhWrapper:()=>mg});import{spawn as Ic}from"node:child_process";async function mg(e,t){let n=Nc(e),r=await gg(n);return $c(e,r,t)}async function $c(e,t,n){let r=Pe(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(yt(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let s=Nc(e),i=tr(t.stdout),o=yg(s,e,i);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=kg(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let g=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:s.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=g}let c=a?.target.truncated.handle||void 0,u=v(o);if(n.level!=="terse")return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let l=xg(o);if(!l)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(u),f=await n.store?.mint(Buffer.from(u),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!f)throw new Error("terse gh output requires an elision store");let y=`\u2026 elided ${l.rowsElided} rows (+${d}) \u2014 ${Q(f)}
127
- `;return{stdout:Buffer.from(`${v(l.payload)}
128
- ${y}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l.payload,mintedHandle:f,bytesElided:d,rowsElided:l.rowsElided,rawOutput:Buffer.from(u)}}function Nc(e){let t=Pe(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let s=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||s))throw new Error(`unsupported gh subcommand: ${r??""}`);let i=[],o=!1,a=!1;for(let u of t.argv.slice(3))u==="--full"?o=!0:u==="--wide"?a=!0:i.push(u);return{kind:n,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:o,wide:a,passthrough:i,query:t.query}}function pg(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?dg[t]:lg[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function gg(e){if(e.action==="combined")return await hg(e);let t=Ic("gh",pg(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})})})}async function hg(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[s,i,o]=await Promise.all([Ls(["pr","view",t,"--json",n.join(",")]),Ls(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),Ls(["pr","view",t,"--comments","--json",r.join(",")])]),a=[s,i,o].find(c=>(c.status??0)!==0||c.signal);return a||{stdout:JSON.stringify({view:tr(s.stdout),checks:tr(i.stdout),comments:tr(o.stdout)}),stderr:[s.stderr,i.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function Ls(e){let t=Ic("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 yg(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Rg(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=bt(n).map(o=>Cc(o,e.wide)),i=A(s,e.query);return wt({...r,prs:i,summary:`${Ms(i.length,s.length,e.query)} ${Dc(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return wt({...r,pr:Bc(ie(n),e),summary:`PR #${ze(ie(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return wg(e,t,ie(n));case"issue:list":{let s=bt(n).map(o=>Ac(o,e.wide)),i=A(s,e.query);return wt({...r,issues:i,summary:`${Ms(i.length,s.length,e.query)} ${Dc(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return wt({...r,issue:Sg(ie(n),e),summary:`issue #${ze(ie(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=bt(n).map(o=>Lc(o,e.wide)),i=A(s,e.query);return wt({...r,runs:i,summary:`${Ms(i.length,s.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return wt({...r,run:Eg(ie(n),e),summary:`run ${ze(ie(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function wg(e,t,n){let r=Bc(ie(n.view),{...e,action:"view",wide:!0}),s=A(bt(n.checks).map(bg),e.query),i=ie(n.comments).comments,o=A(bt(i).map(_g).slice(-3),e.query);return Oe({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${ze(ie(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 bg(e){return{name:O(e,"name"),state:tn(e),bucket:O(e,"bucket"),conclusion:O(e,"conclusion"),workflow:O(e,"workflow"),link:O(e,"link")}}function _g(e){return{author:Uc(e.author),body:nr(e,"body",js,!1),created:O(e,"createdAt")}}function Rg(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
118
+ `:""}function De(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function Bs(e){return Array.isArray(e)?e.map(Bs).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Bs).join(" "):String(e??"")}var er=R(()=>{"use strict"});var As={};C(As,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>me,GIT_LOG_MACHINE_FIELDS:()=>xc,recoveryInstruction:()=>Q,renderGitContract:()=>Tc,runGitWrapper:()=>Yp});import{spawn as zp}from"node:child_process";async function Yp(e,t){let n=vc(e),r=Pc(n.argv),s=await eg(r,n.argv.slice(1));return Tc(e,s,t)}async function Tc(e,t,n){let r=vc(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(wt(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let s=Pc(r.argv),i=tg(s,r.argv,t.stdout,r.query);if(i===`git empty
119
+ `)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=T(i);if(Qp(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=fg(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 ${Q(u)}
120
+ `;return{stdout:Buffer.from(`${T(a.payload)}
121
+ ${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 Q(e){return e.startsWith("el:")?`rsp show ${e}`:e}function vc(e){let t=Oe(e),n=[],r=!1;for(let s of t.argv){if(s==="--full"){r=!0;continue}n.push(s)}return{argv:n,query:t.query,full:r}}function Qp(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Xp(e)||r.level!=="lossless")return!0;let s=dg(r.heavyGitByteThreshold,me);return Buffer.byteLength(t)<=s}function Xp(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Pc(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 Zp(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${xc.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 eg(e,t){let n=zp("git",Zp(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 tg(e,t,n,r){switch(e){case"status":return ng(t,n,r);case"log":return rg(t,n,r);case"diff":return sg(t,n,r);case"commit":return Ie(ig(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ie(og(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return ag(t,n,r);case"branch":return cg(t,n,r);case"show":return ug(t,n,r)}}function ng(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:lg(u)})}if(s.length===0)return`git empty
122
+ `;let i=A(s,n),o=Oc(i,"state");return Ie({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 rg(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=A(r,n);return Ie({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 sg(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=A(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 Ie({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 ig(e,t){let n=t.split(`
123
+ `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),i=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(i?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:d,summary:`commit ${c} on ${a}: ${u} files, +${l} -${d}`}}function og(e,t){let n=t.split(`
124
+ `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,d=""]=c.split(" "),[f,y]=(l??"").split(":");return{flag:u??"",from:f??"",to:y??"",summary:d}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:s,summary:`pushed ${o} -> ${r} +${a} commits`}}function ag(e,t,n){let r=t.split(`
125
+ `),s=[],i=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){i={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!i)continue;if(c.startsWith("author ")){i.author=c.slice(7);continue}if(c.startsWith("filename ")){i.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),d=i.commit.slice(0,12);l&&l.commit===d&&l.author===i.author&&l.path===i.path&&l.line_end+1===i.finalLine?l.line_end=i.finalLine:s.push({line_start:i.finalLine,line_end:i.finalLine,author:i.author,commit:d,path:i.path}),i=null}let o=A(s,n),a=Oc(o,"author");return Ie({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 cg(e,t,n){let r=t.split(`
126
+ `).filter(Boolean).map(o=>{let[a,c,u,l,d,f]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:d||null,subject:f??""}}),s=A(r,n),i=s.find(o=>o.current)?.name??"";return Ie({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 ug(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,i=r>=0&&s>=0?t.slice(r+1,s):"",o=s>=0?t.slice(s+1):t,[a,c,u,l,d,f=""]=i.split(""),y=[];for(let w of o.split(`
127
+ `)){let v=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(w);if(!v)continue;let x=v[3]??"";y.push({path:(v[1]??"").trim(),changed:Number(v[2]??0),added:[...x].filter(P=>P==="+").length,deleted:[...x].filter(P=>P==="-").length,binary:x.startsWith("Bin")})}let g=A(y,n),m=0,p=0,k=0;for(let w of g)m+=typeof w.changed=="number"?w.changed:0,p+=typeof w.added=="number"?w.added:0,k+=typeof w.deleted=="number"?w.deleted:0;return Ie({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:d??"",body_lines:f.trim()?f.trim().split(`
128
+ `).length:0,files:g,summary:`${n?`${g.length}/${y.length}`:g.length} files, ${m} changed, +${p} -${k}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Ie(e,t,n){return t?De(e,n):e}function lg(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Oc(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function dg(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function fg(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 xc,ze=R(()=>{"use strict";ee();re();er();re();xc=["%h","%an","%as","%s"]});var Us={};C(Us,{renderGhContract:()=>$c,runGhWrapper:()=>hg});import{spawn as Ic}from"node:child_process";async function hg(e,t){let n=Cc(e),r=await wg(n);return $c(e,r,t)}async function $c(e,t,n){let r=Oe(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(wt(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let s=Cc(e),i=tr(t.stdout),o=_g(s,e,i);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=vg(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let g=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:s.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=g}let c=a?.target.truncated.handle||void 0,u=T(o);if(n.level!=="terse")return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let l=Pg(o);if(!l)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(u),f=await n.store?.mint(Buffer.from(u),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!f)throw new Error("terse gh output requires an elision store");let y=`\u2026 elided ${l.rowsElided} rows (+${d}) \u2014 ${Q(f)}
129
+ `;return{stdout:Buffer.from(`${T(l.payload)}
130
+ ${y}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l.payload,mintedHandle:f,bytesElided:d,rowsElided:l.rowsElided,rawOutput:Buffer.from(u)}}function Cc(e){let t=Oe(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let s=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||s))throw new Error(`unsupported gh subcommand: ${r??""}`);let i=[],o=!1,a=!1;for(let u of t.argv.slice(3))u==="--full"?o=!0:u==="--wide"?a=!0:i.push(u);return{kind:n,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:o,wide:a,passthrough:i,query:t.query}}function yg(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?pg[t]:mg[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function wg(e){if(e.action==="combined")return await bg(e);let t=Ic("gh",yg(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})})})}async function bg(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[s,i,o]=await Promise.all([Ls(["pr","view",t,"--json",n.join(",")]),Ls(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),Ls(["pr","view",t,"--comments","--json",r.join(",")])]),a=[s,i,o].find(c=>(c.status??0)!==0||c.signal);return a||{stdout:JSON.stringify({view:tr(s.stdout),checks:tr(i.stdout),comments:tr(o.stdout)}),stderr:[s.stderr,i.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function Ls(e){let t=Ic("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 _g(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return kg(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=_t(n).map(o=>Nc(o,e.wide)),i=A(s,e.query);return bt({...r,prs:i,summary:`${Ms(i.length,s.length,e.query)} ${Dc(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return bt({...r,pr:Bc(oe(n),e),summary:`PR #${Ye(oe(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Rg(e,t,oe(n));case"issue:list":{let s=_t(n).map(o=>Ac(o,e.wide)),i=A(s,e.query);return bt({...r,issues:i,summary:`${Ms(i.length,s.length,e.query)} ${Dc(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return bt({...r,issue:xg(oe(n),e),summary:`issue #${Ye(oe(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=_t(n).map(o=>Lc(o,e.wide)),i=A(s,e.query);return bt({...r,runs:i,summary:`${Ms(i.length,s.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return bt({...r,run:Tg(oe(n),e),summary:`run ${Ye(oe(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Rg(e,t,n){let r=Bc(oe(n.view),{...e,action:"view",wide:!0}),s=A(_t(n.checks).map(Sg),e.query),i=oe(n.comments).comments,o=A(_t(i).map(Eg).slice(-3),e.query);return De({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${Ye(oe(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 Sg(e){return{name:O(e,"name"),state:nn(e),bucket:O(e,"bucket"),conclusion:O(e,"conclusion"),workflow:O(e,"workflow"),link:O(e,"link")}}function Eg(e){return{author:Uc(e.author),body:nr(e,"body",js,!1),created:O(e,"createdAt")}}function kg(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
129
131
  `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
130
132
  `:`0 runs \u2014 try: rsp gh run list --limit 20
131
- `}function Cc(e,t){let n={number:ze(e,"number"),title:O(e,"title"),state:tn(e),draft:!!e.isDraft};return t&&Object.assign(n,Mc(e)),n}function Bc(e,t){let n=Cc(e,t.wide);return n.body=nr(e,"body",js,t.full),t.wide&&(n.base=O(e,"baseRefName"),n.head=O(e,"headRefName")),n}function Ac(e,t){let n={number:ze(e,"number"),title:O(e,"title"),state:tn(e),labels:jc(e.labels)};return t&&Object.assign(n,Mc(e)),n}function Sg(e,t){let n=Ac(e,t.wide);return n.body=nr(e,"body",js,t.full),n}function Lc(e,t){let n={id:ze(e,"databaseId"),name:O(e,"name"),status:tn(e),conclusion:O(e,"conclusion")};return t&&(n.event=O(e,"event"),n.branch=O(e,"headBranch"),n.workflow=O(e,"workflowName"),n.created=O(e,"createdAt")),n}function Eg(e,t){let n=Lc(e,t.wide),r=bt(e.jobs).map(s=>({name:O(s,"name"),status:tn(s),conclusion:O(s,"conclusion"),log:nr(s,"log",fg,t.full)}));return n.jobs=r,n}function nr(e,t,n,r){let s=O(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 kg(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(_t(n)){if(_t(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 xg(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 Dc(e,t){return e.every(n=>n.state===t)?t:"returned"}function Ms(e,t,n){return n?`${e}/${t}`:String(e)}function wt(e,t,n){return t.query?Oe(e,n):e}function tn(e){return(O(e,"state")||O(e,"status")).toLowerCase()}function Mc(e){return{author:Uc(e.author),labels:jc(e.labels),url:O(e,"url"),updated:O(e,"updatedAt")}}function jc(e){return Array.isArray(e)?e.map(t=>_t(t)?O(t,"name"):String(t)).filter(Boolean):[]}function Uc(e){return _t(e)?O(e,"login"):""}function tr(e){return e.trim()?JSON.parse(e):null}function bt(e){return Array.isArray(e)?e.filter(_t):[]}function ie(e){return _t(e)?e:{}}function O(e,t){let n=e[t];return typeof n=="string"?n:""}function ze(e,t){let n=e[t];return typeof n=="number"?n:0}function _t(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var lg,dg,js,fg,Gs=R(()=>{"use strict";Re();Ke();er();lg={"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"]},dg={"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"]},js=160,fg=160});var qs={};N(qs,{renderTestContract:()=>Gc,runTestWrapper:()=>Dg});import{spawn as Tg}from"node:child_process";async function Dg(e,t){let n=Pe(e),r=await Bg(n.argv);return await Gc(e,r,t)}async function Gc(e,t,n){let r=Pe(e),i=Fc(r.argv)==="vitest"?Ag(t.stdout):Lg(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0)return{stdout:Buffer.from(yt(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${Ug(i.durationSeconds)}`,c=A(i.failures,r.query);if(n.level==="terse")return await Ig(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let g of c){let m=await Mg(g.excerpt,r.argv.join(" "),n.store);u.push({suite:g.suite,name:g.name,excerpt:m.text}),l??=m.handle,d+=m.bytesElided}let f={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};u.length>0&&(f.failures=u);let y=r.query?Oe(f,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):f;return{stdout:Buffer.from(v(y)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:y,mintedHandle:l,bytesElided:d>0?d:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function Ig(e,t,n,r,s,i,o){let a=$g(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?Oe(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=v(u),d=Math.max(0,n.failures.length-a.length),f=a.some((T,x)=>T.excerpt!==n.failures[x].excerpt);if(d===0&&!f)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u};let y={exit_code:r,summary:s};n.failures.length>0&&(y.failures=n.failures.map(T=>({suite:T.suite,name:T.name,excerpt:T.excerpt})));let g=v(y),m=Buffer.byteLength(g),p=await i.store?.mint(Buffer.from(g),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!p)throw new Error("terse test output requires an elision store");let w=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${m}) \u2014 ${Q(p)}`;return{stdout:Buffer.from(`${l}
132
- ${w}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:p,bytesElided:m,rowsElided:d,rawOutput:Buffer.from(g)}}function $g(e){let t=[],n=Pg;for(let r of e.slice(0,Og)){let s=Ng(r.excerpt,Math.min(vg,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function Ng(e,t){if(t<=0)return"";let n=e.split(`
133
+ `}function Nc(e,t){let n={number:Ye(e,"number"),title:O(e,"title"),state:nn(e),draft:!!e.isDraft};return t&&Object.assign(n,Mc(e)),n}function Bc(e,t){let n=Nc(e,t.wide);return n.body=nr(e,"body",js,t.full),t.wide&&(n.base=O(e,"baseRefName"),n.head=O(e,"headRefName")),n}function Ac(e,t){let n={number:Ye(e,"number"),title:O(e,"title"),state:nn(e),labels:jc(e.labels)};return t&&Object.assign(n,Mc(e)),n}function xg(e,t){let n=Ac(e,t.wide);return n.body=nr(e,"body",js,t.full),n}function Lc(e,t){let n={id:Ye(e,"databaseId"),name:O(e,"name"),status:nn(e),conclusion:O(e,"conclusion")};return t&&(n.event=O(e,"event"),n.branch=O(e,"headBranch"),n.workflow=O(e,"workflowName"),n.created=O(e,"createdAt")),n}function Tg(e,t){let n=Lc(e,t.wide),r=_t(e.jobs).map(s=>({name:O(s,"name"),status:nn(s),conclusion:O(s,"conclusion"),log:nr(s,"log",gg,t.full)}));return n.jobs=r,n}function nr(e,t,n,r){let s=O(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 vg(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(Rt(n)){if(Rt(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 Pg(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 Dc(e,t){return e.every(n=>n.state===t)?t:"returned"}function Ms(e,t,n){return n?`${e}/${t}`:String(e)}function bt(e,t,n){return t.query?De(e,n):e}function nn(e){return(O(e,"state")||O(e,"status")).toLowerCase()}function Mc(e){return{author:Uc(e.author),labels:jc(e.labels),url:O(e,"url"),updated:O(e,"updatedAt")}}function jc(e){return Array.isArray(e)?e.map(t=>Rt(t)?O(t,"name"):String(t)).filter(Boolean):[]}function Uc(e){return Rt(e)?O(e,"login"):""}function tr(e){return e.trim()?JSON.parse(e):null}function _t(e){return Array.isArray(e)?e.filter(Rt):[]}function oe(e){return Rt(e)?e:{}}function O(e,t){let n=e[t];return typeof n=="string"?n:""}function Ye(e,t){let n=e[t];return typeof n=="number"?n:0}function Rt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var mg,pg,js,gg,Gs=R(()=>{"use strict";ee();ze();er();mg={"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"]},pg={"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"]},js=160,gg=160});var qs={};C(qs,{renderTestContract:()=>Gc,runTestWrapper:()=>Cg});import{spawn as Og}from"node:child_process";async function Cg(e,t){let n=Oe(e),r=await Mg(n.argv);return await Gc(e,r,t)}async function Gc(e,t,n){let r=Oe(e),i=Fc(r.argv)==="vitest"?jg(t.stdout):Ug(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0)return{stdout:Buffer.from(wt(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${qg(i.durationSeconds)}`,c=A(i.failures,r.query);if(n.level==="terse")return await Ng(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let g of c){let m=await Gg(g.excerpt,r.argv.join(" "),n.store);u.push({suite:g.suite,name:g.name,excerpt:m.text}),l??=m.handle,d+=m.bytesElided}let f={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};u.length>0&&(f.failures=u);let y=r.query?De(f,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):f;return{stdout:Buffer.from(T(y)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:y,mintedHandle:l,bytesElided:d>0?d:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function Ng(e,t,n,r,s,i,o){let a=Bg(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?De(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=T(u),d=Math.max(0,n.failures.length-a.length),f=a.some((v,x)=>v.excerpt!==n.failures[x].excerpt);if(d===0&&!f)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u};let y={exit_code:r,summary:s};n.failures.length>0&&(y.failures=n.failures.map(v=>({suite:v.suite,name:v.name,excerpt:v.excerpt})));let g=T(y),m=Buffer.byteLength(g),p=await i.store?.mint(Buffer.from(g),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!p)throw new Error("terse test output requires an elision store");let w=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${m}) \u2014 ${Q(p)}`;return{stdout:Buffer.from(`${l}
134
+ ${w}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u,mintedHandle:p,bytesElided:m,rowsElided:d,rawOutput:Buffer.from(g)}}function Bg(e){let t=[],n=Ig;for(let r of e.slice(0,$g)){let s=Ag(r.excerpt,Math.min(Dg,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function Ag(e,t){if(t<=0)return"";let n=e.split(`
133
135
  `),r=n.length<=2?e:`${n[0]}
134
136
  \u2026
135
- ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Fc(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 Cg(e){if(Fc(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 Bg(e){let t=Cg(e),n=Tg(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 Ag(e){let t=qc(e);if(!Ie(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=$e(t.numTotalTests),i=$e(t.numFailedTests),o=Gg($e(t.startTime),$e(t.endTime));for(let a of n){if(!Ie(a))continue;let c=oe(a.name)||oe(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Ie(l)&&l.status==="failed"&&r.push({suite:c,name:oe(l.fullName)||oe(l.title)||oe(l.name),excerpt:jg(l.failureMessages)||oe(l.failureMessage)})}return s||=n.reduce((a,c)=>!Ie(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=r.length,o||=n.reduce((a,c)=>Ie(c)?a+$e(c.perfStats&&Ie(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:n.length||1,durationSeconds:o,failures:r}}function Lg(e){let t=e.split(`
136
- `).filter(Boolean).map(c=>qc(c)).filter(Ie);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+=$e(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=$e(c.failed),o+=$e(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:oe(c.name).split("::").slice(0,-1).join("::"),name:oe(c.name),excerpt:oe(c.stdout)});continue}if(c.reason==="compiler-message"&&Ie(c.message)){let u=oe(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(`
137
- `)}),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 Mg(e,t,n){let r=Buffer.from(e);if(r.length<=Fs)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,Fs).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(i);return{text:`${i}
138
- \u2026 elided ${o} bytes (+${r.length}) \u2014 ${Q(s)}`,handle:s,bytesElided:r.length}}function qc(e){try{return JSON.parse(e)}catch{return null}}function jg(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
139
- `):""}function Ug(e){return`${Number(e.toFixed(1))}s`}function Gg(e,t){return e>0&&t>e?(t-e)/1e3:0}function $e(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function oe(e){return typeof e=="string"?e:""}function Ie(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Fs,vg,Pg,Og,Js=R(()=>{"use strict";Re();Ke();er();Fs=320,vg=160,Pg=Fs,Og=3});var Vs={};N(Vs,{parseCatCommand:()=>Hs,renderCatContract:()=>zg,runCatWrapper:()=>Kg});import{isUtf8 as Fg}from"node:buffer";import{readFile as qg}from"node:fs/promises";import{extname as Jg}from"node:path";async function Kg(e,t){let n=Hs(e),r=await qg(n.file);return zc(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await Kc(e,n,r,t)}async function zg(e,t,n){if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let r=Hs(e),s=Buffer.from(t.stdout,"utf8");return zc(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Kc(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Hs(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=Vc(t[++o],Ws);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=Vc(u,Ws);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 Kc(e,t,n,r){let s=n.toString("utf8"),i=Xg(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>Hc(r.heavyByteThreshold,Jc)||i.truncated;if(!Wc(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=Wc(t.file)?Yg(e,t.file,n,s,r.level,i):Qg(e,t.file,n,s,i),c=`${v(a)}
137
+ ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Fc(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 Lg(e){if(Fc(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 Mg(e){let t=Lg(e),n=Og(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 jg(e){let t=qc(e);if(!$e(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Ce(t.numTotalTests),i=Ce(t.numFailedTests),o=Jg(Ce(t.startTime),Ce(t.endTime));for(let a of n){if(!$e(a))continue;let c=ae(a.name)||ae(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)$e(l)&&l.status==="failed"&&r.push({suite:c,name:ae(l.fullName)||ae(l.title)||ae(l.name),excerpt:Fg(l.failureMessages)||ae(l.failureMessage)})}return s||=n.reduce((a,c)=>!$e(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=r.length,o||=n.reduce((a,c)=>$e(c)?a+Ce(c.perfStats&&$e(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:n.length||1,durationSeconds:o,failures:r}}function Ug(e){let t=e.split(`
138
+ `).filter(Boolean).map(c=>qc(c)).filter($e);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+=Ce(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Ce(c.failed),o+=Ce(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:ae(c.name).split("::").slice(0,-1).join("::"),name:ae(c.name),excerpt:ae(c.stdout)});continue}if(c.reason==="compiler-message"&&$e(c.message)){let u=ae(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(`
139
+ `)}),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 Gg(e,t,n){let r=Buffer.from(e);if(r.length<=Fs)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,Fs).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(i);return{text:`${i}
140
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 ${Q(s)}`,handle:s,bytesElided:r.length}}function qc(e){try{return JSON.parse(e)}catch{return null}}function Fg(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
141
+ `):""}function qg(e){return`${Number(e.toFixed(1))}s`}function Jg(e,t){return e>0&&t>e?(t-e)/1e3:0}function Ce(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function ae(e){return typeof e=="string"?e:""}function $e(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Fs,Dg,Ig,$g,Js=R(()=>{"use strict";ee();ze();er();Fs=320,Dg=160,Ig=Fs,$g=3});var Vs={};C(Vs,{parseCatCommand:()=>Hs,renderCatContract:()=>Xg,runCatWrapper:()=>Qg});import{isUtf8 as Wg}from"node:buffer";import{readFile as Hg}from"node:fs/promises";import{extname as Vg}from"node:path";async function Qg(e,t){let n=Hs(e),r=await Hg(n.file);return zc(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await Kc(e,n,r,t)}async function Xg(e,t,n){if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(t.stdout),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let r=Hs(e),s=Buffer.from(t.stdout,"utf8");return zc(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await Kc(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Hs(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=Vc(t[++o],Ws);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=Vc(u,Ws);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 Kc(e,t,n,r){let s=n.toString("utf8"),i=th(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>Hc(r.heavyByteThreshold,Jc)||i.truncated;if(!Wc(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=Wc(t.file)?Zg(e,t.file,n,s,r.level,i):eh(e,t.file,n,s,i),c=`${T(a)}
140
142
  `;if(!o&&Buffer.byteLength(c)<=Hc(r.heavyByteThreshold,Jc))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 ${Q(u)}
141
- `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function Yg(e,t,n,r,s,i){let o=rr(r),a=s==="terse"?Hg:Wg,c=rr(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:Zg(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function Qg(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:rr(r).length,content:rr(s.text),truncated:s.truncated}}function Xg(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
143
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function Zg(e,t,n,r,s,i){let o=rr(r),a=s==="terse"?zg:Kg,c=rr(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:nh(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function eh(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:rr(r).length,content:rr(s.text),truncated:s.truncated}}function th(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
142
144
  `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??Ws,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
143
145
  `)}${r&&o.length>0?`
144
- `:""}`,truncated:o.length<s.length}}function Zg(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&&!eh(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function rr(e){let t=e.split(`
145
- `);return t.at(-1)===""?t.slice(0,-1):t}function zc(e){return e.includes(0)||!Fg(e)}function Wc(e){return Vg.has(Jg(e).toLowerCase())}function eh(e){return["for","if","switch","while"].includes(e)}function Hc(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Vc(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var Jc,Ws,Wg,Hg,Vg,Ks=R(()=>{"use strict";Re();Ke();Jc=8*1024,Ws=10,Wg=8,Hg=2,Vg=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var sr={};N(sr,{parseExecCommandLine:()=>Xc,renderExecContract:()=>Qc,runExecWrapper:()=>oh});import{isUtf8 as th}from"node:buffer";import{spawn as nh}from"node:child_process";async function oh(e,t){let n=Xc(e),r=await ah(n);return await Qc(n,r,t)}async function Qc(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let i=ch(r);if(i.kind==="text"){let d=await Yt(i.text,{level:n.level,command:e,store:n.store?{mint:async(...f)=>await n.store.mint(...f)}:void 0});if(d.detected)return{stdout:Buffer.from(d.output),stderr:s,status:t.status,signal:t.signal,mintedHandle:d.handle,bytesElided:d.lossy?r.length:void 0,rawOutput:r}}let o=i.kind==="text"?Buffer.from(i.text):r,a=dh(n.heavyByteThreshold,rh);if(o.length<=a&&n.level!=="terse")return{stdout:o,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");return{stdout:Buffer.from(uh(o,r.length,l,n.level)),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r}}function Xc(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 ah(e){let t=nh(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 ch(e){return th(e)?{kind:"text",text:gt(e.toString("utf8"))}:{kind:"bytes"}}function uh(e,t,n,r){let i=Math.max(1,Math.floor((r==="terse"?ih:sh)/2)),o=Yc(e.subarray(0,i)),a=Yc(e.subarray(Math.max(0,e.length-i))),c=lh(e),u=["stdout summary",`bytes: ${t}`,`lines: ${c}`,"head:",o];return a&&a!==o&&u.push("tail:",a),u.push(`\u2026 elided stdout (+${t}) \u2014 ${Q(n)}`),`${u.join(`
146
+ `:""}`,truncated:o.length<s.length}}function nh(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&&!rh(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function rr(e){let t=e.split(`
147
+ `);return t.at(-1)===""?t.slice(0,-1):t}function zc(e){return e.includes(0)||!Wg(e)}function Wc(e){return Yg.has(Vg(e).toLowerCase())}function rh(e){return["for","if","switch","while"].includes(e)}function Hc(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Vc(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var Jc,Ws,Kg,zg,Yg,Ks=R(()=>{"use strict";ee();ze();Jc=8*1024,Ws=10,Kg=8,zg=2,Yg=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var sr={};C(sr,{parseExecCommandLine:()=>Xc,renderExecContract:()=>Qc,runExecWrapper:()=>uh});import{isUtf8 as sh}from"node:buffer";import{spawn as ih}from"node:child_process";async function uh(e,t){let n=Xc(e),r=await lh(n);return await Qc(n,r,t)}async function Qc(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let i=dh(r);if(i.kind==="text"){let d=await Yt(i.text,{level:n.level,command:e,store:n.store?{mint:async(...f)=>await n.store.mint(...f)}:void 0});if(d.detected)return{stdout:Buffer.from(d.output),stderr:s,status:t.status,signal:t.signal,mintedHandle:d.handle,bytesElided:d.lossy?r.length:void 0,rawOutput:r}}let o=i.kind==="text"?Buffer.from(i.text):r,a=ph(n.heavyByteThreshold,oh);if(o.length<=a&&n.level!=="terse")return{stdout:o,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");return{stdout:Buffer.from(fh(o,r.length,l,n.level)),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r}}function Xc(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 lh(e){let t=ih(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 dh(e){return sh(e)?{kind:"text",text:ht(e.toString("utf8"))}:{kind:"bytes"}}function fh(e,t,n,r){let i=Math.max(1,Math.floor((r==="terse"?ch:ah)/2)),o=Yc(e.subarray(0,i)),a=Yc(e.subarray(Math.max(0,e.length-i))),c=mh(e),u=["stdout summary",`bytes: ${t}`,`lines: ${c}`,"head:",o];return a&&a!==o&&u.push("tail:",a),u.push(`\u2026 elided stdout (+${t}) \u2014 ${Q(n)}`),`${u.join(`
146
148
  `)}
147
- `}function Yc(e){return e.toString("utf8").replace(/�$/g,"")}function lh(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 dh(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var rh,sh,ih,ir=R(()=>{"use strict";Ke();Qt();rh=8*1024,sh=2*1024,ih=1024});xr();Re();import{spawn as fh}from"node:child_process";import{createHash as mh}from"node:crypto";import{appendFileSync as Zc,existsSync as nn,mkdirSync as ph,readFileSync as gh,readdirSync as hh,statSync as yh}from"node:fs";import{tmpdir as wh}from"node:os";import{dirname as nu,join as ce}from"node:path";import{fileURLToPath as ru}from"node:url";function Ci(e){let t={app:e,version:El(it("__RED_BUILD_VERSION__",()=>"2.57.3")??"0.0.0-dev"),gitSha:it("__RED_BUILD_GIT_SHA__",()=>"3a4886f9d7da9cafb4dd5f70014c3bb5d2f9a28f")??"unknown",buildTime:it("__RED_BUILD_TIME__",()=>"2026-07-15T02:36:26-03:00")??"unknown",bundleAsset:it("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=it("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=it("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function El(e){return e.startsWith("v")?e.slice(1):e}function it(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}jr();async function bh(e=process.argv.slice(2)){let t=Ci("rsp"),n=Ch(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(qn(),us));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(qn(),us));return await m()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(Qt(),ds));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(Qt(),ds));return await m()}if(n.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Sa(),Ra)),p=await m(process.cwd());return process.stdout.write(Jh(p)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Oa(),Pa));return await m(),0}if(n.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(Ma(),La));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(`error: usage rsp shell-init fish|bash|zsh
148
- `),2;let{renderShellInit:p}=await Promise.resolve().then(()=>(Ga(),Ua));return process.stdout.write(p(m)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(ne(),ao)),s=r(process.cwd(),process.env,n.storeUri),i=$h(n.command);if(!s.enabled)return i?await Ih(n.positional):(process.stdout.write(`${ni()}
149
- `),0);if(n.command==="git"&&Xs(n.positional)){let m=process.hrtime.bigint();return await G(n,await Zs(),m,void 0,await _h(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(je(),Lt));if(n.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(bc(),wc)),p=o(process.cwd()),k=ae(n.positional,"--socket")??p.socketPath,w=r(process.cwd(),process.env,n.storeUri??ae(n.positional,"--store-uri"));return w.enabled?(await m({socketPath:k,pidPath:ae(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:p.rootDir,storeUri:w.storeUri,ttlDays:B(n.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:B(n.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:B(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:B(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:B(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:B(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:B(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:B(n.positional,"--idle-ms")??w.idleMs,residentVersion:ae(n.positional,"--resident-version")??t.version,registryPath:ae(n.positional,"--registry")??p.registryPath}),0):(process.stdout.write(`${ni()}
150
- `),0)}if(n.command==="warm-resident"){let m=o(process.cwd()),p=ae(n.positional,"--socket")??m.socketPath,k=ae(n.positional,"--wake-lock")??m.wakeLockPath,w=r(process.cwd(),process.env,n.storeUri??ae(n.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:T}=await Promise.resolve().then(()=>(je(),Lt));return await T({...m,socketPath:p,wakeLockPath:k},{storeUri:w.storeUri,ttlDays:B(n.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:B(n.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:B(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:B(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:B(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:B(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:B(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:B(n.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}let u=o(process.cwd());if(n.command==="proxy"){let{runProxy:m}=await Promise.resolve().then(()=>(Cs(),Ns));return await m(n.positional,{telemetryRoot:u.rootDir,level:n.level})}if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:m,sweepResidentRegistry:p}=await Promise.resolve().then(()=>(je(),Lt)),k=n.command==="sweep"?await p(u):await m(u);return process.stdout.write(`${v(k)}
151
- `),0}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!nn(ru(s.storeUri)))return i?await Eh(n,s,u.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
152
- `),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})),d=()=>c(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),f=async()=>{let{RspElisionStore:m}=await Promise.resolve().then(()=>(Fe(),Ft));return await m.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},y=()=>s.storeUri.endsWith("/red-skills.rdb")?l():f(),g;try{if(!n.command||n.command==="stats"){let{stats:m,telemetry:p}=await kh(s,eu(n.positional,30));return process.stdout.write(Ah(m,p,Bh(n.positional))),0}if(n.command==="gains"){let m=await y();if(g=()=>m.close(),!Sh(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
153
- `),1;let p=await m.telemetryGains(eu(n.positional,28));return process.stdout.write(Lh(p)),0}if(n.command==="git"){if(Ne(d()),Xs(n.positional)){let T=process.hrtime.bigint();return await G(n,await Zs(),T,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(Ke(),As)),p=new Ye(()=>l(!1));g=()=>p.close();let k=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p,heavyGitByteThreshold:s.heavyGitByteThreshold});return await G(n,w,k,p,u.rootDir)}if(n.command==="gh"){Ne(d());let{runGhWrapper:m}=await Promise.resolve().then(()=>(Gs(),Us)),p=new Ye(()=>l(!1));g=()=>p.close();let k=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p});return await G(n,w,k,p,u.rootDir)}if(n.command==="vitest"||n.command==="cargo"){Ne(d());let{runTestWrapper:m}=await Promise.resolve().then(()=>(Js(),qs)),p=new Ye(()=>l(!1));g=()=>p.close();let k=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p});return await G(n,w,k,p,u.rootDir)}if(n.command==="cat"){Ne(d());let{runCatWrapper:m}=await Promise.resolve().then(()=>(Ks(),Vs)),p=new Ye(()=>l(!1));g=()=>p.close();let k=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p,heavyByteThreshold:s.heavyGitByteThreshold});return await G(n,w,k,p,u.rootDir)}if(n.command==="exec"){Ne(d());let{runExecWrapper:m}=await Promise.resolve().then(()=>(ir(),sr)),p=new Ye(()=>l(!1));g=()=>p.close();let k=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p,heavyByteThreshold:s.heavyGitByteThreshold});return await G(n,w,k,p,u.rootDir)}if(n.command==="show"&&n.handle){let m=await y();g=()=>m.close();let p=await m.get(n.handle);if(p&&"original"in p&&p.original)return process.stdout.write(p.original),await zs(u.rootDir,n.handle,!0,p.original.length),0;if(p?.status==="expired"){let w=`expired ${p.expired_at} \u2014 re-run: ${p.command}
149
+ `}function Yc(e){return e.toString("utf8").replace(/�$/g,"")}function mh(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 ph(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var oh,ah,ch,ir=R(()=>{"use strict";ze();Qt();oh=8*1024,ah=2*1024,ch=1024});xr();ee();import{spawn as gh}from"node:child_process";import{createHash as hh}from"node:crypto";import{appendFileSync as Zc,existsSync as rn,mkdirSync as yh,readFileSync as wh,readdirSync as bh,statSync as _h}from"node:fs";import{tmpdir as Rh}from"node:os";import{dirname as nu,join as ue}from"node:path";import{fileURLToPath as ru}from"node:url";function Ni(e){let t={app:e,version:El(ot("__RED_BUILD_VERSION__",()=>"2.58.0")??"0.0.0-dev"),gitSha:ot("__RED_BUILD_GIT_SHA__",()=>"e3816f2df7731c2c9305b99c5b56c7bcb63a5d05")??"unknown",buildTime:ot("__RED_BUILD_TIME__",()=>"2026-07-15T08:34:07-03:00")??"unknown",bundleAsset:ot("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=ot("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=ot("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function El(e){return e.startsWith("v")?e.slice(1):e}function ot(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}jr();async function Sh(e=process.argv.slice(2)){let t=Ni("rsp"),n=Lh(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(Jn(),us));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(Jn(),us));return await m()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(Qt(),ds));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(Qt(),ds));return await m()}if(n.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Sa(),Ra)),p=await m(process.cwd());return process.stdout.write(Vh(p)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Oa(),Pa));return await m(),0}if(n.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(Ma(),La));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(`error: usage rsp shell-init fish|bash|zsh
150
+ `),2;let{renderShellInit:p}=await Promise.resolve().then(()=>(Ga(),Ua));return process.stdout.write(p(m)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(re(),ao)),s=r(process.cwd(),process.env,n.storeUri),i=Bh(n.command);if(!s.enabled)return i?await Nh(n.positional):(process.stdout.write(`${ni()}
151
+ `),0);if(n.command==="git"&&Xs(n.positional)){let m=process.hrtime.bigint();return await G(n,await Zs(),m,void 0,await Eh(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Ue(),Lt));if(n.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(bc(),wc)),p=o(process.cwd()),k=ce(n.positional,"--socket")??p.socketPath,w=r(process.cwd(),process.env,n.storeUri??ce(n.positional,"--store-uri"));return w.enabled?(await m({socketPath:k,pidPath:ce(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:p.rootDir,storeUri:w.storeUri,ttlDays:B(n.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:B(n.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:B(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:B(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:B(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:B(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:B(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:B(n.positional,"--idle-ms")??w.idleMs,residentVersion:ce(n.positional,"--resident-version")??t.version,registryPath:ce(n.positional,"--registry")??p.registryPath}),0):(process.stdout.write(`${ni()}
152
+ `),0)}if(n.command==="warm-resident"){let m=o(process.cwd()),p=ce(n.positional,"--socket")??m.socketPath,k=ce(n.positional,"--wake-lock")??m.wakeLockPath,w=r(process.cwd(),process.env,n.storeUri??ce(n.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:v}=await Promise.resolve().then(()=>(Ue(),Lt));return await v({...m,socketPath:p,wakeLockPath:k},{storeUri:w.storeUri,ttlDays:B(n.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:B(n.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:B(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:B(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:B(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:B(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:B(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:B(n.positional,"--idle-ms")??w.idleMs,clientVersion:t.version}),0}let u=o(process.cwd());if(n.command==="proxy"){let{runProxy:m}=await Promise.resolve().then(()=>(Ns(),Cs));return await m(n.positional,{telemetryRoot:u.rootDir,level:n.level})}if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:m,sweepResidentRegistry:p}=await Promise.resolve().then(()=>(Ue(),Lt)),k=n.command==="sweep"?await p(u):await m(u);return process.stdout.write(`${T(k)}
153
+ `),0}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!rn(ru(s.storeUri)))return i?await Th(n,s,u.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
154
+ `),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})),d=()=>c(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),f=async()=>{let{RspElisionStore:m}=await Promise.resolve().then(()=>(qe(),Ft));return await m.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},y=()=>s.storeUri.endsWith("/red-skills.rdb")?l():f(),g;try{if(!n.command||n.command==="stats"){let{stats:m,telemetry:p}=await vh(s,eu(n.positional,30));return process.stdout.write(jh(m,p,Mh(n.positional))),0}if(n.command==="gains"){let m=await y();if(g=()=>m.close(),!xh(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
155
+ `),1;let p=await m.telemetryGains(eu(n.positional,28));return process.stdout.write(Uh(p)),0}if(n.command==="git"){if(Ne(d()),Xs(n.positional)){let v=process.hrtime.bigint();return await G(n,await Zs(),v,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(ze(),As)),p=new Qe(()=>l(!1));g=()=>p.close();let k=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p,heavyGitByteThreshold:s.heavyGitByteThreshold});return await G(n,w,k,p,u.rootDir)}if(n.command==="gh"){Ne(d());let{runGhWrapper:m}=await Promise.resolve().then(()=>(Gs(),Us)),p=new Qe(()=>l(!1));g=()=>p.close();let k=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p});return await G(n,w,k,p,u.rootDir)}if(n.command==="vitest"||n.command==="cargo"){Ne(d());let{runTestWrapper:m}=await Promise.resolve().then(()=>(Js(),qs)),p=new Qe(()=>l(!1));g=()=>p.close();let k=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p});return await G(n,w,k,p,u.rootDir)}if(n.command==="cat"){Ne(d());let{runCatWrapper:m}=await Promise.resolve().then(()=>(Ks(),Vs)),p=new Qe(()=>l(!1));g=()=>p.close();let k=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p,heavyByteThreshold:s.heavyGitByteThreshold});return await G(n,w,k,p,u.rootDir)}if(n.command==="exec"){Ne(d());let{runExecWrapper:m}=await Promise.resolve().then(()=>(ir(),sr)),p=new Qe(()=>l(!1));g=()=>p.close();let k=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p,heavyByteThreshold:s.heavyGitByteThreshold});return await G(n,w,k,p,u.rootDir)}if(n.command==="show"&&n.handle){let m=await y();g=()=>m.close();let p=await m.get(n.handle);if(p&&"original"in p&&p.original)return process.stdout.write(p.original),await zs(u.rootDir,n.handle,!0,p.original.length),0;if(p?.status==="expired"){let w=`expired ${p.expired_at} \u2014 re-run: ${p.command}
154
156
  `;return process.stdout.write(w),await zs(u.rootDir,n.handle,!1,Buffer.byteLength(w,"utf8")),1}let k=`expired unknown \u2014 re-run: ${n.handle}
155
157
  `;return process.stdout.write(k),await zs(u.rootDir,n.handle,!1,Buffer.byteLength(k,"utf8")),1}return process.stdout.write(`error: usage rsp show el:<id>
156
- `),2}catch(m){if(i)return await ti("wrapper failed",n.positional,m,u.rootDir);throw m}finally{await g?.()}}function ae(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function B(e,t){let n=ae(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function Xs(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Zs(){if(Rh(process.cwd()))return{stdout:Buffer.from(`git empty
158
+ `),2}catch(m){if(i)return await ti("wrapper failed",n.positional,m,u.rootDir);throw m}finally{await g?.()}}function ce(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function B(e,t){let n=ce(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function Xs(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Zs(){if(kh(process.cwd()))return{stdout:Buffer.from(`git empty
157
159
  `),stderr:Buffer.alloc(0),status:0,signal:null};let{spawnSync:e}=await import("node:child_process");if(e("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Buffer.from(`git empty
158
160
  `),stderr:Buffer.alloc(0),status:0,signal:null};let n=e("git",["status","--porcelain=v1"],{encoding:"buffer"});if((n.status??0)!==0)return{stdout:n.stdout,stderr:n.stderr,status:n.status??1,signal:n.signal};let r=n.stdout.length===0?Buffer.from(`git empty
159
- `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function _h(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(je(),Lt));return t(e).rootDir}catch{return e}}function Rh(e){try{return!nn(`${e}/.git`)||nn(`${e}/.git/index`)?!1:hh(e).every(t=>t===".git")}catch{return!1}}function Sh(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Ye=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}},ei=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function Eh(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new ei,i=process.hrtime.bigint();try{if(e.command==="git"){if(Xs(e.positional))return await G(e,await Zs(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(Ke(),As)),a=await o(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await G(e,a,i,s,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Gs(),Us)),a=await o(e.positional,{level:e.level,store:s});return await G(e,a,i,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Js(),qs)),a=await o(e.positional,{level:e.level,store:s});return await G(e,a,i,s,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Ks(),Vs)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await G(e,a,i,s,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(ir(),sr)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await G(e,a,i,s)}}catch(o){return await ti("wrapper failed",e.positional,o,n)}finally{await s.close()}return await ti("wrapper failed",e.positional,r,n)}async function kh(e,t){let n={stats:qh(e.telemetryByteBudget),telemetry:si(t)};if(!e.storeUri.startsWith("file://"))return n;let r=ru(e.storeUri);if(!nn(r))return n;if(!r.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(Fe(),Ft)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:si(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(Fe(),Ft));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(Te(),Ht)),a=await ln(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}async function G(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?(Ne(Oh(s,e,t,o,r.lastResponseMetrics())),i&&xh(s,i)):Dh(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function xh(e,t){try{let n=ce(e,".red","tmp","rsp-telemetry.spool.jsonl"),r=yh(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!Ph(n,Date.now()-s))return;let i=Th(e),o=vh(i),a=ce(o,"rsp.sock"),c=ce(o,"rsp.pid"),u=ce(i,".red","tmp","rsp-resident.pid.json"),l=ce(i,".red","tmp","rsp.wake.lock");fh(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 Th(e){let t=e;for(;;){if(nn(ce(t,".git")))return t;let n=nu(t);if(n===t)return e;t=n}}function vh(e){let t=mh("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=ce(n,"red-skills",t);if(ce(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ce(wh(),`red-skills-${r}`,t)}function Ph(e,t){try{let n=gh(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 Oh(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(()=>(Te(),Ht));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:or(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:or(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,raw_text:o.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:r,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs,accounting_recorded:!0})}function Dh(e,t,n,r){try{let s=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=ce(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=JSON.stringify({collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:or(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}),c=JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:or(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}),u=`${a}
161
+ `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function Eh(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ue(),Lt));return t(e).rootDir}catch{return e}}function kh(e){try{return!rn(`${e}/.git`)||rn(`${e}/.git/index`)?!1:bh(e).every(t=>t===".git")}catch{return!1}}function xh(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Qe=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}},ei=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function Th(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new ei,i=process.hrtime.bigint();try{if(e.command==="git"){if(Xs(e.positional))return await G(e,await Zs(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(ze(),As)),a=await o(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await G(e,a,i,s,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Gs(),Us)),a=await o(e.positional,{level:e.level,store:s});return await G(e,a,i,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Js(),qs)),a=await o(e.positional,{level:e.level,store:s});return await G(e,a,i,s,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Ks(),Vs)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await G(e,a,i,s,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(ir(),sr)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await G(e,a,i,s)}}catch(o){return await ti("wrapper failed",e.positional,o,n)}finally{await s.close()}return await ti("wrapper failed",e.positional,r,n)}async function vh(e,t){let n={stats:Hh(e.telemetryByteBudget),telemetry:si(t)};if(!e.storeUri.startsWith("file://"))return n;let r=ru(e.storeUri);if(!rn(r))return n;if(!r.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(qe(),Ft)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:si(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(qe(),Ft));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(ve(),Ht)),a=await dn(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}async function G(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?(Ne($h(s,e,t,o,r.lastResponseMetrics())),i&&Ph(s,i)):Ch(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function Ph(e,t){try{let n=ue(e,".red","tmp","rsp-telemetry.spool.jsonl"),r=_h(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!Ih(n,Date.now()-s))return;let i=Oh(e),o=Dh(i),a=ue(o,"rsp.sock"),c=ue(o,"rsp.pid"),u=ue(i,".red","tmp","rsp-resident.pid.json"),l=ue(i,".red","tmp","rsp.wake.lock");gh(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 Oh(e){let t=e;for(;;){if(rn(ue(t,".git")))return t;let n=nu(t);if(n===t)return e;t=n}}function Dh(e){let t=hh("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=ue(n,"red-skills",t);if(ue(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ue(Rh(),`red-skills-${r}`,t)}function Ih(e,t){try{let n=wh(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 $h(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(()=>(ve(),Ht));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:or(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:or(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,raw_text:o.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:r,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs,accounting_recorded:!0})}function Ch(e,t,n,r){try{let s=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=ue(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=JSON.stringify({collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:or(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}),c=JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:or(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}),u=`${a}
160
162
  ${c}
161
- `;try{Zc(o,u,{encoding:"utf8",mode:384})}catch(l){if(l.code!=="ENOENT")return;ph(nu(o),{recursive:!0}),Zc(o,u,{encoding:"utf8",mode:384})}}catch{}}async function ti(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
162
- `);let s=await su(t);if(r){let{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:a}=await Promise.resolve().then(()=>(Te(),Ht));Ne(i(r,{collection:o,event_type:"invocation",ts:new Date().toISOString(),command:ri(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:e})),Ne(i(r,{collection:a,ts:new Date().toISOString(),command:ri(t),reason:e,accounting_recorded:!0}))}return s}function Ne(e){e.catch(()=>{})}async function zs(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(Te(),Ht));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 Ih(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${ni()}, passing through
163
- `),await su(e)}function ni(){return"rsp is not enabled in this directory; run /red-setup"}function $h(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"}async function su(e){if(e[0]==="exec"||e[0]==="proxy")return await Nh(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)}
164
- `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}async function Nh(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:s}=await Promise.resolve().then(()=>(Cs(),Ns));t=s(e)}else{let{parseExecCommandLine:s}=await Promise.resolve().then(()=>(ir(),sr));t=s(e)}}catch(s){return process.stderr.write(`${s instanceof Error?s.message:String(s)}
163
+ `;try{Zc(o,u,{encoding:"utf8",mode:384})}catch(l){if(l.code!=="ENOENT")return;yh(nu(o),{recursive:!0}),Zc(o,u,{encoding:"utf8",mode:384})}}catch{}}async function ti(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
164
+ `);let s=await su(t);if(r){let{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:a}=await Promise.resolve().then(()=>(ve(),Ht));Ne(i(r,{collection:o,event_type:"invocation",ts:new Date().toISOString(),command:ri(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:e})),Ne(i(r,{collection:a,ts:new Date().toISOString(),command:ri(t),reason:e,accounting_recorded:!0}))}return s}function Ne(e){e.catch(()=>{})}async function zs(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(ve(),Ht));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 Nh(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${ni()}, passing through
165
+ `),await su(e)}function ni(){return"rsp is not enabled in this directory; run /red-setup"}function Bh(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"}async function su(e){if(e[0]==="exec"||e[0]==="proxy")return await Ah(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)}
166
+ `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}async function Ah(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:s}=await Promise.resolve().then(()=>(Ns(),Cs));t=s(e)}else{let{parseExecCommandLine:s}=await Promise.resolve().then(()=>(ir(),sr));t=s(e)}}catch(s){return process.stderr.write(`${s instanceof Error?s.message:String(s)}
165
167
  `),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)}
166
- `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function or(e){return ri(e.positional)}function ri(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 Ch(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let s=e[r];s==="--store-uri"?t.storeUri=e[++r]:s==="--brief"?t.level="brief":s==="--terse"?t.level="terse":s==="--query"?t.query=e[++r]:s.startsWith("--query=")?t.query=s.slice(8):n.push(s)}return t.query&&n[0]!=="show"&&!n.some(r=>r==="--query"||r.startsWith("--query="))&&n.push("--query",t.query),t.command=n[0],t.handle=n[1],t.positional=n,t}function eu(e,t){let n=ae(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 Bh(e){return e.includes("--full")}function Ah(e,t=si(30),n=!1){let r=t.savings.top_commands.slice(0,n?10:3),s=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??iu();return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,"storage_classes:",...Fh(i),"savings:",` window_days: ${t.window_days}`,` empty: ${t.empty}`,` invocations: ${t.savings.invocations}`,` elided: ${t.savings.elided}`,` raw_bytes: ${t.savings.raw_bytes}`,` emitted_bytes: ${t.savings.emitted_bytes}`,` bytes_saved: ${t.savings.bytes_saved}`,` tokens_saved: ${Mh(t.savings)}`,` dollars_saved_estimate_usd: ${jh(t.savings)}`,` pricing_model_family: ${t.savings.pricing_model_family}`,` pricing_input_usd_per_million_tokens: ${t.savings.pricing_input_usd_per_million_tokens}`,` pricing_note: ${t.savings.pricing_note}`," daily_tokens_saved:",...Uh(s),...!n&&t.savings.daily_tokens_saved.length>s.length?[` elided_days: ${t.savings.daily_tokens_saved.length-s.length}`," hint: --full"]:[]," top_commands:",...Gh(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${Qs(t.health.degradation_rate)}`,` show_total: ${t.health.show_total}`,` show_hits: ${t.health.show_hits}`,` show_misses: ${t.health.show_misses}`,` show_hit_rate: ${Qs(t.health.show_hit_rate)}`,` most_recent_degradation_at: ${t.health.most_recent?.timestamp??"none"}`,` most_recent_degradation_reason: ${t.health.most_recent?.reason??"none"}`," degradations_by_reason:",...tu(t.health.by_reason),"decisions:",` seen: ${t.decisions.seen}`,` contributed: ${t.decisions.contributed}`,` passed: ${t.decisions.passed}`,` failed_open: ${t.decisions.failed_open}`,` contribution_rate: ${Qs(t.decisions.contribution_rate)}`," top_pass_reasons:",...tu(t.decisions.top_pass_reasons.slice(0,n?10:3)),"latency:",` wrapper_ms_p50: ${Ys(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Ys(t.latency.wrapper_ms_p95)}`,` store_open_count_sum: ${t.latency.store_open_count_sum}`,` store_elapsed_ms_sum: ${t.latency.store_elapsed_ms_sum}`,` store_elapsed_ms_avg: ${Ys(t.latency.store_elapsed_ms_avg)}`,""].join(`
167
- `)}function Lh(e){return`${v(e)}
168
- `}function Mh(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 jh(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?$t(e.dollars_saved_estimate_usd):`${$t(e.dollars_saved_low_usd)}-${$t(e.dollars_saved_high_usd)} (estimate_midpoint: ${$t(e.dollars_saved_estimate_usd)})`}function Uh(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function Gh(e){return e.length===0?[" empty: true"]:e.map(t=>` - command: ${t.command} invocations: ${t.invocations} bytes_saved: ${t.bytes_saved} tokens_saved: ${t.tokens_saved}`)}function tu(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function Fh(e){return["derivable","re-executable","ephemeral"].map(t=>` ${t}: records: ${e[t].records} bytes: ${e[t].bytes} raw_bytes: ${e[t].raw_bytes}`)}function Ys(e){return e==null?"none":String(e)}function Qs(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function si(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:[],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,contribution_rate:0,top_pass_reasons:[]}}}function qh(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:iu()}}function iu(){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 Jh(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
169
- `)}import.meta.url===`file://${process.argv[1]}`&&bh().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
170
- `),process.exit(1)});export{bh as main,Jh as renderSetupResult,Ah as renderStats};
168
+ `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function or(e){return ri(e.positional)}function ri(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 Lh(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let s=e[r];s==="--store-uri"?t.storeUri=e[++r]:s==="--brief"?t.level="brief":s==="--terse"?t.level="terse":s==="--query"?t.query=e[++r]:s.startsWith("--query=")?t.query=s.slice(8):n.push(s)}return t.query&&n[0]!=="show"&&!n.some(r=>r==="--query"||r.startsWith("--query="))&&n.push("--query",t.query),t.command=n[0],t.handle=n[1],t.positional=n,t}function eu(e,t){let n=ce(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 Mh(e){return e.includes("--full")}function jh(e,t=si(30),n=!1){let r=t.savings.top_commands.slice(0,n?10:3),s=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??iu();return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,"storage_classes:",...Wh(i),"savings:",` window_days: ${t.window_days}`,` empty: ${t.empty}`,` invocations: ${t.savings.invocations}`,` elided: ${t.savings.elided}`,` raw_bytes: ${t.savings.raw_bytes}`,` emitted_bytes: ${t.savings.emitted_bytes}`,` bytes_saved: ${t.savings.bytes_saved}`,` tokens_saved: ${Gh(t.savings)}`,` dollars_saved_estimate_usd: ${Fh(t.savings)}`,` pricing_model_family: ${t.savings.pricing_model_family}`,` pricing_input_usd_per_million_tokens: ${t.savings.pricing_input_usd_per_million_tokens}`,` pricing_note: ${t.savings.pricing_note}`," daily_tokens_saved:",...qh(s),...!n&&t.savings.daily_tokens_saved.length>s.length?[` elided_days: ${t.savings.daily_tokens_saved.length-s.length}`," hint: --full"]:[]," top_commands:",...Jh(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${Qs(t.health.degradation_rate)}`,` show_total: ${t.health.show_total}`,` show_hits: ${t.health.show_hits}`,` show_misses: ${t.health.show_misses}`,` show_hit_rate: ${Qs(t.health.show_hit_rate)}`,` most_recent_degradation_at: ${t.health.most_recent?.timestamp??"none"}`,` most_recent_degradation_reason: ${t.health.most_recent?.reason??"none"}`," degradations_by_reason:",...tu(t.health.by_reason),"decisions:",` seen: ${t.decisions.seen}`,` contributed: ${t.decisions.contributed}`,` passed: ${t.decisions.passed}`,` failed_open: ${t.decisions.failed_open}`,` contribution_rate: ${Qs(t.decisions.contribution_rate)}`," top_pass_reasons:",...tu(t.decisions.top_pass_reasons.slice(0,n?10:3)),"latency:",` wrapper_ms_p50: ${Ys(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Ys(t.latency.wrapper_ms_p95)}`,` store_open_count_sum: ${t.latency.store_open_count_sum}`,` store_elapsed_ms_sum: ${t.latency.store_elapsed_ms_sum}`,` store_elapsed_ms_avg: ${Ys(t.latency.store_elapsed_ms_avg)}`,""].join(`
169
+ `)}function Uh(e){return`${T(e)}
170
+ `}function Gh(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 Fh(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?$t(e.dollars_saved_estimate_usd):`${$t(e.dollars_saved_low_usd)}-${$t(e.dollars_saved_high_usd)} (estimate_midpoint: ${$t(e.dollars_saved_estimate_usd)})`}function qh(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function Jh(e){return e.length===0?[" empty: true"]:e.map(t=>` - command: ${t.command} invocations: ${t.invocations} bytes_saved: ${t.bytes_saved} tokens_saved: ${t.tokens_saved}`)}function tu(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function Wh(e){return["derivable","re-executable","ephemeral"].map(t=>` ${t}: records: ${e[t].records} bytes: ${e[t].bytes} raw_bytes: ${e[t].raw_bytes}`)}function Ys(e){return e==null?"none":String(e)}function Qs(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function si(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:[],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,contribution_rate:0,top_pass_reasons:[]}}}function Hh(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:iu()}}function iu(){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 Vh(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
171
+ `)}import.meta.url===`file://${process.argv[1]}`&&Sh().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
172
+ `),process.exit(1)});export{Sh as main,Vh as renderSetupResult,jh as renderStats};