@reddb-io/red-skills 2.32.4 → 2.32.6

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,61 +1,63 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- import{spawn as _o}from"node:child_process";import{closeSync as No,existsSync as Io,openSync as jo,readSync as Lo}from"node:fs";import{fileURLToPath as Vn}from"node:url";import{createHash as qr}from"node:crypto";var Mn=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Kn=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function";async function Rt(e,t){return Mn?Wn(e,t):Kn?Qn(e,t):Hn(e,t)}async function Hn(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(i){return new Promise((s,o)=>{r.stdin.write(i,a=>a?o(a):s())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(i=>{r.on("exit",s=>i(s??0))})}}}function Wn(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(i){r?await r.write(i):(n.stdin.write(i),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:zn(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*zn(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 Qn(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),i=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(s){await i.write(s)},end(){try{i.close()}catch{}}},stdout:Yn(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Yn(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}import{fileURLToPath as er}from"node:url";import{dirname as tr,resolve as nr,join as Ko}from"node:path";import{existsSync as Zn}from"node:fs";import{join as Xn}from"node:path";function xt(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 i=process.env?.[r];if(typeof i=="string"&&i!=="")return i;let s=Xn(n,"bin",t);if(Zn(s))return s;throw new Error(`reddb: binary "${t}" not found.
3
+ import{spawn as oa}from"node:child_process";import{existsSync as aa}from"node:fs";import{fileURLToPath as ca}from"node:url";import{createHash as si}from"node:crypto";var or=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",ar=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function";async function It(e,t){return or?lr(e,t):ar?dr(e,t):cr(e,t)}async function cr(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(i){return new Promise((s,o)=>{r.stdin.write(i,a=>a?o(a):s())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(i=>{r.on("exit",s=>i(s??0))})}}}function lr(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(i){r?await r.write(i):(n.stdin.write(i),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:ur(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*ur(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 dr(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),i=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(s){await i.write(s)},end(){try{i.close()}catch{}}},stdout:fr(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*fr(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}import{fileURLToPath as yr}from"node:url";import{dirname as hr,resolve as gr,join as Ra}from"node:path";import{existsSync as pr}from"node:fs";import{join as mr}from"node:path";function Nt(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 i=process.env?.[r];if(typeof i=="string"&&i!=="")return i;let s=mr(n,"bin",t);if(pr(s))return s;throw new Error(`reddb: binary "${t}" not found.
4
4
  expected at: ${s}
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 rr=tr(er(import.meta.url)),ir=nr(rr,"..");function sr(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Ot(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:xt({name:sr(),packageRoot:ir,envVar:"REDDB_BIN"})}var or=new TextEncoder,ar=new TextDecoder("utf-8"),f=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},Re=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 f("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(or.encode(i+`
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 i=0;for(let s=0;s<t.length;s++)if(t[s]===10){let o=t.subarray(i,s);this.#n(ar.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}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(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new f(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new f("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}};function Me(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:/"?cr(e):lr(e)}function cr(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(u){throw new f("UNPARSEABLE_URI",`failed to parse '${e}': ${u.message}`)}let r=n.searchParams,i=(r.get("proto")||"").toLowerCase(),s=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return s?{kind:"embedded",path:s,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=ur(i),a=n.port?Number(n.port):Fe(o),c=n.username?decodeURIComponent(n.username):void 0,l=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:s||void 0,username:c,password:l,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 lr(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=e.slice(`${t}://`.length),[r]=n.split(/[/?]/,1),[i,s]=r.split(":");if(!i)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let o=t==="reds"?"reds":t==="grpcs"?"grpcs":t==="grpc"?"grpc":"red";return{kind:o,host:i,port:s?Number(s):Fe(o),originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new f("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Fe(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 f("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function ur(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 f("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Fe(e){switch(e){case"http":return 8080;case"https":return 8443;case"red":case"reds":case"redwire":return 5050;case"grpc":return 5055;case"grpcs":return 5056;case"pg":case"postgres":case"postgresql":return 5432;default:return}}var dr=new Set(["embedded"]),le=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&dr.has(this._transport))throw new f("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:pr(r.value)}async put(t,n,r,i={}){this._guard("put");let s=fr(r);await this._client.call("cache.put",{namespace:t,key:n,value:s,...i})}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){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Tt(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Tt(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Tt(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 pr(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 F=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map($t).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Ke(i,t)} = ${mr(n)}${o}${s}`})}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 ${Ke(r,t)}`}))?.rows?.[0]?.value??null}async getMany(t,n={}){let r=[];for(let i of t)r.push(await this.get(i,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,i=await this.client.call("query",{sql:`KV DELETE ${Ke(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>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 f("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${He(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:i.length>0?o.filter(c=>String(c.key).startsWith(i)):o}}async invalidateTags(t,n={}){let r=n.collection??this.collection,i=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map($t).join(", ")}] FROM ${He(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new f("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new f("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let l of c.split(`
7
+ or check the postinstall log for a download error.`)}var wr=hr(yr(import.meta.url)),br=gr(wr,"..");function Er(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Lt(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Nt({name:Er(),packageRoot:br,envVar:"REDDB_BIN"})}var Rr=new TextEncoder,kr=new TextDecoder("utf-8"),f=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},Ae=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 f("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(Rr.encode(i+`
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 i=0;for(let s=0;s<t.length;s++)if(t[s]===10){let o=t.subarray(i,s);this.#n(kr.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}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(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new f(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new f("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}};function We(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:/"?_r(e):Sr(e)}function _r(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(u){throw new f("UNPARSEABLE_URI",`failed to parse '${e}': ${u.message}`)}let r=n.searchParams,i=(r.get("proto")||"").toLowerCase(),s=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return s?{kind:"embedded",path:s,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=xr(i),a=n.port?Number(n.port):He(o),c=n.username?decodeURIComponent(n.username):void 0,l=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:s||void 0,username:c,password:l,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 Sr(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(s){throw new f("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):He(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new f("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):He(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 f("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function xr(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 f("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function He(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 Tr=new Set(["embedded"]),de=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Tr.has(this._transport))throw new f("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:$r(r.value)}async put(t,n,r,i={}){this._guard("put");let s=Ar(r);await this._client.call("cache.put",{namespace:t,key:n,value:s,...i})}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 Ar(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Bt(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Bt(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Bt(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 $r(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 K=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Pt).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${ze(i,t)} = ${Ir(n)}${o}${s}`})}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 ${ze(r,t)}`}))?.rows?.[0]?.value??null}async getMany(t,n={}){let r=[];for(let i of t)r.push(await this.get(i,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,i=await this.client.call("query",{sql:`KV DELETE ${ze(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>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 f("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${Qe(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:i.length>0?o.filter(c=>String(c.key).startsWith(i)):o}}async invalidateTags(t,n={}){let r=n.collection??this.collection,i=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Pt).join(", ")}] FROM ${Qe(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new f("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new f("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let l of c.split(`
9
9
 
10
10
  `)){let u=l.split(`
11
- `).find(d=>d.startsWith("data: "));u&&(yield JSON.parse(u.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}};function Ke(e,t){return`${He(e)}.${yr(t)}`}function He(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new f("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function yr(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function mr(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 $t(e){return`'${String(e).replace(/'/g,"''")}'`}var ue=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${M(t)}`})}push(t,n,r={}){let i=r.priority!=null?` PRIORITY ${hr(r.priority)}`:"";return this.client.call("query",{sql:`QUEUE PUSH ${M(t)} ${gr(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${M(t)}${At(n)}`});return _t(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${M(t)}${At(n)}`});return _t(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${M(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${M(t)}`})}};function M(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new f("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function At(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new f("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function hr(e){if(!Number.isInteger(e))throw new f("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function gr(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?`'${e.replace(/'/g,"''")}'`:JSON.stringify(e)}function _t(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var de=class{constructor(t){this.db=t}async insert(t,n){Nt(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${xe(t)} DOCUMENT (body) VALUES (${jt(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new f("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new f("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=wr(n.limit),i=n.orderBy??n.order_by??"rid ASC",s=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${xe(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Nt(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new f("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new f("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,l])=>`${It(c)} = ${br(l)}`).join(", "),a=(await this.db.query(`UPDATE ${xe(t)} DOCUMENTS SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new f("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${xe(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}};function Nt(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new f("INVALID_ARGUMENT",`${t} must be an object`)}function wr(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new f("INVALID_ARGUMENT","limit must be a positive integer");return e}function xe(e){return String(e).split(".").map(It).join(".")}function It(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new f("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function jt(e){return Lt(JSON.stringify(e))}function br(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?jt(e):Lt(e)}function Lt(e){return`'${String(e).replace(/'/g,"''")}'`}var fe=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){kr(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Pt).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${L(i)} ${L(t)} = ${Er(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${L(r)} ${L(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${L(r)} ${L(t)}`})}};function Er(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${L(n)}.${L(r)})`}return Sr(e)}function kr(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 L(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 Sr(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Pt(e)}function Pt(e){return`'${String(e).replace(/'/g,"''")}'`}var pe=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){Rr(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Bt).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${K(i)}.${K(t)} = ${xr(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${K(r)}.${K(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${K(r)}.${K(t)}`})}};function Rr(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 K(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 xr(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Bt(e)}function Bt(e){return`'${String(e).replace(/'/g,"''")}'`}async function vt(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Or)}async function Dt(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${$r(t)}`)).rows??[]).some(r=>r.name===String(t))}var ye=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}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 f("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(Ct).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Ct(this.collection)}${n}`,s=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?s:s.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}};function Or(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Ct(e){return String(e).split(".").map(Tr).join(".")}function Tr(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new f("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function $r(e){return`'${String(e).replace(/'/g,"''")}'`}var Ar="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",_r="1.0",Gt="1.0.9",Ut="NESTED_TX_NOT_SUPPORTED";async function $e(e,t={}){let n=Me(e);if(vr(n),n.kind==="embedded"){let r=Cr(n,t.auth);if(r.token||r.username)throw new f("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Br(n),s=t.binary??Ot(),o=await Rt(s,i),a=new Re(o);return await a.call("version",{}),new ze(a,{transport:"embedded"})}}function qt(e){return Nr(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:jr(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Pr(e)?{$uuid:e}:e}function Nr(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new f("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 f("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new f("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function Ir(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(qt):e.map(qt)}function jr(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 Lr(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 Pr(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Oe(e){if(Array.isArray(e))return e.map(Oe);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Lr(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,i]of Object.entries(e))n[r]=Oe(i);return n}return e}function Br(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Cr(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 vr(e){if(e.kind!=="embedded")throw new f("EMBEDDED_ONLY",Ar)}var Te=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 Qe()}},We=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Qe();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 f("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 f("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 f("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Te(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){Jt(n,r)}throw n}}},ze=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=_r,this.cache=new le(t,this.transport),this.queue=new ue(t),this.queues=this.queue,this.documents=new de(this);let r=new F(t);this.kv=Object.assign((i="kv_default")=>new F(t,i),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(i="red.config")=>new fe(t,i),this.vault=(i="red.vault")=>new pe(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new f("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=Ir(n);return r==null?this.client.call("query",{sql:t}).then(Oe):this.client.call("query",{sql:t,params:r}).then(Oe)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return Dr(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 Ur(r,n.length)}tx(){return new We(this)}async transaction(t){if(this.inTransaction)throw Qe();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 Te(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){Jt(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return Dt(this,t)}list(){return vt(this)}from(t){return new ye(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 Qe(){return new f(Ut,`${Ut}: nested transactions are not supported on one connection`)}function Jt(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function Dr(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new f("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Gt} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Ur(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new f("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Gt} 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 f("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var H="rsp_elisions_v1",Vt="__rsp_elision_index_v1",z=7,Q=64*1024*1024,_e=class e{constructor(t){this.opts=t}db;static async open(t){let n=new e({uri:t.uri,ttlDays:Ft(t.ttlDays,z),byteBudget:Ft(t.byteBudget,Q),now:t.now??(()=>new Date)});return n.db=await $e(n.opts.uri),n}async close(){await this.db.close()}async mint(t,n){let r=Buffer.from(t),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=Gr(r,n),c=Ae(a),l=Jr(r),u={collection:H,handle:a,...l.length===1?{original:l[0]}:{original_chunks:l.length},original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};await this.deleteChunks(a);for(let d=0;d<l.length&&l.length!==1;d++)await this.kv().put(Ye(a,d),{collection:H,handle:a,index:d,original:l[d],original_encoding:"base64"});return await this.kv().put(c,u),await this.removeTombstone(a),await this.upsertIndex({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),await this.prune(),a}async get(t){if(!Ne(t))return null;let n=await this.tombstone(t);if(n)return n;let r=me(await this.kv().get(Ae(t)));if(!Mt(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireEntry({handle:r.handle,key:Ae(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),s}let i=await this.readOriginal(r);return i?{collection:H,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}:null}async stats(){await this.prune();let n=(await this.readIndex()).records;return{records:n.length,bytes:n.reduce((r,i)=>r+i.bytes,0),oldest:n.reduce((r,i)=>r==null||i.created_at<r?i.created_at:r,null),budget:this.opts.byteBudget}}kv(){return this.db.kv(H)}async readIndex(){let t=me(await this.kv().get(Vt));return Fr(t)?t:{version:1,records:[]}}async writeIndex(t){await this.kv().put(Vt,t)}async upsertIndex(t){let r=(await this.readIndex()).records.filter(i=>i.handle!==t.handle);r.push(t),await this.writeIndex({version:1,records:r})}async prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=await this.readIndex(),i=[];for(let o of r.records)Date.parse(o.expires_at)<=t?await this.expireEntry(o,o.expires_at):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,await this.expireEntry(o,n)}await this.writeIndex({version:1,records:i})}async expireEntry(t,n){await this.deleteChunks(t.handle),await this.kv().delete(t.key),await this.kv().put(Ze(t.handle),{status:"expired",expired_at:n,command:t.command})}async tombstone(t){let n=me(await this.kv().get(Ze(t)));return Mr(n)?n:null}async removeTombstone(t){await this.kv().delete(Ze(t))}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(!t.original_chunks)return null;let n=[];for(let r=0;r<t.original_chunks;r++){let i=me(await this.kv().get(Ye(t.handle,r)));if(!Vr(i)||i.handle!==t.handle||i.index!==r)return null;n.push(Buffer.from(i.original,"base64"))}return Buffer.concat(n)}async deleteChunks(t){let n=me(await this.kv().get(Ae(t)));!Mt(n)||!n.original_chunks||await Promise.all(Array.from({length:n.original_chunks},(r,i)=>this.kv().delete(Ye(t,i))))}};function Gr(e,t){return`el:${qr("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 Ae(e){return`record:${e.slice(3)}`}function Ye(e,t){return`chunk:${e.slice(3)}:${t}`}function Ze(e){return`expired:${e.slice(3)}`}function Ne(e){return/^el:[a-f0-9]{12}$/.test(e)}function Ft(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Jr(e){let t=[];for(let r=0;r<e.length;r+=2048)t.push(e.subarray(r,r+2048).toString("base64"));return t.length>0?t:[""]}function Mt(e){return W(e)?e.collection===H&&typeof e.handle=="string"&&Ne(e.handle)&&(typeof e.original=="string"||typeof e.original_chunks=="number"&&Number.isInteger(e.original_chunks)&&e.original_chunks>0)&&e.original_encoding==="base64"&&typeof e.original_bytes=="number"&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Kr(e.loss):!1}function Vr(e){return W(e)&&e.collection===H&&typeof e.handle=="string"&&Ne(e.handle)&&typeof e.index=="number"&&Number.isInteger(e.index)&&typeof e.original=="string"&&e.original_encoding==="base64"}function Fr(e){return!W(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>W(t)&&typeof t.handle=="string"&&Ne(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string")}function Mr(e){return W(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Kr(e){return W(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function W(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function me(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}import{existsSync as Hr,readFileSync as Wr}from"node:fs";import{dirname as tt,join as nt,resolve as Kt}from"node:path";var q=8*1024;function Y(e,t,n){let r=zr(e,nt(".red","config.yaml")),i=r?tt(tt(r)):e,s=r?Wr(r,"utf8"):"",o=Ht(s,"rsp.enabled")==="true",a=et(Xe(s,"rsp.ttlDays"),z),c=et(Xe(s,"rsp.byteBudget"),Q),l=et(Yr(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??Xe(s,"rsp.heavyGitByteThreshold"),q),u=n??t.RSP_STORE_URI??`file://${nt(Kt(i),".red","red.rdb")}`;return{enabled:o,storeUri:u,ttlDays:a,byteBudget:c,heavyGitByteThreshold:l}}function zr(e,t){let n=Kt(e);for(let r=0;r<32;r++){let i=nt(n,t);if(Hr(i))return i;let s=tt(n);if(s===n)return null;n=s}return null}function Xe(e,t){let n=Ht(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Ht(e,t){let n=t.split("."),r=[];for(let i of e.split(`
12
- `)){let s=i.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let a=s.indexOf(":");if(a<0)continue;let c=s.length-s.trimStart().length,l=s.slice(0,a).trim();if(!l)continue;let u=Qr(s.slice(a+1));for(;r.length>0&&r[r.length-1].indent>=c;)r.pop();if(r.push({indent:c,key:l}),u!==""&&r.map(d=>d.key).join(".")===n.join("."))return u}}function Qr(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function et(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Yr(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}import{spawn as zi}from"node:child_process";var Zr="null",je={comma:",",tab:" ",pipe:"|"},_=je.comma;function Xt(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/[\u0000-\u001F]/g,t=>`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`)}function en(e){let t="",n=0;for(;n<e.length;){if(e[n]==="\\"){if(n+1>=e.length)throw new SyntaxError("Invalid escape sequence: backslash at end of string");let r=e[n+1];if(r==="n"){t+=`
13
- `,n+=2;continue}if(r==="t"){t+=" ",n+=2;continue}if(r==="r"){t+="\r",n+=2;continue}if(r==="\\"){t+="\\",n+=2;continue}if(r==='"'){t+='"',n+=2;continue}if(r==="u"){if(n+6>e.length)throw new SyntaxError(`Invalid escape sequence: truncated \\u escape at "${e.slice(n,n+6)}"`);let i=e.slice(n+2,n+6);if(!/^[0-9a-f]{4}$/i.test(i))throw new SyntaxError(`Invalid escape sequence: \\u must be followed by 4 hex digits, got "${i}"`);let s=Number.parseInt(i,16);if(s>=55296&&s<=57343)throw new SyntaxError(`Invalid escape sequence: \\u${i} is a lone surrogate; supplementary code points MUST appear as literal UTF-8`);t+=String.fromCodePoint(s),n+=6;continue}throw new SyntaxError(`Invalid escape sequence: \\${r}`)}t+=e[n],n++}return t}function Ce(e,t){let n=t+1;for(;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==='"')return n;n++}return-1}function st(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}var x=class extends SyntaxError{constructor(e,t){let n=t?.line!==void 0?`Line ${t.line}: `:"";super(n+e,t?.cause!==void 0?{cause:t.cause}:void 0),this.name="ToonDecodeError",this.line=t?.line,this.source=t?.source}};function R(e,t){try{return t()}catch(n){throw n instanceof x?n:n instanceof Error?new x(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}var Xr=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;function tn(e){return e==="true"||e==="false"||e==="null"}function ei(e){if(!e||!Xr.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function Le(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let m=Ce(r,0);if(m===-1||!r.slice(m+1).startsWith("["))return;let b=e.length-r.length+m+1;i=e.indexOf("[",b)}else i=e.indexOf("[");if(i===-1)return;let s=e.indexOf("]",i);if(s===-1)return;let o=s+1,a=o,c=e.indexOf("{",s);if(c!==-1&&c<e.indexOf(":",s)){let m=e.slice(s+1,c);if(m!==""){if(n){let U=m.trim();throw new SyntaxError(U===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${U}" between bracket and fields segment`)}return}let b=e.indexOf("}",c);b!==-1&&(a=b+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let l=Math.max(s+1,a),u=e.slice(l,o);if(u!==""){if(n){let m=u.trim();throw new SyntaxError(m===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${m}" between bracket segment and colon`)}return}let d;if(i>0){let m=e.slice(0,i).trim();d=m.startsWith('"')?rt(m):m}let p=e.slice(o+1).trim(),g=e.slice(i+1,s),h;try{h=ni(g,t)}catch(m){if(n)throw m;return}let{length:T,delimiter:S}=h,ce;if(c!==-1&&c<o){let m=e.indexOf("}",c);if(m!==-1&&m<o){let b=e.slice(c+1,m),U=ii(b,S);if(U!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Wt(S)}" but fields segment contains unquoted "${Wt(U)}"`);return}ce=ot(b,S).map(Fn=>rt(Fn.trim()))}}return{header:{key:d,length:T,delimiter:S,fields:ce},inlineValues:p||void 0}}var ti=/^(?:0|[1-9]\d*)$/;function ni(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=je.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=je.pipe,n=n.slice(0,-1)),!ti.test(n))throw new SyntaxError(`Invalid array length: "${e}" (expected non-negative integer with no leading zeros)`);return{length:Number.parseInt(n,10),delimiter:r}}var ri=[","," ","|"];function ii(e,t){for(let n of ri)if(n!==t&&st(e,n)!==-1)return n}function Wt(e){return e===" "?"\\t":e}function ot(e,t){let n=[],r="",i=!1,s=0;for(;s<e.length;){let o=e[s];if(o==="\\"&&s+1<e.length&&i){r+=o+e[s+1],s+=2;continue}if(o==='"'){i=!i,r+=o,s++;continue}if(o===t&&!i){n.push(r.trim()),r="",s++;continue}r+=o,s++}return(r||n.length>0)&&n.push(r.trim()),n}function nn(e){return e.map(t=>ve(t))}function ve(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return rt(t);if(tn(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(ei(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function rt(e){let t=e.trim();if(t.startsWith('"')){let n=Ce(t,0);if(n===-1)throw new SyntaxError("Unterminated string: missing closing quote");if(n!==t.length-1)throw new SyntaxError("Unexpected characters after closing quote");return en(t.slice(1,n))}return t}function si(e,t){let n=t;for(;n<e.length&&e[n]!==":";)n++;if(n>=e.length||e[n]!==":")throw new SyntaxError("Missing colon after key");let r=e.slice(t,n).trim();return n++,{key:r,end:n}}function oi(e,t){let n=Ce(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=en(e.slice(t+1,n)),i=n+1;if(i>=e.length||e[i]!==":")throw new SyntaxError("Missing colon after key");return i++,{key:r,end:i}}function ai(e,t){let n=e[t]==='"';return{...n?oi(e,t):si(e,t),isQuoted:n}}function rn(e){return e.trim().startsWith("[")&&st(e,":")!==-1}function ci(e){return st(e,":")!==-1}function li(){return{lineNumber:0,blankLines:[]}}function ui(e,t,n,r){t.lineNumber++;let i=t.lineNumber,s=0;for(;s<e.length&&e[s]===" ";)s++;let o=e.slice(s);if(!o.trim()){let c=zt(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=zt(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new x("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new x(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*di(e,t,n,r){for(let i of e){let s=ui(i,r,t,n);s!==void 0&&(yield s)}}function zt(e,t){return Math.floor(e/t)}function he(e,t,n,r,i){if(r.strict&&e!==t)throw new x(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function fi(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new x(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function pi(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&yi(e.content,n.delimiter))throw new x(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function sn(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new x(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function yi(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}var mi=class{constructor(e,t){this.buffer=[],this.done=!1,this.generator=e,this.scanState=t}getBlankLines(){return this.scanState.blankLines}async peek(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=await this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}async next(){let e=await this.peek();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}async advance(){await this.next()}current(){return this.lastLine}async atEnd(){return await this.peek()===void 0}peekSync(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}nextSync(){let e=this.peekSync();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}advanceSync(){this.nextSync()}atEndSync(){return this.peekSync()===void 0}};function*hi(e,t){if(t?.expandPaths!==void 0)throw new Error("expandPaths is not supported in streaming decode");let n={indent:t?.indent??2,strict:t?.strict??!0},r=li(),i=new mi(di(e,n.indent,n.strict,r),r),s=i.peekSync();if(!s){yield{type:"startObject"},yield{type:"endObject"};return}if(s.content.trim()==="[]"){i.advanceSync(),yield{type:"startArray",length:0},yield{type:"endArray"};return}if(rn(s.content)){let a=R(s,()=>Le(s.content,_,n.strict));if(a){i.advanceSync(),yield*Pe(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!Yt(s)){yield{type:"primitive",value:R(s,()=>ve(s.content.trim()))};return}if(!Yt(s)&&i.peekSync()?.depth===0)throw new x("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*Z(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*Z(a,i,0,n,o)}yield{type:"endObject"}}function Qt(e,t,n){if(n){if(n.has(e))throw new x(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Z(e,t,n,r,i){let s=e.content,o=R(e,()=>Le(s,_,r.strict));if(o&&o.header.key!==void 0){Qt(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*Pe(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=R(e,()=>ai(s,0)),l=s.indexOf(":",a.length),u=l>=0?s.slice(l+1).trim():"";if(Qt(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!u){let d=t.peekSync();if(d&&d.depth>n){yield{type:"startObject"},yield*gi(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(u==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:R(e,()=>ve(u))}}function*gi(e,t,n){let r,i=n.strict?new Set:void 0;for(;!e.atEndSync();){let s=e.peekSync();if(!s||s.depth<t)break;if(r===void 0&&s.depth>=t&&(r=s.depth),s.depth===r)e.advanceSync(),yield*Z(s,e,r,n,i);else break}}function*Pe(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*wi(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*bi(e,n,r,i,s),yield{type:"endArray"};return}yield*Ei(e,n,r,i,s),yield{type:"endArray"}}function*wi(e,t,n,r){if(!t.trim()){he(0,e.length,"inline array items",n,r);return}let i=R(r,()=>ot(t,e.delimiter)),s=R(r,()=>nn(i));he(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*bi(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;if(u.depth===s){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,t.advanceSync();let d=R(u,()=>ot(u.content,e.delimiter));he(d.length,e.fields.length,"tabular row values",r,u);let p=R(u,()=>nn(d));yield*Si(e.fields,p),o++}else break}he(o,e.length,"tabular rows",r,l),r.strict&&a!==void 0&&c!==void 0&&sn(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&pi(t.peekSync(),s,e)}function*Ei(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;let d=u.content.startsWith("- ")||u.content==="-";if(u.depth===s&&d){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,yield*ki(t,s,r);let p=t.current();p&&(c=p.lineNumber,l=p),o++}else break}he(o,e.length,"list array items",r,l),r.strict&&a!==void 0&&c!==void 0&&sn(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&fi(t.peekSync(),s,e.length)}function*ki(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new x('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(rn(i)){let a=R(s,()=>Le(i,_,n.strict));if(a){yield*Pe(a.header,a.inlineValues,e,t,n,s);return}}let o=R(s,()=>Le(i,_,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*Pe(a,o.inlineValues,e,t+1,n,s);let l=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<l)break;if(u.depth===l&&!u.content.startsWith("- "))e.advanceSync(),yield*Z(u,e,l,n,c);else break}yield{type:"endObject"};return}if(ci(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Z(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<c)break;if(l.depth===c&&!l.content.startsWith("- "))e.advanceSync(),yield*Z(l,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:R(s,()=>ve(i))}}function Yt(e){let t=e.content;if(t.startsWith('"')){let n=Ce(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*Si(e,t){yield{type:"startObject"};for(let n=0;n<e.length;n++)yield{type:"key",key:e[n]},yield{type:"primitive",value:t[n]};yield{type:"endObject"}}function j(e){if(e===null)return null;if(typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"){let t=e.toJSON();if(t!==e)return j(t)}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e=="bigint")return e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(j);if(e instanceof Set)return Array.from(e).map(j);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),j(n)]));if(Ri(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=j(e[n]));return t}return null}function G(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function P(e){return Array.isArray(e)}function w(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ge(e){return Object.keys(e).length===0}function Ri(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function we(e){return e.length===0||e.every(t=>G(t))}function xi(e){return e.length===0||e.every(t=>P(t))}function on(e){return e.length===0||e.every(t=>w(t))}var Oi=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,Ti=/^0\d+$/;function $i(e){return/^[A-Z_][\w.]*$/i.test(e)}function an(e){return/^[A-Z_]\w*$/i.test(e)}function Ai(e,t=_){return!(!e||e!==e.trim()||tn(e)||_i(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function _i(e){return Oi.test(e)||Ti.test(e)}var cn=Symbol("quotedKey");function Ie(e,t){if(Array.isArray(e))return e.map(n=>Ie(n,t));if(w(e)){let n={},r=e[cn];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(l=>an(l))){Ni(n,c,Ie(s,t),t);continue}}let a=Ie(s,t);if(i in n){let c=n[i];if(ct(c,a))at(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof c} with ${typeof a}`);n[i]=a}}else n[i]=a}return n}return e}function Ni(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],l=i[c];if(l===void 0){let u={};i[c]=u,i=u}else if(w(l))i=l;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof l}`);let u={};i[c]=u,i=u}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(ct(o,n))at(o,n,r);else{if(r)throw new TypeError(`Path expansion conflict at key "${s}": cannot merge ${typeof o} with ${typeof n}`);i[s]=n}}function at(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(ct(s,i))at(s,i,n);else{if(n)throw new TypeError(`Path expansion conflict at key "${r}": cannot merge ${typeof s} with ${typeof i}`);e[r]=i}}}function ct(e,t){return w(e)&&w(t)}function Ii(e){let t={stack:[],root:void 0};for(let n of e)ji(t,n);return Li(t)}function ji(e,t){let{stack:n}=e;switch(t.type){case"startObject":{let r={},i=new Set;if(n.length===0)n.push({type:"object",obj:r,quotedKeys:i});else{let s=n[n.length-1];if(s.type==="object"){if(s.currentKey===void 0)throw new Error("Object startObject event without preceding key");s.obj[s.currentKey]=r,s.currentKey=void 0}else s.type==="array"&&s.arr.push(r);n.push({type:"object",obj:r,quotedKeys:i})}break}case"endObject":{if(n.length===0)throw new Error("Unexpected endObject event");let r=n.pop();if(r.type!=="object")throw new Error("Mismatched endObject event");r.quotedKeys.size>0&&Object.defineProperty(r.obj,cn,{value:r.quotedKeys,enumerable:!1,writable:!1,configurable:!1}),n.length===0&&(e.root=r.obj);break}case"startArray":{let r=[];if(n.length===0)n.push({type:"array",arr:r});else{let i=n[n.length-1];if(i.type==="object"){if(i.currentKey===void 0)throw new Error("Array startArray event without preceding key");i.obj[i.currentKey]=r,i.currentKey=void 0}else i.type==="array"&&i.arr.push(r);n.push({type:"array",arr:r})}break}case"endArray":{if(n.length===0)throw new Error("Unexpected endArray event");let r=n.pop();if(r.type!=="array")throw new Error("Mismatched endArray event");n.length===0&&(e.root=r.arr);break}case"key":{if(n.length===0)throw new Error("Key event outside of object context");let r=n[n.length-1];if(r.type!=="object")throw new Error("Key event in non-object context");r.currentKey=t.key,t.wasQuoted&&r.quotedKeys.add(t.key);break}case"primitive":if(n.length===0)e.root=t.value;else{let r=n[n.length-1];if(r.type==="object"){if(r.currentKey===void 0)throw new Error("Primitive event without preceding key in object");r.obj[r.currentKey]=t.value,r.currentKey=void 0}else r.type==="array"&&r.arr.push(t.value)}break}}function Li(e){if(e.stack.length!==0)throw new Error("Incomplete event stream: stack not empty at end");if(e.root===void 0)throw new Error("No root value built from events");return e.root}function Pi(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!w(t))return;let{segments:a,tail:c,leafValue:l}=Bi(e,t,o??r.flattenDepth);if(a.length<2||!a.every(p=>an(p)))return;let u=Ci(a),d=s?`${s}.${u}`:u;if(!n.includes(u)&&!(i&&i.has(d)))return{foldedKey:u,remainder:c,leafValue:l,segmentCount:a.length}}function Bi(e,t,n){let r=[e],i=t;for(;r.length<n&&w(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!w(i)||ge(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function Ci(e){return e.join(".")}function ee(e,t){return e===null?Zr:typeof e=="boolean"||typeof e=="number"?String(e):vi(e,t)}function vi(e,t=_){return Ai(e,t)?e:`"${Xt(e)}"`}function te(e){return $i(e)?e:`"${Xt(e)}"`}function ln(e,t=_){return e.map(n=>ee(n,t)).join(t)}function J(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=te(n)),s+=`[${e}${i!==_?i:""}]`,r){let o=r.map(a=>te(a));s+=`{${o.join(i)}}`}return s+=":",s}function*Di(e,t,n){if(G(e)){let r=ee(e,t.delimiter);r!==""&&(yield r);return}P(e)?yield*it(void 0,e,n,t):w(e)&&(yield*X(e,n,t))}function*X(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,l]of Object.entries(e))yield*Ui(c,l,t,n,o,r,i,a)}function*Ui(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,l=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let d=Pi(e,t,i,r,s,o,l);if(d){let{foldedKey:p,remainder:g,leafValue:h,segmentCount:T}=d,S=te(p);if(g===void 0){if(G(h)){yield E(n,`${S}: ${ee(h,r.delimiter)}`,r.indent);return}else if(P(h)){yield*it(p,h,n,r);return}else if(w(h)&&ge(h)){yield E(n,`${S}:`,r.indent);return}}if(w(g)){yield E(n,`${S}:`,r.indent);let ce=l-T,m=o?`${o}.${p}`:p;yield*X(g,n+1,r,s,m,ce);return}}}let u=te(e);G(t)?yield E(n,`${u}: ${ee(t,r.delimiter)}`,r.indent):P(t)?yield*it(e,t,n,r):w(t)&&(yield E(n,`${u}:`,r.indent),ge(t)||(yield*X(t,n+1,r,s,c,l)))}function*it(e,t,n,r){if(t.length===0){yield E(n,e!=null?`${te(e)}: []`:"[]",r.indent);return}if(we(t)){yield E(n,De(t,r.delimiter,e),r.indent);return}if(xi(t)&&t.every(i=>we(i))){yield*qi(e,t,n,r);return}if(on(t)){let i=un(t);i?yield*Gi(e,t,i,n,r):yield*Zt(e,t,n,r);return}yield*Zt(e,t,n,r)}function*qi(e,t,n,r){yield E(n,J(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(we(i)){let s=De(i,r.delimiter);yield A(n+1,s,r.indent)}}function De(e,t,n){let r=J(e.length,{key:n,delimiter:t}),i=ln(e,t);return e.length===0?r:`${r} ${i}`}function*Gi(e,t,n,r,i){yield E(r,J(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*dn(t,n,r+1,i)}function un(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&Ji(e,n))return n}function Ji(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let r of t)if(!(r in n)||!G(n[r]))return!1}return!0}function*dn(e,t,n,r){for(let i of e)yield E(n,ln(t.map(s=>i[s]),r.delimiter),r.indent)}function*Zt(e,t,n,r){yield E(n,J(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*lt(i,n+1,r)}function*Vi(e,t,n){if(ge(e)){yield E(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(P(s)&&on(s)){let c=un(s);if(c){yield A(t,J(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*dn(s,c,t+2,n),o.length>0&&(yield*X(Object.fromEntries(o),t+1,n));return}}let a=te(i);if(G(s))yield A(t,`${a}: ${ee(s,n.delimiter)}`,n.indent);else if(P(s))if(s.length===0)yield A(t,`${a}: []`,n.indent);else if(we(s))yield A(t,`${a}${De(s,n.delimiter)}`,n.indent);else{yield A(t,`${a}${J(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*lt(c,t+2,n)}else w(s)&&(yield A(t,`${a}:`,n.indent),ge(s)||(yield*X(s,t+2,n)));o.length>0&&(yield*X(Object.fromEntries(o),t+1,n))}function*lt(e,t,n){if(G(e))yield A(t,ee(e,n.delimiter),n.indent);else if(P(e))if(we(e))yield A(t,De(e,n.delimiter),n.indent);else{yield A(t,J(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*lt(r,t+1,n)}else w(e)&&(yield*Vi(e,t,n))}function E(e,t,n){return" ".repeat(n*e)+t}function A(e,t,n){return E(e,"- "+t,n)}function Fi(e,t){let n=t("",e,[]);return n===void 0?Be(e,t,[]):Be(j(n),t,[])}function Be(e,t,n){return w(e)?Mi(e,t,n):P(e)?Ki(e,t,n):e}function Mi(e,t,n){let r={};for(let[i,s]of Object.entries(e)){let o=[...n,i],a=t(i,s,o);a!==void 0&&(r[i]=Be(j(a),t,o))}return r}function Ki(e,t,n){let r=[];for(let i=0;i<e.length;i++){let s=e[i],o=[...n,i],a=t(String(i),s,o);if(a===void 0)continue;let c=j(a);r.push(Be(c,t,o))}return r}function k(e,t){return Array.from(fn(e,t)).join(`
14
- `)}function ut(e,t){return pn(e.split(`
15
- `),t)}function fn(e,t){let n=j(e),r=Hi(t);return Di(r.replacer?Fi(n,r.replacer):n,r,0)}function pn(e,t){let n=Wi(t),r=Ii(hi(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?Ie(r,n.strict):r}function Hi(e){return{indent:e?.indent??2,delimiter:e?.delimiter??_,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function Wi(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}function B(e){let t=[],n;for(let r=0;r<e.length;r++){let i=e[r];if(i==="--query"){n=e[++r];continue}if(i.startsWith("--query=")){n=i.slice(8);continue}t.push(i)}return{argv:t,query:n?.trim()||void 0}}function yn(e,t){if(!t)return!0;let n=dt(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function O(e,t){return t?e.filter(n=>yn(n,t)):[...e]}function ne(e,t){if(!t)return e;let r=e.split(`
16
- `).filter(i=>i&&yn(i,t));return r.length>0?`${r.join(`
11
+ `).find(d=>d.startsWith("data: "));u&&(yield JSON.parse(u.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}};function ze(e,t){return`${Qe(e)}.${Or(t)}`}function Qe(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new f("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Or(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Ir(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 Pt(e){return`'${String(e).replace(/'/g,"''")}'`}var fe=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${L(t)}`})}push(t,n,r={}){let i=Br(r);return this.client.call("query",{sql:`QUEUE PUSH ${L(t)} ${Pr(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${L(t)}${Ze(n)}`});return Ye(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${L(t)}${Ze(n)}`});return Ye(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${L(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${L(t)}`})}async readWait(t,n,r={}){let i=Nr(t,n,r),s=await this.client.call("query",{sql:i});return Ye(s)}};function Nr(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new f("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=L(e),a=L(t),c=i!=null?` GROUP ${L(i)}`:"",l=s!=null?Ze(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${l} WAIT ${r}ms`}function L(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new f("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Ze(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new f("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Lr(e){if(!Number.isInteger(e))throw new f("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Br(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new f("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Lr(e.priority)}`),e.key!=null&&(t+=` KEY ${Xe(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Xe(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Pr(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Xe(e):JSON.stringify(e)}function Xe(e){return`'${String(e).replace(/'/g,"''")}'`}function Ye(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var pe=class{constructor(t){this.db=t}async insert(t,n){jt(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${$e(t)} DOCUMENT VALUES (${vr(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new f("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new f("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=jr(n.limit),i=n.orderBy??n.order_by??"rid ASC",s=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${$e(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){jt(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new f("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new f("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,l])=>`${Dt(c)} = ${Ur(l)}`).join(", "),a=(await this.db.query(`UPDATE ${$e(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new f("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${$e(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}};function jt(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new f("INVALID_ARGUMENT",`${t} must be an object`)}function jr(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new f("INVALID_ARGUMENT","limit must be a positive integer");return e}function $e(e){return String(e).split(".").map(Dt).join(".")}function Dt(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new f("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Dr(e){return vt(JSON.stringify(e))}function vr(e){return JSON.stringify(e)}function Ur(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Dr(e):vt(e)}function vt(e){return`'${String(e).replace(/'/g,"''")}'`}var me=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){qr(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Ut).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${P(i)} ${P(t)} = ${Cr(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${P(r)} ${P(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${P(r)} ${P(t)}`})}};function Cr(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${P(n)}.${P(r)})`}return Gr(e)}function qr(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 P(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 Gr(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ut(e)}function Ut(e){return`'${String(e).replace(/'/g,"''")}'`}var ye=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){Fr(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Ct).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${H(i)}.${H(t)} = ${Vr(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${H(r)}.${H(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${H(r)}.${H(t)}`})}};function Fr(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 H(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 Vr(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ct(e)}function Ct(e){return`'${String(e).replace(/'/g,"''")}'`}async function Gt(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Jr)}async function Ft(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Kr(t)}`)).rows??[]).some(r=>r.name===String(t))}var he=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}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 f("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(qt).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${qt(this.collection)}${n}`,s=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?s:s.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}};function Jr(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function qt(e){return String(e).split(".").map(Mr).join(".")}function Mr(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new f("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Kr(e){return`'${String(e).replace(/'/g,"''")}'`}var Hr="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Wr="1.0",Mt="1.0.9",Vt="NESTED_TX_NOT_SUPPORTED";async function Ne(e,t={}){let n=We(e);if(ni(n),n.kind==="embedded"){let r=ti(n,t.auth);if(r.token||r.username)throw new f("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=ei(n),s=t.binary??Lt(),o=await It(s,i),a=new Ae(o);return await a.call("version",{}),new tt(a,{transport:"embedded"})}}function Jt(e){return zr(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:Yr(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Xr(e)?{$uuid:e}:e}function zr(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new f("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 f("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new f("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function Qr(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(Jt):e.map(Jt)}function Yr(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 Zr(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 Xr(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Oe(e){if(Array.isArray(e))return e.map(Oe);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Zr(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,i]of Object.entries(e))n[r]=Oe(i);return n}return e}function ei(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function ti(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 ni(e){if(e.kind!=="embedded")throw new f("EMBEDDED_ONLY",Hr)}var Ie=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 nt()}},et=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw nt();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 f("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 f("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 f("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Ie(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){Kt(n,r)}throw n}}},tt=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Wr,this.cache=new de(t,this.transport),this.queue=new fe(t),this.queues=this.queue,this.documents=new pe(this);let r=new K(t);this.kv=Object.assign((i="kv_default")=>new K(t,i),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(i="red.config")=>new me(t,i),this.vault=(i="red.vault")=>new ye(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new f("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=Qr(n);return r==null?this.client.call("query",{sql:t}).then(Oe):this.client.call("query",{sql:t,params:r}).then(Oe)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return ri(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 ii(r,n.length)}tx(){return new et(this)}async transaction(t){if(this.inTransaction)throw nt();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 Ie(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){Kt(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return Ft(this,t)}list(){return Gt(this)}from(t){return new he(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 nt(){return new f(Vt,`${Vt}: nested transactions are not supported on one connection`)}function Kt(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function ri(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new f("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Mt} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function ii(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new f("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Mt} 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 f("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var W="rsp_elisions_v1",Ht="__rsp_elision_index_v1",Q=7,Y=64*1024*1024,Be=class e{constructor(t){this.opts=t}db;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1")throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let n=new e({uri:t.uri,ttlDays:Wt(t.ttlDays,Q),byteBudget:Wt(t.byteBudget,Y),now:t.now??(()=>new Date)});return n.db=await Ne(n.opts.uri),n}async close(){await this.db.close()}async mint(t,n){let r=Buffer.from(t),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=oi(r,n),c=Le(a),l=ai(r),u={collection:W,handle:a,...l.length===1?{original:l[0]}:{original_chunks:l.length},original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};await this.deleteChunks(a);for(let d=0;d<l.length&&l.length!==1;d++)await this.kv().put(rt(a,d),{collection:W,handle:a,index:d,original:l[d],original_encoding:"base64"});return await this.kv().put(c,u),await this.removeTombstone(a),await this.upsertIndex({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),await this.prune(),a}async get(t){if(!Pe(t))return null;let n=await this.tombstone(t);if(n)return n;let r=ge(await this.kv().get(Le(t)));if(!zt(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireEntry({handle:r.handle,key:Le(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),s}let i=await this.readOriginal(r);return i?{collection:W,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}:null}async stats(){await this.prune();let n=(await this.readIndex()).records;return{records:n.length,bytes:n.reduce((r,i)=>r+i.bytes,0),oldest:n.reduce((r,i)=>r==null||i.created_at<r?i.created_at:r,null),budget:this.opts.byteBudget}}kv(){return this.db.kv(W)}async readIndex(){let t=ge(await this.kv().get(Ht));return li(t)?t:{version:1,records:[]}}async writeIndex(t){await this.kv().put(Ht,t)}async upsertIndex(t){let r=(await this.readIndex()).records.filter(i=>i.handle!==t.handle);r.push(t),await this.writeIndex({version:1,records:r})}async prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=await this.readIndex(),i=[];for(let o of r.records)Date.parse(o.expires_at)<=t?await this.expireEntry(o,o.expires_at):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,await this.expireEntry(o,n)}await this.writeIndex({version:1,records:i})}async expireEntry(t,n){await this.deleteChunks(t.handle),await this.kv().delete(t.key),await this.kv().put(it(t.handle),{status:"expired",expired_at:n,command:t.command})}async tombstone(t){let n=ge(await this.kv().get(it(t)));return ui(n)?n:null}async removeTombstone(t){await this.kv().delete(it(t))}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(!t.original_chunks)return null;let n=[];for(let r=0;r<t.original_chunks;r++){let i=ge(await this.kv().get(rt(t.handle,r)));if(!ci(i)||i.handle!==t.handle||i.index!==r)return null;n.push(Buffer.from(i.original,"base64"))}return Buffer.concat(n)}async deleteChunks(t){let n=ge(await this.kv().get(Le(t)));!zt(n)||!n.original_chunks||await Promise.all(Array.from({length:n.original_chunks},(r,i)=>this.kv().delete(rt(t,i))))}};function oi(e,t){return`el:${si("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 Le(e){return`record:${e.slice(3)}`}function rt(e,t){return`chunk:${e.slice(3)}:${t}`}function it(e){return`expired:${e.slice(3)}`}function Pe(e){return/^el:[a-f0-9]{12}$/.test(e)}function Wt(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ai(e){let t=[];for(let r=0;r<e.length;r+=2048)t.push(e.subarray(r,r+2048).toString("base64"));return t.length>0?t:[""]}function zt(e){return z(e)?e.collection===W&&typeof e.handle=="string"&&Pe(e.handle)&&(typeof e.original=="string"||typeof e.original_chunks=="number"&&Number.isInteger(e.original_chunks)&&e.original_chunks>0)&&e.original_encoding==="base64"&&typeof e.original_bytes=="number"&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&di(e.loss):!1}function ci(e){return z(e)&&e.collection===W&&typeof e.handle=="string"&&Pe(e.handle)&&typeof e.index=="number"&&Number.isInteger(e.index)&&typeof e.original=="string"&&e.original_encoding==="base64"}function li(e){return!z(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>z(t)&&typeof t.handle=="string"&&Pe(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string")}function ui(e){return z(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function di(e){return z(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function z(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ge(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}import{existsSync as fi,readFileSync as pi}from"node:fs";import{dirname as at,join as ct,resolve as Qt}from"node:path";var F=8*1024;function Z(e,t,n){let r=mi(e,ct(".red","config.yaml")),i=r?at(at(r)):e,s=r?pi(r,"utf8"):"",o=Yt(s,"rsp.enabled")==="true",a=ot(st(s,"rsp.ttlDays"),Q),c=ot(st(s,"rsp.byteBudget"),Y),l=ot(hi(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??st(s,"rsp.heavyGitByteThreshold"),F),u=n??t.RSP_STORE_URI??`file://${ct(Qt(i),".red","red.rdb")}`;return{enabled:o,storeUri:u,ttlDays:a,byteBudget:c,heavyGitByteThreshold:l}}function mi(e,t){let n=Qt(e);for(let r=0;r<32;r++){let i=ct(n,t);if(fi(i))return i;let s=at(n);if(s===n)return null;n=s}return null}function st(e,t){let n=Yt(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Yt(e,t){let n=t.split("."),r=[];for(let i of e.split(`
12
+ `)){let s=i.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let a=s.indexOf(":");if(a<0)continue;let c=s.length-s.trimStart().length,l=s.slice(0,a).trim();if(!l)continue;let u=yi(s.slice(a+1));for(;r.length>0&&r[r.length-1].indent>=c;)r.pop();if(r.push({indent:c,key:l}),u!==""&&r.map(d=>d.key).join(".")===n.join("."))return u}}function yi(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function ot(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function hi(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}import{spawn as ms}from"node:child_process";var gi="null",De={comma:",",tab:" ",pipe:"|"},O=De.comma;function rn(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/[\u0000-\u001F]/g,t=>`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`)}function sn(e){let t="",n=0;for(;n<e.length;){if(e[n]==="\\"){if(n+1>=e.length)throw new SyntaxError("Invalid escape sequence: backslash at end of string");let r=e[n+1];if(r==="n"){t+=`
13
+ `,n+=2;continue}if(r==="t"){t+=" ",n+=2;continue}if(r==="r"){t+="\r",n+=2;continue}if(r==="\\"){t+="\\",n+=2;continue}if(r==='"'){t+='"',n+=2;continue}if(r==="u"){if(n+6>e.length)throw new SyntaxError(`Invalid escape sequence: truncated \\u escape at "${e.slice(n,n+6)}"`);let i=e.slice(n+2,n+6);if(!/^[0-9a-f]{4}$/i.test(i))throw new SyntaxError(`Invalid escape sequence: \\u must be followed by 4 hex digits, got "${i}"`);let s=Number.parseInt(i,16);if(s>=55296&&s<=57343)throw new SyntaxError(`Invalid escape sequence: \\u${i} is a lone surrogate; supplementary code points MUST appear as literal UTF-8`);t+=String.fromCodePoint(s),n+=6;continue}throw new SyntaxError(`Invalid escape sequence: \\${r}`)}t+=e[n],n++}return t}function qe(e,t){let n=t+1;for(;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==='"')return n;n++}return-1}function dt(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}var S=class extends SyntaxError{constructor(e,t){let n=t?.line!==void 0?`Line ${t.line}: `:"";super(n+e,t?.cause!==void 0?{cause:t.cause}:void 0),this.name="ToonDecodeError",this.line=t?.line,this.source=t?.source}};function _(e,t){try{return t()}catch(n){throw n instanceof S?n:n instanceof Error?new S(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}var wi=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;function on(e){return e==="true"||e==="false"||e==="null"}function bi(e){if(!e||!wi.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function ve(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let y=qe(r,0);if(y===-1||!r.slice(y+1).startsWith("["))return;let b=e.length-r.length+y+1;i=e.indexOf("[",b)}else i=e.indexOf("[");if(i===-1)return;let s=e.indexOf("]",i);if(s===-1)return;let o=s+1,a=o,c=e.indexOf("{",s);if(c!==-1&&c<e.indexOf(":",s)){let y=e.slice(s+1,c);if(y!==""){if(n){let G=y.trim();throw new SyntaxError(G===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${G}" between bracket and fields segment`)}return}let b=e.indexOf("}",c);b!==-1&&(a=b+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let l=Math.max(s+1,a),u=e.slice(l,o);if(u!==""){if(n){let y=u.trim();throw new SyntaxError(y===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${y}" between bracket segment and colon`)}return}let d;if(i>0){let y=e.slice(0,i).trim();d=y.startsWith('"')?lt(y):y}let p=e.slice(o+1).trim(),g=e.slice(i+1,s),h;try{h=Ri(g,t)}catch(y){if(n)throw y;return}let{length:T,delimiter:k}=h,ue;if(c!==-1&&c<o){let y=e.indexOf("}",c);if(y!==-1&&y<o){let b=e.slice(c+1,y),G=_i(b,k);if(G!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Zt(k)}" but fields segment contains unquoted "${Zt(G)}"`);return}ue=ft(b,k).map(sr=>lt(sr.trim()))}}return{header:{key:d,length:T,delimiter:k,fields:ue},inlineValues:p||void 0}}var Ei=/^(?:0|[1-9]\d*)$/;function Ri(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=De.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=De.pipe,n=n.slice(0,-1)),!Ei.test(n))throw new SyntaxError(`Invalid array length: "${e}" (expected non-negative integer with no leading zeros)`);return{length:Number.parseInt(n,10),delimiter:r}}var ki=[","," ","|"];function _i(e,t){for(let n of ki)if(n!==t&&dt(e,n)!==-1)return n}function Zt(e){return e===" "?"\\t":e}function ft(e,t){let n=[],r="",i=!1,s=0;for(;s<e.length;){let o=e[s];if(o==="\\"&&s+1<e.length&&i){r+=o+e[s+1],s+=2;continue}if(o==='"'){i=!i,r+=o,s++;continue}if(o===t&&!i){n.push(r.trim()),r="",s++;continue}r+=o,s++}return(r||n.length>0)&&n.push(r.trim()),n}function an(e){return e.map(t=>Ge(t))}function Ge(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return lt(t);if(on(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(bi(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function lt(e){let t=e.trim();if(t.startsWith('"')){let n=qe(t,0);if(n===-1)throw new SyntaxError("Unterminated string: missing closing quote");if(n!==t.length-1)throw new SyntaxError("Unexpected characters after closing quote");return sn(t.slice(1,n))}return t}function Si(e,t){let n=t;for(;n<e.length&&e[n]!==":";)n++;if(n>=e.length||e[n]!==":")throw new SyntaxError("Missing colon after key");let r=e.slice(t,n).trim();return n++,{key:r,end:n}}function xi(e,t){let n=qe(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=sn(e.slice(t+1,n)),i=n+1;if(i>=e.length||e[i]!==":")throw new SyntaxError("Missing colon after key");return i++,{key:r,end:i}}function Ti(e,t){let n=e[t]==='"';return{...n?xi(e,t):Si(e,t),isQuoted:n}}function cn(e){return e.trim().startsWith("[")&&dt(e,":")!==-1}function Ai(e){return dt(e,":")!==-1}function $i(){return{lineNumber:0,blankLines:[]}}function Oi(e,t,n,r){t.lineNumber++;let i=t.lineNumber,s=0;for(;s<e.length&&e[s]===" ";)s++;let o=e.slice(s);if(!o.trim()){let c=Xt(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=Xt(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new S("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new S(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*Ii(e,t,n,r){for(let i of e){let s=Oi(i,r,t,n);s!==void 0&&(yield s)}}function Xt(e,t){return Math.floor(e/t)}function we(e,t,n,r,i){if(r.strict&&e!==t)throw new S(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Ni(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new S(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function Li(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Bi(e.content,n.delimiter))throw new S(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function ln(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new S(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Bi(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}var Pi=class{constructor(e,t){this.buffer=[],this.done=!1,this.generator=e,this.scanState=t}getBlankLines(){return this.scanState.blankLines}async peek(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=await this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}async next(){let e=await this.peek();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}async advance(){await this.next()}current(){return this.lastLine}async atEnd(){return await this.peek()===void 0}peekSync(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}nextSync(){let e=this.peekSync();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}advanceSync(){this.nextSync()}atEndSync(){return this.peekSync()===void 0}};function*ji(e,t){if(t?.expandPaths!==void 0)throw new Error("expandPaths is not supported in streaming decode");let n={indent:t?.indent??2,strict:t?.strict??!0},r=$i(),i=new Pi(Ii(e,n.indent,n.strict,r),r),s=i.peekSync();if(!s){yield{type:"startObject"},yield{type:"endObject"};return}if(s.content.trim()==="[]"){i.advanceSync(),yield{type:"startArray",length:0},yield{type:"endArray"};return}if(cn(s.content)){let a=_(s,()=>ve(s.content,O,n.strict));if(a){i.advanceSync(),yield*Ue(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!tn(s)){yield{type:"primitive",value:_(s,()=>Ge(s.content.trim()))};return}if(!tn(s)&&i.peekSync()?.depth===0)throw new S("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*X(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*X(a,i,0,n,o)}yield{type:"endObject"}}function en(e,t,n){if(n){if(n.has(e))throw new S(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*X(e,t,n,r,i){let s=e.content,o=_(e,()=>ve(s,O,r.strict));if(o&&o.header.key!==void 0){en(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*Ue(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=_(e,()=>Ti(s,0)),l=s.indexOf(":",a.length),u=l>=0?s.slice(l+1).trim():"";if(en(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!u){let d=t.peekSync();if(d&&d.depth>n){yield{type:"startObject"},yield*Di(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(u==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:_(e,()=>Ge(u))}}function*Di(e,t,n){let r,i=n.strict?new Set:void 0;for(;!e.atEndSync();){let s=e.peekSync();if(!s||s.depth<t)break;if(r===void 0&&s.depth>=t&&(r=s.depth),s.depth===r)e.advanceSync(),yield*X(s,e,r,n,i);else break}}function*Ue(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*vi(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Ui(e,n,r,i,s),yield{type:"endArray"};return}yield*Ci(e,n,r,i,s),yield{type:"endArray"}}function*vi(e,t,n,r){if(!t.trim()){we(0,e.length,"inline array items",n,r);return}let i=_(r,()=>ft(t,e.delimiter)),s=_(r,()=>an(i));we(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Ui(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;if(u.depth===s){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,t.advanceSync();let d=_(u,()=>ft(u.content,e.delimiter));we(d.length,e.fields.length,"tabular row values",r,u);let p=_(u,()=>an(d));yield*Gi(e.fields,p),o++}else break}we(o,e.length,"tabular rows",r,l),r.strict&&a!==void 0&&c!==void 0&&ln(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&Li(t.peekSync(),s,e)}function*Ci(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;let d=u.content.startsWith("- ")||u.content==="-";if(u.depth===s&&d){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,yield*qi(t,s,r);let p=t.current();p&&(c=p.lineNumber,l=p),o++}else break}we(o,e.length,"list array items",r,l),r.strict&&a!==void 0&&c!==void 0&&ln(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Ni(t.peekSync(),s,e.length)}function*qi(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new S('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(cn(i)){let a=_(s,()=>ve(i,O,n.strict));if(a){yield*Ue(a.header,a.inlineValues,e,t,n,s);return}}let o=_(s,()=>ve(i,O,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*Ue(a,o.inlineValues,e,t+1,n,s);let l=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<l)break;if(u.depth===l&&!u.content.startsWith("- "))e.advanceSync(),yield*X(u,e,l,n,c);else break}yield{type:"endObject"};return}if(Ai(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*X(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<c)break;if(l.depth===c&&!l.content.startsWith("- "))e.advanceSync(),yield*X(l,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:_(s,()=>Ge(i))}}function tn(e){let t=e.content;if(t.startsWith('"')){let n=qe(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*Gi(e,t){yield{type:"startObject"};for(let n=0;n<e.length;n++)yield{type:"key",key:e[n]},yield{type:"primitive",value:t[n]};yield{type:"endObject"}}function B(e){if(e===null)return null;if(typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"){let t=e.toJSON();if(t!==e)return B(t)}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e=="bigint")return e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(B);if(e instanceof Set)return Array.from(e).map(B);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),B(n)]));if(Fi(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=B(e[n]));return t}return null}function V(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function j(e){return Array.isArray(e)}function w(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function be(e){return Object.keys(e).length===0}function Fi(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function Ee(e){return e.length===0||e.every(t=>V(t))}function Vi(e){return e.length===0||e.every(t=>j(t))}function un(e){return e.length===0||e.every(t=>w(t))}var Ji=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,Mi=/^0\d+$/;function Ki(e){return/^[A-Z_][\w.]*$/i.test(e)}function dn(e){return/^[A-Z_]\w*$/i.test(e)}function Hi(e,t=O){return!(!e||e!==e.trim()||on(e)||Wi(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function Wi(e){return Ji.test(e)||Mi.test(e)}var fn=Symbol("quotedKey");function je(e,t){if(Array.isArray(e))return e.map(n=>je(n,t));if(w(e)){let n={},r=e[fn];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(l=>dn(l))){zi(n,c,je(s,t),t);continue}}let a=je(s,t);if(i in n){let c=n[i];if(mt(c,a))pt(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof c} with ${typeof a}`);n[i]=a}}else n[i]=a}return n}return e}function zi(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],l=i[c];if(l===void 0){let u={};i[c]=u,i=u}else if(w(l))i=l;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof l}`);let u={};i[c]=u,i=u}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(mt(o,n))pt(o,n,r);else{if(r)throw new TypeError(`Path expansion conflict at key "${s}": cannot merge ${typeof o} with ${typeof n}`);i[s]=n}}function pt(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(mt(s,i))pt(s,i,n);else{if(n)throw new TypeError(`Path expansion conflict at key "${r}": cannot merge ${typeof s} with ${typeof i}`);e[r]=i}}}function mt(e,t){return w(e)&&w(t)}function Qi(e){let t={stack:[],root:void 0};for(let n of e)Yi(t,n);return Zi(t)}function Yi(e,t){let{stack:n}=e;switch(t.type){case"startObject":{let r={},i=new Set;if(n.length===0)n.push({type:"object",obj:r,quotedKeys:i});else{let s=n[n.length-1];if(s.type==="object"){if(s.currentKey===void 0)throw new Error("Object startObject event without preceding key");s.obj[s.currentKey]=r,s.currentKey=void 0}else s.type==="array"&&s.arr.push(r);n.push({type:"object",obj:r,quotedKeys:i})}break}case"endObject":{if(n.length===0)throw new Error("Unexpected endObject event");let r=n.pop();if(r.type!=="object")throw new Error("Mismatched endObject event");r.quotedKeys.size>0&&Object.defineProperty(r.obj,fn,{value:r.quotedKeys,enumerable:!1,writable:!1,configurable:!1}),n.length===0&&(e.root=r.obj);break}case"startArray":{let r=[];if(n.length===0)n.push({type:"array",arr:r});else{let i=n[n.length-1];if(i.type==="object"){if(i.currentKey===void 0)throw new Error("Array startArray event without preceding key");i.obj[i.currentKey]=r,i.currentKey=void 0}else i.type==="array"&&i.arr.push(r);n.push({type:"array",arr:r})}break}case"endArray":{if(n.length===0)throw new Error("Unexpected endArray event");let r=n.pop();if(r.type!=="array")throw new Error("Mismatched endArray event");n.length===0&&(e.root=r.arr);break}case"key":{if(n.length===0)throw new Error("Key event outside of object context");let r=n[n.length-1];if(r.type!=="object")throw new Error("Key event in non-object context");r.currentKey=t.key,t.wasQuoted&&r.quotedKeys.add(t.key);break}case"primitive":if(n.length===0)e.root=t.value;else{let r=n[n.length-1];if(r.type==="object"){if(r.currentKey===void 0)throw new Error("Primitive event without preceding key in object");r.obj[r.currentKey]=t.value,r.currentKey=void 0}else r.type==="array"&&r.arr.push(t.value)}break}}function Zi(e){if(e.stack.length!==0)throw new Error("Incomplete event stream: stack not empty at end");if(e.root===void 0)throw new Error("No root value built from events");return e.root}function Xi(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!w(t))return;let{segments:a,tail:c,leafValue:l}=es(e,t,o??r.flattenDepth);if(a.length<2||!a.every(p=>dn(p)))return;let u=ts(a),d=s?`${s}.${u}`:u;if(!n.includes(u)&&!(i&&i.has(d)))return{foldedKey:u,remainder:c,leafValue:l,segmentCount:a.length}}function es(e,t,n){let r=[e],i=t;for(;r.length<n&&w(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!w(i)||be(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function ts(e){return e.join(".")}function te(e,t){return e===null?gi:typeof e=="boolean"||typeof e=="number"?String(e):ns(e,t)}function ns(e,t=O){return Hi(e,t)?e:`"${rn(e)}"`}function ne(e){return Ki(e)?e:`"${rn(e)}"`}function pn(e,t=O){return e.map(n=>te(n,t)).join(t)}function J(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=ne(n)),s+=`[${e}${i!==O?i:""}]`,r){let o=r.map(a=>ne(a));s+=`{${o.join(i)}}`}return s+=":",s}function*rs(e,t,n){if(V(e)){let r=te(e,t.delimiter);r!==""&&(yield r);return}j(e)?yield*ut(void 0,e,n,t):w(e)&&(yield*ee(e,n,t))}function*ee(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,l]of Object.entries(e))yield*is(c,l,t,n,o,r,i,a)}function*is(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,l=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let d=Xi(e,t,i,r,s,o,l);if(d){let{foldedKey:p,remainder:g,leafValue:h,segmentCount:T}=d,k=ne(p);if(g===void 0){if(V(h)){yield E(n,`${k}: ${te(h,r.delimiter)}`,r.indent);return}else if(j(h)){yield*ut(p,h,n,r);return}else if(w(h)&&be(h)){yield E(n,`${k}:`,r.indent);return}}if(w(g)){yield E(n,`${k}:`,r.indent);let ue=l-T,y=o?`${o}.${p}`:p;yield*ee(g,n+1,r,s,y,ue);return}}}let u=ne(e);V(t)?yield E(n,`${u}: ${te(t,r.delimiter)}`,r.indent):j(t)?yield*ut(e,t,n,r):w(t)&&(yield E(n,`${u}:`,r.indent),be(t)||(yield*ee(t,n+1,r,s,c,l)))}function*ut(e,t,n,r){if(t.length===0){yield E(n,e!=null?`${ne(e)}: []`:"[]",r.indent);return}if(Ee(t)){yield E(n,Fe(t,r.delimiter,e),r.indent);return}if(Vi(t)&&t.every(i=>Ee(i))){yield*ss(e,t,n,r);return}if(un(t)){let i=mn(t);i?yield*os(e,t,i,n,r):yield*nn(e,t,n,r);return}yield*nn(e,t,n,r)}function*ss(e,t,n,r){yield E(n,J(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(Ee(i)){let s=Fe(i,r.delimiter);yield $(n+1,s,r.indent)}}function Fe(e,t,n){let r=J(e.length,{key:n,delimiter:t}),i=pn(e,t);return e.length===0?r:`${r} ${i}`}function*os(e,t,n,r,i){yield E(r,J(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*yn(t,n,r+1,i)}function mn(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&as(e,n))return n}function as(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let r of t)if(!(r in n)||!V(n[r]))return!1}return!0}function*yn(e,t,n,r){for(let i of e)yield E(n,pn(t.map(s=>i[s]),r.delimiter),r.indent)}function*nn(e,t,n,r){yield E(n,J(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*yt(i,n+1,r)}function*cs(e,t,n){if(be(e)){yield E(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(j(s)&&un(s)){let c=mn(s);if(c){yield $(t,J(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*yn(s,c,t+2,n),o.length>0&&(yield*ee(Object.fromEntries(o),t+1,n));return}}let a=ne(i);if(V(s))yield $(t,`${a}: ${te(s,n.delimiter)}`,n.indent);else if(j(s))if(s.length===0)yield $(t,`${a}: []`,n.indent);else if(Ee(s))yield $(t,`${a}${Fe(s,n.delimiter)}`,n.indent);else{yield $(t,`${a}${J(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*yt(c,t+2,n)}else w(s)&&(yield $(t,`${a}:`,n.indent),be(s)||(yield*ee(s,t+2,n)));o.length>0&&(yield*ee(Object.fromEntries(o),t+1,n))}function*yt(e,t,n){if(V(e))yield $(t,te(e,n.delimiter),n.indent);else if(j(e))if(Ee(e))yield $(t,Fe(e,n.delimiter),n.indent);else{yield $(t,J(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*yt(r,t+1,n)}else w(e)&&(yield*cs(e,t,n))}function E(e,t,n){return" ".repeat(n*e)+t}function $(e,t,n){return E(e,"- "+t,n)}function ls(e,t){let n=t("",e,[]);return n===void 0?Ce(e,t,[]):Ce(B(n),t,[])}function Ce(e,t,n){return w(e)?us(e,t,n):j(e)?ds(e,t,n):e}function us(e,t,n){let r={};for(let[i,s]of Object.entries(e)){let o=[...n,i],a=t(i,s,o);a!==void 0&&(r[i]=Ce(B(a),t,o))}return r}function ds(e,t,n){let r=[];for(let i=0;i<e.length;i++){let s=e[i],o=[...n,i],a=t(String(i),s,o);if(a===void 0)continue;let c=B(a);r.push(Ce(c,t,o))}return r}function R(e,t){return Array.from(hn(e,t)).join(`
14
+ `)}function ht(e,t){return gn(e.split(`
15
+ `),t)}function hn(e,t){let n=B(e),r=fs(t);return rs(r.replacer?ls(n,r.replacer):n,r,0)}function gn(e,t){let n=ps(t),r=Qi(ji(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?je(r,n.strict):r}function fs(e){return{indent:e?.indent??2,delimiter:e?.delimiter??O,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function ps(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}function D(e){let t=[],n;for(let r=0;r<e.length;r++){let i=e[r];if(i==="--query"){n=e[++r];continue}if(i.startsWith("--query=")){n=i.slice(8);continue}t.push(i)}return{argv:t,query:n?.trim()||void 0}}function wn(e,t){if(!t)return!0;let n=gt(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function x(e,t){return t?e.filter(n=>wn(n,t)):[...e]}function re(e,t){if(!t)return e;let r=e.split(`
16
+ `).filter(i=>i&&wn(i,t));return r.length>0?`${r.join(`
17
17
  `)}
18
- `:""}function C(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function dt(e){return Array.isArray(e)?e.map(dt).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(dt).join(" "):String(e??"")}var Qi=["%h","%an","%as","%s"];async function mn(e,t){let n=hn(e),r=gn(n.argv),i=await ts(r,n.argv.slice(1));return Yi(e,i,t)}async function Yi(e,t,n){let r=hn(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(ne(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=gn(r.argv),s=ns(i,r.argv,t.stdout,r.query);if(s===`git empty
19
- `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=cs(i,s);if(o)return{stdout:Buffer.from(`${o}
20
- `),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s,oneLine:!0};let a=k(s);if(Zi(i,a,r.full,n))return{stdout:Buffer.from(a),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let c=ps(s);if(!c)return{stdout:Buffer.from(a),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let l=Buffer.byteLength(a),u=await n.store?.mint(Buffer.from(a),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!u)throw new Error("terse git output requires an elision store");let d=`\u2026 elided ${c.rowsElided} rows (+${l}) \u2014 rsp show ${u}
21
- `;return{stdout:Buffer.from(`${k(c.payload)}
22
- ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:c.payload,mintedHandle:u,bytesElided:l,rowsElided:c.rowsElided}}function hn(e){let t=B(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}return{argv:n,query:t.query,full:r}}function Zi(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Xi(e)||r.level!=="lossless")return!0;let i=fs(r.heavyGitByteThreshold,q);return Buffer.byteLength(t)<=i}function Xi(e){return e==="diff"||e==="log"}function gn(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")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function es(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Qi.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n]}}async function ts(e,t){let n=zi("git",es(e,[e,...t]),{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function ns(e,t,n,r){switch(e){case"status":return rs(t,n,r);case"log":return is(t,n,r);case"diff":return ss(t,n,r);case"commit":return be(os(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return be(as(t,n),r,["rsp gh pr list --query <branch>"])}}function rs(e,t,n){let r="",i=[];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(" "),l=c[1]??"..",u=c.slice(8).join(" ");i.push({path:u,index:l[0]??".",worktree:l[1]??".",state:us(l)})}if(i.length===0)return`git empty
23
- `;let s=O(i,n),o=ds(s,"state");return be({command:e.join(" "),branch:r,rows:s,summary:`${n?`${s.length}/${i.length}`:s.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 is(e,t,n){let r=t.split("\0").filter(Boolean).map(s=>{let o=s.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),i=O(r,n);return be({command:e.join(" "),commits:i,summary:`${n?`${i.length}/${r.length}`:i.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function ss(e,t,n){let i=t.split("\0").filter(Boolean).map(a=>{let[c,l,u]=a.split(" ");return{path:u??"",added:c==="-"?null:Number(c??0),deleted:l==="-"?null:Number(l??0)}}),s=O(i,n),o=s.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 be({command:e.join(" "),files:s,summary:`${n?`${s.length}/${i.length}`:s.length} files, +${o.added} -${o.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function os(e,t){let n=t.split(`
24
- `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),i=/(\d+) files? changed/.exec(t),s=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",l=Number(i?.[1]??0),u=Number(s?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:l,insertions:u,deletions:d,summary:`commit ${c} on ${a}: ${l} files, +${u} -${d}`}}function as(e,t){let n=t.split(`
25
- `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[l,u,d=""]=c.split(" "),[p,g]=(u??"").split(":");return{flag:l??"",from:p??"",to:g??"",summary:d}}),s=i.find(c=>c.flag!=="=")??i[0],o=s?.to.startsWith("refs/heads/")?s.to.slice(11):s?.to??"",a=s?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:i,summary:`pushed ${o} -> ${r} +${a} commits`}}function be(e,t,n){return t?C(e,n):e}function cs(e,t){if(e==="commit"&&typeof t.commit=="string"&&t.commit.length>0)return String(t.summary??"");if(e==="push"){let n=t.refs;return(Array.isArray(n)?n:[]).filter(s=>ls(s)&&s.flag!=="=").length===1?String(t.summary??""):null}return null}function ls(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function us(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function ds(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function fs(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ps(e){for(let t of["rows","commits","files","refs"]){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}import{spawn as bn}from"node:child_process";var ys={"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"]},ms={"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"]},yt=160,hs=160;async function En(e,t){let n=kn(e),r=await bs(n);return gs(e,r,t)}async function gs(e,t,n){let r=B(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(ne(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=kn(e),s=Ue(t.stdout),o=ks(i,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=As(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let h=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=h}let c=a?.target.truncated.handle||void 0,l=k(o);if(n.level!=="terse")return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let u=_s(o);if(!u)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(l),p=await n.store?.mint(Buffer.from(l),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!p)throw new Error("terse gh output requires an elision store");let g=`\u2026 elided ${u.rowsElided} rows (+${d}) \u2014 rsp show ${p}
26
- `;return{stdout:Buffer.from(`${k(u.payload)}
27
- ${g}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:p,bytesElided:d,rowsElided:u.rowsElided}}function kn(e){let t=B(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 i=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||i))throw new Error(`unsupported gh subcommand: ${r??""}`);let s=[],o=!1,a=!1;for(let l of t.argv.slice(3))l==="--full"?o=!0:l==="--wide"?a=!0:s.push(l);return{kind:n,action:i?"combined":r==="list"?"list":"view",target:i?r:void 0,full:o,wide:a,passthrough:s,query:t.query}}function ws(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?ms[t]:ys[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function bs(e){if(e.action==="combined")return await Es(e);let t=bn("gh",ws(e),{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}async function Es(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([ft(["pr","view",t,"--json",n.join(",")]),ft(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),ft(["pr","view",t,"--comments","--json",r.join(",")])]),a=[i,s,o].find(c=>(c.status??0)!==0||c.signal);return a||{stdout:JSON.stringify({view:Ue(i.stdout),checks:Ue(s.stdout),comments:Ue(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function ft(e){let t=bn("gh",e,{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}function ks(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Os(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=ie(n).map(o=>Sn(o,e.wide)),s=O(i,e.query);return re({...r,prs:s,summary:`${pt(s.length,i.length,e.query)} ${wn(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return re({...r,pr:Rn(N(n),e),summary:`PR #${V(N(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Ss(e,t,N(n));case"issue:list":{let i=ie(n).map(o=>xn(o,e.wide)),s=O(i,e.query);return re({...r,issues:s,summary:`${pt(s.length,i.length,e.query)} ${wn(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return re({...r,issue:Ts(N(n),e),summary:`issue #${V(N(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=ie(n).map(o=>On(o,e.wide)),s=O(i,e.query);return re({...r,runs:s,summary:`${pt(s.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return re({...r,run:$s(N(n),e),summary:`run ${V(N(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Ss(e,t,n){let r=Rn(N(n.view),{...e,action:"view",wide:!0}),i=O(ie(n.checks).map(Rs),e.query),s=N(n.comments).comments,o=O(ie(s).map(xs).slice(-3),e.query);return C({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${V(N(n.view),"number")}: ${i.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 Rs(e){return{name:y(e,"name"),state:Ee(e),bucket:y(e,"bucket"),conclusion:y(e,"conclusion"),workflow:y(e,"workflow"),link:y(e,"link")}}function xs(e){return{author:An(e.author),body:qe(e,"body",yt,!1),created:y(e,"createdAt")}}function Os(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
18
+ `:""}function v(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function gt(e){return Array.isArray(e)?e.map(gt).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(gt).join(" "):String(e??"")}var ys=["%h","%an","%as","%s"];async function bn(e,t){let n=En(e),r=Rn(n.argv),i=await Es(r,n.argv.slice(1));return hs(e,i,t)}async function hs(e,t,n){let r=En(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(re(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Rn(r.argv),s=Rs(i,r.argv,t.stdout,r.query);if(s===`git empty
19
+ `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=As(i,s);if(o)return{stdout:Buffer.from(`${o}
20
+ `),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s,oneLine:!0};let a=R(s);if(gs(i,a,r.full,n))return{stdout:Buffer.from(a),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let c=Ls(s);if(!c)return{stdout:Buffer.from(a),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let l=Buffer.byteLength(a),u=await n.store?.mint(Buffer.from(a),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!u)throw new Error("terse git output requires an elision store");let d=`\u2026 elided ${c.rowsElided} rows (+${l}) \u2014 rsp show ${u}
21
+ `;return{stdout:Buffer.from(`${R(c.payload)}
22
+ ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:c.payload,mintedHandle:u,bytesElided:l,rowsElided:c.rowsElided}}function En(e){let t=D(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}return{argv:n,query:t.query,full:r}}function gs(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!ws(e)||r.level!=="lossless")return!0;let i=Ns(r.heavyGitByteThreshold,F);return Buffer.byteLength(t)<=i}function ws(e){return e==="diff"||e==="log"}function Rn(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")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function bs(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${ys.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n]}}async function Es(e,t){let n=ms("git",bs(e,t),{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function Rs(e,t,n,r){switch(e){case"status":return ks(t,n,r);case"log":return _s(t,n,r);case"diff":return Ss(t,n,r);case"commit":return Re(xs(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Re(Ts(t,n),r,["rsp gh pr list --query <branch>"])}}function ks(e,t,n){let r="",i=[];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(" "),l=c[1]??"..",u=c.slice(8).join(" ");i.push({path:u,index:l[0]??".",worktree:l[1]??".",state:Os(l)})}if(i.length===0)return`git empty
23
+ `;let s=x(i,n),o=Is(s,"state");return Re({command:e.join(" "),branch:r,rows:s,summary:`${n?`${s.length}/${i.length}`:s.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 _s(e,t,n){let r=t.split("\0").filter(Boolean).map(s=>{let o=s.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),i=x(r,n);return Re({command:e.join(" "),commits:i,summary:`${n?`${i.length}/${r.length}`:i.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function Ss(e,t,n){let i=t.split("\0").filter(Boolean).map(a=>{let[c,l,u]=a.split(" ");return{path:u??"",added:c==="-"?null:Number(c??0),deleted:l==="-"?null:Number(l??0)}}),s=x(i,n),o=s.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 Re({command:e.join(" "),files:s,summary:`${n?`${s.length}/${i.length}`:s.length} files, +${o.added} -${o.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function xs(e,t){let n=t.split(`
24
+ `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),i=/(\d+) files? changed/.exec(t),s=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",l=Number(i?.[1]??0),u=Number(s?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:l,insertions:u,deletions:d,summary:`commit ${c} on ${a}: ${l} files, +${u} -${d}`}}function Ts(e,t){let n=t.split(`
25
+ `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[l,u,d=""]=c.split(" "),[p,g]=(u??"").split(":");return{flag:l??"",from:p??"",to:g??"",summary:d}}),s=i.find(c=>c.flag!=="=")??i[0],o=s?.to.startsWith("refs/heads/")?s.to.slice(11):s?.to??"",a=s?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:i,summary:`pushed ${o} -> ${r} +${a} commits`}}function Re(e,t,n){return t?v(e,n):e}function As(e,t){if(e==="commit"&&typeof t.commit=="string"&&t.commit.length>0)return String(t.summary??"");if(e==="push"){let n=t.refs;return(Array.isArray(n)?n:[]).filter(s=>$s(s)&&s.flag!=="=").length===1?String(t.summary??""):null}return null}function $s(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Os(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Is(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function Ns(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ls(e){for(let t of["rows","commits","files","refs"]){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}import{spawn as _n}from"node:child_process";var Bs={"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"]},Ps={"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"]},Et=160,js=160;async function Sn(e,t){let n=xn(e),r=await Us(n);return Ds(e,r,t)}async function Ds(e,t,n){let r=D(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(re(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=xn(e),s=Ve(t.stdout),o=qs(i,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=Hs(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let h=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=h}let c=a?.target.truncated.handle||void 0,l=R(o);if(n.level!=="terse")return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let u=Ws(o);if(!u)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(l),p=await n.store?.mint(Buffer.from(l),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!p)throw new Error("terse gh output requires an elision store");let g=`\u2026 elided ${u.rowsElided} rows (+${d}) \u2014 rsp show ${p}
26
+ `;return{stdout:Buffer.from(`${R(u.payload)}
27
+ ${g}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:p,bytesElided:d,rowsElided:u.rowsElided}}function xn(e){let t=D(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 i=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||i))throw new Error(`unsupported gh subcommand: ${r??""}`);let s=[],o=!1,a=!1;for(let l of t.argv.slice(3))l==="--full"?o=!0:l==="--wide"?a=!0:s.push(l);return{kind:n,action:i?"combined":r==="list"?"list":"view",target:i?r:void 0,full:o,wide:a,passthrough:s,query:t.query}}function vs(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?Ps[t]:Bs[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function Us(e){if(e.action==="combined")return await Cs(e);let t=_n("gh",vs(e),{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}async function Cs(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([wt(["pr","view",t,"--json",n.join(",")]),wt(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),wt(["pr","view",t,"--comments","--json",r.join(",")])]),a=[i,s,o].find(c=>(c.status??0)!==0||c.signal);return a||{stdout:JSON.stringify({view:Ve(i.stdout),checks:Ve(s.stdout),comments:Ve(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function wt(e){let t=_n("gh",e,{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}function qs(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Js(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=se(n).map(o=>Tn(o,e.wide)),s=x(i,e.query);return ie({...r,prs:s,summary:`${bt(s.length,i.length,e.query)} ${kn(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return ie({...r,pr:An(I(n),e),summary:`PR #${M(I(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Gs(e,t,I(n));case"issue:list":{let i=se(n).map(o=>$n(o,e.wide)),s=x(i,e.query);return ie({...r,issues:s,summary:`${bt(s.length,i.length,e.query)} ${kn(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return ie({...r,issue:Ms(I(n),e),summary:`issue #${M(I(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=se(n).map(o=>On(o,e.wide)),s=x(i,e.query);return ie({...r,runs:s,summary:`${bt(s.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return ie({...r,run:Ks(I(n),e),summary:`run ${M(I(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Gs(e,t,n){let r=An(I(n.view),{...e,action:"view",wide:!0}),i=x(se(n.checks).map(Fs),e.query),s=I(n.comments).comments,o=x(se(s).map(Vs).slice(-3),e.query);return v({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${M(I(n.view),"number")}: ${i.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 Fs(e){return{name:m(e,"name"),state:ke(e),bucket:m(e,"bucket"),conclusion:m(e,"conclusion"),workflow:m(e,"workflow"),link:m(e,"link")}}function Vs(e){return{author:Ln(e.author),body:Je(e,"body",Et,!1),created:m(e,"createdAt")}}function Js(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
28
28
  `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
29
29
  `:`0 runs \u2014 try: rsp gh run list --limit 20
30
- `}function Sn(e,t){let n={number:V(e,"number"),title:y(e,"title"),state:Ee(e),draft:!!e.isDraft};return t&&Object.assign(n,Tn(e)),n}function Rn(e,t){let n=Sn(e,t.wide);return n.body=qe(e,"body",yt,t.full),t.wide&&(n.base=y(e,"baseRefName"),n.head=y(e,"headRefName")),n}function xn(e,t){let n={number:V(e,"number"),title:y(e,"title"),state:Ee(e),labels:$n(e.labels)};return t&&Object.assign(n,Tn(e)),n}function Ts(e,t){let n=xn(e,t.wide);return n.body=qe(e,"body",yt,t.full),n}function On(e,t){let n={id:V(e,"databaseId"),name:y(e,"name"),status:Ee(e),conclusion:y(e,"conclusion")};return t&&(n.event=y(e,"event"),n.branch=y(e,"headBranch"),n.workflow=y(e,"workflowName"),n.created=y(e,"createdAt")),n}function $s(e,t){let n=On(e,t.wide),r=ie(e.jobs).map(i=>({name:y(i,"name"),status:Ee(i),conclusion:y(i,"conclusion"),log:qe(i,"log",hs,t.full)}));return n.jobs=r,n}function qe(e,t,n,r){let i=y(e,t);if(r||Buffer.byteLength(i)<=n)return i;let s=i.slice(0,n),o={preview:s,truncated:{bytes:Buffer.byteLength(i),shown_bytes:Buffer.byteLength(s),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:i,enumerable:!1}),o}function As(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(se(n)){if(se(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 _s(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 wn(e,t){return e.every(n=>n.state===t)?t:"returned"}function pt(e,t,n){return n?`${e}/${t}`:String(e)}function re(e,t,n){return t.query?C(e,n):e}function Ee(e){return(y(e,"state")||y(e,"status")).toLowerCase()}function Tn(e){return{author:An(e.author),labels:$n(e.labels),url:y(e,"url"),updated:y(e,"updatedAt")}}function $n(e){return Array.isArray(e)?e.map(t=>se(t)?y(t,"name"):String(t)).filter(Boolean):[]}function An(e){return se(e)?y(e,"login"):""}function Ue(e){return e.trim()?JSON.parse(e):null}function ie(e){return Array.isArray(e)?e.filter(se):[]}function N(e){return se(e)?e:{}}function y(e,t){let n=e[t];return typeof n=="string"?n:""}function V(e,t){let n=e[t];return typeof n=="number"?n:0}function se(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{readFileSync as _n}from"node:fs";var Nn=[{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:"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"]}],Ns=Is(Nn);function Is(e){let t=new Map;for(let n of e)t.set(ke(n.command),["rsp",...n.wrapper]);return t}function js(e){let t=vs(e);if(!t)return{kind:"passthrough"};if(t.length>0&&jn(t[0]))return{kind:"passthrough"};let n=Ns.get(ke(t));if(!n)return{kind:"passthrough"};let r=Nn.find(i=>ke(i.command)===ke(t));return{kind:"rewrite",command:n.join(" "),capabilityId:r?.id??ke(t)}}async function Ls(e,t){let n=Ds(e),r=$(n,["cwd"])||$(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Bs)(r))return{kind:"passthrough",reason:"disabled"};let s=Cs(n);return s?(t.rewrite??js)(s):{kind:"passthrough",reason:"missing-command"}}function Ps(e){return e.kind==="rewrite"?{stdout:`${e.command}
31
- `,status:0}:{stdout:"",status:1}}async function In(e){let t=e?_n(e,"utf8"):_n(0,"utf8"),n=await Ls(t,{cwd:process.cwd()}),r=Ps(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Bs(e){return Y(e,process.env).enabled}function Cs(e){return $(e,["tool_input","command"])||$(e,["tool_input","cmd"])||$(e,["tool_input","args","command"])||$(e,["input","command"])||$(e,["input","cmd"])||$(e,["arguments","command"])||$(e,["arguments","cmd"])||$(e,["command"])||$(e,["cmd"])}function vs(e){let t=e.trim();if(!t||/[\n\r|&;()$<>`'"]/.test(t))return null;let n=t.split(/[ \t]+/).filter(Boolean);return n.length===0||n.some(r=>r.includes("=")&&jn(r))?null:n}function jn(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function ke(e){return e.join("\0")}function Ds(e){try{let t=JSON.parse(e);return Ln(t)?t:{}}catch{return{}}}function $(e,t){let n=e;for(let r of t){if(!Ln(n))return"";n=n[r]}return typeof n=="string"?n:""}function Ln(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{readFileSync as Pn}from"node:fs";var Us={id:"ansi",apply:zs},qs={id:"cr-progress",apply:e=>e.split(`
30
+ `}function Tn(e,t){let n={number:M(e,"number"),title:m(e,"title"),state:ke(e),draft:!!e.isDraft};return t&&Object.assign(n,In(e)),n}function An(e,t){let n=Tn(e,t.wide);return n.body=Je(e,"body",Et,t.full),t.wide&&(n.base=m(e,"baseRefName"),n.head=m(e,"headRefName")),n}function $n(e,t){let n={number:M(e,"number"),title:m(e,"title"),state:ke(e),labels:Nn(e.labels)};return t&&Object.assign(n,In(e)),n}function Ms(e,t){let n=$n(e,t.wide);return n.body=Je(e,"body",Et,t.full),n}function On(e,t){let n={id:M(e,"databaseId"),name:m(e,"name"),status:ke(e),conclusion:m(e,"conclusion")};return t&&(n.event=m(e,"event"),n.branch=m(e,"headBranch"),n.workflow=m(e,"workflowName"),n.created=m(e,"createdAt")),n}function Ks(e,t){let n=On(e,t.wide),r=se(e.jobs).map(i=>({name:m(i,"name"),status:ke(i),conclusion:m(i,"conclusion"),log:Je(i,"log",js,t.full)}));return n.jobs=r,n}function Je(e,t,n,r){let i=m(e,t);if(r||Buffer.byteLength(i)<=n)return i;let s=i.slice(0,n),o={preview:s,truncated:{bytes:Buffer.byteLength(i),shown_bytes:Buffer.byteLength(s),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:i,enumerable:!1}),o}function Hs(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(oe(n)){if(oe(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 Ws(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 kn(e,t){return e.every(n=>n.state===t)?t:"returned"}function bt(e,t,n){return n?`${e}/${t}`:String(e)}function ie(e,t,n){return t.query?v(e,n):e}function ke(e){return(m(e,"state")||m(e,"status")).toLowerCase()}function In(e){return{author:Ln(e.author),labels:Nn(e.labels),url:m(e,"url"),updated:m(e,"updatedAt")}}function Nn(e){return Array.isArray(e)?e.map(t=>oe(t)?m(t,"name"):String(t)).filter(Boolean):[]}function Ln(e){return oe(e)?m(e,"login"):""}function Ve(e){return e.trim()?JSON.parse(e):null}function se(e){return Array.isArray(e)?e.filter(oe):[]}function I(e){return oe(e)?e:{}}function m(e,t){let n=e[t];return typeof n=="string"?n:""}function M(e,t){let n=e[t];return typeof n=="number"?n:0}function oe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{readFileSync as Bn}from"node:fs";var Pn=[{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:"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"]}],zs=Qs(Pn);function Qs(e){let t=new Map;for(let n of e)t.set(_e(n.command),["rsp",...n.wrapper]);return t}function Ys(e){let t=no(e);if(!t)return{kind:"passthrough"};if(t.length>0&&Dn(t[0]))return{kind:"passthrough"};let n=zs.get(_e(t));if(!n)return{kind:"passthrough"};let r=Pn.find(i=>_e(i.command)===_e(t));return{kind:"rewrite",command:n.join(" "),capabilityId:r?.id??_e(t)}}async function Zs(e,t){let n=ro(e),r=A(n,["cwd"])||A(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??eo)(r))return{kind:"passthrough",reason:"disabled"};let s=to(n);return s?(t.rewrite??Ys)(s):{kind:"passthrough",reason:"missing-command"}}function Xs(e){return e.kind==="rewrite"?{stdout:`${e.command}
31
+ `,status:0}:{stdout:"",status:1}}async function jn(e){let t=e?Bn(e,"utf8"):Bn(0,"utf8"),n=await Zs(t,{cwd:process.cwd()}),r=Xs(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function eo(e){return Z(e,process.env).enabled}function to(e){return A(e,["tool_input","command"])||A(e,["tool_input","cmd"])||A(e,["tool_input","args","command"])||A(e,["input","command"])||A(e,["input","cmd"])||A(e,["arguments","command"])||A(e,["arguments","cmd"])||A(e,["command"])||A(e,["cmd"])}function no(e){let t=e.trim();if(!t||/[\n\r|&;()$<>`'"]/.test(t))return null;let n=t.split(/[ \t]+/).filter(Boolean);return n.length===0||n.some(r=>r.includes("=")&&Dn(r))?null:n}function Dn(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function _e(e){return e.join("\0")}function ro(e){try{let t=JSON.parse(e);return vn(t)?t:{}}catch{return{}}}function A(e,t){let n=e;for(let r of t){if(!vn(n))return"";n=n[r]}return typeof n=="string"?n:""}function vn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{readFileSync as Un}from"node:fs";var io={id:"ansi",apply:yo},so={id:"cr-progress",apply:e=>e.split(`
32
32
  `).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(`
33
- `)},Gs={id:"trailing-whitespace",apply:e=>e.split(`
33
+ `)},oo={id:"trailing-whitespace",apply:e=>e.split(`
34
34
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
35
- `)},Js={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
35
+ `)},ao={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
36
36
 
37
- `)};function Vs(e,t){let n=t?.encode??k,r=t?.decode??ut,i=e.trimEnd();if(!i)return e;let s;try{s=JSON.parse(i)}catch{return e}let o;try{o=n(s)}catch{return e}let a;try{a=r(o)}catch{return e}return mt(s,a)?o:e}var Fs={id:"json-to-toon",apply:e=>Vs(e)},Ms=[Us,qs,Gs,Js,Fs];function Ks(e){let t=e;for(let n of Ms)t=n.apply(t);return t}async function Hs(e,t){let n=Ys(e),r=Zs(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Qs)(r))return{kind:"passthrough",reason:"disabled"};let s=Xs(n,"tool_response");if(!s)return{kind:"passthrough",reason:"missing-output"};if(typeof s.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=s.output,c=(t.normalize??Ks)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Ws(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function Cn(e){let t=e?Pn(e,"utf8"):Pn(0,"utf8"),n=await Hs(t,{cwd:process.cwd()}),r=Ws(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function zs(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let i=e.charCodeAt(n+1);if(i===93){for(n+=2;n<e.length;){let s=e.charCodeAt(n);if(s===7){n++;break}if(s===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(i===91){for(n+=2;n<e.length&&Bn(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Bn(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Bn(e){return e>=32&&e<=63}function Qs(e){return Y(e,process.env).enabled}function Ys(e){try{let t=JSON.parse(e);return ht(t)?t:{}}catch{return{}}}function Zs(e,t){let n=e;for(let r of t){if(!ht(n))return"";n=n[r]}return typeof n=="string"?n:""}function Xs(e,t){let n=e[t];return ht(n)?n:null}function ht(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function mt(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)=>mt(a,o[c]))}let n=e,r=t,i=Object.keys(n),s=Object.keys(r);return i.length!==s.length?!1:i.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&mt(n[o],r[o]))}import{constants as eo}from"node:fs";import{access as to,copyFile as no,mkdir as ro,readFile as io,writeFile as so}from"node:fs/promises";import{join as oe,resolve as oo}from"node:path";var bt=".red/red.rdb",gt=".red/memory/graph.rdb";async function Dn(e,t={}){let n=oo(e),r=oe(n,".red"),i=oe(r,"config.yaml"),s=oe(n,bt);await ro(r,{recursive:!0});let o="";try{o=await io(i,"utf8")}catch(d){if(d.code!=="ENOENT")throw d}let a=ao(o,{enabled:!0,ttlDays:t.ttlDays??z,byteBudget:t.byteBudget??Q,heavyGitByteThreshold:t.heavyGitByteThreshold??q}),c=await co(n,a);a=c.configText;let l=a!==o;l&&await so(i,a,"utf8");let u=!await Et(s);return u&&await(await $e(`file://${s}`)).close(),{configPath:i,storePath:s,configChanged:l,storeCreated:u,memoryStoreMigrated:c.storeCopied}}function ao(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${wt(t.ttlDays,z)}`,` byteBudget: ${wt(t.byteBudget,Q)}`,` heavyGitByteThreshold: ${wt(t.heavyGitByteThreshold,q)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
38
- `),i=Un(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
37
+ `)};function co(e,t){let n=t?.encode??R,r=t?.decode??ht,i=e.trimEnd();if(!i)return e;let s;try{s=JSON.parse(i)}catch{return e}let o;try{o=n(s)}catch{return e}let a;try{a=r(o)}catch{return e}return Rt(s,a)?o:e}var lo={id:"json-to-toon",apply:e=>co(e)},uo=[io,so,oo,ao,lo];function fo(e){let t=e;for(let n of uo)t=n.apply(t);return t}async function po(e,t){let n=go(e),r=wo(n,["cwd"])||t.cwd;if(!await(t.isEnabled??ho)(r))return{kind:"passthrough",reason:"disabled"};let s=bo(n,"tool_response");if(!s)return{kind:"passthrough",reason:"missing-output"};if(typeof s.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=s.output,c=(t.normalize??fo)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function mo(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function qn(e){let t=e?Un(e,"utf8"):Un(0,"utf8"),n=await po(t,{cwd:process.cwd()}),r=mo(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function yo(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let i=e.charCodeAt(n+1);if(i===93){for(n+=2;n<e.length;){let s=e.charCodeAt(n);if(s===7){n++;break}if(s===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(i===91){for(n+=2;n<e.length&&Cn(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Cn(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Cn(e){return e>=32&&e<=63}function ho(e){return Z(e,process.env).enabled}function go(e){try{let t=JSON.parse(e);return kt(t)?t:{}}catch{return{}}}function wo(e,t){let n=e;for(let r of t){if(!kt(n))return"";n=n[r]}return typeof n=="string"?n:""}function bo(e,t){let n=e[t];return kt(n)?n:null}function kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Rt(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)=>Rt(a,o[c]))}let n=e,r=t,i=Object.keys(n),s=Object.keys(r);return i.length!==s.length?!1:i.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&Rt(n[o],r[o]))}import{constants as Oo}from"node:fs";import{access as Io,copyFile as No,mkdir as Qn,readFile as Yn,writeFile as Zn}from"node:fs/promises";import{createHash as Lo}from"node:crypto";import{chmod as Bo}from"node:fs/promises";import{homedir as Po}from"node:os";import{dirname as jo}from"node:path";import{join as U,resolve as Do}from"node:path";function Gn(e){let t={app:e,version:Eo(ae("__RED_BUILD_VERSION__",()=>"2.32.6")??"0.0.0-dev"),gitSha:ae("__RED_BUILD_GIT_SHA__",()=>"79f2d143dc832b032ac0e7fa198b532ba4a3eb15")??"unknown",buildTime:ae("__RED_BUILD_TIME__",()=>"2026-07-12T03:37:18-03:00")??"unknown",bundleAsset:ae("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=ae("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=ae("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function Eo(e){return e.startsWith("v")?e.slice(1):e}function ae(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}import{platform as Ro,arch as ko}from"node:os";var _o="reddb-io/reddb",So="reddb",Vn="https://github.com",Se=class extends Error{constructor(t){super(t),this.name="RedRuntimeError"}};function Jn(e=Ro(),t=ko()){let n={linux:"linux",darwin:"macos",win32:"windows"}[e],r={x64:"x86_64",arm64:"aarch64",arm:"armv7"}[t];return!n||!r?null:`${n}-${r}`}function Mn(e){return`red-${e}`}function xo(e=process.platform==="win32"){return e?"red.exe":"red"}function To(e,t){return Wn(e,So,$o(t))}function _t(e,t,n=process.platform==="win32"){return Wn(To(e,t),xo(n))}function Fn(e,t,n,r=Vn){return`${r}/${e}/releases/download/${t}/${n}`}function Kn(e){let n=(typeof e=="string"?e:new TextDecoder().decode(e)).match(/\b[0-9a-f]{64}\b/i);return n?n[0].toLowerCase():null}async function Ao(e,t,n={}){let r=n.verify??!0,i=t.platformKey??Jn();if(!i)return null;let s=_t(t.cacheDir,t.binaryTag,t.win32),o=`${s}.sha256`;if(!await e.exists(s)||!await e.exists(o))return null;let a=Kn(await e.readFile(o));return!a||r&&e.sha256(await e.readFile(s))!==a?null:{redPath:s,checksumPath:o,assetName:Mn(i),sha256:a}}async function Hn(e,t){let n=await Ao(e,t,{verify:t.mayFetch});if(n)return n;if(!t.mayFetch)return null;let r=t.platformKey??Jn();if(!r)throw new Se("no red binary for this platform");let i=t.repo??_o,s=t.releaseBase??Vn,o=Mn(r),a=`${_t(t.cacheDir,t.binaryTag,t.win32)}.sha256`,c=await e.fetchBuffer(Fn(i,t.binaryTag,`${o}.sha256`,s)),l=Kn(c);if(!l)throw new Se(`missing sha256 for ${o}`);let u=await e.fetchBuffer(Fn(i,t.binaryTag,o,s)),d=e.sha256(u);if(d!==l)throw new Se(`checksum mismatch for ${o}: ${d} != ${l}`);let p=_t(t.cacheDir,t.binaryTag,t.win32);return await e.writeFile(p,u),await e.chmod(p,493),await e.writeFile(a,new TextEncoder().encode(`${l} ${o}
38
+ `)),{redPath:p,checksumPath:a,assetName:o,sha256:l}}function $o(e){return e.replace(/^v/,"")}function Wn(...e){return e.filter(Boolean).join("/").replace(/\/+/g,"/")}var Tt=".red/red.rdb",St=".red/memory/graph.rdb";async function Xn(e,t={}){let n=Do(e),r=U(n,".red"),i=U(r,"config.yaml"),s=U(n,Tt);await Qn(r,{recursive:!0});let o="";try{o=await Yn(i,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=vo(o,{enabled:!0,ttlDays:t.ttlDays??Q,byteBudget:t.byteBudget??Y,heavyGitByteThreshold:t.heavyGitByteThreshold??F}),c=await Uo(n,a);a=c.configText;let l=a!==o;l&&await Zn(i,a,"utf8");let u=!await Me(s),d=await At({mayFetch:!0,...t.redRuntime??{}});return u&&await(await Ne(`file://${s}`)).close(),{configPath:i,storePath:s,configChanged:l,storeCreated:u,memoryStoreMigrated:c.storeCopied,redBinaryPath:d?.redPath}}async function At(e){if(process.env.REDDB_BIN)return{redPath:process.env.REDDB_BIN};let t=e.binaryTag??Gn("rsp").reddbBinaryTag;if(!t)return null;let n=await Hn(e.io??Vo,{cacheDir:e.cacheDir??Fo(),binaryTag:t,mayFetch:e.mayFetch});return n?(process.env.REDDB_BIN=n.redPath,{redPath:n.redPath}):null}function vo(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${xt(t.ttlDays,Q)}`,` byteBudget: ${xt(t.byteBudget,Y)}`,` heavyGitByteThreshold: ${xt(t.heavyGitByteThreshold,F)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
39
+ `),i=er(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
39
40
  `)}
40
- `}let s=kt(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
41
+ `}let s=$t(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
41
42
  `)}
42
- `}function Un(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Se(r)&&ae(r)===0&&Ge(r)===t)return n}return-1}function kt(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(Se(e[i])&&ae(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function ae(e){return(e.match(/^ */)?.[0]??"").length}function Se(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Ge(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function wt(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}async function co(e,t){let n=t.replace(/\n+$/,"").split(`
43
- `),r=lo(n);if(r===-1)return{configText:t,storeCopied:!1};let i=kt(n,r,ae(n[r])),s=n.slice(r,i),o=vn(s,"mode"),a=vn(s,"storePath");if(!(a===gt||a==null&&o==="graph"))return{configText:t,storeCopied:!1};let l=oe(e,bt),u=!1;return await Et(oe(e,gt))&&!await Et(l)&&(await no(oe(e,gt),l),u=!0),{configText:`${uo(n,r,i,"storePath",bt).join(`
43
+ `}function er(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(xe(r)&&ce(r)===0&&Ke(r)===t)return n}return-1}function $t(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(xe(e[i])&&ce(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function ce(e){return(e.match(/^ */)?.[0]??"").length}function xe(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Ke(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function xt(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}async function Uo(e,t){let n=t.replace(/\n+$/,"").split(`
44
+ `),r=Co(n);if(r===-1)return{configText:t,storeCopied:!1};let i=$t(n,r,ce(n[r])),s=n.slice(r,i),o=zn(s,"mode"),a=zn(s,"storePath");if(!(a===St||a==null&&o==="graph"))return{configText:t,storeCopied:!1};let l=U(e,Tt),u=!1;return await Me(U(e,St))&&!await Me(l)&&(await No(U(e,St),l),u=!0),{configText:`${qo(n,r,i,"storePath",Tt).join(`
44
45
  `)}
45
- `,storeCopied:u}}function lo(e){let t=Un(e,"plugins");if(t===-1)return-1;let n=kt(e,t,0);for(let r=t+1;r<n;r++){let i=e[r];if(Se(i)&&ae(i)===2&&Ge(i)==="memory")return r}return-1}function vn(e,t){for(let n of e.slice(1))if(!(!Se(n)||ae(n)!==4||Ge(n)!==t))return fo(n.replace(/^ */,"").replace(/^[^:]+:/,"")).replace(/^["']|["']$/g,"")}function uo(e,t,n,r,i){for(let s=t+1;s<n;s++)if(Se(e[s])&&ae(e[s])===4&&Ge(e[s])===r)return[...e.slice(0,s),` ${r}: ${i}`,...e.slice(s+1)];return[...e.slice(0,n),` ${r}: ${i}`,...e.slice(n)]}function fo(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}async function Et(e){try{return await to(e,eo.F_OK),!0}catch{return!1}}import{spawn as po}from"node:child_process";var St=320,yo=160,mo=St,ho=3;async function qn(e,t){let n=B(e),r=await So(n.argv);return await go(e,r,t)}async function go(e,t,n){let r=B(e),s=Gn(r.argv)==="vitest"?Ro(t.stdout):xo(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(ne(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=`${s.failed}/${s.total} failed \xB7 ${s.suites} suites \xB7 ${$o(s.durationSeconds)}`,c=O(s.failures,r.query);if(n.level==="terse")return await wo(r.argv,t,{...s,failures:c},o,a,n,r.query);let l=[],u,d=0;for(let h of c){let T=await Oo(h.excerpt,r.argv.join(" "),n.store);l.push({suite:h.suite,name:h.name,excerpt:T.text}),u??=T.handle,d+=T.bytesElided}let p={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};l.length>0&&(p.failures=l);let g=r.query?C(p,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):p;return{stdout:Buffer.from(k(g)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:g,mintedHandle:u,bytesElided:d>0?d:void 0,rowsElided:l.length>0?Math.max(0,s.total-l.length):void 0}}async function wo(e,t,n,r,i,s,o){let a=bo(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let l=o?C(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,u=k(l),d=Math.max(0,n.failures.length-a.length),p=a.some((b,U)=>b.excerpt!==n.failures[U].excerpt);if(d===0&&!p)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l};let g={exit_code:r,summary:i};n.failures.length>0&&(g.failures=n.failures.map(b=>({suite:b.suite,name:b.name,excerpt:b.excerpt})));let h=k(g),T=Buffer.byteLength(h),S=await s.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:T}});if(!S)throw new Error("terse test output requires an elision store");let m=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${T}) \u2014 rsp show ${S}`;return{stdout:Buffer.from(`${u}
46
- ${m}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l,mintedHandle:S,bytesElided:T,rowsElided:d}}function bo(e){let t=[],n=mo;for(let r of e.slice(0,ho)){let i=Eo(r.excerpt,Math.min(yo,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Eo(e,t){if(t<=0)return"";let n=e.split(`
46
+ `,storeCopied:u}}function Co(e){let t=er(e,"plugins");if(t===-1)return-1;let n=$t(e,t,0);for(let r=t+1;r<n;r++){let i=e[r];if(xe(i)&&ce(i)===2&&Ke(i)==="memory")return r}return-1}function zn(e,t){for(let n of e.slice(1))if(!(!xe(n)||ce(n)!==4||Ke(n)!==t))return Go(n.replace(/^ */,"").replace(/^[^:]+:/,"")).replace(/^["']|["']$/g,"")}function qo(e,t,n,r,i){for(let s=t+1;s<n;s++)if(xe(e[s])&&ce(e[s])===4&&Ke(e[s])===r)return[...e.slice(0,s),` ${r}: ${i}`,...e.slice(s+1)];return[...e.slice(0,n),` ${r}: ${i}`,...e.slice(n)]}function Go(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}async function Me(e){try{return await Io(e,Oo.F_OK),!0}catch{return!1}}function Fo(){return process.env.RED_SKILLS_CACHE_DIR?process.env.RED_SKILLS_CACHE_DIR:process.env.XDG_CACHE_HOME?U(process.env.XDG_CACHE_HOME,"red-skills","bundles"):U(Po(),".cache","red-skills","bundles")}var Vo={async exists(e){return Me(e)},async readFile(e){return new Uint8Array(await Yn(e))},async writeFile(e,t){await Qn(jo(e),{recursive:!0}),await Zn(e,t)},async chmod(e,t){await Bo(e,t)},async fetchBuffer(e){let t=await fetch(e,{redirect:"follow"});if(!t.ok)throw new Error(`GET ${e} -> ${t.status}`);return new Uint8Array(await t.arrayBuffer())},sha256(e){return Lo("sha256").update(e).digest("hex")}};import{spawn as Jo}from"node:child_process";var Ot=320,Mo=160,Ko=Ot,Ho=3;async function tr(e,t){let n=D(e),r=await Xo(n.argv);return await Wo(e,r,t)}async function Wo(e,t,n){let r=D(e),s=nr(r.argv)==="vitest"?ea(t.stdout):ta(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(re(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=`${s.failed}/${s.total} failed \xB7 ${s.suites} suites \xB7 ${ia(s.durationSeconds)}`,c=x(s.failures,r.query);if(n.level==="terse")return await zo(r.argv,t,{...s,failures:c},o,a,n,r.query);let l=[],u,d=0;for(let h of c){let T=await na(h.excerpt,r.argv.join(" "),n.store);l.push({suite:h.suite,name:h.name,excerpt:T.text}),u??=T.handle,d+=T.bytesElided}let p={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};l.length>0&&(p.failures=l);let g=r.query?v(p,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):p;return{stdout:Buffer.from(R(g)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:g,mintedHandle:u,bytesElided:d>0?d:void 0,rowsElided:l.length>0?Math.max(0,s.total-l.length):void 0}}async function zo(e,t,n,r,i,s,o){let a=Qo(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let l=o?v(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,u=R(l),d=Math.max(0,n.failures.length-a.length),p=a.some((b,G)=>b.excerpt!==n.failures[G].excerpt);if(d===0&&!p)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l};let g={exit_code:r,summary:i};n.failures.length>0&&(g.failures=n.failures.map(b=>({suite:b.suite,name:b.name,excerpt:b.excerpt})));let h=R(g),T=Buffer.byteLength(h),k=await s.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:T}});if(!k)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${T}) \u2014 rsp show ${k}`;return{stdout:Buffer.from(`${u}
47
+ ${y}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l,mintedHandle:k,bytesElided:T,rowsElided:d}}function Qo(e){let t=[],n=Ko;for(let r of e.slice(0,Ho)){let i=Yo(r.excerpt,Math.min(Mo,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Yo(e,t){if(t<=0)return"";let n=e.split(`
47
48
  `),r=n.length<=2?e:`${n[0]}
48
49
  \u2026
49
- ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function Gn(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 ko(e){if(Gn(e)==="vitest"){let i=e.slice(1);return{executable:"vitest",args:i.some(o=>o==="--reporter=json"||o==="--reporter"||o.startsWith("--reporter="))?i:["run","--reporter=json",...i]}}let n=e.slice(1);return{executable:"cargo",args:n.some(i=>i==="--message-format=json"||i.startsWith("--message-format="))?n:["test","--message-format=json",...n.slice(1)]}}async function So(e){let t=ko(e),n=po(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function Ro(e){let t=Jn(e);if(!v(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=D(t.numTotalTests),s=D(t.numFailedTests),o=Ao(D(t.startTime),D(t.endTime));for(let a of n){if(!v(a))continue;let c=I(a.name)||I(a.file)||"",l=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let u of l)v(u)&&u.status==="failed"&&r.push({suite:c,name:I(u.fullName)||I(u.title)||I(u.name),excerpt:To(u.failureMessages)||I(u.failureMessage)})}return i||=n.reduce((a,c)=>!v(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>v(c)?a+D(c.perfStats&&v(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function xo(e){let t=e.split(`
50
- `).filter(Boolean).map(c=>Jn(c)).filter(v);if(t.length===0)return null;let n=[],r=0,i=0,s=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(s+=1,r+=D(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=D(c.failed),o+=D(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:I(c.name).split("::").slice(0,-1).join("::"),name:I(c.name),excerpt:I(c.stdout)});continue}if(c.reason==="compiler-message"&&v(c.message)){let l=I(c.message.rendered);l&&a.push(l)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
51
- `)}),s||=1,r||=1,i||=1),i||=n.length,s||=1,r||=Math.max(i,n.length),{failed:i,total:r,suites:s,durationSeconds:o,failures:n}}async function Oo(e,t,n){let r=Buffer.from(e);if(r.length<=St)return{text:e,bytesElided:0};if(!n)throw new Error("over-limit test failure excerpt requires an elision store");let i=await n.mint(r,{command:t,loss:{level:"brief",bytes_elided:r.length}}),s=r.subarray(0,St).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
52
- \u2026 elided ${o} bytes (+${r.length}) \u2014 rsp show ${i}`,handle:i,bytesElided:r.length}}function Jn(e){try{return JSON.parse(e)}catch{return null}}function To(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
53
- `):""}function $o(e){return`${Number(e.toFixed(1))}s`}function Ao(e,t){return e>0&&t>e?(t-e)/1e3:0}function D(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function I(e){return typeof e=="string"?e:""}function v(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Po(e=process.argv.slice(2)){let t=vo(e);if(t.command==="hook"&&t.positional[1]==="claude-pre-exec")return await In();if(t.command==="hook"&&t.positional[1]==="claude-post-exec")return await Cn();if(t.command==="setup"){let s=await Dn(process.cwd());return process.stdout.write(Uo(s)),0}let n=Y(process.cwd(),process.env,t.storeUri),r=Bo(t.command);if(!t.storeUri&&n.storeUri.startsWith("file://")&&!Io(Vn(n.storeUri)))return r?await Ve(t.positional):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
54
- `),1);if(r&&Co(n.storeUri))return await Ve(t.positional);let i;try{let s=()=>_e.open({uri:n.storeUri,ttlDays:n.ttlDays,byteBudget:n.byteBudget});i=r?await Je(s):await s()}catch(s){if(r)return await Ve(t.positional);throw s}try{if(!t.command){let s=await i.stats();return process.stdout.write(Do(s)),0}if(t.command==="git"){let s=await Je(()=>mn(t.positional,{level:t.level,store:i,heavyGitByteThreshold:n.heavyGitByteThreshold}));return process.stdout.write(s.stdout),process.stderr.write(s.stderr),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}if(t.command==="gh"){let s=await Je(()=>En(t.positional,{level:t.level,store:i}));return process.stdout.write(s.stdout),process.stderr.write(s.stderr),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}if(t.command==="vitest"||t.command==="cargo"){let s=await Je(()=>qn(t.positional,{level:t.level,store:i}));return process.stdout.write(s.stdout),process.stderr.write(s.stderr),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}if(t.command==="show"&&t.handle){let s=await i.get(t.handle);return s&&"original"in s&&s.original?(process.stdout.write(s.original),0):s?.status==="expired"?(process.stdout.write(`expired ${s.expired_at} \u2014 re-run: ${s.command}
50
+ ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function nr(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 Zo(e){if(nr(e)==="vitest"){let i=e.slice(1);return{executable:"vitest",args:i.some(o=>o==="--reporter=json"||o==="--reporter"||o.startsWith("--reporter="))?i:["run","--reporter=json",...i]}}let n=e.slice(1);return{executable:"cargo",args:n.some(i=>i==="--message-format=json"||i.startsWith("--message-format="))?n:["test","--message-format=json",...n.slice(1)]}}async function Xo(e){let t=Zo(e),n=Jo(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function ea(e){let t=rr(e);if(!C(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=q(t.numTotalTests),s=q(t.numFailedTests),o=sa(q(t.startTime),q(t.endTime));for(let a of n){if(!C(a))continue;let c=N(a.name)||N(a.file)||"",l=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let u of l)C(u)&&u.status==="failed"&&r.push({suite:c,name:N(u.fullName)||N(u.title)||N(u.name),excerpt:ra(u.failureMessages)||N(u.failureMessage)})}return i||=n.reduce((a,c)=>!C(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>C(c)?a+q(c.perfStats&&C(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function ta(e){let t=e.split(`
51
+ `).filter(Boolean).map(c=>rr(c)).filter(C);if(t.length===0)return null;let n=[],r=0,i=0,s=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(s+=1,r+=q(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=q(c.failed),o+=q(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:N(c.name).split("::").slice(0,-1).join("::"),name:N(c.name),excerpt:N(c.stdout)});continue}if(c.reason==="compiler-message"&&C(c.message)){let l=N(c.message.rendered);l&&a.push(l)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
52
+ `)}),s||=1,r||=1,i||=1),i||=n.length,s||=1,r||=Math.max(i,n.length),{failed:i,total:r,suites:s,durationSeconds:o,failures:n}}async function na(e,t,n){let r=Buffer.from(e);if(r.length<=Ot)return{text:e,bytesElided:0};if(!n)throw new Error("over-limit test failure excerpt requires an elision store");let i=await n.mint(r,{command:t,loss:{level:"brief",bytes_elided:r.length}}),s=r.subarray(0,Ot).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
53
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 rsp show ${i}`,handle:i,bytesElided:r.length}}function rr(e){try{return JSON.parse(e)}catch{return null}}function ra(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
54
+ `):""}function ia(e){return`${Number(e.toFixed(1))}s`}function sa(e,t){return e>0&&t>e?(t-e)/1e3:0}function q(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function N(e){return typeof e=="string"?e:""}function C(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function la(e=process.argv.slice(2)){let t=fa(e);if(t.command==="hook"&&t.positional[1]==="claude-pre-exec")return await jn();if(t.command==="hook"&&t.positional[1]==="claude-post-exec")return await qn();if(t.command==="setup"){let o=await Xn(process.cwd());return process.stdout.write(ma(o)),0}await At({mayFetch:!1});let n=Z(process.cwd(),process.env,t.storeUri),r=ua(t.command);if(!t.storeUri&&n.storeUri.startsWith("file://")&&!aa(ca(n.storeUri)))return r?await ir("store not provisioned",t.positional):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
55
+ `),1);let i=()=>Be.open({uri:n.storeUri,ttlDays:n.ttlDays,byteBudget:n.byteBudget}),s;try{if(!t.command){let o=await i();s=()=>o.close();let a=await o.stats();return process.stdout.write(pa(a)),0}if(t.command==="git"){let o=new Te(()=>le(i));s=()=>o.close();let a=await le(()=>bn(t.positional,{level:t.level,store:o,heavyGitByteThreshold:n.heavyGitByteThreshold}));return process.stdout.write(a.stdout),process.stderr.write(a.stderr),a.signal?(process.kill(process.pid,a.signal),128):a.status??0}if(t.command==="gh"){let o=new Te(()=>le(i));s=()=>o.close();let a=await le(()=>Sn(t.positional,{level:t.level,store:o}));return process.stdout.write(a.stdout),process.stderr.write(a.stderr),a.signal?(process.kill(process.pid,a.signal),128):a.status??0}if(t.command==="vitest"||t.command==="cargo"){let o=new Te(()=>le(i));s=()=>o.close();let a=await le(()=>tr(t.positional,{level:t.level,store:o}));return process.stdout.write(a.stdout),process.stderr.write(a.stderr),a.signal?(process.kill(process.pid,a.signal),128):a.status??0}if(t.command==="show"&&t.handle){let o=await i();s=()=>o.close();let a=await o.get(t.handle);return a&&"original"in a&&a.original?(process.stdout.write(a.original),0):a?.status==="expired"?(process.stdout.write(`expired ${a.expired_at} \u2014 re-run: ${a.command}
55
56
  `),1):(process.stdout.write(`expired unknown \u2014 re-run: ${t.handle}
56
57
  `),1)}return process.stdout.write(`error: usage rsp show el:<id>
57
- `),2}catch(s){if(r)return await Ve(t.positional);throw s}finally{await i.close()}}async function Je(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function Bo(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"}function Co(e){if(!e.startsWith("file://"))return!1;let t;try{t=jo(Vn(e),"r");let n=Buffer.alloc(64),r=Lo(t,n,0,n.length,0);return!n.subarray(0,r).includes("RDDB")}catch{return!0}finally{t!==void 0&&No(t)}}async function Ve(e){let t=e[0];if(!t)return 2;let n=_o(t,e.slice(1),{stdio:"inherit"});return await new Promise(r=>{n.on("error",i=>{process.stderr.write(`${i instanceof Error?i.message:String(i)}
58
- `),r(127)}),n.on("close",(i,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(i??0)})})}function vo(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let i=e[r];i==="--store-uri"?t.storeUri=e[++r]:i==="--brief"?t.level="brief":i==="--terse"?t.level="terse":i==="--query"?t.query=e[++r]:i.startsWith("--query=")?t.query=i.slice(8):n.push(i)}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 Do(e){return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,""].join(`
59
- `)}function Uo(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
60
- `)}import.meta.url===`file://${process.argv[1]}`&&Po().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
61
- `),process.exit(1)});export{Po as main,Uo as renderSetupResult,Do as renderStats};
58
+ `),2}catch(o){if(r)return await ir("wrapper failed",t.positional,o);throw o}finally{await s?.()}}var Te=class{constructor(t){this.openStore=t}store;async mint(...t){return await(await this.open()).mint(...t)}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}};async function ir(e,t,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);return process.stderr.write(`rsp: ${e}, passing through
59
+ `),await da(t)}async function le(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function ua(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"}async function da(e){let t=e[0];if(!t)return 2;let n=oa(t,e.slice(1),{stdio:"inherit"});return await new Promise(r=>{n.on("error",i=>{process.stderr.write(`${i instanceof Error?i.message:String(i)}
60
+ `),r(127)}),n.on("close",(i,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(i??0)})})}function fa(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let i=e[r];i==="--store-uri"?t.storeUri=e[++r]:i==="--brief"?t.level="brief":i==="--terse"?t.level="terse":i==="--query"?t.query=e[++r]:i.startsWith("--query=")?t.query=i.slice(8):n.push(i)}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 pa(e){return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,""].join(`
61
+ `)}function ma(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
62
+ `)}import.meta.url===`file://${process.argv[1]}`&&la().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
63
+ `),process.exit(1)});export{la as main,ma as renderSetupResult,pa as renderStats};