@reddb-io/red-skills 2.59.0 → 2.60.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,74 +1,76 @@
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 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.
3
+ var pu=Object.defineProperty;var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var C=(e,t)=>{for(var n in t)pu(e,n,{get:t[n],enumerable:!0})};async function li(e,t){return gu?wu(e,t):hu?_u(e,t):yu(e,t)}async function yu(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 wu(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:bu(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*bu(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 _u(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:Ru(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Ru(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var gu,hu,di=S(()=>{gu=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",hu=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Su}from"node:fs";import{join as Eu}from"node:path";function fi(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=Eu(n,"bin",t);if(Su(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 ny}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 Ou(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 Pu(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:Pu(r.value)}async put(t,n,r,s={}){this._guard("put");let i=Ou(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(`
7
+ or check the postinstall log for a download error.`)}var mi=S(()=>{});import{fileURLToPath as ku}from"node:url";import{dirname as xu,resolve as Tu,join as fy}from"node:path";function Pu(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function pi(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:fi({name:Pu(),packageRoot:Ou,envVar:"REDDB_BIN"})}var vu,Ou,gi=S(()=>{mi();vu=xu(ku(import.meta.url)),Ou=Tu(vu,"..")});var Du,Iu,_,un,Se=S(()=>{Du=new TextEncoder,Iu=new TextDecoder("utf-8"),_=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},un=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 _("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(Du.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(Iu.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 _(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 _("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function ur(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:/"?$u(e):Cu(e)}function $u(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 _("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=Nu(s),a=n.port?Number(n.port):cr(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 Cu(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 _("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):cr(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 _("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):cr(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 _("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Nu(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 _("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function cr(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 lr=S(()=>{Se()});function Au(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return hi(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return hi(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function hi(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 Lu(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 Bu,St,dr=S(()=>{Se();Bu=new Set(["embedded"]),St=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Bu.has(this._transport))throw new _("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:Lu(r.value)}async put(t,n,r,s={}){this._guard("put");let i=Au(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 fr(e,t){return`${mr(e)}.${Mu(t)}`}function mr(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new _("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Mu(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function ju(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 yi(e){return`'${String(e).replace(/'/g,"''")}'`}var rt,pr=S(()=>{Se();rt=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(yi).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${fr(s,t)} = ${ju(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 ${fr(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 ${fr(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 _("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 ${mr(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(yi).join(", ")}] FROM ${mr(r)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new _("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 _("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=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(Hu)}async function Ri(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Vu(t)}`)).rows??[]).some(r=>r.name===String(t))}function Hu(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(Wu).join(".")}function Wu(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,Ot=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 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 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(()=>{Ot();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=Oi(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]=Pt(a,s.number);if(u===""&&!l)throw S(s.number,"expected non-empty field name");t.index+=1;let d=Oi(e,t,n,c,s.number,r);return{key:u,quoted:l,value:d}}function Oi(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 Pr(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(!Pi(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 Pr(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&Pi(a.content,e.delimiter,a.number))throw S(a.number,"array length mismatch");return o}function Pi(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 Pr(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 Pr(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=Dt(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");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),`: []
11
+ `).find(d=>d.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Uu(e,t,n){let{waitMs:r,group:s=null,count:i=null}=n??{};if(!Number.isInteger(r)||r<0)throw new _("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=de(e),a=de(t),c=s!=null?` GROUP ${de(s)}`:"",u=i!=null?hr(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function de(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new _("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function hr(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new _("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Fu(e){if(!Number.isInteger(e))throw new _("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Gu(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new _("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Fu(e.priority)}`),e.key!=null&&(t+=` KEY ${yr(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${yr(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function qu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?yr(e):JSON.stringify(e)}function yr(e){return`'${String(e).replace(/'/g,"''")}'`}function gr(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Et,wr=S(()=>{Se();Et=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${de(t)}`})}push(t,n,r={}){let s=Gu(r);return this.client.call("query",{sql:`QUEUE PUSH ${de(t)} ${qu(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${de(t)}${hr(n)}`});return gr(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${de(t)}${hr(n)}`});return gr(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${de(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${de(t)}`})}async readWait(t,n,r={}){let s=Uu(t,n,r),i=await this.client.call("query",{sql:s});return gr(i)}}});function wi(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new _("INVALID_ARGUMENT",`${t} must be an object`)}function Ju(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new _("INVALID_ARGUMENT","limit must be a positive integer");return e}function ln(e){return String(e).split(".").map(bi).join(".")}function bi(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new _("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Hu(e){return _i(JSON.stringify(e))}function Wu(e){return JSON.stringify(e)}function Vu(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Hu(e):_i(e)}function _i(e){return`'${String(e).replace(/'/g,"''")}'`}var kt,br=S(()=>{Se();kt=class{constructor(t){this.db=t}async insert(t,n){wi(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${ln(t)} DOCUMENT VALUES (${Wu(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new _("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 _("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=Ju(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 ${ln(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){wi(r,"documents.patch patch");let s=Object.entries(r);if(s.length===0)throw new _("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new _("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${bi(c)} = ${Vu(u)}`).join(", "),a=(await this.db.query(`UPDATE ${ln(t)} SET ${i} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new _("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 ${ln(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function Ku(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${Ee(n)}.${Ee(r)})`}return Yu(e)}function zu(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 Ee(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 Yu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ri(e)}function Ri(e){return`'${String(e).replace(/'/g,"''")}'`}var xt,_r=S(()=>{xt=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){zu(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Ri).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${Ee(s)} ${Ee(t)} = ${Ku(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${Ee(r)} ${Ee(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${Ee(r)} ${Ee(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 st(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function Xu(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Si(e)}function Si(e){return`'${String(e).replace(/'/g,"''")}'`}var Tt,Rr=S(()=>{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(Si).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${st(s)}.${st(t)} = ${Xu(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${st(r)}.${st(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${st(r)}.${st(t)}`})}}});async function ki(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Zu)}async function xi(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${tl(t)}`)).rows??[]).some(r=>r.name===String(t))}function Zu(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Ei(e){return String(e).split(".").map(el).join(".")}function el(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new _("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function tl(e){return`'${String(e).replace(/'/g,"''")}'`}var vt,Sr=S(()=>{Se();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 _("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(Ei).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Ei(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 mn(e,t={}){let n=ur(e);if(dl(n),n.kind==="embedded"){let r=ll(n,t.auth);if(r.token||r.username)throw new _("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=ul(n),i=t.binary??pi(),o=await li(i,s),a=new un(o);return await a.call("version",{}),new kr(a,{transport:"embedded"})}}function vi(e){return sl(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:ol(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&cl(e)?{$uuid:e}:e}function sl(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new _("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 _("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new _("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function il(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(vi):e.map(vi)}function ol(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 al(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 cl(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function dn(e){if(Array.isArray(e))return e.map(dn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return al(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]=dn(s);return n}return e}function ul(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function ll(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 dl(e){if(e.kind!=="embedded")throw new _("EMBEDDED_ONLY",nl)}function xr(){return new _(Ti,`${Ti}: nested transactions are not supported on one connection`)}function Pi(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function fl(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new _("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Oi} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function ml(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new _("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Oi} 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 _("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var nl,rl,Oi,Ti,fn,Er,kr,Tr=S(()=>{di();gi();Se();lr();dr();pr();wr();br();_r();Rr();Sr();dr();pr();wr();br();_r();Rr();Sr();lr();nl="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",rl="1.0",Oi="1.0.9",Ti="NESTED_TX_NOT_SUPPORTED";fn=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 xr()}},Er=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw xr();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 _("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 _("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 _("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new fn(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){Pi(n,r)}throw n}}},kr=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=rl,this.cache=new St(t,this.transport),this.queue=new Et(t),this.queues=this.queue,this.documents=new kt(this);let r=new rt(t);this.kv=Object.assign((s="kv_default")=>new rt(t,s),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(s="red.config")=>new 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 _("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=il(n);return r==null?this.client.call("query",{sql:t}).then(dn):this.client.call("query",{sql:t,params:r}).then(dn)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return fl(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 ml(r,n.length)}tx(){return new Er(this)}async transaction(t){if(this.inTransaction)throw xr();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 fn(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){Pi(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return xi(this,t)}list(){return ki(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 b(e,t){return new pn(e,t)}var pn,Ot=S(()=>{pn=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}}});function vr(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 Z(e){return b(e,"invalid quoted string")}function ke(e,t){if(e==="")return"";if(e.startsWith('"'))return Di(e,t);if(e.includes('"'))throw Z(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:pl(e)?Number(e):e}function je(e,t){let n=e.trim();if(n.startsWith('"'))return[Di(n,t),!0];if(n.includes('"')||/\s/.test(n))throw b(t,"expected non-empty field name");return[n,!1]}function Di(e,t){if(e[0]!=='"')throw Z(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 Z(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 Z(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw Z(t);n+=String.fromCharCode(a),r+=4;break}default:throw Z(t)}continue}if(s<" "&&s!==" ")throw Z(t);n+=s}throw Z(t)}function Pt(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 Z(n);return r.push(e.slice(s).trim()),r}function M(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 Z(n);return-1}function pl(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function gl(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function hl(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw b(0,"number is not representable in TOON");return String(e)}function gn(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function xe(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return hl(e);if(typeof e=="string")return wl(e,t);throw b(0,"not a primitive")}function yl(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function ee(e){return yl(e)?e:Ii(e)}function wl(e,t){return bl(e,t)?Ii(e):e}function bl(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||gl(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function Ii(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 Dt(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var B,Or=S(()=>{Ot();B=","});function _l(e={}){return{indent:Math.max(1,e.indent??Br),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function Rl(e,t){let n=[],r=!1;return vr(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 b(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw b(o,"invalid indentation");n.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:r}),r=!1}),n}function fe(e,t){let n=_l(t),r=Rl(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw b(s.number,"invalid indentation");let i=r.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Mr(s.content,M(s.content,":",s.number))}catch(l){if(n.strict)throw Cr(l,s.number);u=void 0}if(u!==void 0)return kl(u,r,n)}if(i&&M(s.content,":",s.number)===-1)return ke(s.content.trim(),s.number);let o={index:0},a=Ar(r,o,0,n),c=r[o.index];if(c!==void 0)throw b(c.number,"expected end of document");return a}function Ar(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 b(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=Sl(e,t,n,r);Ni(s,o,a,c,r,i.number)}return s}function Sl(e,t,n,r){let s=e[t.index],i=s.content,o=M(i,":",s.number);if(o===-1)throw b(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=M(a,"[",s.number),l=M(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let g;try{g=Ol(a)}catch(p){if(r.strict)throw Cr(p,s.number);t.index+=1;let E=Pr(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:E}}if(c.trim()!=="")throw b(s.number,"expected keyed map rows");let m=El(g,e,t,n+1,r);return{key:g.key,quoted:g.keyQuoted,value:m}}if(u!==-1){let g;try{g=Mr(a,o)}catch(p){if(r.strict)throw Cr(p,s.number);t.index+=1;let E=Pr(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:E}}if(g.key===""&&!g.keyQuoted)throw b(s.number,"expected non-empty field name");let m=Lr(g,c,e,t,n,r);return{key:g.key,quoted:g.keyQuoted,value:m}}let[d,f]=je(a,s.number);if(d===""&&!f)throw b(s.number,"expected non-empty field name");t.index+=1;let y=Pr(e,t,n,c,s.number,r);return{key:d,quoted:f,value:y}}function Pr(e,t,n,r,s,i){let o=r.trim();if(o==="[]")return[];if(o!=="")return ke(o,s);let a=e[t.index];return a!==void 0&&a.depth>n?Ar(e,t,n+1,i):{}}function El(e,t,n,r,s){let i={};for(n.index+=1;n.index<t.length;){let o=t[n.index];if(o.depth<r)break;if(o.depth>r)throw b(o.number,"invalid indentation");if(o.blankBefore&&s.strict)throw b(o.number,"blank line inside keyed map");let a=M(o.content,":",o.number);if(a===-1)throw b(o.number,"expected `key: value`");let[c,u]=je(o.content.slice(0,a),o.number);if(c===""&&!u)throw b(o.number,"expected non-empty field name");let l=Pt(o.content.slice(a+1).trim(),e.delimiter,o.number);if(l.length!==e.fields.length)throw b(o.number,"keyed map row length mismatch");let d={};e.fields.forEach((f,y)=>{It(d,f,ke(l[y],o.number),s,o.number)}),Ni(i,c,u,d,s,o.number),n.index+=1}return i}function kl(e,t,n){let r=t[0],s=M(r.content,":",r.number);if(s===-1)throw b(r.number,"expected `key: value`");let i=r.content.slice(s+1),o={index:0},a=Lr(e,i,t,o,0,n),c=t[o.index];if(c!==void 0)throw b(c.number,"expected end of document");return a}function Lr(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 b(o,"expected tabular rows");return xl(e,e.fields,n,r,s+1,i)}if(a!==""){let c=Pt(a,e.delimiter,o).map(u=>ke(u,o));if(c.length!==e.len)throw b(o,"array length mismatch");return c}return Tl(e,n,r,s+1,i)}function xl(e,t,n,r,s,i){let o=[];for(;o.length<e.len;){let c=n[r.index];if(c===void 0)throw Ir(n,r.index);if(c.depth<s)break;if(c.depth>s)throw b(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw b(c.number,"blank line inside array");if(!$i(c.content,e.delimiter,c.number))break;let u=Pt(c.content,e.delimiter,c.number);if(u.length!==t.length)throw b(c.number,"array row length mismatch");let l={};t.forEach((d,f)=>{It(l,d,ke(u[f],c.number),i,c.number)}),o.push(l),r.index+=1}if(o.length!==e.len)throw Ir(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&$i(a.content,e.delimiter,a.number))throw b(a.number,"array length mismatch");return o}function $i(e,t,n){let r=M(e,":",n);if(r===-1)return!0;let s=M(e,t,n);return s===-1?!1:s<r}function Tl(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 Ir(t,n.index);if(a.depth>r)throw b(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw b(a.number,"blank line inside array");i.push(vl(t,n,r,s))}let o=t[n.index];if(o!==void 0&&o.depth>=r)throw b(o.number,"array length mismatch");return i}function vl(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw b(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=M(i,":",s.number),a;try{a=Mr(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return Lr(a,c,e,t,n,r)}}if(M(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 Ar(o,{index:0},n+1,r)}return t.index+=1,ke(i,s.number)}function Ir(e,t){let n=e[t]??e[e.length-1];return b(n===void 0?1:n.number,"array length mismatch")}function Mr(e,t){if(t===-1)throw b(0,"array header missing colon");let n=e.slice(0,t),r=M(n,"[",0);if(r===-1)throw b(0,"invalid array header");let s,i;try{[s,i]=je(n.slice(0,r),0)}catch{throw b(0,"invalid array header")}let o=n.slice(r+1),a=o.indexOf("]");if(a===-1)throw b(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 b(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 b(0,"invalid array header")}let f=o.slice(a+1),y;if(f==="")y=void 0;else if(f.startsWith("{")&&f.endsWith("}")&&f.length>=2)try{y=Ci(f.slice(1,-1),d)}catch(g){throw b(0,g.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw b(0,"invalid array header");return{key:s,keyQuoted:i,len:l,delimiter:d,fields:y}}function Ol(e){let t=M(e,"{",0);if(t===-1||!e.endsWith("}"))throw b(0,"invalid keyed map header");let n,r;try{[n,r]=je(e.slice(0,t),0)}catch{throw b(0,"invalid keyed map header")}if(n===""&&!r)throw b(0,"expected non-empty field name");let s;try{s=Ci(e.slice(t+1,-1),B)}catch(i){throw b(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:n,keyQuoted:r,delimiter:B,fields:s}}function Ci(e,t){let n=[],r=0;function s(a,c){let u=0;for(;r<e.length&&!(c&&e[r]==="}");){if(e[r]===t||e[r]==="}")throw b(0,"invalid array header");let l=r;for(;r<e.length;){let f=e[r];if(f==='"'){i();continue}if(f===t||f==="{"||f==="}")break;r+=1}let[d]=je(e.slice(l,r),0);if(d==="")throw b(0,"invalid array header");if(u+=1,e[r]==="{"){r+=1;let f=n.length;if(s([...a,d],!0),e[r]!=="}"||n.length===f)throw b(0,"invalid array header");r+=1}else n.push([...a,d]);if(e[r]===t){if(r+=1,r>=e.length||e[r]==="}")throw b(0,"invalid array header");continue}if(c?e[r]==="}":r===e.length)break;throw b(0,"invalid array header")}if(u===0)throw b(0,"invalid array header")}function i(){for(r+=1;r<e.length;){let a=e[r];if(r+=1,a==="\\")r+=1;else if(a==='"')return}}if(s([],!1),r!==e.length)throw b(0,"invalid array header");let o=new Set;for(let a=0;a<n.length;a+=1)for(let c=a+1;c<n.length;c+=1)if(Pl(n[a],n[c])||$r(n[a],n[c])||$r(n[c],n[a]))throw b(0,"duplicate key");for(let a of n){let c=a.join("\0");if(o.has(c))throw b(0,"duplicate key");o.add(c)}return n}function Pl(e,t){return e.length===t.length&&$r(e,t)}function $r(e,t){return t.every((n,r)=>e[r]===n)}function Cr(e,t){return b(t,e.reason??String(e.message))}function Ni(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(Dl)){It(e,o,r,s,i);return}}It(e,[t],r,s,i)}function It(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 b(s,"duplicate key");Dt(e,i,n);return}if(o&&!it(e[i])){if(r.strict)throw b(s,"path expansion conflict");Dt(e,i,{})}else o||Dt(e,i,{});It(e[i],t.slice(1),n,r,s)}function Dl(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,t={}){let n={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},r=[];return Array.isArray(e)?jr(r,void 0,e,0,!1,n):it(e)?Bi(r,e,0,n):r.push(xe(e,B)),r.join("")}function $t(e,t){e.push(" ".repeat(t*Br))}function Bi(e,t,n,r){for(let[s,i]of Object.entries(t))$t(e,n),Nr(e,s,i,n,r)}function Nr(e,t,n,r,s){if(Array.isArray(n)){jr(e,t,n,r,!1,s);return}if(it(n)){let i=s.keyedMapCollapse?$l(n,s):void 0;if(i!==void 0){e.push(ee(t),"{",i.fields.map(Ur).join(B),`}:
15
+ `);for(let[o,a]of Object.entries(n))$t(e,r+1),e.push(ee(o),": ",i.paths.map(c=>xe(ji(a,c),B)).join(B),`
16
+ `);return}e.push(ee(t),`:
17
+ `),Bi(e,n,r+1,s);return}e.push(ee(t),": ",xe(n,B),`
18
+ `)}function jr(e,t,n,r,s,i){if(n.length===0){t!==void 0?e.push(ee(t),`: []
17
19
  `):s?e.push(`[0]:
18
20
  `):e.push(`[]
19
- `);return}if(n.every(mn)){Or(e,t,n.length,void 0),e.push(" "),e.push(n.map(o=>Le(o,Z)).join(Z)),e.push(`
20
- `);return}let i=s?void 0:Sl(n);if(i!==void 0){Or(e,t,n.length,i),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
- `);return}Or(e,t,n.length,void 0),e.push(`
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 Or(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(()=>{Ot();vr();$r=2});var $i=R(()=>{It()});var ew,tw,Ci=R(()=>{Ot();It();vr();ew=new TextEncoder,tw=new TextDecoder});var ee=R(()=>{Ot();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:xl}}function Lr(e,t){return Tl(Math.max(0,e)/1e6*t)}function $t(e){return`$${e.toFixed(6)}`}function Tl(e){return Math.round(e*1e6)/1e6}var Bi,Ai,xl,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},xl="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as vl,readFileSync as $w}from"node:fs";import{dirname as Ol,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(vl(s))return s;let i=Ol(n);if(i===n)break;n=i}return null}function Dl(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 Dl(u)}}var Mi=R(()=>{});import{createConnection as Il}from"node:net";async function at(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=Il(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>s(new Error("resident rsp server timed out"))),i.destroy()},n);function u(l){o||(o=!0,clearTimeout(c),l())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
21
+ `);return}if(n.every(gn)){Dr(e,t,n.length,void 0),e.push(" "),e.push(n.map(a=>xe(a,B)).join(B)),e.push(`
22
+ `);return}let o=s?void 0:Ai(n,i);if(o!==void 0){Dr(e,t,n.length,o.fields),e.push(`
23
+ `);for(let a of n)$t(e,r+1),e.push(o.paths.map(c=>xe(ji(a,c),B)).join(B)),e.push(`
24
+ `);return}Dr(e,t,n.length,void 0),e.push(`
25
+ `);for(let a of n)$t(e,r+1),Il(e,a,r+1,i)}function Il(e,t,n,r){if(Array.isArray(t)){e.push("- "),jr(e,void 0,t,n,!0,r);return}if(it(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
26
+ `);return}e.push("- "),Nr(e,s[0][0],s[0][1],n+1,r);for(let[i,o]of s.slice(1))$t(e,n+1),Nr(e,i,o,n+1,r);return}e.push("- ",xe(t,B),`
27
+ `)}function Dr(e,t,n,r){t!==void 0&&e.push(ee(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(Ur).join(B),"}"),e.push(":")}function Ai(e,t){let n=Li(e.map(r=>({value:r})),t);return n===void 0?void 0:{fields:n,paths:Mi(n)}}function $l(e,t){let n=Object.values(e);if(!(n.length<2))return Ai(n,t)}function Li(e,t){let n=e[0]?.value;if(!it(n))return;let r=Object.keys(n).map(s=>({key:s}));if(r.length!==0){for(let{value:s}of e)if(!it(s)||Object.keys(s).length!==r.length||r.some(o=>!Object.prototype.hasOwnProperty.call(s,o.key)))return;for(let s of r){let i=e.map(({value:a})=>({value:a[s.key]}));if(i.every(({value:a})=>gn(a)))continue;if(!t.nestedTabularHeaders)return;let o=Li(i,t);if(o===void 0)return;s.children=o}return r}}function Mi(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children===void 0?[r]:Mi(n.children,r)})}function ji(e,t){let n=e;for(let r of t)n=n[r];return n}function Ur(e){return e.children===void 0?ee(e.key):`${ee(e.key)}{${e.children.map(Ur).join(B)}}`}var Br,Ct=S(()=>{Ot();Or();Br=2});var Ui=S(()=>{Ct()});var lw,dw,Fi=S(()=>{Ot();Ct();Or();lw=new TextEncoder,dw=new TextDecoder});var te=S(()=>{Ot();Ct();Ct();Ui();Fi()});function Gr(e,t,n=qi){let r=Math.max(0,Math.floor(e)),s=n in Ji?n:qi,i=Ji[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:Fr(r,i),dollars_saved_low_usd:o==null?null:Fr(o,i),dollars_saved_high_usd:a==null?null:Fr(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:Bl}}function Fr(e,t){return Al(Math.max(0,e)/1e6*t)}function Nt(e){return`$${e.toFixed(6)}`}function Al(e){return Math.round(e*1e6)/1e6}var qi,Ji,Bl,qr=S(()=>{"use strict";qi="gpt-5",Ji={"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},Bl="estimate derived from byte-based token estimate when token counts are estimated"});import{existsSync as Ll,readFileSync as Gw}from"node:fs";import{dirname as Ml,join as jl}from"node:path";function Hi(e,t){let n=e;for(let r=0;r<16;r++){let s=jl(n,t);if(Ll(s))return s;let i=Ml(n);if(i===n)break;n=i}return null}function Ul(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function hn(e,t){let n=[];for(let r of e.split(`
28
+ `)){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 Ul(u)}}var Wi=S(()=>{});import{createConnection as Fl}from"node:net";async function at(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=Fl(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
29
  `)}),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 $l,randomUUID as qi}from"node:crypto";import{spawn as Ji}from"node:child_process";import{constants as Gr}from"node:fs";import{readFileSync as Cl}from"node:fs";import{mkdir as hn,open as Nl,readFile as Hi,rename as Bl,rm as te,stat as Al,writeFile as Ll}from"node:fs/promises";import{tmpdir as Ml}from"node:os";import{dirname as Ee,join as q,resolve as yn}from"node:path";import{fileURLToPath as Wi}from"node:url";function ke(e){let t=Yl(e)??yn(e),n=zl(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 Fl(e.socketPath);let r=ql(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:ed(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 Hi(e,"utf8"));return td(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 Ll(r,`${T(n)}
29
- `,{encoding:"utf8",mode:384}),await Bl(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 Hi(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 Kl(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()+Gl(),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 Gl(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Ul}async function Fl(e){await te(e,{force:!0})}async function Qi(e){await hn(Ee(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 ql(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=Hl(`${o}${c}`,Jl)})),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
+ `);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 Jr=S(()=>{});import{createHash as Gl,randomUUID as Qi}from"node:crypto";import{spawn as Xi}from"node:child_process";import{constants as Hr}from"node:fs";import{readFileSync as ql}from"node:fs";import{mkdir as yn,open as Jl,readFile as Zi,rename as Hl,rm as ne,stat as Wl,writeFile as Vl}from"node:fs/promises";import{tmpdir as Kl}from"node:os";import{dirname as Te,join as H,resolve as wn}from"node:path";import{fileURLToPath as eo}from"node:url";function ve(e){let t=od(e)??wn(e),n=id(t);return{rootDir:t,socketPath:H(n,"rsp.sock"),pidPath:H(n,"rsp.pid"),lockPath:H(n,"rsp.lock"),wakeLockPath:H(t,".red","tmp","rsp.wake.lock"),summaryPath:H(t,".red","tmp","rsp-status-summary.json"),registryPath:H(t,".red","tmp","rsp-resident.pid.json")}}async function bn(e,t){if(await yn(Te(e.socketPath),{recursive:!0,mode:448}),await zi(e.socketPath,t))return;await Ki(e,t);let n=await io(e.lockPath);if(n)try{if(await zi(e.socketPath,t))return;await Ki(e,t),await Xl(e.socketPath);let r=Zl(e,t);await Vi(e.socketPath,r);return}finally{await n.close(),await ne(e.lockPath,{force:!0})}await Vi(e.socketPath)}async function Ue(e,t=200){try{return await no(e,t)!=null}catch{return!1}}async function no(e,t=200){let n=await at({socketPath:e,timeoutMs:t},{id:Qi(),op:"ping"});return n.ok?uo(n.value)?{version:ld(n.value.version)}:{}:null}async function _n(e,t){if(await yn(Te(e.socketPath),{recursive:!0,mode:448}),await Ue(e.socketPath,50))return!1;let n=await io(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=ao(t);return Xi(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 ro(e,t){try{await bn(e,t)}finally{await ne(e.wakeLockPath,{force:!0})}}async function At(e){try{let t=nd(await Zi(e,"utf8"));return dd(t)?t:null}catch{return null}}async function Rn(e,t){let n={version:to,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 yn(Te(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await Vl(r,`${T(n)}
31
+ `,{encoding:"utf8",mode:384}),await Hl(r,e)}async function Sn(e,t=process.pid){try{let n=await At(e);if(n&&n.pid!==t)return;await ne(e,{force:!0})}catch{}}async function Bt(e){let t=await At(e.registryPath);if(!t)try{return await Zi(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 Ue(t.socket_path,100);return n&&await sd(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 so(e){let t=await Bt(e);return t.state==="registered-dead"||t.state==="invalid"?(await ne(e.registryPath,{force:!0}),await Bt(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await oo(t.entry.pid),await ne(e.registryPath,{force:!0}),await ne(t.entry.socket_path,{force:!0}),await Bt(e)):t}async function Vi(e,t){let n=Date.now()+Ql(),r;for(;Date.now()<n;){if(await Ue(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Wr("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Wr("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Wr("resident rsp server did not start",t):"resident rsp server did not start")}function Ql(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:Yl}async function Xl(e){await ne(e,{force:!0})}async function io(e){await yn(Te(e),{recursive:!0,mode:448});try{return await Jl(e,Hr.O_CREAT|Hr.O_EXCL|Hr.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Zl(e,t){let[n,r]=ao(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Xi(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=td(`${o}${c}`,ed)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function Wr(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
32
  ${s}`),r.join(`
31
- `)}function Hl(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 Vl(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 Vl(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!ct(e))return;await new Promise(r=>setTimeout(r,50))}}async function Kl(e){if(!e.startsWith("file://"))return!1;try{return await Al(Wi(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]):Wi(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function zl(e){let t=$l("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<jl)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return q(Ml(),`red-skills-${r}`,t)}function Yl(e){let t=yn(e);for(let n=0;n<32;n++){try{let s=qr(q(t,".git"));if(s!=null)return Ql(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 Ql(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 Cl(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 Xl(e,t.clientVersion),await nd(e),!1):!0:!1}async function Xl(e,t){try{await at({socketPath:e,timeoutMs:200},{id:qi(),op:"handover",clientVersion:t})}catch{}}function eo(e,t){return!e||!t?!1:Zl(e,t)>0}function Zl(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 ed(e){return typeof e=="string"&&e.length>0?e:void 0}function td(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 nd(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await je(e,50))return;await new Promise(n=>setTimeout(n,50))}}var jl,Vi,Ul,Jl,Sn=R(()=>{ee();Ur();jl=108,Vi=1,Ul=5e3;Jl=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 rd}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?rd(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=sd(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 sd(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 id}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:id()});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 od}from"node:fs";import{mkdir as ad,readFile as Yr,readdir as bo,rename as cd,writeFile as ud}from"node:fs/promises";import{homedir as ld}from"node:os";import{basename as Qr,dirname as _o,join as lt}from"node:path";import{fileURLToPath as dd}from"node:url";import{gunzipSync as fd,gzipSync as md}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 pd(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 gd(e){return $n(e.storage_class)?e.storage_class:Fe(e.command)}function fo(e){let t=_d(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=gd(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:hd(n),original_bytes:e.length}:null}function hd(e){let t=Hr(e,["rev-parse","HEAD"])||"unborn",n=Hr(e,["write-tree"])||"no-index",r=Hr(e,["status","--porcelain=v1","-z"])||"";return Dn("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function Hr(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 Wr(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=md(e);return{key:pd(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function yd(e){try{let t=fd(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function wd(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 bd(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 _d(){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 Rd(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 Sd(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 Ed(e){return mt(e)?typeof e.key=="string"&&e.key.trim()!==""?{key:e.key,value:On(e.value)}:typeof e.record_key=="string"&&e.record_key.trim()!==""?{key:e.record_key,value:On(e.value)}:dt(e)?{key:we(e.handle),value:e}:Pn(e)&&typeof e.handle=="string"&&Gt(e.handle)?{key:Ge(e.handle),value:e}:null:null}function On(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}async function kd(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 xd(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=vd(e.derivation_recipe),r=Od(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"&&Td(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 Pn(e){return J(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Td(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 vd(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 Od(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(Cd(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 Dd(e){try{let t=await Yr(e);return So(e)?e:Id(t)?$d(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Id(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function $d(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(ld(),".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(od(s)){process.env.REDDB_BIN=s;return}}}async function ko(e,t){await ad(_o(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await ud(n,`${JSON.stringify(t)}
33
- `,"utf8"),await cd(n,e)}function wo(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Cd(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(Pn)&&Kr(e.index)}function Nd(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return dd(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=Nd(t.uri),r=await Dd(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:Wr(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 Pn(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return wd(t.derivation_recipe);if(t.reexecution_recipe)return bd(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)?yd(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=Ed(r);s&&n.push(s)}return n}async ensureMigratedRedDbIndex(t){if(t.some(s=>s.key===Jr()&&Kr(On(s.value))))return;let r=t.map(s=>{let i=On(s.value);return dt(i)?{handle:i.handle,key:we(i.handle),bytes:Wr(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(Pn(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:Wr(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=Rd(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Sd(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 kd(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=>xd(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 Wt={};C(Wt,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>H,RSP_DECISIONS_COLLECTION:()=>W,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Te,RSP_TELEMETRY_INDEX_COLLECTION:()=>Ht,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>se,RSP_TELEMETRY_SPOOL:()=>$o,appendTelemetryEvent:()=>He,drainTelemetrySpool:()=>ts,parseTelemetryEvent:()=>ns,readAccountingLaneStats:()=>rs,readTelemetryGainsReport:()=>ss,readTelemetryStats:()=>An,takeTelemetrySpool:()=>qd,telemetrySpoolPath:()=>Bn});import{appendFileSync as Bd,mkdirSync as Ad,readFileSync as Ld}from"node:fs";import{mkdir as Po,readdir as Md,readFile as jd,rename as Do,rm as Io,writeFile as Zr}from"node:fs/promises";import{basename as Ud,dirname as Nn,join as es}from"node:path";function Bn(e){return es(e,$o)}async function He(e,t){try{let n=Bn(e);Ad(Nn(n),{recursive:!0}),Bd(n,`${JSON.stringify(Fd(t))}
35
- `,{encoding:"utf8",mode:384})}catch{}}function Fd(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<=Gd)return e;let i={...e};return delete i[t],be(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function qd(e){let t=Bn(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await Po(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 Po(Nn(n),{recursive:!0}).catch(()=>{});for(let s of await Jd(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 Jd(e){let t=Nn(e),n=`${Ud(e)}.`;return(await Md(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&&Hd(i))}).sort().map(s=>es(t,s))}function Hd(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(`
33
+ `)}function td(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function nd(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return fe(t)}}async function Ki(e,t){try{let n=await At(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!ct(n.pid)){await ne(e.registryPath,{force:!0});return}if(await Ue(n.socket_path,100))return;if(co(t.clientVersion,n.resident_version)&&(await rd(n.pid,1500),!ct(n.pid))){await ne(e.registryPath,{force:!0});return}await oo(n.pid),await ne(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 oo(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 rd(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!ct(e))return;await new Promise(r=>setTimeout(r,50))}}async function sd(e){if(!e.startsWith("file://"))return!1;try{return await Wl(eo(e)),!1}catch(t){return t.code==="ENOENT"}}function ao(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?wn(process.argv[1]):eo(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function id(e){let t=Gl("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=H(n,"red-skills",t);if(H(s,"rsp.sock").length<zl)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return H(Kl(),`red-skills-${r}`,t)}function od(e){let t=wn(e);for(let n=0;n<32;n++){try{let s=Vr(H(t,".git"));if(s!=null)return ad(t,s)??t;if(Vr(H(t,".git","HEAD"))!=null||Vr(H(t,".red","config.yaml"))!=null)return t}catch{}let r=Te(t);if(r===t)return null;t=r}return null}function ad(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=wn(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?Te(Te(Te(r))):null}function Vr(e){try{return ql(e,"utf8")}catch{return null}}async function zi(e,t){let n=await no(e).catch(()=>null);return n?co(t.clientVersion,n.version)?(await cd(e,t.clientVersion),await fd(e),!1):!0:!1}async function cd(e,t){try{await at({socketPath:e,timeoutMs:200},{id:Qi(),op:"handover",clientVersion:t})}catch{}}function co(e,t){return!e||!t?!1:ud(e,t)>0}function ud(e,t){let n=Yi(e),r=Yi(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Yi(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 uo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ld(e){return typeof e=="string"&&e.length>0?e:void 0}function dd(e){return uo(e)&&e.version===to&&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 fd(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await Ue(e,50))return;await new Promise(n=>setTimeout(n,50))}}var zl,to,Yl,ed,En=S(()=>{te();Jr();zl=108,to=1,Yl=5e3;ed=8*1024});var ho={};C(ho,{DEFAULT_RSP_BYTE_BUDGET:()=>ye,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>he,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>pe,DEFAULT_RSP_IDLE_MS:()=>vn,DEFAULT_RSP_STORE_PATH:()=>kn,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Tn,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>mo,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>po,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>xn,DEFAULT_RSP_TTL_DAYS:()=>ge,MIN_RSP_IDLE_MS:()=>go,resolveRspConfig:()=>we});import{readFileSync as md}from"node:fs";import{join as lo,resolve as fo}from"node:path";function we(e,t,n){let r=Hi(fo(e),lo(".red","config.yaml")),s=r?md(r,"utf8"):"",i=hn(s,"rsp.enabled")==="true",o=hn(s,"rsp.proxy.enabled")==="true",a=me(re(s,"rsp.ttlDays"),ge),c=me(Lt(t.RSP_EPHEMERAL_TTL_HOURS)??re(s,"rsp.ephemeralTtlHours"),he),u=me(re(s,"rsp.byteBudget"),ye),l=me(re(s,"rsp.telemetryTtlDays"),xn),d=me(re(s,"rsp.telemetryByteBudget")??re(s,"rsp.byteBudget"),Tn),f=me(Lt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??re(s,"rsp.telemetryDrainIntervalMs"),mo),y=me(Lt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??re(s,"rsp.telemetryDrainTimeoutMs"),po),g=pd(Lt(t.RSP_IDLE_MS)??re(s,"rsp.idleMs"),vn,go),m=me(Lt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??re(s,"rsp.heavyGitByteThreshold"),pe),p=ve(e).rootDir,E=n??t.RSP_STORE_URI??`file://${lo(fo(p),kn)}`;return{enabled:i,proxyEnabled:o,storeUri:E,ttlDays:a,ephemeralTtlHours:c,byteBudget:u,telemetryTtlDays:l,telemetryByteBudget:d,telemetryDrainIntervalMs:f,telemetryDrainTimeoutMs:y,idleMs:g,heavyGitByteThreshold:m}}function re(e,t){let n=hn(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function me(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function pd(e,t,n){let r=me(e,t);return Math.max(r,n)}function Lt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var pe,kn,ge,he,ye,xn,Tn,mo,po,vn,go,se=S(()=>{"use strict";Wi();En();pe=8*1024,kn=".red/tmp/red-skills.rdb",ge=7,he=6,ye=64*1024*1024,xn=90,Tn=4*1024*1024,mo=3e4,po=2e3,vn=5*6e4,go=5e3});var yo=S(()=>{"use strict";Jr()});var jt={};C(jt,{ResidentRspElisionStore:()=>Mt,ensureResidentServer:()=>bn,kickResidentServer:()=>_n,pingResident:()=>Ue,readResidentRegistry:()=>At,removeResidentRegistry:()=>Sn,residentRegistryStatus:()=>Bt,resolveResidentPaths:()=>ve,sweepResidentRegistry:()=>so,warmResidentServer:()=>ro,writeResidentRegistry:()=>Rn});import{randomUUID as gd}from"node:crypto";function wo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Mt,Fe=S(()=>{"use strict";yo();En();Mt=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?wo(n)&&n.status==="expired"?n:!wo(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 bn(this.paths,this.config);let n=await at(this.paths,{...t,id:gd()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Jt={};C(Jt,{DEFAULT_RSP_BYTE_BUDGET:()=>ye,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>he,DEFAULT_RSP_TTL_DAYS:()=>ge,RSP_ELISION_COLLECTION:()=>G,RspElisionStore:()=>Gt,ensureReddbBinaryFromWarmCache:()=>Io,storageClassForCommand:()=>qe});import{createHash as In}from"node:crypto";import{spawnSync as Ft}from"node:child_process";import{existsSync as hd}from"node:fs";import{mkdir as yd,readFile as es,readdir as vo,rename as wd,writeFile as bd}from"node:fs/promises";import{homedir as _d}from"node:os";import{basename as ts,dirname as Oo,join as lt}from"node:path";import{fileURLToPath as Rd}from"node:url";import{gunzipSync as Sd,gzipSync as Ed}from"node:zlib";function bo(e,t){return`el:${In("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 be(e){return`record:${e.slice(3)}`}function Ge(e){return`expired:${e.slice(3)}`}function Kr(){return"index:v1"}function kd(e){return`blob:${e}`}function qe(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":$n(t)?"re-executable":"ephemeral"}return"ephemeral"}function Ut(e){return Cn(e.storage_class)?e.storage_class:qe(e.command)}function xd(e){return Cn(e.storage_class)?e.storage_class:qe(e.command)}function _o(e){let t=Dd(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=xd(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 Ro(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 So(e,t){let n=process.cwd(),r=Ft("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=Ft("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:Td(n),original_bytes:e.length}:null}function Td(e){let t=zr(e,["rev-parse","HEAD"])||"unborn",n=zr(e,["write-tree"])||"no-index",r=zr(e,["status","--porcelain=v1","-z"])||"";return In("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function zr(e,t){let n=Ft("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function Eo(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!$n(n))return null;let r=Po(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 $n(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 In("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function ko(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 Yr(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 xo(e,t,n){let r=Ed(e);return{key:kd(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function vd(e){try{let t=Sd(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function Od(e){let t=e.object_ids[0];if(!t)return null;let n=Ft("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 Pd(e){if(!$n(e.argv))return null;let t=Po(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
34
+ `,"utf8"),t]):null}function Po(e,t,n){let r=t[0];if(!r)return null;let s=Ft(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 Dd(){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 qt(e){return/^el:[a-f0-9]{12}$/.test(e)}function On(e){return/^blob:[a-f0-9]{64}$/.test(e)}function Id(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 $d(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 Cd(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:be(e.handle),value:e}:Dn(e)&&typeof e.handle=="string"&&qt(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 Nd(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 vo(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 Bd(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 Qr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function dt(e){if(!W(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=Ld(e.derivation_recipe),r=Md(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&On(s);return e.collection===G&&typeof e.handle=="string"&&qt(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||ns(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&On(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Ad(e.loss)&&(e.storage_class===void 0||Cn(e.storage_class))}function Xr(e){return!W(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!W(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&qt(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||Cn(t.storage_class))&&(n===void 0||typeof n=="string"&&On(n))})}function Zr(e){return W(e)&&typeof e.key=="string"&&On(e.key)&&ns(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 Dn(e){return W(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Ad(e){return W(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Cn(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function Ld(e){return W(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 Md(e){return W(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&$n(e.argv)&&typeof e.original_bytes=="number"&&ns(e.content_hash)}function ns(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function W(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function jd(e){try{let t=await es(e,"utf8");if(t.trim()==="")return To();let n=JSON.parse(t);if(qd(n))return{...n,blobs:n.blobs??{}}}catch(t){if(t.code==="ENOENT"){let n=To();return await $o(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Ud(e){try{let t=await es(e);return Do(e)?e:Fd(t)?Gd(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Fd(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Gd(e){return ts(e)==="red.rdb"?lt(Oo(e),"tmp","rsp-elisions.json"):`${e}.json`}function Do(e){return ts(e)==="red-skills.rdb"}async function Io(){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(_d(),".cache","red-skills","bundles")),t=lt(e,"reddb"),n;try{n=await vo(t)}catch{return}n.sort().reverse();for(let r of n){let s=lt(t,r,process.platform==="win32"?"red.exe":"red");if(hd(s)){process.env.REDDB_BIN=s;return}}}async function $o(e,t){await yd(Oo(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await bd(n,`${JSON.stringify(t)}
35
+ `,"utf8"),await wd(n,e)}function To(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function qd(e){return W(e)&&e.version===1&&W(e.records)&&Object.values(e.records).every(dt)&&(e.blobs===void 0||W(e.blobs)&&Object.values(e.blobs).every(Zr))&&W(e.tombstones)&&Object.values(e.tombstones).every(Dn)&&Xr(e.index)}function Jd(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Rd(e)}var G,Gt,Je=S(()=>{"use strict";Tr();se();G="rsp_elisions_v1",Gt=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=Jd(t.uri),r=await Ud(n),s=new e(r,{uri:t.uri,ttlDays:Qr(t.ttlDays,ge),ephemeralTtlHours:Qr(t.ephemeralTtlHours,he),byteBudget:Qr(t.byteBudget,ye),now:t.now??(()=>new Date)});return Do(r)?(await Io(),s.db=await mn(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await jd(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=bo(r,n),a=be(o),c=qe(n.command),u=c==="derivable"?So(r,n.command):null,l=c==="re-executable"?Eo(r,n.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=Ro(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),y=ft(r),g=d==="ephemeral"?xo(r,y,i):null,m=ko(r,u,l,g);g&&!this.document.blobs[g.key]&&(this.document.blobs[g.key]=g,this.dirty=!0);let p={collection:G,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(!qt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[be(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:be(r.handle),bytes:Yr(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Ut(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:G,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Ut(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:_o(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 Dn(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return Od(t.derivation_recipe);if(t.reexecution_recipe)return Pd(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)?vd(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 $o(this.path,this.document),this.dirty=!1)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(G)}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===G);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${G}`);return}if(t.model==="kv")return;if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${G}: unsupported model ${t.model}`);let n=await this.readLegacyElisionTableRows();await this.db.query(`DROP TABLE ${G}`),await this.db.query(`CREATE KV IF NOT EXISTS ${G}`);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 ${G}`),n=[];for(let r of t.rows){let s=Cd(r);s&&n.push(s)}return n}async ensureMigratedRedDbIndex(t){if(t.some(s=>s.key===Kr()&&Xr(Pn(s.value))))return;let r=t.map(s=>{let i=Pn(s.value);return dt(i)?{handle:i.handle,key:be(i.handle),bytes:Yr(i),raw_bytes:i.original_bytes,command:i.command,created_at:i.created_at,expires_at:i.expires_at,storage_class:Ut(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=bo(r,n),a=be(o),c=qe(n.command),u=c==="derivable"?So(r,n.command):null,l=c==="re-executable"?Eo(r,n.command):null,d=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,f=Ro(s,d,this.opts.ttlDays,this.opts.ephemeralTtlHours),y=ft(r),g=d==="ephemeral"?xo(r,y,i):null,m=ko(r,u,l,g);g&&!Zr(await this.kvGet(g.key))&&await this.kv().put(g.key,g);let p={collection:G,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(!qt(t))return null;let n=await this.kvGet(Ge(t));if(Dn(n))return n;let r=await this.kvGet(be(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:be(r.handle),bytes:Yr(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:Ut(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:G,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:Ut(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:_o(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=Id(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 Nd(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await es(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=ts(s),c=In("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=>Bd(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(`
36
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(Kr());return Xr(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(Kr(),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(be(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 Kt={};C(Kt,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>V,RSP_DECISIONS_COLLECTION:()=>K,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Pe,RSP_TELEMETRY_INDEX_COLLECTION:()=>Vt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ie,RSP_TELEMETRY_SPOOL:()=>Uo,appendTelemetryEvent:()=>We,drainTelemetrySpool:()=>is,parseTelemetryEvent:()=>os,readAccountingLaneStats:()=>as,readTelemetryGainsReport:()=>cs,readTelemetryStats:()=>Ln,takeTelemetrySpool:()=>Zd,telemetrySpoolPath:()=>An});import{appendFileSync as Hd,mkdirSync as Wd,readFileSync as Vd}from"node:fs";import{mkdir as Lo,readdir as Kd,readFile as zd,rename as Mo,rm as jo,writeFile as rs}from"node:fs/promises";import{basename as Yd,dirname as Bn,join as ss}from"node:path";function An(e){return ss(e,Uo)}async function We(e,t){try{let n=An(e);Wd(Bn(n),{recursive:!0}),Hd(n,`${JSON.stringify(Xd(t))}
37
+ `,{encoding:"utf8",mode:384})}catch{}}function Xd(e){return Co(Co(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function Co(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=Qd)return e;let i={...e};return delete i[t],_e(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function Zd(e){let t=An(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await Lo(Bn(t),{recursive:!0}),await Mo(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await rs(t,"",{flag:"wx"}).catch(()=>{}),(await Fo(n)).split(/\r?\n/).filter(s=>s.trim()!=="")}finally{await jo(n,{force:!0})}}async function is(e,t){let n=An(e);await Lo(Bn(n),{recursive:!0}).catch(()=>{});for(let s of await ef(n))await No(n,s,t);let r=`${n}.${process.pid}.${Date.now()}.drain`;try{await Mo(n,r)}catch{return}await rs(n,"",{flag:"wx"}).catch(()=>{}),await No(n,r,t)}async function ef(e){let t=Bn(e),n=`${Yd(e)}.`;return(await Kd(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&&tf(i))}).sort().map(s=>ss(t,s))}function tf(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function No(e,t,n){let r=[];try{let i=(await Fo(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=nf(e);await rs(e,`${r.join(`
36
38
  `)}
37
- ${s}`,"utf8")}await Io(t,{force:!0})}}function Wd(e){try{return Ld(e,"utf8")}catch{return""}}async function Co(e){let t="";for(let n=0;n<5;n++){let r=await jd(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!==H&&t.collection!==W&&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,W)).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 O=new Map,N=null;for(let _ of u){let D=I(_.degradation_reason)||I(_.reason)||"unknown";O.set(D,(O.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=Vd(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:[...O.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 Vd(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,H)).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:Kd(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)/rf()))),y=[],g=new Map,m=new Map,p=new Map,k=new Map,w=new Map,v=new Map,x=0,O=!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=Oo(I(h.command)),F=Math.max(0,Cn(h,"raw").tokens-Cn(h,"emitted").tokens);x+=F,O||=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=Xd(E);et&&k.set(et,(k.get(et)??0)+1);let tt=tf(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:Oo(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:Zd(k)},savings:{tokens:Mr(x,O),weekly_tokens_saved:nf(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,H)).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 Kd(e){let t=Yd();for(let n of e){if(I(n.event_type)==="show"||I(n.degradation_reason)!==""||n.elided!==!0)continue;let r=zd(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 zd(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function Yd(){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=>Qd(r.value)).filter(r=>Bo(r))}function Qd(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 Oo(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 Xd(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${ef(t.getUTCDay())}:${t.getUTCHours()}`:null}function Zd(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 ef(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function tf(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 nf(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 rf(){return 24*60*60*1e3}function Bo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var $o,H,W,se,Te,Ht,Gd,ve=R(()=>{"use strict";qe();jr();$o=es(".red","tmp","rsp-telemetry.spool.jsonl"),H="rsp_accounting_events_v1",W="rsp_decisions_v1",se="rsp_telemetry_invocations_v1",Te="rsp_telemetry_degradations_v1",Ht="rsp_telemetry_index_v1",Gd=64*1024});var us={};C(us,{RSP_WRAPPER_CAPABILITIES:()=>zt,formatCodexHookDecision:()=>Uo,formatHookDecision:()=>jo,hookDecisionFromClaudePreExecJson:()=>uf,hookDecisionFromCodexPreExecJson:()=>lf,rewriteCommand:()=>Lo,rewriteTableFromCapabilities:()=>Ao,runClaudePreExecHook:()=>df,runCodexPreExecHook:()=>ff});import{readFileSync as Un}from"node:fs";import{existsSync as sf}from"node:fs";import{fileURLToPath as of}from"node:url";function Ao(e){let t=new Map;for(let n of e)t.set(Df(n.command),["rsp",...n.wrapper]);return t}function Lo(e){let t=Rf(e);if(t)return t;let n=bf(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=cf(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=>_f(r,c.command));if(!i)return Mn(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=Wo(n.redirectSuffix);return{kind:"rewrite",command:[...o.map(Kt),...a].join(" "),capabilityId:i.id}}function cf(e){let t=e.tokens.map(s=>s.text),n=t[0],r=Wo(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 uf(e,t){return await Mo(e,t)}async function lf(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??mf)(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?Ef(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 gf(i,t.wakeResident??pf),{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 df(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 ff(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){He(e,t).catch(()=>{})}function Vt(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:W,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:W,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 mf(e){return ye(e,process.env).enabled}async function pf(e){let t=ye(e,process.env);if(!t.enabled||!wf(t))return;let n=ke(e);await bn(n,yf(t))}async function gf(e,t){try{await Promise.resolve(t(e))}catch(n){hf(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
+ ${s}`,"utf8")}await jo(t,{force:!0})}}function nf(e){try{return Vd(e,"utf8")}catch{return""}}async function Fo(e){let t="";for(let n=0;n<5;n++){let r=await zd(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function os(e){try{let t=JSON.parse(e);return!qo(t)||t.collection!==V&&t.collection!==K&&t.collection!==ie&&t.collection!==Pe?null:t}catch{return null}}async function Ln(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await Go(e,s),o=(await Ht(e,K)).filter(R=>gt(R)>=s),a=i.filter(R=>I(R.event_type)!=="show"&&I(R.degradation_reason)===""),c=i.filter(R=>I(R.event_type)==="show"),u=i.filter(R=>I(R.degradation_reason)!==""),l=0,d=0,f=0,y=0,g=!1,m=new Map,p=new Map,E=[],w=0,v=0,x=0;for(let R of a){R.elided===!0&&l++;let D=_e(R.raw_bytes),h=_e(R.emitted_bytes),k=Math.max(0,D-h),Ze=Nn(R,"raw"),et=Nn(R,"emitted"),Y=Math.max(0,Ze.tokens-et.tokens);g||=(R.estimated===!0||Ze.estimated||et.estimated)&&Y>0,d+=D,f+=h,y+=Y;let J=He(R).slice(0,10);J&&m.set(J,(m.get(J)??0)+Y);let Me=I(R.command)||"unknown",Re=p.get(Me)??{command:Me,invocations:0,bytes_saved:0,tokens_saved:0};Re.invocations++,Re.bytes_saved+=k,Re.tokens_saved+=Y,p.set(Me,Re);let tt=Wt(R.wrapper_ms);tt!=null&&E.push(tt),w+=_e(R.store_open_count);let nt=Wt(R.store_elapsed_ms);nt!=null&&(v+=nt,x++)}let O=new Map,N=null;for(let R of u){let D=I(R.degradation_reason)||I(R.reason)||"unknown";O.set(D,(O.get(D)??0)+1);let h=He(R);(!N||h>N.timestamp)&&(N={timestamp:h,reason:D,command:I(R.command)||"unknown"})}let F=a.length+u.length,z=c.filter(R=>R.hit===!0).length,$=Gr(y,g),an=rf(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(([R],[D])=>R.localeCompare(D)).map(([R,D])=>({date:R,tokens_saved:D})),top_commands:[...p.values()].sort((R,D)=>D.bytes_saved-R.bytes_saved||D.tokens_saved-R.tokens_saved||R.command.localeCompare(D.command))},health:{degradations:u.length,degradation_rate:F===0?0:u.length/F,show_total:c.length,show_hits:z,show_misses:Math.max(0,c.length-z),show_hit_rate:c.length===0?0:Oe(z/c.length),by_reason:[...O.entries()].sort((R,D)=>D[1]-R[1]||R[0].localeCompare(D[0])).map(([R,D])=>({reason:R,count:D})),most_recent:N},latency:{wrapper_ms_p50:pt(E,.5),wrapper_ms_p95:pt(E,.95),store_open_count_sum:w,store_elapsed_ms_sum:Oe(v),store_elapsed_ms_avg:x===0?null:Oe(v/x)},decisions:an}}function rf(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:Oe(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 as(e,t,n=new Date){let s=(await Ht(e,V)).filter(i=>gt(i)<=n.getTime()||He(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=He(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:sf(s)}}async function cs(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 Go(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)/pf()))),y=[],g=new Map,m=new Map,p=new Map,E=new Map,w=new Map,v=new Map,x=0,O=!1,N=0,F=null,z=0,$=0;for(let h of c){let k=He(h),Ze=k.slice(0,10),et=k.slice(0,16),Y=Ao(I(h.command)),J=Math.max(0,Nn(h,"raw").tokens-Nn(h,"emitted").tokens);x+=J,O||=h.estimated===!0&&J>0;let Me=Math.max(0,_e(h.raw_bytes)-_e(h.emitted_bytes)),Re=Wt(h.wrapper_ms);if(Re!=null){y.push(Re);let ui=g.get(Y)??[];ui.push(Re),g.set(Y,ui)}Ze&&m.set(Ze,(m.get(Ze)??0)+1),et&&p.set(et,(p.get(et)??0)+1);let tt=uf(k);tt&&E.set(tt,(E.get(tt)??0)+1);let nt=ff(k);nt&&w.set(nt,(w.get(nt)??0)+J);let cn=v.get(Y)??{command_family:Y,invocations:0,tokens_saved:0,bytes_saved:0};cn.invocations++,cn.tokens_saved+=J,cn.bytes_saved+=Me,v.set(Y,cn),h.elided===!0&&N++,(h.store_open_count!=null||h.store_elapsed_ms!=null)&&(z++,_e(h.store_open_count)>0&&$++),J>0&&(!F||J>F.tokens_saved||J===F.tokens_saved&&Me>F.bytes_saved)&&(F={timestamp:k,command_family:Y,tokens_saved:J,bytes_saved:Me})}let an=u.map(h=>({timestamp:He(h),command_family:Ao(I(h.command)),reason:I(h.degradation_reason)||I(h.reason)||"unknown"})).sort((h,k)=>h.timestamp.localeCompare(k.timestamp)),R=new Map;for(let h of an)R.set(h.reason,(R.get(h.reason)??0)+1);let D=[...p.entries()].sort((h,k)=>k[1]-h[1]||h[0].localeCompare(k[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:Bo(y),by_command_family:[...g.entries()].sort((h,k)=>k[1].length-h[1].length||h[0].localeCompare(k[0])).map(([h,k])=>({command_family:h,count:k.length,...Bo(k)}))},throughput:{requests_per_day:[...m.entries()].sort(([h],[k])=>h.localeCompare(k)).map(([h,k])=>({date:h,requests:k})),active_minute_avg:p.size===0?null:Oe([...p.values()].reduce((h,k)=>h+k,0)/p.size),peak_minute:D?{minute:D[0],requests:D[1]}:null,hour_weekday_heatmap:lf(E)},savings:{tokens:Gr(x,O),weekly_tokens_saved:mf(w),elision_rate:c.length===0?0:Oe(N/c.length),top_commands_by_tokens_saved:[...v.values()].sort((h,k)=>k.tokens_saved-h.tokens_saved||k.bytes_saved-h.bytes_saved||h.command_family.localeCompare(k.command_family)).slice(0,10),top_commands_by_invocation_count:[...v.values()].sort((h,k)=>k.invocations-h.invocations||k.tokens_saved-h.tokens_saved||h.command_family.localeCompare(k.command_family)).slice(0,10),single_biggest_elision:F},health:{degradation_timeline:an,degradations_by_reason:[...R.entries()].sort((h,k)=>k[1]-h[1]||h[0].localeCompare(k[0])).map(([h,k])=>({reason:h,count:k})),cold_boots:z===0?null:$,warm_hits:z===0?null:Math.max(0,z-$)}}}async function Go(e,t){let n=(await Ht(e,V)).filter(i=>gt(i)>=t);if(n.length>0)return n;let r=(await Ht(e,ie)).filter(i=>gt(i)>=t).map(i=>({...i,event_type:"invocation"})),s=(await Ht(e,Pe)).filter(i=>gt(i)>=t).map(i=>({...i,event_type:"invocation",degradation_reason:I(i.reason)||"unknown"}));return[...r,...s]}function Nn(e,t){let n=Wt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=_e(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function sf(e){let t=af();for(let n of e){if(I(n.event_type)==="show"||I(n.degradation_reason)!==""||n.elided!==!0)continue;let r=of(n.storage_class)??qe(I(n.command));t[r].records+=1;let s=_e(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function of(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function af(){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 Ht(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=>cf(r.value)).filter(r=>qo(r))}function cf(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function gt(e){let t=Date.parse(He(e));return Number.isFinite(t)?t:0}function He(e){return I(e.created_at)||I(e.ts)||""}function I(e){return typeof e=="string"?e:""}function _e(e){return Wt(e)??0}function Wt(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 Oe(n[r])}function Bo(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 Oe(e){return Math.round(e*100)/100}function Ao(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 uf(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${df(t.getUTCDay())}:${t.getUTCHours()}`:null}function lf(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 df(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function ff(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 mf(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:Oe((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function pf(){return 24*60*60*1e3}function qo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Uo,V,K,ie,Pe,Vt,Qd,De=S(()=>{"use strict";Je();qr();Uo=ss(".red","tmp","rsp-telemetry.spool.jsonl"),V="rsp_accounting_events_v1",K="rsp_decisions_v1",ie="rsp_telemetry_invocations_v1",Pe="rsp_telemetry_degradations_v1",Vt="rsp_telemetry_index_v1",Qd=64*1024});var ms={};C(ms,{RSP_WRAPPER_CAPABILITIES:()=>Qt,formatCodexHookDecision:()=>Ko,formatHookDecision:()=>Vo,hookDecisionFromClaudePreExecJson:()=>bf,hookDecisionFromCodexPreExecJson:()=>_f,rewriteCommand:()=>Ho,rewriteTableFromCapabilities:()=>Jo,runClaudePreExecHook:()=>Rf,runCodexPreExecHook:()=>Sf});import{readFileSync as Fn}from"node:fs";import{existsSync as gf}from"node:fs";import{fileURLToPath as hf}from"node:url";function Jo(e){let t=new Map;for(let n of e)t.set(Uf(n.command),["rsp",...n.wrapper]);return t}function Ho(e){let t=If(e);if(t)return t;let n=Pf(e);if(!n)return jn(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&ia(r[0]))return jn(e);let s=wf(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return jn(e);let i=[...Qt].sort((c,u)=>u.command.length-c.command.length).find(c=>Df(r,c.command));if(!i)return jn(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=ea(n.redirectSuffix);return{kind:"rewrite",command:[...o.map(Yt),...a].join(" "),capabilityId:i.id}}function wf(e){let t=e.tokens.map(s=>s.text),n=t[0],r=ea(e.redirectSuffix);return n==="cat"&&t.length===2&&Mn(t[1])?{kind:"rewrite",command:["rsp","cat",Yt(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&Mn(t[1])?{kind:"rewrite",command:["rsp","cat",`--${n}`,"10",Yt(t[1]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Mn(t[3])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[2],Yt(t[3]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Mn(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),Yt(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function Mn(e){return!!e&&!e.startsWith("-")}async function bf(e,t){return await Wo(e,t)}async function _f(e,t){return await Wo(e,t)}async function Wo(e,t){return(await ls(e,t,"pre-exec")).decision}async function ls(e,t,n){let r=oa(e);if(!r.ok){let f={kind:"passthrough",reason:r.reason};return{decision:f,telemetryRoot:t.cwd,event:zt({hook:n,command:"",decision:f,reason:r.reason})}}let s=r.payload,i=Q(s,["cwd"])||Q(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Ef)(i)){let f={kind:"passthrough",reason:"disabled"};return{decision:f,telemetryRoot:i,event:zt({hook:n,command:us(s),decision:f,reason:"disabled"})}}let a=us(s);if(!a){let f={kind:"passthrough",reason:"missing-command"};return{decision:f,telemetryRoot:i,event:zt({hook:n,command:a,decision:f,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=we(i,process.env).proxyEnabled?Cf(a):(t.rewrite??Ho)(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:zt({hook:n,command:a,decision:f,reason:f.reason??"unsupported-command",decisionMs:d})}}return await xf(i,t.wakeResident??kf),{decision:l,telemetryRoot:i,event:zt({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:d})}}function Vo(e){return e.kind==="rewrite"?zo(e.command):{stdout:"",status:0}}function Ko(e){return e.kind==="rewrite"?zo(e.command):{stdout:"",status:0}}function zo(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
40
+ `,status:0}}async function Rf(e){let t="";try{t=e?Fn(e,"utf8"):Fn(0,"utf8");let n=await ls(t,{cwd:process.cwd()},"claude-pre-exec");Gn(n.telemetryRoot,n.event);let r=n.decision;Qo("claude-pre-exec",r);let s=Vo(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Gn(process.cwd(),Yo("claude-pre-exec",t,n)),Xo("claude-pre-exec",n),0}}async function Sf(e){let t="";try{t=e?Fn(e,"utf8"):Fn(0,"utf8");let n=await ls(t,{cwd:process.cwd()},"codex-pre-exec");Gn(n.telemetryRoot,n.event);let r=n.decision;Qo("codex-pre-exec",r);let s=Ko(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return Gn(process.cwd(),Yo("codex-pre-exec",t,n)),Xo("codex-pre-exec",n),0}}function Gn(e,t){We(e,t).catch(()=>{})}function zt(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:K,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:sa(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function Yo(e,t,n){let r=oa(t),s=r.ok?us(r.payload):"";return{collection:K,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:sa(s),decision:"failed-open",reason:"hook-exception",error:ds(n)}}function Ef(e){return we(e,process.env).enabled}async function kf(e){let t=we(e,process.env);if(!t.enabled||!Of(t))return;let n=ve(e);await _n(n,vf(t))}async function xf(e,t){try{await Promise.resolve(t(e))}catch(n){Tf(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
41
  `);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
40
- `)}}function Jo(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${as(t)}
41
- `)}function hf(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 yf(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 wf(e){if(!e.storeUri.startsWith("file://"))return!0;try{return sf(of(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 bf(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=Ho(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 Ho(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 _f(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function Rf(e){let t=Ho(e.trim()).map(n=>n.text);return jn(t)?{kind:"passthrough",reason:af}:null}function jn(e){return e[0]==="gh"&&e.some(Sf)}function Sf(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Wo(e){return e.map(t=>t.text)}function Kt(e){return/[^\w@%+=:,./-]/.test(e)?cs(e):e}function Ef(e){let t=kf(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${cs(e.trim())}`,capabilityId:"proxy:universal"}}function kf(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 xf(t)?{kind:"rewrite",command:`rsp exec -- ${cs(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function xf(e){return!(!e||!Tf(e)||!vf(e)||Ko(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Of(e,"rsp")||zo(e,Vo)||Pf(e))}function Tf(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 vf(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 Of(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 Df(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,kb,af,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"]}],kb=Ao(zt),af="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:()=>Cf,runCodexPostExecHook:()=>Nf,transcodeJsonToToon:()=>oa});import{readFileSync as Hn}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=Mf(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,If),o=ta(t.maxItems,$f);if(!(s>o&&qf(e)>=i))return{output:T(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c=jf(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=Lf(e),r=Jf(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Af)(r))return{kind:"passthrough",reason:"disabled"};let i=Hf(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 Cf(e){let t=e?Hn(e,"utf8"):Hn(0,"utf8"),n=await ua(t,{cwd:process.cwd()}),r=fa(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function Nf(e){let t=e?Hn(e,"utf8"):Hn(0,"utf8"),n=await la(t,{cwd:process.cwd()}),r=ma(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Bf(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 Af(e){return ye(e,process.env).enabled}function Lf(e){try{let t=JSON.parse(e);return Oe(t)?t:{}}catch{return{}}}function Mf(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Oe(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 jf(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++)Uf(e[i])&&n.add(i);for(let i of Gf(e))n.add(i);for(let i of Ff(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 Uf(e){if(!Oe(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 Gf(e){let t=new Map;e.forEach((r,s)=>{if(Oe(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 Ff(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],s=e[n];if(!(!Oe(r)||!Oe(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 qf(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 Jf(e,t){let n=e;for(let r of t){if(!Oe(n))return"";n=n[r]}return typeof n=="string"?n:""}function Hf(e,t){let n=e[t];return Oe(n)?n:null}function Oe(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,If,$f,ca,Qt=R(()=>{"use strict";ee();re();na={id:"ansi",apply:Bf},ra={id:"cr-progress",apply:e=>e.split(`
42
+ `)}}function Xo(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${ds(t)}
43
+ `)}function Tf(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${ds(e)}
44
+ `)}function ds(e){return e instanceof Error?e.name||"Error":typeof e}function vf(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 Of(e){if(!e.storeUri.startsWith("file://"))return!0;try{return gf(hf(e.storeUri))}catch{return!1}}function us(e){return Q(e,["tool_input","command"])||Q(e,["tool_input","cmd"])||Q(e,["tool_input","args","command"])||Q(e,["input","command"])||Q(e,["input","cmd"])||Q(e,["arguments","command"])||Q(e,["arguments","cmd"])||Q(e,["command"])||Q(e,["cmd"])}function Pf(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=Zo(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&ia(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 Zo(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 Df(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function If(e){let t=Zo(e.trim()).map(n=>n.text);return Un(t)?{kind:"passthrough",reason:yf}:null}function Un(e){return e[0]==="gh"&&e.some($f)}function $f(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function ea(e){return e.map(t=>t.text)}function Yt(e){return/[^\w@%+=:,./-]/.test(e)?fs(e):e}function Cf(e){let t=Nf(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${fs(e.trim())}`,capabilityId:"proxy:universal"}}function Nf(e){let t=e.trim();if(!t)return"missing-command";if(na(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=Jn(qn(t)[0]??"")[0];if(n==="rsp")return"opt-out";if(n&&ta.has(n))return"interactive"}function jn(e){let t=e.trim();return Bf(t)?{kind:"rewrite",command:`rsp exec -- ${fs(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Bf(e){return!(!e||!Af(e)||!Lf(e)||na(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Mf(e,"rsp")||ra(e,ta)||jf(e))}function Af(e){return/&&|[;|]/.test(e)}function na(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 Lf(e){return qn(e).some(t=>{let n=Jn(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 ra(e,t){return qn(e).some(n=>{let r=Jn(n)[0];return r?t.has(r):!1})}function Mf(e,t){return ra(e,new Set([t]))}function jf(e){return qn(e).some(t=>{let n=Jn(t);return n[0]==="grep"&&n.includes("-q")})}function qn(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Jn(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function fs(e){return`'${e.replace(/'/g,"'\\''")}'`}function sa(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Un(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Un(t)&&t[1]?`gh ${t[1]} json-jq`:Un(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 ia(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Uf(e){return e.join("\0")}function oa(e){try{let t=JSON.parse(e);return aa(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function Q(e,t){let n=e;for(let r of t){if(!aa(n))return"";n=n[r]}return typeof n=="string"?n:""}function aa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Qt,Nb,yf,ta,Hn=S(()=>{"use strict";se();Fe();De();Qt=[{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"]}],Nb=Jo(Qt),yf="lossless-gh-json-jq";ta=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var gs={};C(gs,{NORMALIZATION_ALLOWLIST:()=>ha,NORMALIZE_ANSI:()=>la,NORMALIZE_BLANK_LINES:()=>ma,NORMALIZE_CR_PROGRESS:()=>da,NORMALIZE_JSON_TOON:()=>ga,NORMALIZE_TRAILING_WHITESPACE:()=>fa,formatCodexNormalizeDecision:()=>Ra,formatNormalizeDecision:()=>_a,hookDecisionFromClaudePostExecJson:()=>ya,hookDecisionFromCodexPostExecJson:()=>wa,normalizeOutput:()=>ht,renderGenericJsonLane:()=>Xt,runClaudePostExecHook:()=>qf,runCodexPostExecHook:()=>Jf,transcodeJsonToToon:()=>pa});import{readFileSync as Wn}from"node:fs";function pa(e,t){let n=t?.encode??T,r=t?.decode??fe,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 ps(i,a)?o.trimEnd():e}async function Xt(e,t={}){let n=Kf(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=ua(t.minTokens,Ff),o=ua(t.maxItems,Gf);if(!(s>o&&Zf(e)>=i))return{output:T(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c=zf(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(`
45
+ `),detected:!0,lossy:!0,totalItems:s,keptItems:c.length,handle:d}}function ht(e){let t=e;for(let n of ha)t=n.apply(t);return t}async function ya(e,t){return await ba(e,t)}async function wa(e,t){return await ba(e,t)}async function ba(e,t){let n=Vf(e),r=em(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Wf)(r))return{kind:"passthrough",reason:"disabled"};let i=tm(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 _a(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Ra(e){return{stdout:"",status:0}}async function qf(e){let t=e?Wn(e,"utf8"):Wn(0,"utf8"),n=await ya(t,{cwd:process.cwd()}),r=_a(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function Jf(e){let t=e?Wn(e,"utf8"):Wn(0,"utf8"),n=await wa(t,{cwd:process.cwd()}),r=Ra(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Hf(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&&ca(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&ca(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function ca(e){return e>=32&&e<=63}function Wf(e){return we(e,process.env).enabled}function Vf(e){try{let t=JSON.parse(e);return Ie(t)?t:{}}catch{return{}}}function Kf(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Ie(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 zf(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++)Yf(e[i])&&n.add(i);for(let i of Qf(e))n.add(i);for(let i of Xf(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 Yf(e){if(!Ie(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 Qf(e){let t=new Map;e.forEach((r,s)=>{if(Ie(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 Xf(e){let t=new Set;for(let n=1;n<e.length;n++){let r=e[n-1],s=e[n];if(!(!Ie(r)||!Ie(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 Zf(e){return Math.ceil(e.length/4)}function ua(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function em(e,t){let n=e;for(let r of t){if(!Ie(n))return"";n=n[r]}return typeof n=="string"?n:""}function tm(e,t){let n=e[t];return Ie(n)?n:null}function Ie(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ps(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)=>ps(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)&&ps(n[o],r[o]))}var la,da,fa,ma,ga,Ff,Gf,ha,Zt=S(()=>{"use strict";te();se();la={id:"ansi",apply:Hf},da={id:"cr-progress",apply:e=>e.split(`
44
46
  `).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
- `)},sa={id:"trailing-whitespace",apply:e=>e.split(`
47
+ `)},fa={id:"trailing-whitespace",apply:e=>e.split(`
46
48
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
47
- `)},ia={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
49
+ `)},ma={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
48
50
 
49
- `)};aa={id:"json-to-toon",apply:e=>oa(e)},If=200,$f=15;ca=[na,ra,sa,ia,aa]});var Ra={};C(Ra,{REPO_STORE_PATH:()=>fs,mergeRspBlock:()=>wa,provisionRspRepoStore:()=>Zf});import{constants as Wf}from"node:fs";import{access as Vf,copyFile as Kf,mkdir as pa,readFile as zf,writeFile as ga}from"node:fs/promises";import{dirname as Yf,join as Wn,resolve as Qf}from"node:path";async function Zf(e,t={}){let n=Qf(e),r=Wn(n,".red"),s=Wn(r,"config.yaml"),i=Wn(n,fs);await pa(r,{recursive:!0}),await pa(Yf(i),{recursive:!0});let o="";try{o=await zf(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=Wn(n,Xf);if(await ya(f))await Kf(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=em(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
- `),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
+ `)};ga={id:"json-to-toon",apply:e=>pa(e)},Ff=200,Gf=15;ha=[la,da,fa,ma,ga]});var Pa={};C(Pa,{REPO_STORE_PATH:()=>hs,mergeRspBlock:()=>Ta,provisionRspRepoStore:()=>um});import{constants as nm}from"node:fs";import{access as rm,copyFile as sm,mkdir as Sa,readFile as im,writeFile as Ea}from"node:fs/promises";import{dirname as om,join as Vn,resolve as am}from"node:path";async function um(e,t={}){let n=am(e),r=Vn(n,".red"),s=Vn(r,"config.yaml"),i=Vn(n,hs);await Sa(r,{recursive:!0}),await Sa(om(i),{recursive:!0});let o="";try{o=await im(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=Ta(o,{enabled:!0,ttlDays:t.ttlDays??ge,ephemeralTtlHours:t.ephemeralTtlHours??he,byteBudget:t.byteBudget??ye,heavyGitByteThreshold:t.heavyGitByteThreshold??pe}),c=a!==o;c&&await Ea(s,a,"utf8");let u=!await xa(i),l=!1;if(u){let f=Vn(n,cm);if(await xa(f))await sm(f,i),l=!0;else{let{RspElisionStore:y}=await Promise.resolve().then(()=>(Je(),Jt)),g=process.env.REDDB_BIN;try{await(await y.open({uri:`file://${i}`,ttlDays:t.ttlDays??ge,ephemeralTtlHours:t.ephemeralTtlHours??he,byteBudget:t.byteBudget??ye,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=lm(a,hs);return d!==a&&await Ea(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l}}function Ta(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Kn(t.ttlDays,ge)}`,` ephemeralTtlHours: ${Kn(t.ephemeralTtlHours,he)}`,` byteBudget: ${Kn(t.byteBudget,ye)}`,` heavyGitByteThreshold: ${Kn(t.heavyGitByteThreshold,pe)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
52
+ `),s=va(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
53
  `)}
52
- `}let i=ms(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
54
+ `}let i=ys(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
53
55
  `)}
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 em(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
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
+ `}function va(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(bs(r)&&ws(r)===0&&Oa(r)===t)return n}return-1}function ys(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(bs(e[s])&&ws(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function ws(e){return(e.match(/^ */)?.[0]??"").length}function bs(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Oa(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Kn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function lm(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
57
+ `),r=va(n,"plugins");if(r===-1)return e;let s=ys(n,r,0),i=ka(n,"memory",r+1,s,2);if(i===-1)return e;let o=ys(n,i,2),a=[...n],c=ka(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
56
58
  `)}
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 Vf(e,Wf.F_OK),!0}catch{return!1}}var fs,Xf,Sa=R(()=>{"use strict";re();fs=En,Xf=".red/memory/graph.rdb"});var Oa={};C(Oa,{runRspMcpServer:()=>nm});import{createInterface as tm}from"node:readline";async function nm(){let e=ye(process.cwd(),process.env),t=tm({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 rm(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 rm(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=um(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 sm(n.arguments,r)}]}}return{}}async function sm(e,t){let n=im(e?.payload),r=om(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 am(i,o.length,a,r)}function im(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function om(e){return e==="terse"?"terse":"brief"}function am(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: ${cm(i)}`,"head:",a];return c&&c!==a&&u.push("tail:",c),u.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${u.join(`
59
+ `}function ka(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(bs(o)&&ws(o)===s&&Oa(o)===t)return i}return-1}async function xa(e){try{return await rm(e,nm.F_OK),!0}catch{return!1}}var hs,cm,Da=S(()=>{"use strict";se();hs=kn,cm=".red/memory/graph.rdb"});var Aa={};C(Aa,{runRspMcpServer:()=>fm});import{createInterface as dm}from"node:readline";async function fm(){let e=we(process.cwd(),process.env),t=dm({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 mm(r,e);Na({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Na({jsonrpc:"2.0",id:typeof Ba(n)?.id>"u"?null:Ba(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function mm(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:Ca(t)}]};if(!t.enabled)return{content:[{type:"text",text:Ca(t)}],isError:!0};let r=bm(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 pm(n.arguments,r)}]}}return{}}async function pm(e,t){let n=gm(e?.payload),r=hm(e?.level),s=await Xt(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return Ia(s.output);let i=ht(n);if(r==="brief"&&Buffer.byteLength(i)<=2*1024)return Ia(i);let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return ym(i,o.length,a,r)}function gm(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function hm(e){return e==="terse"?"terse":"brief"}function ym(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=$a(i.subarray(0,o)),c=$a(i.subarray(Math.max(0,i.length-o))),u=["payload summary",`bytes: ${t}`,`lines: ${wm(i)}`,"head:",a];return c&&c!==a&&u.push("tail:",c),u.push(`\u2026 elided payload (+${t}) \u2014 rsp show ${n}`),`${u.join(`
58
60
  `)}
59
- `}function Ea(e){return e.endsWith(`
61
+ `}function Ia(e){return e.endsWith(`
60
62
  `)?e:`${e}
61
- `}function ka(e){return e.toString("utf8").replace(/�$/g,"")}function cm(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 um(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 Pa=R(()=>{"use strict";re();Qt();Ue()});var La={};C(La,{renderWaitHelp:()=>bs,runWait:()=>hm});import{spawn as Rs}from"node:child_process";import{existsSync as ws}from"node:fs";import{mkdir as lm,readdir as dm,readFile as fm,rm as Ca,writeFile as mm}from"node:fs/promises";import{join as Zt,resolve as hs}from"node:path";import{randomUUID as pm}from"node:crypto";async function hm(e,t=process.cwd()){let n=wm(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 Tm(t)})}
63
- `),0;if(!ym(n.kind))return process.stdout.write(bs()),2;let r=n.kind,s={id:pm(),target:Dm(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:gm[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 lm(await _s(t),{recursive:!0}),await Na(i,s),o=await bm({...n,kind:r},t,i,s),process.stdout.write(`${T(Pm(r,s,o))}
64
- `),await Om(n.options),o.exitCode}finally{await Ca(i,{force:!0})}}function ym(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 wm(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=Cm(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 bm(e,t,n,r){switch(e.kind){case"cmd":return await _m(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await ys(Rm(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(()=>Em(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await ys(()=>xm(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function _m(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 Am(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 Rm(e,t,n){let r=Date.now();return()=>Sm(e,t,n,r)}async function Sm(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(Im),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 Em(e,t){let n=e.target??(e.latest&&e.branch?await km(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"?We("success",`run ${n} succeeded`,Ia(s)):We("failure",`run ${n} concluded ${o||"unknown"}`,Ia(s))}async function km(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 xm(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||Nm(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 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 Tm(e){let t=await _s(e);if(!ws(t))return[];let n=await dm(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=Zt(t,s),o=$m(await fm(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Bm(a)){await Ca(i,{force:!0});continue}r.push(o)}return r}async function _s(e){return Zt(await vm(e),".red","tmp","waits")}async function vm(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 mm(e,`${T(t)}
66
- `,"utf8")}async function Om(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 We(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function Dm(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 Im(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 $m(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 Cm(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 Nm(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Bm(e){try{return process.kill(e,0),!0}catch{return!1}}async function Am(e){await new Promise(t=>setTimeout(t,e))}var Da,gm,Ma=R(()=>{"use strict";ee();Da={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},gm={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:()=>Lm});function Lm(e,t=zt){if(e==="fish")return Mm(t);if(e==="bash"||e==="zsh")return jm(e,t);throw new Error(`unsupported shell: ${e}`)}function Mm(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} '${qm(`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 jm(e,t){let n=Gm(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 Um(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Fm(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 Um(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 Gm(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 Fm(e){return e.replace(/'/g,"'\\''")}function qm(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"&&Jm(t.chosenOption)&&Hm(t.outcome)&&Wm(t.cost)}function Jm(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Hm(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 Vm}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 Ym(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(Km.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function nc(e){if(zm.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Qm(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Ha(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 Wa(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 Xm(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Zm(e){return Vm("sha256").update(JSON.stringify(e)).digest("hex")}function ep(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 tp(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 np(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 rp(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 sp(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 ip(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var ie,Km,zm,xs,ic=R(()=>{"use strict";Fa();ie={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Km=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),zm=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(Wa(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(Wa(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:ip(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=Xm(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=`${ep(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=tp(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:np(u,s,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:rp(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 sp(t,s)}async link(t){let n=await this.getArtifact(Ha(t.from)),r=await this.getArtifact(Ha(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=Qm(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(Ym).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:()=>mp});import{randomUUID as yt}from"node:crypto";import{execFileSync as op,spawn as ap}from"node:child_process";import{existsSync as cp}from"node:fs";import{mkdir as fc,rename as up,rm as oc,writeFile as mc}from"node:fs/promises";import{createServer as lp}from"node:net";import{dirname as Ds,join as tn}from"node:path";import{fileURLToPath as dp,pathToFileURL as fp}from"node:url";async function mp(e){await fc(Ds(e.socketPath),{recursive:!0});let t=Tp();xp();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=lp(x=>{l.add(x),x.once("close",()=>l.delete(x)),g(),Cp(x,async O=>{g();let N=await Np(r,O,e.storeUri,e.residentVersion??"0.0.0-dev"),j={id:O.id,ok:!0,value:N,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};yc(x,j),O.op==="handover"&&setImmediate(()=>y())})});function y(){i=!0,u=!0,c=kp(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 O=()=>{Xn(),f.close();for(let N of l)N.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,O),{signal:x,handler:O}});await new Promise((x,O)=>{f.once("error",O),f.listen(e.socketPath,()=>{f.off("error",O),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise($=>setTimeout($,O));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 Ps(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:O}of p)process.off(x,O);t?.kill("SIGTERM"),Xn(),e.pidPath&&await oc(e.pidPath,{force:!0}),await Rn(w)}async function bp(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,yp),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 up(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 _p(e){let t=[];for(let n of wp){let r=await Rp(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await Sp(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 Rp(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 Sp(e,t,n){let r=Ep(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${gc(t)}`)}function Ep(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 kp(e){return e&&clearTimeout(e),setTimeout(()=>{Xn(),process.exit(0)},hp)}function xp(){ac||(ac=!0,process.on("exit",()=>Xn()))}function Tp(){if(process.platform==="win32")return;let t=ap(process.execPath,["-e",`
63
+ `}function $a(e){return e.toString("utf8").replace(/�$/g,"")}function wm(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 bm(e){return new Mt(ve(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs})}function Ca(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Na(e){process.stdout.write(`${JSON.stringify(e)}
64
+ `)}function Ba(e){try{return JSON.parse(e)}catch{return null}}var La=S(()=>{"use strict";se();Zt();Fe()});var Ha={};C(Ha,{renderWaitHelp:()=>Es,runWait:()=>Tm});import{spawn as xs}from"node:child_process";import{existsSync as Ss}from"node:fs";import{mkdir as _m,readdir as Rm,readFile as Sm,rm as Fa,writeFile as Em}from"node:fs/promises";import{join as tn,resolve as _s}from"node:path";import{randomUUID as km}from"node:crypto";async function Tm(e,t=process.cwd()){let n=Om(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Es()),0;if(n.kind==="ls")return process.stdout.write(`${T({waits:await Am(t)})}
65
+ `),0;if(!vm(n.kind))return process.stdout.write(Es()),2;let r=n.kind,s={id:km(),target:Um(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:xm[n.kind],status:"running"},i=tn(await ks(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await _m(await ks(t),{recursive:!0}),await Ga(i,s),o=await Pm({...n,kind:r},t,i,s),process.stdout.write(`${T(jm(r,s,o))}
66
+ `),await Mm(n.options),o.exitCode}finally{await Fa(i,{force:!0})}}function vm(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Es(){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(`
67
+ `)}function Om(e){let t=e[1],n={timeoutMs:Ma.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=Ma[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=qa(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=qm(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 Pm(e,t,n,r){switch(e.kind){case"cmd":return await Dm(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await Rs(Im(e.target??"",t,{emptyChecksGraceMs:Ua("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,Ua("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await Rs(()=>Cm(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await Rs(()=>Bm(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function Dm(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=xs(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),en(r,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${Ja(t)}`})},t);c.once("error",l=>{clearTimeout(u),en(r,s,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,d)=>{if(clearTimeout(u),o)return;let f=l===0;en(r,s,f?"success":"failure"),a({status:f?"success":"failure",exitCode:f?0:1,summary:f?"command exited successfully":`command exited with ${d??l??"unknown"}`,details:{status:l??null,signal:d??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function Rs(e,t,n,r,s){let i=Date.now()+t,o=0;for(;Date.now()<i;){let a=await e();if(a.status!=="running"&&a.status!=="indeterminate")return await en(r,s,a.status),a;let c=Math.min(n*4,Math.round(n*Math.pow(1.25,o++)))+Math.floor(Math.random()*1e3);await Wm(Math.min(c,Math.max(0,i-Date.now())))}return await en(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Ja(t)}`}}function Im(e,t,n){let r=Date.now();return()=>$m(e,t,n,r)}async function $m(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await zn(["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=Ts(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(Fm),u=c.filter(d=>d==="failure").length,l=c.filter(d=>d==="pending").length;if(String(i.state)!=="OPEN")return Ve("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return Ve("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}}:Ve("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}}:Ve("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function Cm(e,t){let n=e.target??(e.latest&&e.branch?await Nm(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await zn(["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=Ts(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"?Ve("success",`run ${n} succeeded`,ja(s)):Ve("failure",`run ${n} concluded ${o||"unknown"}`,ja(s))}async function Nm(e,t){let n=await zn(["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 nn(s)&&s.databaseId!=null?String(s.databaseId):""}async function Bm(e,t,n){let r=await zn(["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(nn):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||Jm(e,c))&&u>=t});return o?Ve("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 zn(e,t){return await new Promise(n=>{let r=xs("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 Am(e){let t=await ks(e);if(!Ss(t))return[];let n=await Rm(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=tn(t,s),o=Gm(await Sm(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!Hm(a)){await Fa(i,{force:!0});continue}r.push(o)}return r}async function ks(e){return tn(await Lm(e),".red","tmp","waits")}async function Lm(e){let t=_s(e);for(;;){if(Ss(tn(t,".red"))||Ss(tn(t,".git")))return t;let n=_s(t,"..");if(n===t)return _s(e);t=n}}async function en(e,t,n){await Ga(e,{...t,status:n}).catch(()=>{})}async function Ga(e,t){await Em(e,`${T(t)}
68
+ `,"utf8")}async function Mm(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=xs(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function jm(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 Ve(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function Um(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 Fm(e){let t=nn(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 ja(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 Ts(e){let t=JSON.parse(e);if(!nn(t))throw new Error("expected JSON object");return t}function Gm(e){let t=e.trim();if(!t)return{};try{return Ts(t)}catch{let n=fe(t);if(!nn(n))throw new Error("expected structured object");return n}}function nn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function qa(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 Ua(e,t){let n=process.env[e];if(!n)return t;try{return qa(n)}catch{return t}}function qm(e){return e.startsWith("SIG")?e:`SIG${e}`}function Ja(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function Jm(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function Hm(e){try{return process.kill(e,0),!0}catch{return!1}}async function Wm(e){await new Promise(t=>setTimeout(t,e))}var Ma,xm,Wa=S(()=>{"use strict";te();Ma={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},xm={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Ka={};C(Ka,{renderShellInit:()=>Vm});function Vm(e,t=Qt){if(e==="fish")return Km(t);if(e==="bash"||e==="zsh")return zm(e,t);throw new Error(`unsupported shell: ${e}`)}function Km(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(Qn))].map(n=>` abbr --add --position command -- ${n} '${Zm(`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(`
69
+ `)}function zm(e,t){let n=Qm(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Yn("git",n.get("git")??[]),...Yn("gh",n.get("gh")??[]),...Yn("vitest",n.get("vitest")??[]),...Yn("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(`
70
+ `)}function Yn(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(Qn),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(Qn)),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=>Va(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of Ym(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Xm(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Va(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Ym(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 Qm(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Qn(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function Qn(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Va(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Xm(e){return e.replace(/'/g,"'\\''")}function Zm(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var za=S(()=>{"use strict";Hn()});function vs(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"&&ep(t.chosenOption)&&tp(t.outcome)&&np(t.cost)}function ep(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function tp(e){return e==="success"||e==="failure"||e==="escalated"}function np(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 Ya=S(()=>{});import{createHash as rp}from"node:crypto";function cc(e,t){return new Ps(e,t)}function Qa(e){let t=Number(e.red_entity_id??e.rid),n=Ds(e.properties??e.PROPERTIES),r=uc(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 Xa(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=lc(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:Ds(e.properties??e.PROPERTIES)}}function op(e){let t=Number(e.red_entity_id??e.rid),n=Ds(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!vs(n)?null:{rid:t,event:n}}function Ds(e){return e==null?{}:typeof e=="string"?JSON.parse(e):Xn(e)?e:{}}function uc(e){let t=e==="contact"?"person":e;if(sp.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function lc(e){if(ip.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function ap(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function Za(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function ze(e){return Xn(e)?e:{}}function ec(e,t){return ze(e)[t]}function tc(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function nc(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function rc(e){let t=ze(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function j(e){return typeof e=="string"&&e.length>0?e:void 0}function Xn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Os(e){return e!=null}function cp(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function up(e){return rp("sha256").update(JSON.stringify(e)).digest("hex")}function lp(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function sc(e){return`artifact-hash:${e}`}function ic(e,t,n){return`connection:${e}:${t}:${n}`}function oc(){return"model-tier-bandit:v1"}function dp(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ac(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function dc(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+ac(n,a)*3+ac(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 fp(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=fc({...dc(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return Ke(s)}function fc(e){return{...e,lexical:Ke(e.lexical),tags:Ke(e.tags),kind:Ke(e.kind),connections:Ke(e.connections),vector:Ke(e.vector),total:Ke(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function Ke(e){return Math.round(e*1e3)/1e3}function mp(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 pp(e,t){let n=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",r=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,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 gp(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var oe,sp,ip,Ps,mc=S(()=>{"use strict";Ya();oe={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},sp=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),ip=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Ps=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(ze(n));if(t==="getArtifact")return await this.getArtifact(ec(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=ze(n);return await this.search(tc(r,"query"),nc(r,"limit")??10,rc(r.options))}if(t==="think"){let r=ze(n);return await this.think(tc(r,"query"),nc(r,"limit")??8,rc(r.options))}if(t==="link")return await this.link(ze(n));if(t==="backlinks")return await this.backlinks(ec(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(ze(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 ${oe.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${oe.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${oe.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:gp(t.map(r=>r.kind))}}async capture(t){let n=j(t.title)||"Untitled artifact",r=j(t.content);if(!r)throw new Error("brain capture requires content");let s=uc(j(t.kind)||"note"),i=cp(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=up([s,n,r,i,j(t.sourcePath),j(t.sourceSession)]),c=await this.kv().get(sc(a));if(c!=null){let g=await this.getArtifact(Number(c));if(g)return g}let u=`${lp(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:j(t.sourceAgent),source_runner:j(t.sourceRunner),source_session:j(t.sourceSession),source_path:j(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:Xn(t.metadata)?t.metadata:void 0},f=(await this.db.query(`INSERT INTO ${oe.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(sc(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 ${oe.artifacts}`)).rows.map(Qa).filter(Os)}async search(t,n,r={}){let s=dp(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=dc(u,s),d=fc({...l,connections:fp(u,s,a,c),vector:0});return{artifact:u,score:d.total,score_breakdown:d,excerpt:mp(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,n)))}async think(t,n,r={}){let s=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return pp(t,s)}async link(t){let n=await this.getArtifact(Za(t.from)),r=await this.getArtifact(Za(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=lc(j(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:j(t.reason),confidence:j(t.confidence)||"explicit",created_at:Date.now(),metadata:Xn(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${oe.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=Xa(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(ic(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 ${oe.connections}`)).rows.map(Xa).filter(Os)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=ap(j(t.interval)||"day"),s=j(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(!vs(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${oe.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 ${oe.outcomeEvents}`)).rows.map(op).filter(Os).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(oc());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(oc(),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(ic(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(oe.kv)}}});var Tc={};C(Tc,{runResidentServer:()=>Ep});import{randomUUID as yt}from"node:crypto";import{execFileSync as hp,spawn as yp}from"node:child_process";import{existsSync as wp}from"node:fs";import{mkdir as _c,rename as bp,rm as pc,writeFile as Rc}from"node:fs/promises";import{createServer as _p}from"node:net";import{dirname as Ns,join as rn}from"node:path";import{fileURLToPath as Rp,pathToFileURL as Sp}from"node:url";async function Ep(e){await _c(Ns(e.socketPath),{recursive:!0});let t=Ap();Bp();let n=e.telemetryDrainTimeoutMs??Sc,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??vn,a,c,u=!1,l=new Set,d=e.telemetryDrainIntervalMs??3e4,f=_p(x=>{l.add(x),x.once("close",()=>l.delete(x)),g(),qp(x,async O=>{g();let N=await Jp(r,O,e.storeUri,e.residentVersion??"0.0.0-dev"),F={id:O.id,ok:!0,value:N,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};xc(x,F),O.op==="handover"&&setImmediate(()=>y())})});function y(){i=!0,u=!0,c=Np(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 O=()=>{Zn(),f.close();for(let N of l)N.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,O),{signal:x,handler:O}});await new Promise((x,O)=>{f.once("error",O),f.listen(e.socketPath,()=>{f.off("error",O),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise($=>setTimeout($,O));let N=await Gt.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),F=Number(process.hrtime.bigint()-x)/1e6,z=new Cs(N,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??xn,byteBudget:e.telemetryByteBudget??e.byteBudget??Tn});if(i){await N.close();return}if(await Is(z,n),i){await N.close();return}r={kind:"ready",store:N,telemetry:z,storeOpenCount:1,storeElapsedMs:F},s=setInterval(()=>{let $=r.kind==="ready"?r:void 0;$&&Is($.telemetry,n)},d),s.unref(),g()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},g()}),e.pidPath&&await Rc(e.pidPath,`${process.pid}
71
+ `,{encoding:"utf8",mode:384});let E=e.residentVersion??"0.0.0-dev",w=e.registryPath??rn(e.rootDir??process.cwd(),".red","tmp","rsp-resident.pid.json");try{await Rn(w,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:E})}catch{}await new Promise(x=>f.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await pc(e.socketPath,{force:!0});let v=r;v.kind==="ready"&&(await Is(v.telemetry,n,u),await v.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:O}of p)process.off(x,O);t?.kill("SIGTERM"),Zn(),e.pidPath&&await pc(e.pidPath,{force:!0}),await Sn(w)}async function Pp(e,t,n=new Date){let r=await Ln(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=rn(t,vp),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 _c(Ns(a),{recursive:!0}),await Rc(c,`${T(u)}
72
+ `,{encoding:"utf8",mode:384}),await bp(c,a)}async function Is(e,t=Sc,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await kc(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
73
+ `)}}async function Dp(e){let t=[];for(let n of Op){let r=await Ip(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await $p(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${Ec(n)}`))}return t}async function Ip(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 $p(e,t,n){let r=Cp(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${Ec(t)}`)}function Cp(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 Ec(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function Np(e){return e&&clearTimeout(e),setTimeout(()=>{Zn(),process.exit(0)},Tp)}function Bp(){gc||(gc=!0,process.on("exit",()=>Zn()))}function Ap(){if(process.platform==="win32")return;let t=yp(process.execPath,["-e",`
72
74
  const { execFileSync } = require("node:child_process");
73
75
  const parentPid = Number(process.argv[1]);
74
76
  const known = new Set();
@@ -109,64 +111,64 @@ const timer = setInterval(() => {
109
111
  clearInterval(timer);
110
112
  process.exit(0);
111
113
  }, 500);
112
- `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Xn(){for(let e of vp())try{process.kill(e,"SIGTERM")}catch{}}function vp(){if(process.platform==="win32")return[];let e="";try{e=op("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 Op(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<=pp)try{return await hc((async()=>({tokens:(await Pp())("cl100k_base").encode(e).length,estimated:!1}))(),gp,"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(fp(Dp()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await uc}function Dp(){let e=Ds(dp(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=>cp(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 Os(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 Ip(e){try{return JSON.parse(e)}catch{return e}}function $p(e){return dc(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>dc(t)&&(t.collection===H||t.collection===W||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 Cp(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 Np(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 Ap(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await Bp(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Bp(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 Ap(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var pp,gp,pc,hp,yp,wp,Ps,ac,uc,bc=R(()=>{"use strict";ee();Sn();qe();ic();ve();re();pp=256*1024,gp=500,pc=2e3,hp=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),yp=tn(".red","tmp","rsp-status-summary.json"),wp=[H,W,se,Te,Ht],Ps=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 _p(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 bp(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 Op(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===H?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===H||n.accounting_recorded===!0?null:n.collection===se?await this.writeEvent(t,{collection:H,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:Os(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:H,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:Os(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:H,id:`mirror:${yt()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:Os(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(Ht).get("index:v1"),r=typeof n=="string"?Ip(n):n;return $p(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Ht).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:()=>Mp});import{spawn as Lp}from"node:child_process";async function Mp(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 jp(t.telemetryRoot,n,c),await _c(n);throw c}for(let c of s)await Up(t.telemetryRoot,c);let o=await _c(r||n),a=Number(process.hrtime.bigint()-i)/1e6;return await He(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"||Hp(n,o)==="|")return i.text;let a=Gp(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 jp(e,t,n){await He(e,{collection:W,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 Up(e,t){await He(e,{collection:W,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=Lp(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 Gp(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=Kp(s);if(!i)return null;let o=Jp(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=Fp(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 Fp(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}:qp(t,n)}function qp(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 Jp(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 Hp(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=Vp(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 Vp(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 Kp(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(zp)}function zp(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 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 wt(e,t){if(!t)return e;let r=e.split(`
116
- `).filter(s=>s&&kc(s,t));return r.length>0?`${r.join(`
114
+ `,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Zn(){for(let e of Lp())try{process.kill(e,"SIGTERM")}catch{}}function Lp(){if(process.platform==="win32")return[];let e="";try{e=hp("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 Mp(e){if(e.collection!==ie)return e;let t=await hc(e.raw_text,wc(e.raw_bytes)),n=await hc(e.emitted_text,wc(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 hc(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=kp)try{return await kc((async()=>({tokens:(await jp())("cl100k_base").encode(e).length,estimated:!1}))(),xp,"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 jp(){return yc??=import(Sp(Up()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await yc}function Up(){let e=Ns(Rp(import.meta.url)),n=[rn(e,"..","node_modules","js-tiktoken","dist","index.js"),rn(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>wp(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function wc(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function U(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function $s(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function kc(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 Fp(e){try{return JSON.parse(e)}catch{return e}}function Gp(e){return bc(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>bc(t)&&(t.collection===V||t.collection===K||t.collection===ie||t.collection===Pe)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function bc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function qp(e,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",r=>{n+=r;let s=n.indexOf(`
115
+ `);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)};xc(e,u)}finally{e.end()}})()})}function xc(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
116
+ `)}catch{}}async function Jp(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 as(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 Ln(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 cs(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Wp(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await Hp(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function Hp(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await cc(s,t).request(n,r)}function Wp(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var kp,xp,Sc,Tp,vp,Op,Cs,gc,yc,vc=S(()=>{"use strict";te();En();Je();mc();De();se();kp=256*1024,xp=500,Sc=2e3,Tp=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),vp=rn(".red","tmp","rsp-status-summary.json"),Op=[V,K,ie,Pe,Vt],Cs=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 Dp(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 is(this.opts.rootDir,async a=>{let c=os(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(u),!0}try{let u=await this.writeEvent(t,c);i.push(u);let l=await this.writeAccountingMirror(t,c);return l&&i.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:U(c.command)||"unknown",source_id:U(c.id),source_collection:U(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return i.push(l),!0}});let o=i.length>s;await this.prune(t,{version:1,records:i},o),await Pp(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 Mp(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===V?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===V||n.accounting_recorded===!0?null:n.collection===ie?await this.writeEvent(t,{collection:V,id:`mirror:${U(n.id)||yt()}`,created_at:U(n.created_at)||U(n.ts)||new Date().toISOString(),event_type:"invocation",command:U(n.command)||"unknown",command_class:$s(U(n.command)||"unknown"),wrapper:n.wrapper,loss:n.loss,elided:n.elided,raw_bytes:n.raw_bytes,emitted_bytes:n.emitted_bytes,tokens_raw:n.tokens_raw,tokens_emitted:n.tokens_emitted,estimated:n.estimated,wrapper_ms:n.wrapper_ms,store_open_count:n.store_open_count,store_elapsed_ms:n.store_elapsed_ms}):n.collection===Pe?await this.writeEvent(t,{collection:V,id:`mirror:${U(n.id)||yt()}`,created_at:U(n.created_at)||U(n.ts)||new Date().toISOString(),event_type:"invocation",command:U(n.command)||"unknown",command_class:$s(U(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:U(n.reason)||"unknown"}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Pe,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:V,id:`mirror:${yt()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:$s(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(Vt).get("index:v1"),r=typeof n=="string"?Fp(n):n;return Gp(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Vt).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})}};gc=!1});var Ls={};C(Ls,{parseProxyCommandLine:()=>Ic,rewriteProxyCommandLine:()=>Dc,runProxy:()=>Kp});import{spawn as Vp}from"node:child_process";async function Kp(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=Ic(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Dc(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await zp(t.telemetryRoot,n,c),await Oc(n);throw c}for(let c of s)await Yp(t.telemetryRoot,c);let o=await Oc(r||n),a=Number(process.hrtime.bigint()-i)/1e6;return await We(t.telemetryRoot,{collection:ie,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 Dc(e,t="lossless"){let n=ng(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||tg(n,o)==="|")return i.text;let a=Qp(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function Ic(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 zp(e,t,n){await We(e,{collection:K,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:As(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function Yp(e,t){await We(e,{collection:K,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 Oc(e){let t=Vp(e,{shell:!0,stdio:"inherit"});return await new Promise(n=>{t.on("error",r=>{process.stderr.write(`${r instanceof Error?r.message:String(r)}
117
+ `),n(127)}),t.on("close",(r,s)=>{if(s){process.kill(process.pid,s),n(128);return}n(r??0)})})}function Qp(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=sg(s);if(!i)return null;let o=eg(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(y=>y.value);if(er(c))return{text:e,match:{command:a.map(y=>y.raw).join(" "),commandFamily:As(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=Xp(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:As(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function Xp(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}:Zp(t,n)}function Zp(e,t){return e[0]==="cat"&&e.length===2&&Bs(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Bs(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])&&Bs(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Bs(e){return!!e&&!e.startsWith("-")}function eg(e){let t=0;for(;t<e.length&&Pc(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&Pc(e[t].value);)t+=1;return t}function tg(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function ng(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=rg(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 rg(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 sg(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 As(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:er(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:er(t)&&t[1]?`gh ${t[1]} json-jq`:er(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 er(e){return e[0]==="gh"&&e.some(ig)}function ig(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function Pc(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Ms=S(()=>{"use strict";De()});function $e(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 $c(e,t){if(!t)return!0;let n=js(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function L(e,t){return t?e.filter(n=>$c(n,t)):[...e]}function wt(e,t){if(!t)return e;let r=e.split(`
118
+ `).filter(s=>s&&$c(s,t));return r.length>0?`${r.join(`
117
119
  `)}
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:()=>Qp});import{spawn as Yp}from"node:child_process";async function Qp(e,t){let n=vc(e),r=Oc(n.argv),s=await tg(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=Oc(r.argv),i=ng(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(Xp(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=mg(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
+ `:""}function Ce(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function js(e){return Array.isArray(e)?e.map(js).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(js).join(" "):String(e??"")}var tr=S(()=>{"use strict"});var Us={};C(Us,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>pe,GIT_LOG_MACHINE_FIELDS:()=>Cc,recoveryInstruction:()=>X,renderGitContract:()=>Nc,runGitWrapper:()=>ag});import{spawn as og}from"node:child_process";async function ag(e,t){let n=Bc(e),r=Ac(n.argv),s=await dg(r,n.argv.slice(1));return Nc(e,s,t)}async function Nc(e,t,n){let r=Bc(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=Ac(r.argv),i=fg(s,r.argv,t.stdout,r.query);if(i===`git empty
121
+ `)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=T(i);if(cg(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=Eg(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 ${X(u)}
120
122
  `;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=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 Xp(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Zp(e)||r.level!=="lossless")return!0;let s=fg(r.heavyGitByteThreshold,me);return Buffer.byteLength(t)<=s}function Zp(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Oc(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 eg(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 tg(e,t){let n=Yp("git",eg(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 ng(e,t,n,r){switch(e){case"status":return rg(t,n,r);case"log":return sg(t,n,r);case"diff":return ig(t,n,r);case"commit":return Ie(og(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ie(ag(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return cg(t,n,r);case"branch":return ug(t,n,r);case"show":return lg(t,n,r)}}function rg(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:dg(u)})}if(s.length===0)return`git empty
122
- `;let i=A(s,n),o=Pc(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 sg(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 ig(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 og(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 ag(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 cg(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=Pc(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 ug(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 lg(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(O=>O==="+").length,deleted:[...x].filter(O=>O==="-").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 dg(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Pc(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function fg(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function mg(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:()=>yg});import{spawn as Ic}from"node:child_process";async function yg(e,t){let n=Cc(e),r=await bg(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(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=Rg(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=Og(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)}
123
+ ${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 X(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Bc(e){let t=$e(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 cg(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!ug(e)||r.level!=="lossless")return!0;let s=Sg(r.heavyGitByteThreshold,pe);return Buffer.byteLength(t)<=s}function ug(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ac(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 lg(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Cc.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 dg(e,t){let n=og("git",lg(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 fg(e,t,n,r){switch(e){case"status":return mg(t,n,r);case"log":return pg(t,n,r);case"diff":return gg(t,n,r);case"commit":return Ne(hg(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ne(yg(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return wg(t,n,r);case"branch":return bg(t,n,r);case"show":return _g(t,n,r)}}function mg(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:Rg(u)})}if(s.length===0)return`git empty
124
+ `;let i=L(s,n),o=Lc(i,"state");return Ne({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 pg(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=L(r,n);return Ne({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 gg(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=L(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 Ne({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 hg(e,t){let n=t.split(`
125
+ `)[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 yg(e,t){let n=t.split(`
126
+ `).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 wg(e,t,n){let r=t.split(`
127
+ `),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=L(s,n),a=Lc(o,"author");return Ne({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 bg(e,t,n){let r=t.split(`
128
+ `).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=L(r,n),i=s.find(o=>o.current)?.name??"";return Ne({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 _g(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(`
129
+ `)){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(O=>O==="+").length,deleted:[...x].filter(O=>O==="-").length,binary:x.startsWith("Bin")})}let g=L(y,n),m=0,p=0,E=0;for(let w of g)m+=typeof w.changed=="number"?w.changed:0,p+=typeof w.added=="number"?w.added:0,E+=typeof w.deleted=="number"?w.deleted:0;return Ne({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:d??"",body_lines:f.trim()?f.trim().split(`
130
+ `).length:0,files:g,summary:`${n?`${g.length}/${y.length}`:g.length} files, ${m} changed, +${p} -${E}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Ne(e,t,n){return t?Ce(e,n):e}function Rg(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Lc(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function Sg(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Eg(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 Cc,Ye=S(()=>{"use strict";te();se();tr();se();Cc=["%h","%an","%as","%s"]});var Js={};C(Js,{renderGhContract:()=>Uc,runGhWrapper:()=>vg});import{spawn as jc}from"node:child_process";async function vg(e,t){let n=Fc(e),r=await Pg(n);return Uc(e,r,t)}async function Uc(e,t,n){let r=$e(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=Fc(e),i=nr(t.stdout),o=Ig(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=Mg(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=jg(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 ${X(f)}
129
131
  `;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=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 wg(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?gg[t]:pg[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function bg(e){if(e.action==="combined")return await _g(e);let t=Ic("gh",wg(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 _g(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 Rg(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return xg(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 Sg(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:Tg(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:vg(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 Sg(e,t,n){let r=Bc(oe(n.view),{...e,action:"view",wide:!0}),s=A(_t(n.checks).map(Eg),e.query),i=oe(n.comments).comments,o=A(_t(i).map(kg).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 Eg(e){return{name:P(e,"name"),state:nn(e),bucket:P(e,"bucket"),conclusion:P(e,"conclusion"),workflow:P(e,"workflow"),link:P(e,"link")}}function kg(e){return{author:Uc(e.author),body:nr(e,"body",js,!1),created:P(e,"createdAt")}}function xg(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
132
+ ${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 Fc(e){let t=$e(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 Og(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?xg[t]:kg[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function Pg(e){if(e.action==="combined")return await Dg(e);let t=jc("gh",Og(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 Dg(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[s,i,o]=await Promise.all([Fs(["pr","view",t,"--json",n.join(",")]),Fs(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),Fs(["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:nr(s.stdout),checks:nr(i.stdout),comments:nr(o.stdout)}),stderr:[s.stderr,i.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function Fs(e){let t=jc("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 Ig(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Bg(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=_t(n).map(o=>Gc(o,e.wide)),i=L(s,e.query);return bt({...r,prs:i,summary:`${Gs(i.length,s.length,e.query)} ${Mc(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return bt({...r,pr:qc(ae(n),e),summary:`PR #${Qe(ae(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return $g(e,t,ae(n));case"issue:list":{let s=_t(n).map(o=>Jc(o,e.wide)),i=L(s,e.query);return bt({...r,issues:i,summary:`${Gs(i.length,s.length,e.query)} ${Mc(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return bt({...r,issue:Ag(ae(n),e),summary:`issue #${Qe(ae(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=_t(n).map(o=>Hc(o,e.wide)),i=L(s,e.query);return bt({...r,runs:i,summary:`${Gs(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:Lg(ae(n),e),summary:`run ${Qe(ae(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function $g(e,t,n){let r=qc(ae(n.view),{...e,action:"view",wide:!0}),s=L(_t(n.checks).map(Cg),e.query),i=ae(n.comments).comments,o=L(_t(i).map(Ng).slice(-3),e.query);return Ce({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${Qe(ae(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 Cg(e){return{name:P(e,"name"),state:sn(e),bucket:P(e,"bucket"),conclusion:P(e,"conclusion"),workflow:P(e,"workflow"),link:P(e,"link")}}function Ng(e){return{author:Kc(e.author),body:rr(e,"body",qs,!1),created:P(e,"createdAt")}}function Bg(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
131
133
  `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
132
134
  `:`0 runs \u2014 try: rsp gh run list --limit 20
133
- `}function Nc(e,t){let n={number:Ye(e,"number"),title:P(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=P(e,"baseRefName"),n.head=P(e,"headRefName")),n}function Ac(e,t){let n={number:Ye(e,"number"),title:P(e,"title"),state:nn(e),labels:jc(e.labels)};return t&&Object.assign(n,Mc(e)),n}function Tg(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:P(e,"name"),status:nn(e),conclusion:P(e,"conclusion")};return t&&(n.event=P(e,"event"),n.branch=P(e,"headBranch"),n.workflow=P(e,"workflowName"),n.created=P(e,"createdAt")),n}function vg(e,t){let n=Lc(e,t.wide),r=_t(e.jobs).map(s=>({name:P(s,"name"),status:nn(s),conclusion:P(s,"conclusion"),log:nr(s,"log",hg,t.full)}));return n.jobs=r,n}function nr(e,t,n,r){let s=P(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 Og(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(P(e,"state")||P(e,"status")).toLowerCase()}function Mc(e){return{author:Uc(e.author),labels:jc(e.labels),url:P(e,"url"),updated:P(e,"updatedAt")}}function jc(e){return Array.isArray(e)?e.map(t=>Rt(t)?P(t,"name"):String(t)).filter(Boolean):[]}function Uc(e){return Rt(e)?P(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 P(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 pg,gg,js,hg,Gs=R(()=>{"use strict";ee();ze();er();pg={"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"]},gg={"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,hg=160});var qs={};C(qs,{renderTestContract:()=>Gc,runTestWrapper:()=>Ng});import{spawn as Dg}from"node:child_process";async function Ng(e,t){let n=Pe(e),r=await jg(n.argv);return await Gc(e,r,t)}async function Gc(e,t,n){let r=Pe(e),i=Fc(r.argv)==="vitest"?Ug(t.stdout):Gg(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 ${Jg(i.durationSeconds)}`,c=A(i.failures,r.query);if(n.level==="terse")return await Bg(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let g of c){let m=await Fg(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 Bg(e,t,n,r,s,i,o){let a=Ag(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 Ag(e){let t=[],n=$g;for(let r of e.slice(0,Cg)){let s=Lg(r.excerpt,Math.min(Ig,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function Lg(e,t){if(t<=0)return"";let n=e.split(`
135
+ `}function Gc(e,t){let n={number:Qe(e,"number"),title:P(e,"title"),state:sn(e),draft:!!e.isDraft};return t&&Object.assign(n,Wc(e)),n}function qc(e,t){let n=Gc(e,t.wide);return n.body=rr(e,"body",qs,t.full),t.wide&&(n.base=P(e,"baseRefName"),n.head=P(e,"headRefName")),n}function Jc(e,t){let n={number:Qe(e,"number"),title:P(e,"title"),state:sn(e),labels:Vc(e.labels)};return t&&Object.assign(n,Wc(e)),n}function Ag(e,t){let n=Jc(e,t.wide);return n.body=rr(e,"body",qs,t.full),n}function Hc(e,t){let n={id:Qe(e,"databaseId"),name:P(e,"name"),status:sn(e),conclusion:P(e,"conclusion")};return t&&(n.event=P(e,"event"),n.branch=P(e,"headBranch"),n.workflow=P(e,"workflowName"),n.created=P(e,"createdAt")),n}function Lg(e,t){let n=Hc(e,t.wide),r=_t(e.jobs).map(s=>({name:P(s,"name"),status:sn(s),conclusion:P(s,"conclusion"),log:rr(s,"log",Tg,t.full)}));return n.jobs=r,n}function rr(e,t,n,r){let s=P(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 Mg(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 jg(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 Mc(e,t){return e.every(n=>n.state===t)?t:"returned"}function Gs(e,t,n){return n?`${e}/${t}`:String(e)}function bt(e,t,n){return t.query?Ce(e,n):e}function sn(e){return(P(e,"state")||P(e,"status")).toLowerCase()}function Wc(e){return{author:Kc(e.author),labels:Vc(e.labels),url:P(e,"url"),updated:P(e,"updatedAt")}}function Vc(e){return Array.isArray(e)?e.map(t=>Rt(t)?P(t,"name"):String(t)).filter(Boolean):[]}function Kc(e){return Rt(e)?P(e,"login"):""}function nr(e){return e.trim()?JSON.parse(e):null}function _t(e){return Array.isArray(e)?e.filter(Rt):[]}function ae(e){return Rt(e)?e:{}}function P(e,t){let n=e[t];return typeof n=="string"?n:""}function Qe(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 kg,xg,qs,Tg,Hs=S(()=>{"use strict";te();Ye();tr();kg={"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"]},xg={"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"]},qs=160,Tg=160});var Vs={};C(Vs,{renderTestContract:()=>zc,runTestWrapper:()=>Jg});import{spawn as Ug}from"node:child_process";async function Jg(e,t){let n=$e(e),r=await zg(n.argv);return await zc(e,r,t)}async function zc(e,t,n){let r=$e(e),i=Yc(r.argv)==="vitest"?Yg(t.stdout):Qg(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 ${eh(i.durationSeconds)}`,c=L(i.failures,r.query);if(n.level==="terse")return await Hg(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,d=0;for(let g of c){let m=await Xg(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?Ce(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 Hg(e,t,n,r,s,i,o){let a=Wg(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?Ce(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 ${X(p)}`;return{stdout:Buffer.from(`${l}
136
+ ${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 Wg(e){let t=[],n=Gg;for(let r of e.slice(0,qg)){let s=Vg(r.excerpt,Math.min(Fg,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function Vg(e,t){if(t<=0)return"";let n=e.split(`
135
137
  `),r=n.length<=2?e:`${n[0]}
136
138
  \u2026
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 Mg(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 jg(e){let t=Mg(e),n=Dg(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 Ug(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=Hg(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:qg(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 Gg(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 Fg(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 qg(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
141
- `):""}function Jg(e){return`${Number(e.toFixed(1))}s`}function Hg(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,Ig,$g,Cg,Js=R(()=>{"use strict";ee();ze();er();Fs=320,Ig=160,$g=Fs,Cg=3});var Vs={};C(Vs,{parseCatCommand:()=>Ws,renderCatContract:()=>Zg,runCatWrapper:()=>Xg});import{isUtf8 as Wg}from"node:buffer";import{readFile as Vg}from"node:fs/promises";import{extname as Kg}from"node:path";async function Xg(e,t){let n=Ws(e),r=await Vg(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=Ws(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 Ws(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],Hs);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=Vc(u,Hs);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=nh(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>Wc(r.heavyByteThreshold,Jc)||i.truncated;if(!Hc(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=Hc(t.file)?eh(e,t.file,n,s,r.level,i):th(e,t.file,n,s,i),c=`${T(a)}
142
- `;if(!o&&Buffer.byteLength(c)<=Wc(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)}
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 eh(e,t,n,r,s,i){let o=rr(r),a=s==="terse"?Yg:zg,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:rh(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function th(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 nh(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
144
- `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??Hs,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
139
+ ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function Yc(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 Kg(e){if(Yc(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 zg(e){let t=Kg(e),n=Ug(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 Yg(e){let t=Qc(e);if(!Be(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Ae(t.numTotalTests),i=Ae(t.numFailedTests),o=th(Ae(t.startTime),Ae(t.endTime));for(let a of n){if(!Be(a))continue;let c=ce(a.name)||ce(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Be(l)&&l.status==="failed"&&r.push({suite:c,name:ce(l.fullName)||ce(l.title)||ce(l.name),excerpt:Zg(l.failureMessages)||ce(l.failureMessage)})}return s||=n.reduce((a,c)=>!Be(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=r.length,o||=n.reduce((a,c)=>Be(c)?a+Ae(c.perfStats&&Be(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:n.length||1,durationSeconds:o,failures:r}}function Qg(e){let t=e.split(`
140
+ `).filter(Boolean).map(c=>Qc(c)).filter(Be);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+=Ae(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Ae(c.failed),o+=Ae(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:ce(c.name).split("::").slice(0,-1).join("::"),name:ce(c.name),excerpt:ce(c.stdout)});continue}if(c.reason==="compiler-message"&&Be(c.message)){let u=ce(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(`
141
+ `)}),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 Xg(e,t,n){let r=Buffer.from(e);if(r.length<=Ws)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,Ws).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(i);return{text:`${i}
142
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 ${X(s)}`,handle:s,bytesElided:r.length}}function Qc(e){try{return JSON.parse(e)}catch{return null}}function Zg(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
143
+ `):""}function eh(e){return`${Number(e.toFixed(1))}s`}function th(e,t){return e>0&&t>e?(t-e)/1e3:0}function Ae(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function ce(e){return typeof e=="string"?e:""}function Be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ws,Fg,Gg,qg,Ks=S(()=>{"use strict";te();Ye();tr();Ws=320,Fg=160,Gg=Ws,qg=3});var Qs={};C(Qs,{parseCatCommand:()=>Ys,renderCatContract:()=>uh,runCatWrapper:()=>ch});import{isUtf8 as nh}from"node:buffer";import{readFile as rh}from"node:fs/promises";import{extname as sh}from"node:path";async function ch(e,t){let n=Ys(e),r=await rh(n.file);return ru(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await nu(e,n,r,t)}async function uh(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=Ys(e),s=Buffer.from(t.stdout,"utf8");return ru(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await nu(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function Ys(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=tu(t[++o],zs);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=tu(u,zs);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 nu(e,t,n,r){let s=n.toString("utf8"),i=fh(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>eu(r.heavyByteThreshold,Xc)||i.truncated;if(!Zc(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=Zc(t.file)?lh(e,t.file,n,s,r.level,i):dh(e,t.file,n,s,i),c=`${T(a)}
144
+ `;if(!o&&Buffer.byteLength(c)<=eu(r.heavyByteThreshold,Xc))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 ${X(u)}
145
+ `;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function lh(e,t,n,r,s,i){let o=sr(r),a=s==="terse"?oh:ih,c=sr(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:mh(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function dh(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:sr(r).length,content:sr(s.text),truncated:s.truncated}}function fh(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
146
+ `),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??zs,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
145
147
  `)}${r&&o.length>0?`
146
- `:""}`,truncated:o.length<s.length}}function rh(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&&!sh(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 Hc(e){return Qg.has(Kg(e).toLowerCase())}function sh(e){return["for","if","switch","while"].includes(e)}function Wc(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,Hs,zg,Yg,Qg,Ks=R(()=>{"use strict";ee();ze();Jc=8*1024,Hs=10,zg=8,Yg=2,Qg=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var sr={};C(sr,{parseExecCommandLine:()=>Xc,renderExecContract:()=>Qc,runExecWrapper:()=>lh});import{isUtf8 as ih}from"node:buffer";import{spawn as oh}from"node:child_process";async function lh(e,t){let n=Xc(e),r=await dh(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=fh(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=gh(n.heavyByteThreshold,ah);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(mh(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 dh(e){let t=oh(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 fh(e){return ih(e)?{kind:"text",text:ht(e.toString("utf8"))}:{kind:"bytes"}}function mh(e,t,n,r){let i=Math.max(1,Math.floor((r==="terse"?uh:ch)/2)),o=Yc(e.subarray(0,i)),a=Yc(e.subarray(Math.max(0,e.length-i))),c=ph(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(`
148
+ `:""}`,truncated:o.length<s.length}}function mh(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&&!ph(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function sr(e){let t=e.split(`
149
+ `);return t.at(-1)===""?t.slice(0,-1):t}function ru(e){return e.includes(0)||!nh(e)}function Zc(e){return ah.has(sh(e).toLowerCase())}function ph(e){return["for","if","switch","while"].includes(e)}function eu(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function tu(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var Xc,zs,ih,oh,ah,Xs=S(()=>{"use strict";te();Ye();Xc=8*1024,zs=10,ih=8,oh=2,ah=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});var ir={};C(ir,{parseExecCommandLine:()=>ou,renderExecContract:()=>iu,runExecWrapper:()=>_h});import{isUtf8 as gh}from"node:buffer";import{spawn as hh}from"node:child_process";async function _h(e,t){let n=ou(e),r=await Rh(n);return await iu(n,r,t)}async function iu(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=Sh(r);if(i.kind==="text"){let d=await Xt(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=xh(n.heavyByteThreshold,yh);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(Eh(o,r.length,l,n.level)),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r}}function ou(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 Rh(e){let t=hh(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 Sh(e){return gh(e)?{kind:"text",text:ht(e.toString("utf8"))}:{kind:"bytes"}}function Eh(e,t,n,r){let i=Math.max(1,Math.floor((r==="terse"?bh:wh)/2)),o=su(e.subarray(0,i)),a=su(e.subarray(Math.max(0,e.length-i))),c=kh(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 ${X(n)}`),`${u.join(`
148
150
  `)}
149
- `}function Yc(e){return e.toString("utf8").replace(/�$/g,"")}function ph(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 gh(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var ah,ch,uh,ir=R(()=>{"use strict";ze();Qt();ah=8*1024,ch=2*1024,uh=1024});xr();ee();import{spawn as hh}from"node:child_process";import{createHash as yh}from"node:crypto";import{appendFileSync as Zc,existsSync as rn,mkdirSync as wh,readFileSync as bh,readdirSync as _h,statSync as Rh}from"node:fs";import{tmpdir as Sh}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:kl(ot("__RED_BUILD_VERSION__",()=>"2.59.0")??"0.0.0-dev"),gitSha:ot("__RED_BUILD_GIT_SHA__",()=>"709f4da386934840ad0ed29e76a387e36cdb4bd2")??"unknown",buildTime:ot("__RED_BUILD_TIME__",()=>"2026-07-15T09:09:47-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 kl(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 Eh(e=process.argv.slice(2)){let t=Ni("rsp"),n=Mh(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(Kh(p)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Pa(),Oa));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=Ah(n.command);if(!s.enabled)return i?await Bh(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 kh(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 vh(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 Oh(s,eu(n.positional,30));return process.stdout.write(Uh(m,p,jh(n.positional))),0}if(n.command==="gains"){let m=await y();if(g=()=>m.close(),!Th(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(Gh(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}
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}
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>
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(xh(process.cwd()))return{stdout:Buffer.from(`git empty
151
+ `}function su(e){return e.toString("utf8").replace(/�$/g,"")}function kh(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function xh(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var yh,wh,bh,or=S(()=>{"use strict";Ye();Zt();yh=8*1024,wh=2*1024,bh=1024});Tr();te();import{spawn as Th}from"node:child_process";import{createHash as vh}from"node:crypto";import{appendFileSync as au,existsSync as on,mkdirSync as Oh,readFileSync as Ph,readdirSync as Dh,statSync as Ih}from"node:fs";import{tmpdir as $h}from"node:os";import{dirname as lu,join as le}from"node:path";import{fileURLToPath as du}from"node:url";function Gi(e){let t={app:e,version:Nl(ot("__RED_BUILD_VERSION__",()=>"2.60.0")??"0.0.0-dev"),gitSha:ot("__RED_BUILD_GIT_SHA__",()=>"79c5b29b46acb587c44bbb50c3385d723266945b")??"unknown",buildTime:ot("__RED_BUILD_TIME__",()=>"2026-07-15T09:28:48-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 Nl(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,"")]}}qr();async function Ch(e=process.argv.slice(2)){let t=Gi("rsp"),n=Kh(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(Hn(),ms));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(Hn(),ms));return await m()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(Zt(),gs));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(Zt(),gs));return await m()}if(n.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Da(),Pa)),p=await m(process.cwd());return process.stdout.write(sy(p)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(La(),Aa));return await m(),0}if(n.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(Wa(),Ha));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
152
+ `),2;let{renderShellInit:p}=await Promise.resolve().then(()=>(za(),Ka));return process.stdout.write(p(m)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(se(),ho)),s=r(process.cwd(),process.env,n.storeUri),i=Wh(n.command);if(!s.enabled)return i?await Hh(n.positional):(process.stdout.write(`${oi()}
153
+ `),0);if(n.command==="git"&&ni(n.positional)){let m=process.hrtime.bigint();return await q(n,await ri(),m,void 0,await Nh(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Fe(),jt));if(n.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(vc(),Tc)),p=o(process.cwd()),E=ue(n.positional,"--socket")??p.socketPath,w=r(process.cwd(),process.env,n.storeUri??ue(n.positional,"--store-uri"));return w.enabled?(await m({socketPath:E,pidPath:ue(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:p.rootDir,storeUri:w.storeUri,ttlDays:A(n.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:A(n.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:A(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:A(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:A(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:A(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:A(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:A(n.positional,"--idle-ms")??w.idleMs,residentVersion:ue(n.positional,"--resident-version")??t.version,registryPath:ue(n.positional,"--registry")??p.registryPath}),0):(process.stdout.write(`${oi()}
154
+ `),0)}if(n.command==="warm-resident"){let m=o(process.cwd()),p=ue(n.positional,"--socket")??m.socketPath,E=ue(n.positional,"--wake-lock")??m.wakeLockPath,w=r(process.cwd(),process.env,n.storeUri??ue(n.positional,"--store-uri"));if(!w.enabled)return 0;let{warmResidentServer:v}=await Promise.resolve().then(()=>(Fe(),jt));return await v({...m,socketPath:p,wakeLockPath:E},{storeUri:w.storeUri,ttlDays:A(n.positional,"--ttl-days")??w.ttlDays,ephemeralTtlHours:A(n.positional,"--ephemeral-ttl-hours")??w.ephemeralTtlHours,byteBudget:A(n.positional,"--byte-budget")??w.byteBudget,telemetryTtlDays:A(n.positional,"--telemetry-ttl-days")??w.telemetryTtlDays,telemetryByteBudget:A(n.positional,"--telemetry-byte-budget")??w.telemetryByteBudget,telemetryDrainIntervalMs:A(n.positional,"--telemetry-drain-interval-ms")??w.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:A(n.positional,"--telemetry-drain-timeout-ms")??w.telemetryDrainTimeoutMs,idleMs:A(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(()=>(Ms(),Ls));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(()=>(Fe(),jt)),E=n.command==="sweep"?await p(u):await m(u);return process.stdout.write(`${T(E)}
155
+ `),0}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!on(du(s.storeUri)))return i?await Lh(n,s,u.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
156
+ `),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(()=>(Je(),Jt));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 Mh(s,cu(n.positional,30));return process.stdout.write(Yh(m,p,zh(n.positional))),0}if(n.command==="gains"){let m=await y();if(g=()=>m.close(),!Ah(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
157
+ `),1;let p=await m.telemetryGains(cu(n.positional,28));return process.stdout.write(Qh(p)),0}if(n.command==="git"){if(Le(d()),ni(n.positional)){let v=process.hrtime.bigint();return await q(n,await ri(),v,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(Ye(),Us)),p=new Xe(()=>l(!1));g=()=>p.close();let E=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p,heavyGitByteThreshold:s.heavyGitByteThreshold});return await q(n,w,E,p,u.rootDir)}if(n.command==="gh"){Le(d());let{runGhWrapper:m}=await Promise.resolve().then(()=>(Hs(),Js)),p=new Xe(()=>l(!1));g=()=>p.close();let E=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p});return await q(n,w,E,p,u.rootDir)}if(n.command==="vitest"||n.command==="cargo"){Le(d());let{runTestWrapper:m}=await Promise.resolve().then(()=>(Ks(),Vs)),p=new Xe(()=>l(!1));g=()=>p.close();let E=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p});return await q(n,w,E,p,u.rootDir)}if(n.command==="cat"){Le(d());let{runCatWrapper:m}=await Promise.resolve().then(()=>(Xs(),Qs)),p=new Xe(()=>l(!1));g=()=>p.close();let E=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p,heavyByteThreshold:s.heavyGitByteThreshold});return await q(n,w,E,p,u.rootDir)}if(n.command==="exec"){Le(d());let{runExecWrapper:m}=await Promise.resolve().then(()=>(or(),ir)),p=new Xe(()=>l(!1));g=()=>p.close();let E=process.hrtime.bigint(),w=await m(n.positional,{level:n.level,store:p,heavyByteThreshold:s.heavyGitByteThreshold});return await q(n,w,E,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}
158
+ `;return process.stdout.write(w),await Zs(u.rootDir,n.handle,!1,Buffer.byteLength(w,"utf8")),1}let E=`expired unknown \u2014 re-run: ${n.handle}
159
+ `;return process.stdout.write(E),await Zs(u.rootDir,n.handle,!1,Buffer.byteLength(E,"utf8")),1}return process.stdout.write(`error: usage rsp show el:<id>
160
+ `),2}catch(m){if(i)return await ii("wrapper failed",n.positional,m,u.rootDir);throw m}finally{await g?.()}}function ue(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function A(e,t){let n=ue(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function ni(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ri(){if(Bh(process.cwd()))return{stdout:Buffer.from(`git empty
159
161
  `),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
160
162
  `),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
161
- `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function kh(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Ue(),Lt));return t(e).rootDir}catch{return e}}function xh(e){try{return!rn(`${e}/.git`)||rn(`${e}/.git/index`)?!1:_h(e).every(t=>t===".git")}catch{return!1}}function Th(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 vh(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 Oh(e,t){let n={stats:Vh(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(),Wt)),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(Ch(s,e,t,o,r.lastResponseMetrics())),i&&Ph(s,i)):Nh(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=Rh(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!$h(n,Date.now()-s))return;let i=Dh(e),o=Ih(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");hh(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 Dh(e){let t=e;for(;;){if(rn(ue(t,".git")))return t;let n=nu(t);if(n===t)return e;t=n}}function Ih(e){let t=yh("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(Sh(),`red-skills-${r}`,t)}function $h(e,t){try{let n=bh(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 Ch(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(),Wt));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 Nh(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}
163
+ `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}async function Nh(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Fe(),jt));return t(e).rootDir}catch{return e}}function Bh(e){try{return!on(`${e}/.git`)||on(`${e}/.git/index`)?!1:Dh(e).every(t=>t===".git")}catch{return!1}}function Ah(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var Xe=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}},si=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function Lh(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new si,i=process.hrtime.bigint();try{if(e.command==="git"){if(ni(e.positional))return await q(e,await ri(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(Ye(),Us)),a=await o(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await q(e,a,i,s,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(Hs(),Js)),a=await o(e.positional,{level:e.level,store:s});return await q(e,a,i,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(Ks(),Vs)),a=await o(e.positional,{level:e.level,store:s});return await q(e,a,i,s,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(Xs(),Qs)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await q(e,a,i,s,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(or(),ir)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await q(e,a,i,s)}}catch(o){return await ii("wrapper failed",e.positional,o,n)}finally{await s.close()}return await ii("wrapper failed",e.positional,r,n)}async function Mh(e,t){let n={stats:ry(e.telemetryByteBudget),telemetry:ci(t)};if(!e.storeUri.startsWith("file://"))return n;let r=du(e.storeUri);if(!on(r))return n;if(!r.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(Je(),Jt)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:ci(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(Je(),Jt));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(De(),Kt)),a=await mn(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}async function q(e,t,n,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?(Le(qh(s,e,t,o,r.lastResponseMetrics())),i&&jh(s,i)):Jh(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function jh(e,t){try{let n=le(e,".red","tmp","rsp-telemetry.spool.jsonl"),r=Ih(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!Gh(n,Date.now()-s))return;let i=Uh(e),o=Fh(i),a=le(o,"rsp.sock"),c=le(o,"rsp.pid"),u=le(i,".red","tmp","rsp-resident.pid.json"),l=le(i,".red","tmp","rsp.wake.lock");Th(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 Uh(e){let t=e;for(;;){if(on(le(t,".git")))return t;let n=lu(t);if(n===t)return e;t=n}}function Fh(e){let t=vh("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=le(n,"red-skills",t);if(le(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return le($h(),`red-skills-${r}`,t)}function Gh(e,t){try{let n=Ph(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 qh(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(()=>(De(),Kt));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:ar(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:ar(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 Jh(e,t,n,r){try{let s=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),o=le(e,".red","tmp","rsp-telemetry.spool.jsonl"),a=JSON.stringify({collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:ar(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:ar(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}
162
164
  ${c}
163
- `;try{Zc(o,u,{encoding:"utf8",mode:384})}catch(l){if(l.code!=="ENOENT")return;wh(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(),Wt));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(),Wt));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 Bh(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 Ah(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 Lh(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 Lh(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
+ `;try{au(o,u,{encoding:"utf8",mode:384})}catch(l){if(l.code!=="ENOENT")return;Oh(lu(o),{recursive:!0}),au(o,u,{encoding:"utf8",mode:384})}}catch{}}async function ii(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
166
+ `);let s=await fu(t);if(r){let{appendTelemetryEvent:i,RSP_ACCOUNTING_EVENTS_COLLECTION:o,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:a}=await Promise.resolve().then(()=>(De(),Kt));Le(i(r,{collection:o,event_type:"invocation",ts:new Date().toISOString(),command:ai(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:e})),Le(i(r,{collection:a,ts:new Date().toISOString(),command:ai(t),reason:e,accounting_recorded:!0}))}return s}function Le(e){e.catch(()=>{})}async function Zs(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(De(),Kt));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 Hh(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${oi()}, passing through
167
+ `),await fu(e)}function oi(){return"rsp is not enabled in this directory; run /red-setup"}function Wh(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"}async function fu(e){if(e[0]==="exec"||e[0]==="proxy")return await Vh(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)}
168
+ `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}async function Vh(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:s}=await Promise.resolve().then(()=>(Ms(),Ls));t=s(e)}else{let{parseExecCommandLine:s}=await Promise.resolve().then(()=>(or(),ir));t=s(e)}}catch(s){return process.stderr.write(`${s instanceof Error?s.message:String(s)}
167
169
  `),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)}
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 Mh(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 jh(e){return e.includes("--full")}function Uh(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: ${Fh(t.savings)}`,` dollars_saved_estimate_usd: ${qh(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:",...Jh(s),...!n&&t.savings.daily_tokens_saved.length>s.length?[` elided_days: ${t.savings.daily_tokens_saved.length-s.length}`," hint: --full"]:[]," top_commands:",...Hh(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 Gh(e){return`${T(e)}
170
- `}function Fh(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 qh(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 Jh(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function Hh(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 Vh(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 Kh(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
171
- `)}import.meta.url===`file://${process.argv[1]}`&&Eh().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
172
- `),process.exit(1)});export{Eh as main,Kh as renderSetupResult,Uh as renderStats};
170
+ `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function ar(e){return ai(e.positional)}function ai(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 Kh(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 cu(e,t){let n=ue(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 zh(e){return e.includes("--full")}function Yh(e,t=ci(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??mu();return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,"storage_classes:",...ny(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: ${Xh(t.savings)}`,` dollars_saved_estimate_usd: ${Zh(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:",...ey(s),...!n&&t.savings.daily_tokens_saved.length>s.length?[` elided_days: ${t.savings.daily_tokens_saved.length-s.length}`," hint: --full"]:[]," top_commands:",...ty(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${ti(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: ${ti(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:",...uu(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: ${ti(t.decisions.contribution_rate)}`," top_pass_reasons:",...uu(t.decisions.top_pass_reasons.slice(0,n?10:3)),"latency:",` wrapper_ms_p50: ${ei(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${ei(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: ${ei(t.latency.store_elapsed_ms_avg)}`,""].join(`
171
+ `)}function Qh(e){return`${T(e)}
172
+ `}function Xh(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 Zh(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?Nt(e.dollars_saved_estimate_usd):`${Nt(e.dollars_saved_low_usd)}-${Nt(e.dollars_saved_high_usd)} (estimate_midpoint: ${Nt(e.dollars_saved_estimate_usd)})`}function ey(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function ty(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 uu(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function ny(e){return["derivable","re-executable","ephemeral"].map(t=>` ${t}: records: ${e[t].records} bytes: ${e[t].bytes} raw_bytes: ${e[t].raw_bytes}`)}function ei(e){return e==null?"none":String(e)}function ti(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function ci(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 ry(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:mu()}}function mu(){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 sy(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
173
+ `)}import.meta.url===`file://${process.argv[1]}`&&Ch().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
174
+ `),process.exit(1)});export{Ch as main,sy as renderSetupResult,Yh as renderStats};