@reddb-io/red-skills 2.73.1 → 2.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brain.bundle.min.mjs +57 -43
- package/dist/code-nav.bundle.min.mjs +1 -1
- package/dist/dev.bundle.min.mjs +144 -144
- package/dist/memory.bundle.min.mjs +1 -1
- package/dist/rsp.bundle.min.mjs +98 -98
- package/package.json +1 -1
package/dist/rsp.bundle.min.mjs
CHANGED
|
@@ -1,90 +1,90 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
3
|
-
var
|
|
3
|
+
var Ad=Object.defineProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var M=(e,t)=>{for(var n in t)Ad(e,n,{get:t[n],enumerable:!0})};async function Mo(e,t){return Nd?Md(e,t):Bd?Ud(e,t):Ld(e,t)}async function Ld(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(s){return new Promise((i,o)=>{r.stdin.write(s,a=>a?o(a):i())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(s=>{r.on("exit",i=>s(i??0))})}}}function Md(e,t){let n=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),r=n.stdin.getWriter?n.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(s){r?await r.write(s):(n.stdin.write(s),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:jd(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*jd(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}async function Ud(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),s=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(i){await s.write(i)},end(){try{s.close()}catch{}}},stdout:Jd(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Jd(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var Nd,Bd,jo=E(()=>{Nd=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Bd=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Fd}from"node:fs";import{join as Gd}from"node:path";function Uo(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:n,envVar:r}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let s=process.env?.[r];if(typeof s=="string"&&s!=="")return s;let i=Gd(n,"bin",t);if(Fd(i))return i;throw new Error(`reddb: binary "${t}" not found.
|
|
4
4
|
expected at: ${i}
|
|
5
5
|
override: set ${r}=/path/to/${t}
|
|
6
6
|
fix: re-run \`pnpm install\` (the postinstall script downloads it),
|
|
7
|
-
or check the postinstall log for a download error.`)}var
|
|
8
|
-
`)).catch(a=>{this.pending.delete(r),o(a)})})}async close(){if(!this.closed){try{await this.call("close",{})}catch{}this.#e("close requested");try{this.child.stdin.end()}catch{}await this.child.wait()}}async#t(){let t=new Uint8Array(0);try{for await(let n of this.child.stdout){let r=new Uint8Array(t.length+n.length);r.set(t,0),r.set(n,t.length),t=r;let s=0;for(let i=0;i<t.length;i++)if(t[i]===10){let o=t.subarray(s,i);this.#n(
|
|
7
|
+
or check the postinstall log for a download error.`)}var Jo=E(()=>{});import{fileURLToPath as Hd}from"node:url";import{dirname as qd,resolve as Wd,join as NR}from"node:path";function Kd(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Fo(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Uo({name:Kd(),packageRoot:zd,envVar:"REDDB_BIN"})}var Vd,zd,Go=E(()=>{Jo();Vd=qd(Hd(import.meta.url)),zd=Wd(Vd,"..")});var Yd,Qd,k,zn,He=E(()=>{Yd=new TextEncoder,Qd=new TextDecoder("utf-8"),k=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},zn=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new k("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,s=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((i,o)=>{this.pending.set(r,{resolve:i,reject:o}),this.child.stdin.write(Yd.encode(s+`
|
|
8
|
+
`)).catch(a=>{this.pending.delete(r),o(a)})})}async close(){if(!this.closed){try{await this.call("close",{})}catch{}this.#e("close requested");try{this.child.stdin.end()}catch{}await this.child.wait()}}async#t(){let t=new Uint8Array(0);try{for await(let n of this.child.stdout){let r=new Uint8Array(t.length+n.length);r.set(t,0),r.set(n,t.length),t=r;let s=0;for(let i=0;i<t.length;i++)if(t[i]===10){let o=t.subarray(s,i);this.#n(Qd.decode(o)),s=i+1}s>0&&(t=t.subarray(s))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(i){this.#e(`malformed server response: ${i.message}`);return}let r=n.id;if(r==null)return;let s=this.pending.get(r);s&&(this.pending.delete(r),n.error?s.reject(new k(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):s.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new k("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function ls(e){if(typeof e!="string"||e.length===0)throw new TypeError("connect() requires a URI string (e.g. 'red://localhost:5050' or 'red:///data.rdb')");return e.startsWith("red://")||e==="red:"||e==="red:/"?Zd(e):Xd(e)}function Zd(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let n;try{n=new URL(t)}catch(l){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${l.message}`)}let r=n.searchParams,s=(r.get("proto")||"").toLowerCase(),i=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return i?{kind:"embedded",path:i,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=ef(s),a=n.port?Number(n.port):us(o),c=n.username?decodeURIComponent(n.username):void 0,u=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:i||void 0,username:c,password:u,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function Xd(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(i){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${i.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",s=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):us(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:s.get("token")??void 0,apiKey:s.get("apiKey")??s.get("api_key")??void 0,loginUrl:s.get("loginUrl")??s.get("login_url")??void 0,params:s,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new k("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):us(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new k("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function ef(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new k("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function us(e){switch(e){case"http":return 5e3;case"https":return 55555;case"red":case"reds":case"redwire":return 5050;case"grpc":return 55055;case"grpcs":return 55555;case"pg":case"postgres":case"postgresql":return 5432;default:return}}var ds=E(()=>{He()});function nf(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Ho(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Ho(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Ho(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n of e)t+=String.fromCharCode(n);return btoa(t)}function rf(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}var tf,tn,fs=E(()=>{He();tf=new Set(["embedded"]),tn=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&tf.has(this._transport))throw new k("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:rf(r.value)}async put(t,n,r,s={}){this._guard("put");let i=nf(r);await this._client.call("cache.put",{namespace:t,key:n,value:i,...s})}async exists(t,n){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:n}))?.status??"maybe"}async invalidate(t,n){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:n})}async invalidatePrefix(t,n){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:n}))?.removed??0}async invalidateTags(t,n){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:n}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function ms(e,t){return`${ps(e)}.${sf(t)}`}function ps(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new k("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function sf(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function of(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="object"?`'${JSON.stringify(e).replace(/'/g,"''")}'`:`'${String(e).replace(/'/g,"''")}'`}function qo(e){return`'${String(e).replace(/'/g,"''")}'`}var Pt,gs=E(()=>{He();Pt=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(qo).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${ms(s,t)} = ${of(n)}${o}${i}`})}set(t,n,r={}){return this.put(t,n,r)}async get(t,n={}){let r=n.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${ms(r,t)}`}))?.rows?.[0]?.value??null}async getMany(t,n={}){let r=[];for(let s of t)r.push(await this.get(s,n));return r}async exists(t,n={}){return{exists:await this.get(t,n)!==null}}async delete(t,n={}){let r=n.collection??this.collection,s=await this.client.call("query",{sql:`KV DELETE ${ms(r,t)}`}),i=s.affected??s.affected_rows??0;return{affected:i,deleted:i>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new k("INVALID_ARGUMENT","kv.list limit must be a positive integer");let s=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${ps(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:s.length>0?o.filter(c=>String(c.key).startsWith(s)):o}}async invalidateTags(t,n={}){let r=n.collection??this.collection,s=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(qo).join(", ")}] FROM ${ps(r)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new k("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,s=new URLSearchParams;n.sinceLsn!=null&&s.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&s.set("limit",String(n.limit));let i=s.toString()?`?${s}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${i}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new k("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let u of c.split(`
|
|
9
9
|
|
|
10
10
|
`)){let l=u.split(`
|
|
11
|
-
`).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function of(e,t,n){let{waitMs:r,group:s=null,count:i=null}=n??{};if(!Number.isInteger(r)||r<0)throw new k("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=De(e),a=De(t),c=s!=null?` GROUP ${De(s)}`:"",u=i!=null?ys(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function De(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function ys(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new k("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function af(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function cf(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new k("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${af(e.priority)}`),e.key!=null&&(t+=` KEY ${ws(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ws(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function uf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ws(e):JSON.stringify(e)}function ws(e){return`'${String(e).replace(/'/g,"''")}'`}function hs(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var nn,bs=E(()=>{He();nn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${De(t)}`})}push(t,n,r={}){let s=cf(r);return this.client.call("query",{sql:`QUEUE PUSH ${De(t)} ${uf(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${De(t)}${ys(n)}`});return hs(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${De(t)}${ys(n)}`});return hs(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${De(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${De(t)}`})}async readWait(t,n,r={}){let s=of(t,n,r),i=await this.client.call("query",{sql:s});return hs(i)}}});function qo(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function lf(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new k("INVALID_ARGUMENT","limit must be a positive integer");return e}function Kn(e){return String(e).split(".").map(Wo).join(".")}function Wo(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function df(e){return Vo(JSON.stringify(e))}function ff(e){return JSON.stringify(e)}function mf(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?df(e):Vo(e)}function Vo(e){return`'${String(e).replace(/'/g,"''")}'`}var rn,_s=E(()=>{He();rn=class{constructor(t){this.db=t}async insert(t,n){qo(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Kn(t)} DOCUMENT VALUES (${ff(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new k("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:s.rid,item:s}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new k("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=lf(n.limit),s=n.orderBy??n.order_by??"rid ASC",i=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${Kn(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){qo(r,"documents.patch patch");let s=Object.entries(r);if(s.length===0)throw new k("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new k("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${Wo(c)} = ${mf(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Kn(t)} SET ${i} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new k("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let s=(await this.db.delete(t,n)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${Kn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function pf(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${qe(n)}.${qe(r)})`}return hf(e)}function gf(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function qe(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function hf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):zo(e)}function zo(e){return`'${String(e).replace(/'/g,"''")}'`}var sn,Rs=E(()=>{sn=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){gf(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(zo).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${qe(s)} ${qe(t)} = ${pf(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${qe(r)} ${qe(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${qe(r)} ${qe(t)}`})}}});function yf(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Dt(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function wf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ko(e)}function Ko(e){return`'${String(e).replace(/'/g,"''")}'`}var on,Ss=E(()=>{on=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){yf(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Ko).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Dt(s)}.${Dt(t)} = ${wf(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Dt(r)}.${Dt(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Dt(r)}.${Dt(t)}`})}}});async function Qo(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(bf)}async function Zo(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Rf(t)}`)).rows??[]).some(r=>r.name===String(t))}function bf(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Yo(e){return String(e).split(".").map(_f).join(".")}function _f(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Rf(e){return`'${String(e).replace(/'/g,"''")}'`}var an,ks=E(()=>{He();an=class e{constructor(t,n,r=null,s=[],i=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=s,this.params=i}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new k("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(Yo).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Yo(this.collection)}${n}`,i=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?i:i.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function Ct(e,t={}){let n=ls(e);if(Cf(n),n.kind==="embedded"){let r=Df(n,t.auth);if(r.token||r.username)throw new k("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=Pf(n),i=t.binary??Jo(),o=await Lo(i,s),a=new zn(o);return await a.call("version",{}),new xs(a,{transport:"embedded"})}}function ea(e){return Ef(e),e instanceof Float32Array||e instanceof Float64Array?Array.from(e):e instanceof Date?{$ts:String(BigInt(e.getTime())*1000000n)}:e instanceof Uint8Array||typeof Buffer<"u"&&e instanceof Buffer?{$bytes:vf(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Of(e)?{$uuid:e}:e}function Ef(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new k("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new k("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new k("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function xf(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ea):e.map(ea)}function vf(e){let t=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(typeof Buffer<"u")return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64");let n="";for(let r of t)n+=String.fromCharCode(r);return btoa(n)}function Tf(e){if(typeof Buffer<"u"){let r=Buffer.from(e,"base64");return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function Of(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Yn(e){if(Array.isArray(e))return e.map(Yn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Tf(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let r=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(r/1000000n))}}let n={};for(let[r,s]of Object.entries(e))n[r]=Yn(s);return n}return e}function Pf(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Df(e,t){let n={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return n;if(typeof t!="object")throw new TypeError("options.auth must be an object");if(t.token!=null){if(typeof t.token!="string"||t.token.length===0)throw new TypeError("options.auth.token must be a non-empty string");n.token=t.token}if(t.apiKey!=null){if(typeof t.apiKey!="string"||t.apiKey.length===0)throw new TypeError("options.auth.apiKey must be a non-empty string");n.token=t.apiKey}if(t.username!=null){if(typeof t.username!="string"||t.username.length===0)throw new TypeError("options.auth.username must be a non-empty string");n.username=t.username}if(t.password!=null){if(typeof t.password!="string"||t.password.length===0)throw new TypeError("options.auth.password must be a non-empty string");n.password=t.password}return t.loginUrl!=null&&(n.loginUrl=t.loginUrl),n}function Cf(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",Sf)}function vs(){return new k(Xo,`${Xo}: nested transactions are not supported on one connection`)}function na(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function $f(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${ta} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function If(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new k("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${ta} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new k("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var Sf,kf,ta,Xo,Qn,Es,xs,Ts=E(()=>{Mo();Fo();He();ds();fs();gs();bs();_s();Rs();Ss();ks();fs();gs();bs();_s();Rs();Ss();ks();ds();Sf="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",kf="1.0",ta="1.0.9",Xo="NESTED_TX_NOT_SUPPORTED";Qn=class{constructor(t){this.db=t}query(t,...n){return this.db.query(t,...n)}execute(t,...n){return this.db.execute(t,...n)}insert(t,n){return this.db.insert(t,n)}bulkInsert(t,n){return this.db.bulkInsert(t,n)}async transaction(){throw vs()}},Es=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw vs();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new k("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new k("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new k("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Qn(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){na(n,r)}throw n}}},xs=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=kf,this.cache=new tn(t,this.transport),this.queue=new nn(t),this.queues=this.queue,this.documents=new rn(this);let r=new Pt(t);this.kv=Object.assign((s="kv_default")=>new Pt(t,s),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(s="red.config")=>new sn(t,s),this.vault=(s="red.vault")=>new on(t,s),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new k("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=xf(n);return r==null?this.client.call("query",{sql:t}).then(Yn):this.client.call("query",{sql:t,params:r}).then(Yn)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return $f(r,"insert")}async bulkInsert(t,n){if(Array.isArray(n)&&n.length===0)return{affected:0,rids:[],ids:[]};let r=await this.client.call("bulk_insert",{collection:t,payloads:n});return If(r,n.length)}tx(){return new Es(this)}async transaction(t){if(this.inTransaction)throw vs();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let n=!1;try{await this.query("BEGIN"),n=!0;let r=await t(new Qn(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){na(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return Zo(this,t)}list(){return Qo(this)}from(t){return new an(this,t)}get(t,n){return this.client.call("get",{collection:t,id:String(n)})}delete(t,n){return this.client.call("delete",{collection:t,id:String(n)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,n){return this.client.call("auth.login",{username:t,password:n})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,n){return this.client.call("auth.change_password",{current_password:t,new_password:n})}createApiKey({username:t,role:n}={}){return this.client.call("auth.create_api_key",{username:t,role:n})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});import{isAbsolute as _S,join as $t,resolve as RS}from"node:path";function Nf(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function ra(e){return $t(Nf(e),Af)}function sa(e){return $t(ra(e),"state")}function Bf(e){return $t(ra(e),"tmp")}function J(e){return $t(sa(e),"rsp")}function Lf(e){return $t(sa(e),"red-skills.rdb")}function Mf(e){return $t(Bf(e),"red-skills.rdb")}function aa(e,t){let n=Lf(e);if(t(n))return n;let r=Mf(e);if(t(r))throw jf();return n}function jf(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}var Af,ia,oa,Ce=E(()=>{Af=".red";ia=".red/state/red-skills.rdb";oa=".red/tmp/red-skills.rdb"});function _(e,t){return new cn(e,t)}function C(e,t){return new ot(e,t)}function It(e){return e instanceof ot?e:e instanceof cn?new ot(e.line,e.reason):new ot(0,String(e&&e.message?e.message:e))}var cn,ot,un=E(()=>{cn=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},ot=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});function Zn(e){let t=e.split(`
|
|
12
|
-
`);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(n=>n.endsWith("\r")?n.slice(0,-1):n)}function ye(e){return _(e,"invalid quoted string")}function we(e,t){if(e==="")return"";if(e.startsWith('"'))return
|
|
13
|
-
`;break;case"r":n+="\r";break;case"t":n+=" ";break;case"u":{let o=e.slice(r,r+4);if(!/^[0-9a-fA-F]{4}$/.test(o))throw ye(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw ye(t);n+=String.fromCharCode(a),r+=4;break}default:throw ye(t)}continue}if(s<" "&&s!==" ")throw ye(t);n+=s}throw ye(t)}function at(e,t,n){if(e==="")return[];let r=[],s=0,i=!1,o=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(o){o=!1;continue}c==="\\"&&i?o=!0:c==='"'?i=!i:c===t&&!i&&(r.push(e.slice(s,a).trim()),s=a+1)}if(i||o)throw ye(n);return r.push(e.slice(s).trim()),r}function
|
|
14
|
-
`:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:n<" "?t+=`\\u${n.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=n}return`${t}"`}function At(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var I,Os=E(()=>{un();I=","});function
|
|
15
|
-
`);for(let[o,a]of Object.entries(n))fn(e,r+1),e.push(de(o),": ",i.paths.map(c=>be(
|
|
11
|
+
`).find(f=>f.startsWith("data: "));l&&(yield JSON.parse(l.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function af(e,t,n){let{waitMs:r,group:s=null,count:i=null}=n??{};if(!Number.isInteger(r)||r<0)throw new k("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=De(e),a=De(t),c=s!=null?` GROUP ${De(s)}`:"",u=i!=null?ys(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${u} WAIT ${r}ms`}function De(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function ys(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new k("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function cf(e){if(!Number.isInteger(e))throw new k("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function uf(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new k("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${cf(e.priority)}`),e.key!=null&&(t+=` KEY ${ws(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${ws(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function lf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?ws(e):JSON.stringify(e)}function ws(e){return`'${String(e).replace(/'/g,"''")}'`}function hs(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var nn,bs=E(()=>{He();nn=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${De(t)}`})}push(t,n,r={}){let s=uf(r);return this.client.call("query",{sql:`QUEUE PUSH ${De(t)} ${lf(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${De(t)}${ys(n)}`});return hs(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${De(t)}${ys(n)}`});return hs(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${De(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${De(t)}`})}async readWait(t,n,r={}){let s=af(t,n,r),i=await this.client.call("query",{sql:s});return hs(i)}}});function Wo(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new k("INVALID_ARGUMENT",`${t} must be an object`)}function df(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new k("INVALID_ARGUMENT","limit must be a positive integer");return e}function Kn(e){return String(e).split(".").map(Vo).join(".")}function Vo(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function ff(e){return zo(JSON.stringify(e))}function mf(e){return JSON.stringify(e)}function pf(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?ff(e):zo(e)}function zo(e){return`'${String(e).replace(/'/g,"''")}'`}var rn,_s=E(()=>{He();rn=class{constructor(t){this.db=t}async insert(t,n){Wo(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${Kn(t)} DOCUMENT VALUES (${mf(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new k("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:s.rid,item:s}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new k("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=df(n.limit),s=n.orderBy??n.order_by??"rid ASC",i=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${Kn(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Wo(r,"documents.patch patch");let s=Object.entries(r);if(s.length===0)throw new k("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new k("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,u])=>`${Vo(c)} = ${pf(u)}`).join(", "),a=(await this.db.query(`UPDATE ${Kn(t)} SET ${i} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new k("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let s=(await this.db.delete(t,n)).affected??0;return{affected:s,deleted:s>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${Kn(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function gf(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${qe(n)}.${qe(r)})`}return yf(e)}function hf(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function qe(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function yf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Ko(e)}function Ko(e){return`'${String(e).replace(/'/g,"''")}'`}var sn,Rs=E(()=>{sn=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){hf(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Ko).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${qe(s)} ${qe(t)} = ${gf(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${qe(r)} ${qe(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${qe(r)} ${qe(t)}`})}}});function wf(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function Dt(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function bf(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Yo(e)}function Yo(e){return`'${String(e).replace(/'/g,"''")}'`}var on,Ss=E(()=>{on=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){wf(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Yo).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Dt(s)}.${Dt(t)} = ${bf(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Dt(r)}.${Dt(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Dt(r)}.${Dt(t)}`})}}});async function Zo(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(_f)}async function Xo(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Sf(t)}`)).rows??[]).some(r=>r.name===String(t))}function _f(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function Qo(e){return String(e).split(".").map(Rf).join(".")}function Rf(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new k("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Sf(e){return`'${String(e).replace(/'/g,"''")}'`}var an,ks=E(()=>{He();an=class e{constructor(t,n,r=null,s=[],i=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=s,this.params=i}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new k("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(Qo).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${Qo(this.collection)}${n}`,i=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?i:i.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function Ct(e,t={}){let n=ls(e);if($f(n),n.kind==="embedded"){let r=Cf(n,t.auth);if(r.token||r.username)throw new k("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=Df(n),i=t.binary??Fo(),o=await Mo(i,s),a=new zn(o);return await a.call("version",{}),new xs(a,{transport:"embedded"})}}function ta(e){return xf(e),e instanceof Float32Array||e instanceof Float64Array?Array.from(e):e instanceof Date?{$ts:String(BigInt(e.getTime())*1000000n)}:e instanceof Uint8Array||typeof Buffer<"u"&&e instanceof Buffer?{$bytes:Tf(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&Pf(e)?{$uuid:e}:e}function xf(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new k("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new k("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new k("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function vf(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ta):e.map(ta)}function Tf(e){let t=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength);if(typeof Buffer<"u")return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64");let n="";for(let r of t)n+=String.fromCharCode(r);return btoa(n)}function Of(e){if(typeof Buffer<"u"){let r=Buffer.from(e,"base64");return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}function Pf(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Yn(e){if(Array.isArray(e))return e.map(Yn);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Of(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let r=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(r/1000000n))}}let n={};for(let[r,s]of Object.entries(e))n[r]=Yn(s);return n}return e}function Df(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Cf(e,t){let n={token:e.token??e.apiKey??null,username:e.username??null,password:e.password??null,loginUrl:e.loginUrl??null};if(t==null)return n;if(typeof t!="object")throw new TypeError("options.auth must be an object");if(t.token!=null){if(typeof t.token!="string"||t.token.length===0)throw new TypeError("options.auth.token must be a non-empty string");n.token=t.token}if(t.apiKey!=null){if(typeof t.apiKey!="string"||t.apiKey.length===0)throw new TypeError("options.auth.apiKey must be a non-empty string");n.token=t.apiKey}if(t.username!=null){if(typeof t.username!="string"||t.username.length===0)throw new TypeError("options.auth.username must be a non-empty string");n.username=t.username}if(t.password!=null){if(typeof t.password!="string"||t.password.length===0)throw new TypeError("options.auth.password must be a non-empty string");n.password=t.password}return t.loginUrl!=null&&(n.loginUrl=t.loginUrl),n}function $f(e){if(e.kind!=="embedded")throw new k("EMBEDDED_ONLY",kf)}function vs(){return new k(ea,`${ea}: nested transactions are not supported on one connection`)}function ra(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function If(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new k("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${na} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Af(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new k("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${na} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new k("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var kf,Ef,na,ea,Qn,Es,xs,Ts=E(()=>{jo();Go();He();ds();fs();gs();bs();_s();Rs();Ss();ks();fs();gs();bs();_s();Rs();Ss();ks();ds();kf="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Ef="1.0",na="1.0.9",ea="NESTED_TX_NOT_SUPPORTED";Qn=class{constructor(t){this.db=t}query(t,...n){return this.db.query(t,...n)}execute(t,...n){return this.db.execute(t,...n)}insert(t,n){return this.db.insert(t,n)}bulkInsert(t,n){return this.db.bulkInsert(t,n)}async transaction(){throw vs()}},Es=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw vs();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new k("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new k("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new k("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Qn(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){ra(n,r)}throw n}}},xs=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Ef,this.cache=new tn(t,this.transport),this.queue=new nn(t),this.queues=this.queue,this.documents=new rn(this);let r=new Pt(t);this.kv=Object.assign((s="kv_default")=>new Pt(t,s),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(s="red.config")=>new sn(t,s),this.vault=(s="red.vault")=>new on(t,s),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new k("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=vf(n);return r==null?this.client.call("query",{sql:t}).then(Yn):this.client.call("query",{sql:t,params:r}).then(Yn)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return If(r,"insert")}async bulkInsert(t,n){if(Array.isArray(n)&&n.length===0)return{affected:0,rids:[],ids:[]};let r=await this.client.call("bulk_insert",{collection:t,payloads:n});return Af(r,n.length)}tx(){return new Es(this)}async transaction(t){if(this.inTransaction)throw vs();if(typeof t!="function")throw new TypeError("transaction(callback) requires a function");this.inTransaction=!0;let n=!1;try{await this.query("BEGIN"),n=!0;let r=await t(new Qn(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){ra(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return Xo(this,t)}list(){return Zo(this)}from(t){return new an(this,t)}get(t,n){return this.client.call("get",{collection:t,id:String(n)})}delete(t,n){return this.client.call("delete",{collection:t,id:String(n)})}health(){return this.client.call("health",{})}version(){return this.client.call("version",{})}login(t,n){return this.client.call("auth.login",{username:t,password:n})}whoami(){return this.client.call("auth.whoami",{})}changePassword(t,n){return this.client.call("auth.change_password",{current_password:t,new_password:n})}createApiKey({username:t,role:n}={}){return this.client.call("auth.create_api_key",{username:t,role:n})}revokeApiKey(t){return this.client.call("auth.revoke_api_key",{key:t})}close(){return this.client.close()}}});import{isAbsolute as RS,join as $t,resolve as SS}from"node:path";function Bf(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function sa(e){return $t(Bf(e),Nf)}function ia(e){return $t(sa(e),"state")}function Lf(e){return $t(sa(e),"tmp")}function F(e){return $t(ia(e),"rsp")}function Mf(e){return $t(ia(e),"red-skills.rdb")}function jf(e){return $t(Lf(e),"red-skills.rdb")}function ca(e,t){let n=Mf(e);if(t(n))return n;let r=jf(e);if(t(r))throw Uf();return n}function Uf(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}var Nf,oa,aa,Ce=E(()=>{Nf=".red";oa=".red/state/red-skills.rdb";aa=".red/tmp/red-skills.rdb"});function _(e,t){return new cn(e,t)}function C(e,t){return new ot(e,t)}function It(e){return e instanceof ot?e:e instanceof cn?new ot(e.line,e.reason):new ot(0,String(e&&e.message?e.message:e))}var cn,ot,un=E(()=>{cn=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonError",this.line=t,this.reason=n}},ot=class extends Error{constructor(t,n){super(t===0?n:`line ${t}: ${n}`),this.name="ToonlError",this.line=t,this.reason=n}}});function Zn(e){let t=e.split(`
|
|
12
|
+
`);return t.length>0&&t[t.length-1]===""&&t.pop(),t.map(n=>n.endsWith("\r")?n.slice(0,-1):n)}function ye(e){return _(e,"invalid quoted string")}function we(e,t){if(e==="")return"";if(e.startsWith('"'))return ua(e,t);if(e.includes('"'))throw ye(t);return e==="true"?!0:e==="false"?!1:e==="null"?null:Jf(e)?Number(e):e}function $e(e,t){let n=e.trim();if(n.startsWith('"'))return[ua(n,t),!0];if(n.includes('"')||/\s/.test(n))throw _(t,"expected non-empty field name");return[n,!1]}function ua(e,t){if(e[0]!=='"')throw ye(t);let n="",r=1;for(;r<e.length;){let s=e[r];if(r+=1,s==='"'){if(e.slice(r).trim()==="")return n;throw ye(t)}if(s==="\\"){let i=e[r];switch(r+=1,i){case'"':n+='"';break;case"\\":n+="\\";break;case"n":n+=`
|
|
13
|
+
`;break;case"r":n+="\r";break;case"t":n+=" ";break;case"u":{let o=e.slice(r,r+4);if(!/^[0-9a-fA-F]{4}$/.test(o))throw ye(t);let a=Number.parseInt(o,16);if(a>=55296&&a<=57343)throw ye(t);n+=String.fromCharCode(a),r+=4;break}default:throw ye(t)}continue}if(s<" "&&s!==" ")throw ye(t);n+=s}throw ye(t)}function at(e,t,n){if(e==="")return[];let r=[],s=0,i=!1,o=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(o){o=!1;continue}c==="\\"&&i?o=!0:c==='"'?i=!i:c===t&&!i&&(r.push(e.slice(s,a).trim()),s=a+1)}if(i||o)throw ye(n);return r.push(e.slice(s).trim()),r}function Y(e,t,n){let r=!1,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"&&r)s=!0;else if(o==='"')r=!r;else if(o===t&&!r)return i}if(r||s)throw ye(n);return-1}function Jf(e){return/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Ff(e){return/^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$/.test(e)}function Gf(e){if(Object.is(e,-0))return"0";if(!Number.isFinite(e))throw _(0,"number is not representable in TOON");return String(e)}function ln(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"}function be(e,t){if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return Gf(e);if(typeof e=="string")return qf(e,t);throw _(0,"not a primitive")}function Hf(e){return/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)}function de(e){return Hf(e)?e:la(e)}function qf(e,t){return Wf(e,t)?la(e):e}function Wf(e,t){return e===""||e.trim()!==e||e==="true"||e==="false"||e==="null"||Ff(e)||/[:"\\[\]{}]/.test(e)||/[\u0000-\u001f]/.test(e)||e.includes(t)||e.startsWith("-")}function la(e){let t='"';for(let n of e)switch(n){case'"':t+='\\"';break;case"\\":t+="\\\\";break;case`
|
|
14
|
+
`:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;default:n<" "?t+=`\\u${n.charCodeAt(0).toString(16).padStart(4,"0")}`:t+=n}return`${t}"`}function At(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}var I,Os=E(()=>{un();I=","});function Vf(e={}){return{indent:Math.max(1,e.indent??Ns),strict:e.strict??!0,expandPaths:e.expandPaths==="safe"||e.expandPaths===!0}}function zf(e,t){let n=[],r=!1;return Zn(e).forEach((s,i)=>{let o=i+1;if(s.trim()===""){r=!0;return}let a=s.length-s.replace(/^ +/,"").length;if(s[a]===" ")throw _(o,"invalid indentation");if(t.strict&&a%t.indent!==0)throw _(o,"invalid indentation");n.push({number:o,depth:Math.floor(a/t.indent),content:s.slice(a),blankBefore:r}),r=!1}),n}function j(e,t){let n=Vf(t),r=zf(e,n),s=r[0];if(s===void 0)return{};if(s.depth!==0)throw _(s.number,"invalid indentation");let i=r.length===1;if(i&&s.content.trim()==="[]")return[];if(s.content.startsWith("[")){let u;try{u=Ms(s.content,Y(s.content,":",s.number))}catch(l){if(n.strict)throw Is(l,s.number);u=void 0}if(u!==void 0)return Qf(u,r,n)}if(i&&Y(s.content,":",s.number)===-1)return we(s.content.trim(),s.number);let o={index:0},a=Bs(r,o,0,n),c=r[o.index];if(c!==void 0)throw _(c.number,"expected end of document");return a}function Bs(e,t,n,r){let s={};for(;t.index<e.length;){let i=e[t.index];if(i.depth<n)break;if(i.depth>n)throw _(i.number,"invalid indentation");let{key:o,quoted:a,value:c}=Kf(e,t,n,r);ma(s,o,a,c,r,i.number)}return s}function Kf(e,t,n,r){let s=e[t.index],i=s.content,o=Y(i,":",s.number);if(o===-1)throw _(s.number,"expected `key: value`");let a=i.slice(0,o),c=i.slice(o+1),u=Y(a,"[",s.number),l=Y(a,"{",s.number);if(l!==-1&&(u===-1||l<u)){let h;try{h=tm(a)}catch(g){if(r.strict)throw Is(g,s.number);t.index+=1;let w=Ps(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:w}}if(c.trim()!=="")throw _(s.number,"expected keyed map rows");let m=Yf(h,e,t,n+1,r);return{key:h.key,quoted:h.keyQuoted,value:m}}if(u!==-1){let h;try{h=Ms(a,o)}catch(g){if(r.strict)throw Is(g,s.number);t.index+=1;let w=Ps(e,t,n,c,s.number,r);return{key:a.trim(),quoted:!1,value:w}}if(h.key===""&&!h.keyQuoted)throw _(s.number,"expected non-empty field name");let m=Ls(h,c,e,t,n,r);return{key:h.key,quoted:h.keyQuoted,value:m}}let[f,d]=$e(a,s.number);if(f===""&&!d)throw _(s.number,"expected non-empty field name");t.index+=1;let p=Ps(e,t,n,c,s.number,r);return{key:f,quoted:d,value:p}}function Ps(e,t,n,r,s,i){let o=r.trim();if(o==="[]")return[];if(o!=="")return we(o,s);let a=e[t.index];return a!==void 0&&a.depth>n?Bs(e,t,n+1,i):{}}function Yf(e,t,n,r,s){let i={};for(n.index+=1;n.index<t.length;){let o=t[n.index];if(o.depth<r)break;if(o.depth>r)throw _(o.number,"invalid indentation");if(o.blankBefore&&s.strict)throw _(o.number,"blank line inside keyed map");let a=Y(o.content,":",o.number);if(a===-1)throw _(o.number,"expected `key: value`");let[c,u]=$e(o.content.slice(0,a),o.number);if(c===""&&!u)throw _(o.number,"expected non-empty field name");let l=at(o.content.slice(a+1).trim(),e.delimiter,o.number);if(l.length!==e.fields.length)throw _(o.number,"keyed map row length mismatch");let f={};e.fields.forEach((d,p)=>{dn(f,d,we(l[p],o.number),s,o.number)}),ma(i,c,u,f,s,o.number),n.index+=1}return i}function Qf(e,t,n){let r=t[0],s=Y(r.content,":",r.number);if(s===-1)throw _(r.number,"expected `key: value`");let i=r.content.slice(s+1),o={index:0},a=Ls(e,i,t,o,0,n),c=t[o.index];if(c!==void 0)throw _(c.number,"expected end of document");return a}function Ls(e,t,n,r,s,i){let o=n[r.index].number,a=t.trim();if(r.index+=1,e.fields!==void 0){if(a!=="")throw _(o,"expected tabular rows");return Zf(e,e.fields,n,r,s+1,i)}if(a!==""){let c=at(a,e.delimiter,o).map(u=>we(u,o));if(c.length!==e.len)throw _(o,"array length mismatch");return c}return Xf(e,n,r,s+1,i)}function Zf(e,t,n,r,s,i){let o=[];for(;o.length<e.len;){let c=n[r.index];if(c===void 0)throw Cs(n,r.index);if(c.depth<s)break;if(c.depth>s)throw _(c.number,"invalid indentation");if(c.blankBefore&&i.strict)throw _(c.number,"blank line inside array");if(!da(c.content,e.delimiter,c.number))break;let u=at(c.content,e.delimiter,c.number);if(u.length!==t.length)throw _(c.number,"array row length mismatch");let l={};t.forEach((f,d)=>{dn(l,f,we(u[d],c.number),i,c.number)}),o.push(l),r.index+=1}if(o.length!==e.len)throw Cs(n,r.index);let a=n[r.index];if(a!==void 0&&a.depth>=s&&da(a.content,e.delimiter,a.number))throw _(a.number,"array length mismatch");return o}function da(e,t,n){let r=Y(e,":",n);if(r===-1)return!0;let s=Y(e,t,n);return s===-1?!1:s<r}function Xf(e,t,n,r,s){let i=[];for(;i.length<e.len;){let a=t[n.index];if(a===void 0||a.depth<r)throw Cs(t,n.index);if(a.depth>r)throw _(a.number,"invalid indentation");if(a.blankBefore&&s.strict)throw _(a.number,"blank line inside array");i.push(em(t,n,r,s))}let o=t[n.index];if(o!==void 0&&o.depth>=r)throw _(o.number,"array length mismatch");return i}function em(e,t,n,r){let s=e[t.index];if(!s.content.startsWith("-"))throw _(s.number,"expected array item");let i=s.content.slice(1).replace(/^\s+/,"");if(i==="")return t.index+=1,{};if(i.startsWith("[")){let o=Y(i,":",s.number),a;try{a=Ms(i,o)}catch{a=void 0}if(a!==void 0){let c=i.slice(o+1);return Ls(a,c,e,t,n,r)}}if(Y(i,":",s.number)!==-1){let o=[{number:s.number,depth:n+1,content:i,blankBefore:!1}];for(t.index+=1;t.index<e.length;){let a=e[t.index];if(a.depth<=n)break;o.push(a),t.index+=1}return Bs(o,{index:0},n+1,r)}return t.index+=1,we(i,s.number)}function Cs(e,t){let n=e[t]??e[e.length-1];return _(n===void 0?1:n.number,"array length mismatch")}function Ms(e,t){if(t===-1)throw _(0,"array header missing colon");let n=e.slice(0,t),r=Y(n,"[",0);if(r===-1)throw _(0,"invalid array header");let s,i;try{[s,i]=$e(n.slice(0,r),0)}catch{throw _(0,"invalid array header")}let o=n.slice(r+1),a=o.indexOf("]");if(a===-1)throw _(0,"invalid array header");let c=o.slice(0,a),u=/^[0-9]*/.exec(c)[0];if(u===""||u.length>1&&u.startsWith("0"))throw _(0,"invalid array header");let l=Number.parseInt(u,10),f;switch(c.slice(u.length)){case"":f=",";break;case" ":f=" ";break;case"|":f="|";break;default:throw _(0,"invalid array header")}let d=o.slice(a+1),p;if(d==="")p=void 0;else if(d.startsWith("{")&&d.endsWith("}")&&d.length>=2)try{p=fa(d.slice(1,-1),f)}catch(h){throw _(0,h.reason==="duplicate key"?"duplicate key":"invalid array header")}else throw _(0,"invalid array header");return{key:s,keyQuoted:i,len:l,delimiter:f,fields:p}}function tm(e){let t=Y(e,"{",0);if(t===-1||!e.endsWith("}"))throw _(0,"invalid keyed map header");let n,r;try{[n,r]=$e(e.slice(0,t),0)}catch{throw _(0,"invalid keyed map header")}if(n===""&&!r)throw _(0,"expected non-empty field name");let s;try{s=fa(e.slice(t+1,-1),I)}catch(i){throw _(0,i.reason==="duplicate key"?"duplicate key":"invalid keyed map header")}return{key:n,keyQuoted:r,delimiter:I,fields:s}}function fa(e,t){let n=[],r=0;function s(a,c){let u=0;for(;r<e.length&&!(c&&e[r]==="}");){if(e[r]===t||e[r]==="}")throw _(0,"invalid array header");let l=r;for(;r<e.length;){let d=e[r];if(d==='"'){i();continue}if(d===t||d==="{"||d==="}")break;r+=1}let[f]=$e(e.slice(l,r),0);if(f==="")throw _(0,"invalid array header");if(u+=1,e[r]==="{"){r+=1;let d=n.length;if(s([...a,f],!0),e[r]!=="}"||n.length===d)throw _(0,"invalid array header");r+=1}else n.push([...a,f]);if(e[r]===t){if(r+=1,r>=e.length||e[r]==="}")throw _(0,"invalid array header");continue}if(c?e[r]==="}":r===e.length)break;throw _(0,"invalid array header")}if(u===0)throw _(0,"invalid array header")}function i(){for(r+=1;r<e.length;){let a=e[r];if(r+=1,a==="\\")r+=1;else if(a==='"')return}}if(s([],!1),r!==e.length)throw _(0,"invalid array header");let o=new Set;for(let a=0;a<n.length;a+=1)for(let c=a+1;c<n.length;c+=1)if(nm(n[a],n[c])||$s(n[a],n[c])||$s(n[c],n[a]))throw _(0,"duplicate key");for(let a of n){let c=a.join("\0");if(o.has(c))throw _(0,"duplicate key");o.add(c)}return n}function nm(e,t){return e.length===t.length&&$s(e,t)}function $s(e,t){return t.every((n,r)=>e[r]===n)}function Is(e,t){return _(t,e.reason??String(e.message))}function ma(e,t,n,r,s,i){if(s.expandPaths&&!n&&t.includes(".")){let o=t.split(".");if(o.every(rm)){dn(e,o,r,s,i);return}}dn(e,[t],r,s,i)}function dn(e,t,n,r,s){let i=t[0],o=Object.prototype.hasOwnProperty.call(e,i);if(t.length===1){if(o&&r.strict)throw _(s,"duplicate key");At(e,i,n);return}if(o&&!Nt(e[i])){if(r.strict)throw _(s,"path expansion conflict");At(e,i,{})}else o||At(e,i,{});dn(e[i],t.slice(1),n,r,s)}function rm(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function Nt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function D(e,t={}){let n={nestedTabularHeaders:t.nestedTabularHeaders===!0,keyedMapCollapse:t.keyedMapCollapse===!0},r=[];return Array.isArray(e)?js(r,void 0,e,0,!1,n):Nt(e)?pa(r,e,0,n):r.push(be(e,I)),r.join("")}function fn(e,t){e.push(" ".repeat(t*Ns))}function pa(e,t,n,r){for(let[s,i]of Object.entries(t))fn(e,n),As(e,s,i,n,r)}function As(e,t,n,r,s){if(Array.isArray(n)){js(e,t,n,r,!1,s);return}if(Nt(n)){let i=s.keyedMapCollapse?im(n,s):void 0;if(i!==void 0){e.push(de(t),"{",i.fields.map(Us).join(I),`}:
|
|
15
|
+
`);for(let[o,a]of Object.entries(n))fn(e,r+1),e.push(de(o),": ",i.paths.map(c=>be(wa(a,c),I)).join(I),`
|
|
16
16
|
`);return}e.push(de(t),`:
|
|
17
|
-
`),
|
|
17
|
+
`),pa(e,n,r+1,s);return}e.push(de(t),": ",be(n,I),`
|
|
18
18
|
`)}function js(e,t,n,r,s,i){if(n.length===0){t!==void 0?e.push(de(t),`: []
|
|
19
19
|
`):s?e.push(`[0]:
|
|
20
20
|
`):e.push(`[]
|
|
21
21
|
`);return}if(n.every(ln)){Ds(e,t,n.length,void 0),e.push(" "),e.push(n.map(a=>be(a,I)).join(I)),e.push(`
|
|
22
|
-
`);return}let o=s?void 0:
|
|
23
|
-
`);for(let a of n)fn(e,r+1),e.push(o.paths.map(c=>be(
|
|
22
|
+
`);return}let o=s?void 0:ga(n,i);if(o!==void 0){Ds(e,t,n.length,o.fields),e.push(`
|
|
23
|
+
`);for(let a of n)fn(e,r+1),e.push(o.paths.map(c=>be(wa(a,c),I)).join(I)),e.push(`
|
|
24
24
|
`);return}Ds(e,t,n.length,void 0),e.push(`
|
|
25
|
-
`);for(let a of n)fn(e,r+1),
|
|
25
|
+
`);for(let a of n)fn(e,r+1),sm(e,a,r+1,i)}function sm(e,t,n,r){if(Array.isArray(t)){e.push("- "),js(e,void 0,t,n,!0,r);return}if(Nt(t)){let s=Object.entries(t);if(s.length===0){e.push(`-
|
|
26
26
|
`);return}e.push("- "),As(e,s[0][0],s[0][1],n+1,r);for(let[i,o]of s.slice(1))fn(e,n+1),As(e,i,o,n+1,r);return}e.push("- ",be(t,I),`
|
|
27
|
-
`)}function Ds(e,t,n,r){t!==void 0&&e.push(de(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(Us).join(I),"}"),e.push(":")}function
|
|
28
|
-
`}function
|
|
29
|
-
`}function Js(e,t){return t.map(de).join(e)}function
|
|
30
|
-
`,h=()=>
|
|
31
|
-
`;return y+=x,a+=1,c+=1,u+=x.length,y},declareLane(g,w){if(f)throw C(0,"TOONL encoder is closed");let y=
|
|
32
|
-
`},end(){return f?"":(f=!0,p())}}}var
|
|
33
|
-
`)}function Vs(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??
|
|
34
|
-
`).trim()}var ut=E(()=>{"use strict";
|
|
35
|
-
`)){let s=r.replace(/\r$/,""),i=s.trim();if(!i||i.startsWith("#"))continue;let o=s.indexOf(":");if(o<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,o).trim();if(!c)continue;let u=s.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(f=>f.key).join(".")===t)return
|
|
27
|
+
`)}function Ds(e,t,n,r){t!==void 0&&e.push(de(t)),e.push("[",String(n),"]"),r!==void 0&&e.push("{",r.map(Us).join(I),"}"),e.push(":")}function ga(e,t){let n=ha(e.map(r=>({value:r})),t);return n===void 0?void 0:{fields:n,paths:ya(n)}}function im(e,t){let n=Object.values(e);if(!(n.length<2))return ga(n,t)}function ha(e,t){let n=e[0]?.value;if(!Nt(n))return;let r=Object.keys(n).map(s=>({key:s}));if(r.length!==0){for(let{value:s}of e)if(!Nt(s)||Object.keys(s).length!==r.length||r.some(o=>!Object.prototype.hasOwnProperty.call(s,o.key)))return;for(let s of r){let i=e.map(({value:a})=>({value:a[s.key]}));if(i.every(({value:a})=>ln(a)))continue;if(!t.nestedTabularHeaders)return;let o=ha(i,t);if(o===void 0)return;s.children=o}return r}}function ya(e,t=[]){return e.flatMap(n=>{let r=[...t,n.key];return n.children===void 0?[r]:ya(n.children,r)})}function wa(e,t){let n=e;for(let r of t)n=n[r];return n}function Us(e){return e.children===void 0?de(e.key):`${de(e.key)}{${e.children.map(Us).join(I)}}`}var Ns,mn=E(()=>{un();Os();Ns=2});var ba=E(()=>{mn()});function am(e,t){if(!(e.startsWith("[=")&&e.endsWith("]")))return null;let n=e.slice(2,-1);if(!/^[0-9]+$/.test(n))throw C(t,"invalid trailer count");return Number.parseInt(n,10)}function Da(e,t){if(!Pa.test(e))throw C(t,"invalid tag")}function cm(e,t){let n=e.indexOf(":");if(n<=0)return null;let r=e.slice(0,n);if(!Pa.test(r)){if(/^[A-Za-z0-9_-]/.test(r)&&/^[^,[\]|{}:\t ]+$/.test(r))throw C(t,"invalid tag");return null}return{tag:r,cellsText:e.slice(n+1)}}function um(e,t){if(!e.startsWith("["))return null;let n=e.slice(1),r=n.indexOf("]");if(r===-1)throw C(t,"invalid header");let s=n.slice(0,r),i=s.startsWith("~"),o=i?s.slice(1):s;if(!i&&o.startsWith("="))return null;if(!Ta.includes(o)&&o!=="")throw C(t,"invalid header delimiter");let a=o===""?I:o,c=n.slice(r+1),u=null;if(!i&&c.startsWith("<")){let d=c.indexOf(">");if(d===-1)throw C(t,"invalid tag");if(u=c.slice(1,d),Da(u,t),o!=="")throw C(t,"invalid header delimiter");c=c.slice(d+1)}if(!c.startsWith("{")||!c.endsWith("}:"))throw C(t,"invalid header");let l=c.slice(1,-2),f;try{f=at(l,a,t).map(d=>$e(d,t)[0])}catch(d){throw It(d)}if(f.length===0||f.some(d=>d===""))throw C(t,"invalid header fields");return{delimiter:a,fields:f,fieldText:l,continuation:i,tag:u}}function lm(e,t,n){if(e===null||e.delimiter===void 0)throw C(n,"continuation header before header");if(e.delimiter!==t.delimiter||e.fieldText!==t.fieldText)throw C(n,"continuation header mismatch")}function _a(e,t,n,r){let s;try{s=at(e,t,r)}catch(i){throw It(i)}if(s.length!==n)throw C(r,"row arity mismatch");for(let i of s)try{we(i,r)}catch(o){throw It(o)}return s}function dm(e,t,n){let r={};return e.forEach((s,i)=>{try{At(r,s,we(t[i],n))}catch(o){throw It(o)}}),r}function fm(e,t,n){if(e.startsWith("- "))throw C(t,"reserved line prefix");let r=am(e,t);if(r!==null){if(n===null||n.delimiter===void 0)throw C(t,"trailer without header");if(n.rowCount!==r)throw C(t,"trailer count mismatch");return{kind:"trailer"}}let s=um(e,t);if(s!==null)return s.continuation?(lm(n,s,t),{kind:"continuation"}):s.tag!==null?{kind:"tag-header",header:s}:{kind:"header",header:s};let i=cm(e,t);if(i!==null){let o=n?.taggedLanes?.get(i.tag);if(o===void 0)throw C(t,"unknown tag");return{kind:"tagged-row",tag:i.tag,cells:_a(i.cellsText,o.delimiter,o.fields.length,t)}}if(n===null||n.delimiter===void 0)throw C(t,"row before header");return{kind:"row",cells:_a(e,n.delimiter,n.fields.length,t)}}function mm(e,t={}){let n=[],r=new Map,s=[],i=[],o=null,a=!1,c=!1;function u(p,h){let m=i.at(-1);if(m!==void 0&&m.lane===p.lane&&m.delimiter===p.delimiter&&m.fieldText===p.fieldText){m.rows.push(h);return}i.push({lane:p.lane,delimiter:p.delimiter,fields:p.fields,fieldText:p.fieldText,rows:[h]})}function l(){o!==null&&s.push({delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,lane:o.lane,rows:o.rows})}function f(p,h,m){let g=r.get(p);if(g===void 0){if(r.size>=Oa)throw C(m,"too many tagged lanes");g={segments:[],current:null},r.set(p,g),n.push(p)}else g.current!==null&&g.segments.push(g.current);g.current={lane:p,delimiter:h.delimiter,fields:h.fields,fieldText:h.fieldText,rows:[]},g.delimiter=h.delimiter,g.fields=h.fields,g.fieldText=h.fieldText}if(Zn(e).forEach((p,h)=>{let m=h+1;if(p==="")return;let g=o===null?{taggedLanes:r}:{delimiter:o.delimiter,fields:o.fields,fieldText:o.fieldText,rowCount:o.rows.length,taggedLanes:r},w=fm(p,m,g);if(w.kind==="trailer"){l(),o=null;return}if(w.kind!=="continuation"){if(w.kind==="tag-header"){c=!0,f(w.header.tag,w.header,m);return}if(w.kind==="header"){l(),a||(n.push(null),a=!0),o={lane:null,delimiter:w.header.delimiter,fields:w.header.fields,fieldText:w.header.fieldText,rows:[]};return}if(w.kind==="tagged-row"){c=!0;let y=r.get(w.tag).current;y.rows.push(w.cells),u(y,w.cells);return}if(o===null)throw C(m,"row before header");o.rows.push(w.cells),u(o,w.cells)}}),!c)return l(),t.preserveInterleaving===!0,s;let d=[];l();for(let p of n){if(p===null){d.push(...s);continue}let h=r.get(p);d.push(...h.segments),h.current!==null&&d.push(h.current)}return t.preserveInterleaving===!0?i:d}function Xn(e){return mm(e).flatMap(t=>t.rows.map(n=>dm(t.fields,n,0)))}function pm(e){if(!Ta.includes(e))throw C(0,"invalid header delimiter")}function Ra(e,t,n=!1){return`[${`${n?"~":""}${e===I?"":e}`}]{${t}}:
|
|
28
|
+
`}function Sa(e,t){return`[]<${e}>{${t}}:
|
|
29
|
+
`}function Js(e,t){return t.map(de).join(e)}function gm(e){if(!Array.isArray(e)||e.length===0)throw C(0,"TOONL header requires fields");return e.map(t=>{let n;try{[n]=$e(String(t),0)}catch(r){throw It(r)}if(n==="")throw C(0,"TOONL header requires fields");return n})}function ka(e,t){return e!==null&&e.length===t.length&&e.every((n,r)=>n===t[r])}function Ea(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw C(0,"TOONL continuation cadence must be positive")}function hm(e,t,n){return e.continuationEveryRows!==void 0&&t>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&n>=e.continuationEveryBytes}function xa(e){if(e===null||typeof e!="object"||Array.isArray(e))throw C(0,"TOONL output requires object rows");let t=Object.keys(e);if(t.length===0)throw C(0,"TOONL output requires object rows");if(t.some(n=>!ln(e[n])))throw C(0,"TOONL rows must be flat objects");return t}function ym(e){return JSON.stringify([...e].sort())}function va(e,t){let n=ym(e),r=t.get(n);return r!==void 0?r:(t.set(n,e),e)}function er({delimiter:e=I,trailer:t=!0,continuationEveryRows:n,continuationEveryBytes:r}={}){pm(e),Ea(n),Ea(r);let s=null,i="",o=new Map,a=0,c=0,u=0,l=new Map,f=!1,d={continuationEveryRows:n,continuationEveryBytes:r},p=()=>s===null||!t?"":`[=${a}]
|
|
30
|
+
`,h=()=>hm(d,c,u)?(c=0,u=0,Ra(e,i,!0)):"",m=g=>{Da(g,0);let w=l.get(g);if(w===void 0){if(l.size>=Oa)throw C(0,"too many tagged lanes");w={fields:null,fieldsByShape:new Map},l.set(g,w)}return w};return{push(g){if(f)throw C(0,"TOONL encoder is closed");let w=va(xa(g),o),y="";(s===null||s.length!==w.length||s.some((O,L)=>O!==w[L]))&&(y+=p(),s=w,i=Js(e,s),a=0,c=0,u=0,y+=Ra(e,i));let T=s.map(O=>be(g[O],e));y+=h();let x=`${T.join(e)}
|
|
31
|
+
`;return y+=x,a+=1,c+=1,u+=x.length,y},declareLane(g,w){if(f)throw C(0,"TOONL encoder is closed");let y=gm(w),T=Js(I,y),x=m(g);return ka(x.fields,y)?"":(x.fields=y,Sa(g,T))},pushTagged(g,w){if(f)throw C(0,"TOONL encoder is closed");let y=m(g),T=va(xa(w),y.fieldsByShape),x=Js(I,T),O=T.map(ce=>be(w[ce],I)),L="";return ka(y.fields,T)||(y.fields=T,L+=Sa(g,x)),`${L}${g}:${O.join(I)}
|
|
32
|
+
`},end(){return f?"":(f=!0,p())}}}var Ta,Oa,Pa,NS,BS,Ca=E(()=>{un();mn();Os();Ta=[I,"|"," "],Oa=8,Pa=/^[A-Za-z0-9_-]+$/,NS=new TextEncoder,BS=new TextDecoder});var Q=E(()=>{un();mn();mn();ba();Ca()});function G(e){return D(e,{keyedMapCollapse:!0})}var wm,bm,uk,pn=E(()=>{Q();Ce();wm=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],bm=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.jsonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.jsonl",toonPath:".red/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.json",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.json",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],uk=[...wm,...bm]});function ct(e){let t=[],n;for(let r=0;r<e.length;r++){let s=e[r];if(s==="--query"){n=e[++r];continue}if(s.startsWith("--query=")){n=s.slice(8);continue}t.push(s)}return{argv:t,query:n?.trim()||void 0}}function Rm(e,t){if(!t)return!0;let n=Fs(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function H(e,t){return t?e.filter(n=>Rm(n,t)):[...e]}function Ie(e,t){return Gs(e,t,{includeLegacyHelp:!0})}function Gs(e,t,n={}){let r=t.filter(Boolean);return r.length===0?e:{...e,...n.includeLegacyHelp?{help:r}:{},next_steps:r}}function Fs(e){return Array.isArray(e)?e.map(Fs).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Fs).join(" "):String(e??"")}var gn=E(()=>{"use strict"});function qs(e,t,n=Ia){let r=Math.max(0,Math.floor(e)),s=n in Aa?n:Ia,i=Aa[s],o=t?Math.floor(r*(1-.25)):null,a=t?Math.ceil(r*(1+.25)):null;return{tokens_saved:r,tokens_saved_estimated:t,token_estimate_range_pct:t?.25:null,tokens_saved_low:o,tokens_saved_high:a,dollars_saved_estimate_usd:Hs(r,i),dollars_saved_low_usd:o==null?null:Hs(o,i),dollars_saved_high_usd:a==null?null:Hs(a,i),pricing_model_family:s,pricing_input_usd_per_million_tokens:i,pricing_note:Sm}}function Hs(e,t){return km(Math.max(0,e)/1e6*t)}function hn(e){return`$${e.toFixed(6)}`}function km(e){return Math.round(e*1e6)/1e6}var Ia,Aa,Sm,Ws=E(()=>{"use strict";Ia="gpt-5",Aa={"gpt-5":1.25,"gpt-5-mini":.25,"gpt-5-nano":.05,"gpt-4.1":2,"gpt-4.1-mini":.4,"gpt-4o":2.5,"gpt-4o-mini":.15,"claude-opus-4.1":15,"claude-opus-4":15,"claude-sonnet-4.5":3,"claude-sonnet-4":3,"claude-haiku-4.5":1,"claude-haiku-3.5":.8},Sm="estimate derived from byte-based token estimate when token counts are estimated"});function Em(e){return e==="no-op"?0:e==="usage"?2:1}function N(e){return Buffer.from(`${D(Vs(e))}
|
|
33
|
+
`)}function Vs(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??Em(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=xm(e.diagnostics,3)),t}function fe(e,t,n){let s=([n,t].find(o=>o.trim())??"").trim(),i=s.toLowerCase();return/\bgh\b/.test(e)&&(i.includes("gh_token")||i.includes("not logged in")||i.includes("authentication"))?{command:e,category:"real-error",error:yn(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:/\bgh\b/.test(e)&&i.includes("rate limit")?{command:e,category:"real-error",error:yn(s)||"GitHub API rate limit exceeded",help:"gh auth status",diagnostics:s}:i.includes("not a git repository")?{command:e,category:"real-error",error:yn(s)||"not a git repository",help:"git status",diagnostics:s}:i.includes("repository not found")||i.includes("could not resolve host")?{command:e,category:"real-error",error:yn(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:yn(s)||"command failed",help:`${e} --help`,diagnostics:s}}function tr(e,t,n,r){return N({command:e,category:"usage",error:`unknown flag: ${t}`,help:r,validFlags:n})}function yn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function xm(e,t){return e.split(/\r?\n/).slice(0,t).join(`
|
|
34
|
+
`).trim()}var ut=E(()=>{"use strict";Q()});import{existsSync as vm,readFileSync as yk}from"node:fs";import{dirname as Tm,join as Om}from"node:path";function Na(e,t){let n=e;for(let r=0;r<16;r++){let s=Om(n,t);if(vm(s))return s;let i=Tm(n);if(i===n)break;n=i}return null}function Pm(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function nr(e,t){let n=[];for(let r of e.split(`
|
|
35
|
+
`)){let s=r.replace(/\r$/,""),i=s.trim();if(!i||i.startsWith("#"))continue;let o=s.indexOf(":");if(o<0)continue;let a=s.length-s.trimStart().length,c=s.slice(0,o).trim();if(!c)continue;let u=s.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),u&&n.map(f=>f.key).join(".")===t)return Pm(u)}}var Ba=E(()=>{});import{createConnection as Dm}from"node:net";async function Lt(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=Dm(e.socketPath),o=!1,a="",c=setTimeout(()=>{u(()=>s(new Error("resident rsp server timed out"))),i.destroy()},n);function u(l){o||(o=!0,clearTimeout(c),l())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
|
|
36
36
|
`)}),i.on("data",l=>{a+=l.toString("utf8");let f=a.indexOf(`
|
|
37
|
-
`);if(f<0)return;let d=a.slice(0,f);u(()=>{try{r(JSON.parse(d))}catch(p){s(p)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var zs=E(()=>{});import{createHash as
|
|
38
|
-
`,{encoding:"utf8",mode:384}),await
|
|
37
|
+
`);if(f<0)return;let d=a.slice(0,f);u(()=>{try{r(JSON.parse(d))}catch(p){s(p)}}),i.end()}),i.on("error",l=>u(()=>s(l))),i.on("close",()=>{o||u(()=>s(new Error("resident rsp server closed without response")))})})}var zs=E(()=>{});import{createHash as Cm,randomUUID as Ja}from"node:crypto";import{spawn as Fa}from"node:child_process";import{constants as Ks}from"node:fs";import{readFileSync as $m}from"node:fs";import{mkdir as rr,open as Im,readFile as Ga,rename as Am,rm as _e,stat as Nm,writeFile as Bm}from"node:fs/promises";import{tmpdir as Lm}from"node:os";import{dirname as We,join as ie,resolve as sr}from"node:path";import{fileURLToPath as Ha}from"node:url";function Ve(e){let t=Km(e)??sr(e),n=zm(t),r=F(t);return{rootDir:t,socketPath:ie(n,"rsp.sock"),pidPath:ie(n,"rsp.pid"),lockPath:ie(n,"rsp.lock"),wakeLockPath:ie(t,".red","tmp","rsp.wake.lock"),summaryPath:ie(r,"rsp-status-summary.json"),registryPath:ie(r,"rsp-resident.pid.json")}}async function ir(e,t){if(await rr(We(e.socketPath),{recursive:!0,mode:448}),await ja(e.socketPath,t))return;await Ma(e,t);let n=await Ka(e.lockPath);if(n)try{if(await ja(e.socketPath,t))return;await Ma(e,t),await Jm(e.socketPath);let r=Fm(e,t);await La(e.socketPath,r);return}finally{await n.close(),await _e(e.lockPath,{force:!0})}await La(e.socketPath)}async function lt(e,t=200){try{return await Wa(e,t)!=null}catch{return!1}}async function Wa(e,t=200){let n=await Lt({socketPath:e,timeoutMs:t},{id:Ja(),op:"ping"});return n.ok?Xa(n.value)?{version:Xm(n.value.version)}:{}:null}async function or(e,t){if(await rr(We(e.socketPath),{recursive:!0,mode:448}),await lt(e.socketPath,50))return!1;let n=await Ka(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=Qa(t);return Fa(r,[...s,"warm-resident","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath,"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function Va(e,t){try{await ir(e,t)}finally{await _e(e.wakeLockPath,{force:!0})}}async function bn(e){try{let t=qm(await Ga(e,"utf8"));return ep(t)?t:null}catch{return null}}async function ar(e,t){let n={version:qa,pid:t.pid??process.pid,socket_path:t.socket_path,store_uri:t.store_uri,resident_version:t.resident_version,started_at:t.started_at??new Date().toISOString()};await rr(We(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`;await Bm(r,`${D(n)}
|
|
38
|
+
`,{encoding:"utf8",mode:384}),await Am(r,e)}async function cr(e,t=process.pid){try{let n=await bn(e);if(n&&n.pid!==t)return;await _e(e,{force:!0})}catch{}}async function wn(e){let t=await bn(e.registryPath);if(!t)try{return await Ga(e.registryPath,"utf8"),{registry_path:e.registryPath,state:"invalid"}}catch{return{registry_path:e.registryPath,state:"missing"}}if(!Mt(t.pid))return{registry_path:e.registryPath,state:"registered-dead",entry:t};let n=await lt(t.socket_path,100);return n&&await Vm(t.store_uri)?{registry_path:e.registryPath,state:"registered-alive-store-missing",entry:t}:{registry_path:e.registryPath,state:n?"registered-alive-socket-healthy":"registered-alive-socket-dead",entry:t}}async function za(e){let t=await wn(e);return t.state==="registered-dead"||t.state==="invalid"?(await _e(e.registryPath,{force:!0}),await wn(e)):(t.state==="registered-alive-socket-dead"||t.state==="registered-alive-store-missing")&&t.entry?(await Ya(t.entry.pid),await _e(e.registryPath,{force:!0}),await _e(t.entry.socket_path,{force:!0}),await wn(e)):t}async function La(e,t){let n=Date.now()+Um(),r;for(;Date.now()<n;){if(await lt(e))return;if(t){let s=t.spawnError();if(s)throw new Error(Ys("resident rsp server spawn failed",t,s));if(t.child.exitCode!=null||t.child.signalCode!=null)throw new Error(Ys("resident rsp server exited before ready",t))}await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error(t?Ys("resident rsp server did not start",t):"resident rsp server did not start")}function Um(){let e=Number(process.env.RSP_RESIDENT_READY_TIMEOUT_MS??"");return Number.isFinite(e)&&e>0?e:jm}async function Jm(e){await _e(e,{force:!0})}async function Ka(e){await rr(We(e),{recursive:!0,mode:448});try{return await Im(e,Ks.O_CREAT|Ks.O_EXCL|Ks.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Fm(e,t){let[n,r]=Qa(t),s=process.env.RSP_DEBUG==="1",i,o="",a=Fa(n,[...r,"server","--socket",e.socketPath,"--pid-file",e.pidPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours??6),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs??3e4),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs??2e3),"--idle-ms",String(t.idleMs??3e5),"--resident-version",t.clientVersion??"0.0.0-dev","--registry",e.registryPath],{cwd:e.rootDir,detached:!0,stdio:s?["ignore","ignore","pipe"]:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return a.on("error",c=>{i=c}),s&&(a.stderr?.setEncoding("utf8"),a.stderr?.on("data",c=>{o=Hm(`${o}${c}`,Gm)})),a.unref(),{child:a,stderrTail:()=>o,spawnError:()=>i}}function Ys(e,t,n){let r=[e];n&&r.push(`error: ${n.message}`),t.child.exitCode!=null&&r.push(`exit code: ${t.child.exitCode}`),t.child.signalCode!=null&&r.push(`signal: ${t.child.signalCode}`);let s=t.stderrTail().trimEnd();return s&&r.push(`stderr tail:
|
|
39
39
|
${s}`),r.join(`
|
|
40
|
-
`)}function Gm(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function Hm(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return Y(t)}}async function La(e,t){try{let n=await bn(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Mt(n.pid)){await _e(e.registryPath,{force:!0});return}if(await lt(n.socket_path,100))return;if(Qa(t.clientVersion,n.resident_version)&&(await qm(n.pid,1500),!Mt(n.pid))){await _e(e.registryPath,{force:!0});return}await Ka(n.pid),await _e(e.registryPath,{force:!0})}catch{}}function Mt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Ka(e){if(!Mt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function qm(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Mt(e))return;await new Promise(r=>setTimeout(r,50))}}async function Wm(e){if(!e.startsWith("file://"))return!1;try{return await Am(Ga(e)),!1}catch(t){return t.code==="ENOENT"}}function Ya(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?sr(process.argv[1]):Ga(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Vm(e){let t=Dm("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=ie(n,"red-skills",t);if(ie(s,"rsp.sock").length<Lm)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ie(Bm(),`red-skills-${r}`,t)}function zm(e){let t=sr(e);for(let n=0;n<32;n++){try{let s=Qs(ie(t,".git"));if(s!=null)return Km(t,s)??t;if(Qs(ie(t,".git","HEAD"))!=null||Qs(ie(t,".red","config.yaml"))!=null)return t}catch{}let r=We(t);if(r===t)return null;t=r}return null}function Km(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=sr(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?We(We(We(r))):null}function Qs(e){try{return Cm(e,"utf8")}catch{return null}}async function Ma(e,t){let n=await qa(e).catch(()=>null);return n?Qa(t.clientVersion,n.version)?(await Ym(e,t.clientVersion),await ep(e),!1):!0:!1}async function Ym(e,t){try{await Lt({socketPath:e,timeoutMs:200},{id:Ua(),op:"handover",clientVersion:t})}catch{}}function Qa(e,t){return!e||!t?!1:Qm(e,t)>0}function Qm(e,t){let n=ja(e),r=ja(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function ja(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function Za(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Zm(e){return typeof e=="string"&&e.length>0?e:void 0}function Xm(e){return Za(e)&&e.version===Ha&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function ep(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await lt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Lm,Ha,Mm,Fm,ur=E(()=>{ne();Ce();zs();Lm=108,Ha=1,Mm=5e3;Fm=8*1024});var sc={};M(sc,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,DEFAULT_RSP_IDLE_MS:()=>fr,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>rc,DEFAULT_RSP_STORE_PATH:()=>Zs,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>dr,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>ec,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>tc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>lr,DEFAULT_RSP_TTL_DAYS:()=>Be,MIN_RSP_IDLE_MS:()=>nc,resolveRspConfig:()=>je});import{existsSync as tp,readFileSync as np}from"node:fs";import{join as rp,resolve as Xa}from"node:path";function je(e,t,n){let r=Aa(Xa(e),rp(".red","config.yaml")),s=r?np(r,"utf8"):"",i=nr(s,"rsp.enabled")==="true",o=nr(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=Ae(me(s,"rsp.ttlDays"),Be),u=Ae(jt(t.RSP_EPHEMERAL_TTL_HOURS)??me(s,"rsp.ephemeralTtlHours"),Le),l=Ae(me(s,"rsp.byteBudget"),Me),f=Ae(me(s,"rsp.telemetryTtlDays"),lr),d=Ae(me(s,"rsp.telemetryByteBudget")??me(s,"rsp.byteBudget"),dr),p=Ae(jt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??me(s,"rsp.telemetryDrainIntervalMs"),ec),h=Ae(jt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??me(s,"rsp.telemetryDrainTimeoutMs"),tc),m=sp(jt(t.RSP_IDLE_MS)??me(s,"rsp.idleMs"),fr,nc),g=Ae(jt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??me(s,"rsp.heavyGitByteThreshold"),Ne),w=ip(jt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??me(s,"rsp.measurement.holdoutShare"),rc),y=Ve(e).rootDir,T=n??t.RSP_STORE_URI??`file://${aa(Xa(y),tp)}`;return{enabled:i,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:h,idleMs:m,heavyGitByteThreshold:g,measurementHoldoutShare:w}}function me(e,t){let n=nr(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Ae(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function sp(e,t,n){let r=Ae(e,t);return Math.max(r,n)}function ip(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function jt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Ne,Zs,Be,Le,Me,lr,dr,ec,tc,fr,nc,rc,Re=E(()=>{"use strict";Na();Ce();ur();Ne=8*1024,Zs=ia,Be=7,Le=6,Me=64*1024*1024,lr=90,dr=4*1024*1024,ec=3e4,tc=2e3,fr=5*6e4,nc=5e3,rc=0});var Gt={};M(Gt,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_TTL_DAYS:()=>Be,RSP_ELISION_COLLECTION:()=>Q,RspElisionStore:()=>xn,ensureReddbBinaryFromWarmCache:()=>Sc,storageClassForCommand:()=>ft});import{createHash as br}from"node:crypto";import{spawnSync as En}from"node:child_process";import{existsSync as ri}from"node:fs";import{mkdir as pc,readFile as gc,readdir as hc,rename as gr,rm as _n,stat as Xs,writeFile as op}from"node:fs/promises";import{homedir as ap}from"node:os";import{basename as yc,dirname as wc,join as Rn}from"node:path";import{fileURLToPath as cp}from"node:url";import{gunzipSync as up,gzipSync as lp}from"node:zlib";function ic(e,t){return`el:${br("sha256").update("rsp-elision-v1\0").update(e).update("\0").update(JSON.stringify({command:t.command,loss:t.loss})).digest("hex").slice(0,12)}`}function dt(e){return`record:${e.slice(3)}`}function Ut(e){return`expired:${e.slice(3)}`}function ei(){return"index:v1"}function dp(e){return`blob:${e}`}function fp(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function ft(e){let t=e.trim().split(/\s+/).filter(Boolean),n=t[0]??"";if(n==="cat")return"derivable";if(n==="git"){let r=t[1]??"";return r==="log"||r==="diff"||r==="blame"||r==="show"?"derivable":_r(t)?"re-executable":"ephemeral"}return"ephemeral"}function mr(e){return Rr(e.storage_class)?e.storage_class:ft(e.command)}function bc(e){return Rr(e.storage_class)?e.storage_class:ft(e.command)}function oc(e){let t=wp(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=bc(r);if(t[s].records+=1,t[s].raw_bytes+=r.raw_bytes??r.bytes,r.blob_key){if(n[s].has(r.blob_key))continue;n[s].add(r.blob_key)}t[s].bytes+=r.bytes}return t}function ac(e,t,n){let r=t.getTime();return[...e].sort((s,i)=>i.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,n)).map(s=>{let i=Math.max(0,Math.floor((r-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:i,age_display:mp(i),storage_class:bc(s),recover:`rsp show ${s.handle}`}})}function mp(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let n=Math.floor(t/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function cc(e,t,n,r){let s=t==="ephemeral"?r*60*60*1e3:n*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function Jt(e){let t=0,n=new Set;for(let r of e){if(r.blob_key){if(n.has(r.blob_key))continue;n.add(r.blob_key)}t+=r.bytes}return t}function uc(e,t){let n=process.cwd(),r=En("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=En("git",["hash-object","-w","--stdin"],{cwd:n,input:e,encoding:"buffer"});if(s.status!==0)return null;let i=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(i)?{kind:"git-blob",command:t,cwd:n,object_ids:[i],working_tree_fingerprint:pp(n),original_bytes:e.length}:null}function pp(e){let t=ti(e,["rev-parse","HEAD"])||"unborn",n=ti(e,["write-tree"])||"no-index",r=ti(e,["status","--porcelain=v1","-z"])||"";return br("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function ti(e,t){let n=En("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function lc(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!_r(n))return null;let r=_c(process.cwd(),n,e.length);return!r||Ft(r)!==Ft(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:n,original_bytes:e.length,content_hash:Ft(e)}}function _r(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function Ft(e){return br("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function dc(e,t,n,r){return t?Buffer.byteLength(JSON.stringify(t),"utf8"):n?Buffer.byteLength(JSON.stringify(n),"utf8"):r?r.stored_bytes:e.length}function fc(e){return typeof e.stored_bytes=="number"?e.stored_bytes:e.derivation_recipe?Buffer.byteLength(JSON.stringify(e.derivation_recipe),"utf8"):e.reexecution_recipe?Buffer.byteLength(JSON.stringify(e.reexecution_recipe),"utf8"):e.blob_key?typeof e.stored_bytes=="number"?e.stored_bytes:0:e.original_bytes}function mc(e,t,n){let r=lp(e);return{key:dp(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function gp(e){try{let t=up(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function hp(e){let t=e.object_ids[0];if(!t)return null;let n=En("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return n.status!==0||n.stdout.length!==e.original_bytes?null:n.stdout}function yp(e){if(!_r(e.argv))return null;let t=_c(e.cwd,e.argv,e.original_bytes);return t?Ft(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
|
|
41
|
-
`,"utf8"),t]):null}function
|
|
42
|
-
`,"utf8"),await gr(n,e)}function pr(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function
|
|
43
|
-
`,"utf8");o>this.opts.byteBudget||o>=t||(this.document=i,await kn(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(
|
|
44
|
-
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(ei());return
|
|
40
|
+
`)}function Hm(e,t){let n=Buffer.byteLength(e,"utf8");return n<=t?e:Buffer.from(e,"utf8").subarray(n-t).toString("utf8").replace(/^\uFFFD+/,"")}function qm(e){let t=e.trim();if(!t)return null;try{return JSON.parse(t)}catch{return j(t)}}async function Ma(e,t){try{let n=await bn(e.registryPath);if(!n||n.socket_path!==e.socketPath||n.store_uri!==t.storeUri)return;if(!Mt(n.pid)){await _e(e.registryPath,{force:!0});return}if(await lt(n.socket_path,100))return;if(Za(t.clientVersion,n.resident_version)&&(await Wm(n.pid,1500),!Mt(n.pid))){await _e(e.registryPath,{force:!0});return}await Ya(n.pid),await _e(e.registryPath,{force:!0})}catch{}}function Mt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch{return!1}}async function Ya(e){if(!Mt(e))return;try{process.kill(e,"SIGTERM")}catch{return}let t=Date.now()+1e3;for(;Date.now()<t;){if(!Mt(e))return;await new Promise(n=>setTimeout(n,50))}try{process.kill(e,"SIGKILL")}catch{}}async function Wm(e,t){let n=Date.now()+t;for(;Date.now()<n;){if(!Mt(e))return;await new Promise(r=>setTimeout(r,50))}}async function Vm(e){if(!e.startsWith("file://"))return!1;try{return await Nm(Ha(e)),!1}catch(t){return t.code==="ENOENT"}}function Qa(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?sr(process.argv[1]):Ha(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function zm(e){let t=Cm("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=ie(n,"red-skills",t);if(ie(s,"rsp.sock").length<Mm)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return ie(Lm(),`red-skills-${r}`,t)}function Km(e){let t=sr(e);for(let n=0;n<32;n++){try{let s=Qs(ie(t,".git"));if(s!=null)return Ym(t,s)??t;if(Qs(ie(t,".git","HEAD"))!=null||Qs(ie(t,".red","config.yaml"))!=null)return t}catch{}let r=We(t);if(r===t)return null;t=r}return null}function Ym(e,t){let n=/^gitdir:\s*(.+?)\s*$/m.exec(t);if(!n)return null;let r=sr(e,n[1]);return/[/\\]worktrees[/\\][^/\\]+$/.test(r)?We(We(We(r))):null}function Qs(e){try{return $m(e,"utf8")}catch{return null}}async function ja(e,t){let n=await Wa(e).catch(()=>null);return n?Za(t.clientVersion,n.version)?(await Qm(e,t.clientVersion),await tp(e),!1):!0:!1}async function Qm(e,t){try{await Lt({socketPath:e,timeoutMs:200},{id:Ja(),op:"handover",clientVersion:t})}catch{}}function Za(e,t){return!e||!t?!1:Zm(e,t)>0}function Zm(e,t){let n=Ua(e),r=Ua(t);return!n||!r?0:n.major-r.major||n.minor-r.minor||n.patch-r.patch}function Ua(e){let t=/^(\d+)\.(\d+)\.(\d+)/.exec(String(e).trim());return t?{major:Number(t[1]),minor:Number(t[2]),patch:Number(t[3])}:null}function Xa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Xm(e){return typeof e=="string"&&e.length>0?e:void 0}function ep(e){return Xa(e)&&e.version===qa&&Number.isInteger(e.pid)&&typeof e.socket_path=="string"&&typeof e.store_uri=="string"&&typeof e.resident_version=="string"&&typeof e.started_at=="string"}async function tp(e){let t=Date.now()+1e3;for(;Date.now()<t;){if(!await lt(e,50))return;await new Promise(n=>setTimeout(n,50))}}var Mm,qa,jm,Gm,ur=E(()=>{Q();Ce();zs();Mm=108,qa=1,jm=5e3;Gm=8*1024});var ic={};M(ic,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,DEFAULT_RSP_IDLE_MS:()=>fr,DEFAULT_RSP_MEASUREMENT_HOLDOUT_SHARE:()=>sc,DEFAULT_RSP_STORE_PATH:()=>Zs,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>dr,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>tc,DEFAULT_RSP_TELEMETRY_DRAIN_TIMEOUT_MS:()=>nc,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>lr,DEFAULT_RSP_TTL_DAYS:()=>Be,MIN_RSP_IDLE_MS:()=>rc,resolveRspConfig:()=>je});import{existsSync as np,readFileSync as rp}from"node:fs";import{join as sp,resolve as ec}from"node:path";function je(e,t,n){let r=Na(ec(e),sp(".red","config.yaml")),s=r?rp(r,"utf8"):"",i=nr(s,"rsp.enabled")==="true",o=nr(s,"rsp.proxy.enabled"),a=o===void 0?i:o==="true",c=Ae(me(s,"rsp.ttlDays"),Be),u=Ae(jt(t.RSP_EPHEMERAL_TTL_HOURS)??me(s,"rsp.ephemeralTtlHours"),Le),l=Ae(me(s,"rsp.byteBudget"),Me),f=Ae(me(s,"rsp.telemetryTtlDays"),lr),d=Ae(me(s,"rsp.telemetryByteBudget")??me(s,"rsp.byteBudget"),dr),p=Ae(jt(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??me(s,"rsp.telemetryDrainIntervalMs"),tc),h=Ae(jt(t.RSP_TELEMETRY_DRAIN_TIMEOUT_MS)??me(s,"rsp.telemetryDrainTimeoutMs"),nc),m=ip(jt(t.RSP_IDLE_MS)??me(s,"rsp.idleMs"),fr,rc),g=Ae(jt(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??me(s,"rsp.heavyGitByteThreshold"),Ne),w=op(jt(t.RSP_MEASUREMENT_HOLDOUT_SHARE)??me(s,"rsp.measurement.holdoutShare"),sc),y=Ve(e).rootDir,T=n??t.RSP_STORE_URI??`file://${ca(ec(y),np)}`;return{enabled:i,proxyEnabled:a,storeUri:T,ttlDays:c,ephemeralTtlHours:u,byteBudget:l,telemetryTtlDays:f,telemetryByteBudget:d,telemetryDrainIntervalMs:p,telemetryDrainTimeoutMs:h,idleMs:m,heavyGitByteThreshold:g,measurementHoldoutShare:w}}function me(e,t){let n=nr(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Ae(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ip(e,t,n){let r=Ae(e,t);return Math.max(r,n)}function op(e,t){return typeof e!="number"||!Number.isFinite(e)?t:e<=0?0:e>=1?1:e}function jt(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var Ne,Zs,Be,Le,Me,lr,dr,tc,nc,fr,rc,sc,Re=E(()=>{"use strict";Ba();Ce();ur();Ne=8*1024,Zs=oa,Be=7,Le=6,Me=64*1024*1024,lr=90,dr=4*1024*1024,tc=3e4,nc=2e3,fr=5*6e4,rc=5e3,sc=0});var Gt={};M(Gt,{DEFAULT_RSP_BYTE_BUDGET:()=>Me,DEFAULT_RSP_EPHEMERAL_TTL_HOURS:()=>Le,DEFAULT_RSP_TTL_DAYS:()=>Be,RSP_ELISION_COLLECTION:()=>Z,RspElisionStore:()=>xn,ensureReddbBinaryFromWarmCache:()=>kc,storageClassForCommand:()=>ft});import{createHash as br}from"node:crypto";import{spawnSync as En}from"node:child_process";import{existsSync as ri}from"node:fs";import{mkdir as gc,readFile as hc,readdir as yc,rename as gr,rm as _n,stat as Xs,writeFile as ap}from"node:fs/promises";import{homedir as cp}from"node:os";import{basename as wc,dirname as bc,join as Rn}from"node:path";import{fileURLToPath as up}from"node:url";import{gunzipSync as lp,gzipSync as dp}from"node:zlib";function oc(e,t){return`el:${br("sha256").update("rsp-elision-v1\0").update(e).update("\0").update(JSON.stringify({command:t.command,loss:t.loss})).digest("hex").slice(0,12)}`}function dt(e){return`record:${e.slice(3)}`}function Ut(e){return`expired:${e.slice(3)}`}function ei(){return"index:v1"}function fp(e){return`blob:${e}`}function mp(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid RedDB identifier: ${e}`);return e}function ft(e){let t=e.trim().split(/\s+/).filter(Boolean),n=t[0]??"";if(n==="cat")return"derivable";if(n==="git"){let r=t[1]??"";return r==="log"||r==="diff"||r==="blame"||r==="show"?"derivable":_r(t)?"re-executable":"ephemeral"}return"ephemeral"}function mr(e){return Rr(e.storage_class)?e.storage_class:ft(e.command)}function _c(e){return Rr(e.storage_class)?e.storage_class:ft(e.command)}function ac(e){let t=bp(),n={derivable:new Set,"re-executable":new Set,ephemeral:new Set};for(let r of e){let s=_c(r);if(t[s].records+=1,t[s].raw_bytes+=r.raw_bytes??r.bytes,r.blob_key){if(n[s].has(r.blob_key))continue;n[s].add(r.blob_key)}t[s].bytes+=r.bytes}return t}function cc(e,t,n){let r=t.getTime();return[...e].sort((s,i)=>i.created_at.localeCompare(s.created_at)).slice(0,Math.max(0,n)).map(s=>{let i=Math.max(0,Math.floor((r-Date.parse(s.created_at))/1e3));return{handle:s.handle,command:s.command,created_at:s.created_at,expires_at:s.expires_at,age_seconds:i,age_display:pp(i),storage_class:_c(s),recover:`rsp show ${s.handle}`}})}function pp(e){if(e<60)return`${e}s`;let t=Math.floor(e/60);if(t<60)return`${t}m`;let n=Math.floor(t/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function uc(e,t,n,r){let s=t==="ephemeral"?r*60*60*1e3:n*24*60*60*1e3;return new Date(e.getTime()+s).toISOString()}function Jt(e){let t=0,n=new Set;for(let r of e){if(r.blob_key){if(n.has(r.blob_key))continue;n.add(r.blob_key)}t+=r.bytes}return t}function lc(e,t){let n=process.cwd(),r=En("git",["rev-parse","--is-inside-work-tree"],{cwd:n,encoding:"utf8"});if(r.status!==0||r.stdout.trim()!=="true")return null;let s=En("git",["hash-object","-w","--stdin"],{cwd:n,input:e,encoding:"buffer"});if(s.status!==0)return null;let i=s.stdout.toString("utf8").trim();return/^[0-9a-f]{40,64}$/.test(i)?{kind:"git-blob",command:t,cwd:n,object_ids:[i],working_tree_fingerprint:gp(n),original_bytes:e.length}:null}function gp(e){let t=ti(e,["rev-parse","HEAD"])||"unborn",n=ti(e,["write-tree"])||"no-index",r=ti(e,["status","--porcelain=v1","-z"])||"";return br("sha256").update(t).update("\0").update(n).update("\0").update(r).digest("hex")}function ti(e,t){let n=En("git",t,{cwd:e,encoding:"utf8"});return n.status===0?n.stdout.trim():null}function dc(e,t){let n=t.trim().split(/\s+/).filter(Boolean);if(!_r(n))return null;let r=Rc(process.cwd(),n,e.length);return!r||Ft(r)!==Ft(e)?null:{kind:"command",command:t,cwd:process.cwd(),argv:n,original_bytes:e.length,content_hash:Ft(e)}}function _r(e){return e[0]==="git"?e[1]==="status"?!0:e[1]!=="branch"?!1:e.length===2||e.slice(2).every(t=>/^-[avvr]+$/.test(t)):!1}function Ft(e){return br("sha256").update("rsp-reexecutable-content-v1\0").update(e).digest("hex")}function fc(e,t,n,r){return t?Buffer.byteLength(JSON.stringify(t),"utf8"):n?Buffer.byteLength(JSON.stringify(n),"utf8"):r?r.stored_bytes:e.length}function mc(e){return typeof e.stored_bytes=="number"?e.stored_bytes:e.derivation_recipe?Buffer.byteLength(JSON.stringify(e.derivation_recipe),"utf8"):e.reexecution_recipe?Buffer.byteLength(JSON.stringify(e.reexecution_recipe),"utf8"):e.blob_key?typeof e.stored_bytes=="number"?e.stored_bytes:0:e.original_bytes}function pc(e,t,n){let r=dp(e);return{key:fp(t),content_hash:t,encoding:"gzip+base64",bytes:r.toString("base64"),original_bytes:e.length,stored_bytes:r.length,created_at:n}}function hp(e){try{let t=lp(Buffer.from(e.bytes,"base64"));return t.length===e.original_bytes?t:null}catch{return null}}function yp(e){let t=e.object_ids[0];if(!t)return null;let n=En("git",["cat-file","-p",t],{cwd:e.cwd,encoding:"buffer",maxBuffer:Math.max(e.original_bytes+1024,1024*1024)});return n.status!==0||n.stdout.length!==e.original_bytes?null:n.stdout}function wp(e){if(!_r(e.argv))return null;let t=Rc(e.cwd,e.argv,e.original_bytes);return t?Ft(t)===e.content_hash?t:Buffer.concat([Buffer.from(`reconstructed after state moved - current snapshot follows
|
|
41
|
+
`,"utf8"),t]):null}function Rc(e,t,n){let r=t[0];if(!r)return null;let s=En(r,t.slice(1),{cwd:e,encoding:"buffer",maxBuffer:Math.max(n+1024,1024*1024)});return s.status!==0||s.signal?null:s.stdout}function bp(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function yr(e){return/^el:[a-f0-9]{12}$/.test(e)}function wr(e){return/^blob:[a-f0-9]{64}$/.test(e)}function _p(e){if(!Sn(e))throw new Error("memory recall payload must be an object");let t=e.query;if(typeof t!="string"||t.trim()==="")throw new Error("memory recall query is required");let n=typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:10;return{query:t,limit:n,options:{includeSuperseded:e.includeSuperseded===!0,scope:Sn(e.scope)?e.scope:void 0,ranking:Sn(e.ranking)?e.ranking:void 0}}}function Rp(e){if(!Sn(e))throw new Error("memory ingest payload must be an object");let t=e.cwd;if(typeof t!="string"||t.trim()==="")throw new Error("memory ingest cwd is required");let n=typeof e.maxFiles=="number"&&Number.isFinite(e.maxFiles)?e.maxFiles:void 0,r=Array.isArray(e.ignore)?e.ignore.filter(s=>typeof s=="string"):void 0;return{cwd:t,maxFiles:n,ignore:r}}function Sn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Sp(e,t,n){let r=[],s=new Set([".git","node_modules",".red",...n]);async function i(o){if(r.length>=t)return;let a=await yc(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let u=Rn(o,c.name);c.isDirectory()?await i(u):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(u)}}return await i(e),r}function kp(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,s=Sn(r)?r:{},i=String(e.label??e.LABEL??s.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(s.content??s.summary??s.title??i),c=`${i} ${a}`.toLowerCase(),u=t.filter(l=>c.includes(l));return u.length===0&&t.length>0?null:{id:String(n),rid:n,label:i,node_type:o,score:u.length||1,excerpt:a.slice(0,500)}}function ni(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function hr(e){if(!oe(e))return!1;let t=typeof e.original=="string"&&e.original_encoding==="base64",n=xp(e.derivation_recipe),r=vp(e.reexecution_recipe),s=e.blob_key,i=typeof s=="string"&&wr(s);return e.collection===Z&&typeof e.handle=="string"&&yr(e.handle)&&(t||n||r||i)&&typeof e.original_bytes=="number"&&(e.content_hash===void 0||ai(e.content_hash))&&(e.stored_bytes===void 0||typeof e.stored_bytes=="number")&&(s===void 0||typeof s=="string"&&wr(s))&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Ep(e.loss)&&(e.storage_class===void 0||Rr(e.storage_class))}function Sc(e){return!oe(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>{if(!oe(t))return!1;let n=t.blob_key;return typeof t.handle=="string"&&yr(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&(t.raw_bytes===void 0||typeof t.raw_bytes=="number")&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&(t.storage_class===void 0||Rr(t.storage_class))&&(n===void 0||typeof n=="string"&&wr(n))})}function si(e){return oe(e)&&typeof e.key=="string"&&wr(e.key)&&ai(e.content_hash)&&e.encoding==="gzip+base64"&&typeof e.bytes=="string"&&typeof e.original_bytes=="number"&&typeof e.stored_bytes=="number"&&typeof e.created_at=="string"}function ii(e){return oe(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Ep(e){return oe(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Rr(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"}function xp(e){return oe(e)&&e.kind==="git-blob"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.object_ids)&&e.object_ids.every(t=>typeof t=="string"&&/^[0-9a-f]{40,64}$/.test(t))&&typeof e.working_tree_fingerprint=="string"&&typeof e.original_bytes=="number"}function vp(e){return oe(e)&&e.kind==="command"&&typeof e.command=="string"&&typeof e.cwd=="string"&&Array.isArray(e.argv)&&e.argv.every(t=>typeof t=="string")&&_r(e.argv)&&typeof e.original_bytes=="number"&&ai(e.content_hash)}function ai(e){return typeof e=="string"&&/^[0-9a-f]{64}$/.test(e)}function oe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Tp(e){try{let r=(await hc(e,"utf8")).trim();if(r==="")return pr();let s;try{s=JSON.parse(r)}catch{s=j(r)}if(Dp(s))return{...s,blobs:s.blobs??{}}}catch(n){if(n.code==="ENOENT"){let s=pr();return await kn(e,s),s}let r=pr();return await kn(e,r),r}let t=pr();return await kn(e,t),t}async function Op(e){try{return e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Pp(e){return wc(e)==="red-skills.rdb"}async function kc(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?Rn(process.env.XDG_CACHE_HOME,"red-skills","bundles"):Rn(cp(),".cache","red-skills","bundles")),t=Rn(e,"reddb"),n;try{n=await yc(t)}catch{return}n.sort().reverse();for(let r of n){let s=Rn(t,r,process.platform==="win32"?"red.exe":"red");if(ri(s)){process.env.REDDB_BIN=s;return}}}async function kn(e,t){await gc(bc(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await ap(n,`${D(oi(t))}
|
|
42
|
+
`,"utf8"),await gr(n,e)}function oi(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(Array.isArray(e))return e.map(t=>oi(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=oi(r));return t}return String(e)}function pr(){return{version:1,records:{},blobs:{},tombstones:{},index:{version:1,records:[]}}}function Dp(e){return oe(e)&&e.version===1&&oe(e.records)&&Object.values(e.records).every(hr)&&(e.blobs===void 0||oe(e.blobs)&&Object.values(e.blobs).every(si))&&oe(e.tombstones)&&Object.values(e.tombstones).every(ii)&&Sc(e.index)}function Cp(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return up(e)}var Z,xn,ze=E(()=>{"use strict";Ts();Q();Re();Z="rsp_elisions_v1",xn=class e{constructor(t,n){this.opts=n;this.path=t}document;db;path;dirty=!1;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1"&&!t.allowResidentOpen)throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let n=Cp(t.uri),r=await Op(n),s=new e(r,{uri:t.uri,ttlDays:ni(t.ttlDays,Be),ephemeralTtlHours:ni(t.ephemeralTtlHours,Le),byteBudget:ni(t.byteBudget,Me),now:t.now??(()=>new Date)});return Pp(r)?(await kc(),await gc(bc(r),{recursive:!0}),s.db=await Ct(`file://${r}`),await s.ensureRedDbCollections(),await s.ensureRedDbStore()):s.document=await Tp(s.path),s}async close(){await this.db?.close()}redDb(){return this.db}async mint(t,n){if(this.db)return await this.mintRedDb(t,n);let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=oc(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?lc(r,n.command):null,l=c==="re-executable"?dc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=uc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?pc(r,p,i):null,m=fc(r,u,l,h);h&&!this.document.blobs[h.key]&&(this.document.blobs[h.key]=h,this.dirty=!0);let g={collection:Z,handle:o,original_bytes:r.length,stored_bytes:m,command:n.command,created_at:i,expires_at:d,loss:n.loss,storage_class:f,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};return delete this.document.tombstones[Ut(o)],this.document.records[a]=g,this.upsertIndex({handle:o,key:a,bytes:m,raw_bytes:r.length,command:n.command,created_at:i,expires_at:d,storage_class:f,blob_key:h?.key}),this.prune(),await this.flush(),o}async get(t){if(this.db)return await this.getRedDb(t);if(!yr(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[dt(t)];if(!hr(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:dt(r.handle),bytes:mc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:mr(r),blob_key:r.blob_key},r.expires_at),await this.flush(),i}let s=await this.readOriginal(r);return!s&&(r.derivation_recipe||r.reexecution_recipe)?{status:"expired",expired_at:r.expires_at,command:r.command}:s?{collection:Z,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:mr(r)}:null}async stats(){if(this.db)return await this.statsRedDb();this.prune(),await this.flush();let n=this.readIndex().records;return{records:n.length,bytes:Jt(n),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget,storage_classes:ac(n)}}async recoveryHandles(t=5){return this.db?await this.recoveryHandlesRedDb(t):(this.prune(),await this.flush(),cc(this.readIndex().records,this.opts.now(),t))}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(s=>s.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r}),this.dirty=!0}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),s=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):s.push(o);let i=Jt(s);for(s.sort((o,a)=>o.created_at.localeCompare(a.created_at));i>this.opts.byteBudget&&s.length>0;){let o=s.shift();this.expireEntry(o,n),i=Jt(s)}s.length<r.records.length&&this.writeIndex({version:1,records:s}),this.deleteUnreferencedLocalBlobs(s)}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[Ut(t.handle)]={status:"expired",expired_at:n,command:t.command},this.dirty=!0}tombstone(t){let n=this.document.tombstones[Ut(t)];return ii(n)?n:null}async readOriginal(t){if(t.original)return Buffer.from(t.original,"base64");if(t.derivation_recipe)return yp(t.derivation_recipe);if(t.reexecution_recipe)return wp(t.reexecution_recipe);if(t.blob_key){let n=this.db?await this.kvGet(t.blob_key):this.document.blobs[t.blob_key];return si(n)?hp(n):null}return null}deleteUnreferencedLocalBlobs(t){let n=new Set(t.map(r=>r.blob_key).filter(r=>typeof r=="string"));for(let r of Object.keys(this.document.blobs))n.has(r)||(delete this.document.blobs[r],this.dirty=!0)}async flush(){this.dirty&&(await kn(this.path,this.document),this.dirty=!1),await this.rotateLocalGenerationIfOversized()}async rotateLocalGenerationIfOversized(){let t=await Xs(this.path).then(a=>a.size,()=>0);if(t<=this.opts.byteBudget)return;let n=this.readIndex().records,r=new Set(n.map(a=>a.key)),s=new Set(n.map(a=>a.blob_key).filter(a=>typeof a=="string")),i={version:1,records:Object.fromEntries(Object.entries(this.document.records).filter(([a])=>r.has(a))),blobs:Object.fromEntries(Object.entries(this.document.blobs).filter(([a])=>s.has(a))),tombstones:{},index:{version:1,records:n}},o=Buffer.byteLength(`${JSON.stringify(i)}
|
|
43
|
+
`,"utf8");o>this.opts.byteBudget||o>=t||(this.document=i,await kn(this.path,this.document))}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(Z)}async kvGet(t){let n=await this.kv().get(t);if(typeof n!="string")return n;try{return JSON.parse(n)}catch{return n}}async ensureRedDbStore(){let t=await this.readRedDbIndex();await this.writeRedDbIndex(t)}async ensureRedDbCollections(){if(!this.db)throw new Error("rsp RedDB store is not open");let t=(await this.db.list()).find(n=>n.name===Z);if(!t){await this.db.query(`CREATE KV IF NOT EXISTS ${Z}`);return}if(t.model!=="kv"){if(t.model!=="table")throw new Error(`cannot self-heal elision collection ${Z}: unsupported model ${t.model}`);await this.db.query(`DROP TABLE ${Z}`),await this.db.query(`CREATE KV IF NOT EXISTS ${Z}`)}}async mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=oc(r,n),a=dt(o),c=ft(n.command),u=c==="derivable"?lc(r,n.command):null,l=c==="re-executable"?dc(r,n.command):null,f=c==="derivable"&&!u||c==="re-executable"&&!l?"ephemeral":c,d=uc(s,f,this.opts.ttlDays,this.opts.ephemeralTtlHours),p=Ft(r),h=f==="ephemeral"?pc(r,p,i):null,m=fc(r,u,l,h);h&&!si(await this.kvGet(h.key))&&await this.kv().put(h.key,h);let g={collection:Z,handle:o,original_bytes:r.length,stored_bytes:m,command:n.command,created_at:i,expires_at:d,loss:n.loss,storage_class:f,content_hash:p,...u?{derivation_recipe:u}:l?{reexecution_recipe:l}:{blob_key:h?.key}};await this.kv().delete(Ut(o)),await this.kv().put(a,g);let y=(await this.readRedDbIndex()).records.filter(T=>T.handle!==o);return y.push({handle:o,key:a,bytes:m,raw_bytes:r.length,command:n.command,created_at:i,expires_at:d,storage_class:f,blob_key:h?.key}),await this.pruneRedDb({version:1,records:y},!0),await this.assertRedDbMintPersisted(o,m),o}async getRedDb(t){if(!yr(t))return null;let n=await this.kvGet(Ut(t));if(ii(n))return n;let r=await this.kvGet(dt(t));if(!hr(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let i={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:dt(r.handle),bytes:mc(r),raw_bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at,storage_class:mr(r),blob_key:r.blob_key},r.expires_at),i}let s=await this.readOriginal(r);return!s&&(r.derivation_recipe||r.reexecution_recipe)?{status:"expired",expired_at:r.expires_at,command:r.command}:s?{collection:Z,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss,storage_class:mr(r)}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:Jt(t.records),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget,storage_classes:ac(t.records)}}async recoveryHandlesRedDb(t){let n=await this.pruneRedDb(await this.readRedDbIndex());return cc(n.records,this.opts.now(),t)}async memory(t,n){if(!this.db)throw new Error("resident memory operations require the shared RedDB store");if(await this.ensureMemoryGraphStore(),t==="recall"){let r=_p(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=Rp(n);return await this.memoryIngestRedDb(r)}throw new Error(`unsupported memory action: ${t}`)}async ensureMemoryGraphStore(){if(!this.db)throw new Error("rsp RedDB store is not open");await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_nodes"),await this.db.execute("CREATE GRAPH IF NOT EXISTS memory_edges")}async memoryIngestRedDb(t){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await Sp(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await hc(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=wc(s),c=br("sha256").update("resident-memory-v1\0").update(s).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let u=Date.now(),l={title:a,content:o,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:u,updated_at:u,accessed_at:u,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:u,updated_at:u}},f=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,l),d=Number(f.rows[0]?.red_entity_id??f.rows[0]?.rid);Number.isFinite(d)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,d),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),i=r.rows.map(o=>kp(o,s)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,n)));return{hits:i,context_md:i.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
|
|
44
|
+
`),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(ei());return Sc(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ei(),t)}async pruneRedDb(t,n=!1){let r=this.opts.now().getTime(),s=new Date(r).toISOString(),i=[];for(let c of t.records)Date.parse(c.expires_at)<=r?await this.expireRedDbEntry(c,c.expires_at):i.push(c);let o=Jt(i);for(i.sort((c,u)=>c.created_at.localeCompare(u.created_at));o>this.opts.byteBudget&&i.length>0;){let c=i.shift();await this.expireRedDbEntry(c,s),o=Jt(i)}let a={version:1,records:i};return(n||i.length<t.records.length)&&await this.writeRedDbIndex(a),await this.deleteUnreferencedRedDbBlobs(i),await this.rotateRedDbGenerationIfOversized(a),a}async rotateRedDbGenerationIfOversized(t){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await Xs(this.path).then(u=>u.size,()=>0);if(n<=this.opts.byteBudget)return;let r=await this.snapshotRedDbKvCollections(t);if(!r)return;let s=`${process.pid}.${Date.now()}`,i=`${this.path}.${s}.compact`,o=`${this.path}.${s}.old`;await _n(i,{force:!0}),await _n(o,{force:!0});let a=await Ct(`file://${i}`);try{for(let u of r){await a.query(`CREATE KV IF NOT EXISTS ${mp(u.name)}`);let l=a.kv(u.name);for(let f of u.items)await l.put(f.key,f.value)}}finally{await a.close()}let c=await Xs(i).then(u=>u.size,()=>0);if(c===0||c>this.opts.byteBudget||c>=n){await _n(i,{force:!0});return}await this.db.close(),this.db=void 0;try{await gr(this.path,o),await gr(i,this.path),await _n(o,{force:!0})}catch(u){throw!ri(this.path)&&ri(o)&&await gr(o,this.path),await _n(i,{force:!0}),u}finally{this.db=await Ct(`file://${this.path}`)}}async snapshotRedDbKvCollections(t){if(!this.db)throw new Error("rsp RedDB store is not open");let n=await this.db.list();if(n.some(i=>i.model!=="kv"))return null;let r=[],s=!1;for(let i of n){let o=String(i.name??"").trim();if(o===Z){r.push(await this.snapshotRedDbElisions(t)),s=!0;continue}let a=await this.db.kv(o).list({limit:1e4});if(a.items.length>=1e4)return null;r.push({name:o,items:a.items})}return s||r.push(await this.snapshotRedDbElisions(t)),r}async snapshotRedDbElisions(t){let n=[{key:ei(),value:t}],r=new Set;for(let s of t.records)r.add(s.key),s.blob_key&&r.add(s.blob_key);for(let s of r){let i=await this.kvGet(s);i!=null&&n.push({key:s,value:i})}return{name:Z,items:n}}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(Ut(t.handle),{status:"expired",expired_at:n,command:t.command})}async deleteUnreferencedRedDbBlobs(t){let n=new Set(t.map(s=>s.blob_key).filter(s=>typeof s=="string")),r=await this.kv().list({limit:1e4}).catch(()=>({items:[]}));for(let s of r.items)s.key.startsWith("blob:")&&!n.has(s.key)&&await this.kv().delete(s.key)}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(dt(t));if(!hr(r))throw new Error(`rsp resident failed to persist elision record ${t}`);let i=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!i||i.bytes!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Pn={};M(Pn,{RSP_ACCOUNTING_EVENTS_COLLECTION:()=>ae,RSP_DECISIONS_COLLECTION:()=>X,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Ke,RSP_TELEMETRY_INDEX_COLLECTION:()=>On,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ke,RSP_TELEMETRY_LEGACY_SPOOL_FILE:()=>Bc,RSP_TELEMETRY_SPOOL_CORRECTIONS_FILE:()=>Lc,RSP_TELEMETRY_SPOOL_FILE:()=>Nc,appendTelemetryEvent:()=>Je,appendTelemetryEventSync:()=>gt,drainTelemetrySpool:()=>mi,parseTelemetryEvent:()=>zt,readAccountingLaneStats:()=>pi,readTelemetryGainsReport:()=>gi,readTelemetryStats:()=>vr,takeTelemetrySpool:()=>Mp,telemetryLegacySpoolPath:()=>xr,telemetrySpoolCorrectionsPath:()=>fi,telemetrySpoolPath:()=>Ue});import{randomUUID as ui,createHash as $p}from"node:crypto";import{appendFileSync as Dc,existsSync as Ip,mkdirSync as Cc}from"node:fs";import{mkdir as $c,readdir as Ap,readFile as Ic,rename as Np,rm as Ac,writeFile as li}from"node:fs/promises";import{basename as ci,dirname as Tn,join as Wt,resolve as Ec}from"node:path";function Er(e){if(!e)return null;let t=Ec(e);for(;;){if(Ip(Wt(t,".red")))return t;let n=Ec(Wt(t,".."));if(n===t)break;t=n}return null}function Ue(e){return Wt(F(e),Nc)}function xr(e){return Wt(F(e),Bc)}function fi(e){return Wt(F(e),Lc)}async function Je(e,t){gt(e,t)}function gt(e,t){try{let n=Er(e);if(!n)return;let r=Ue(n);Cc(Tn(r),{recursive:!0}),Dc(r,Jp({spool_id:ui(),event:Lp(t)}),{encoding:"utf8",mode:384})}catch{}}function Lp(e){return xc(xc(e,"raw_text","raw_bytes"),"emitted_text","emitted_bytes")}function xc(e,t,n){let r=e[t];if(typeof r!="string")return e;let s=Buffer.byteLength(r,"utf8");if(s<=Bp)return e;let i={...e};return delete i[t],Se(i[n])===0&&(i[n]=s),i.estimated=!0,i}async function Mp(e){let t=Er(e);if(!t)return[];let n=Ue(t);await $c(Tn(n),{recursive:!0}).catch(()=>{});let r=await Uc(t),s=[...await Jc(t),...await Gp(r)];return await Promise.all(r.map(i=>Ac(i,{force:!0}))),s.map(i=>JSON.stringify(i.event))}async function mi(e,t){let n=Er(e);if(!n)return;let r=Ue(n);await $c(Tn(r),{recursive:!0}).catch(()=>{}),await Fp(n);for(let s of await jp(n))await vc(n,s,t);for(let s of await Jc(n))await Mc(n,s,t,!0);for(let s of await Uc(n))await vc(n,s,t)}async function jp(e){let t=[Ue(e),xr(e)],n=Tn(t[0]);return(await Ap(n).catch(()=>[])).filter(s=>t.some(i=>s.startsWith(`${ci(i)}.`)&&s.endsWith(".drain"))).filter(s=>{let i=t.find(c=>s.startsWith(`${ci(c)}.`));if(!i)return!1;let o=`${ci(i)}.`,a=Number(s.slice(o.length).split(".")[0]);return!(Number.isInteger(a)&&a!==process.pid&&Up(a))}).sort().map(s=>Wt(n,s))}function Up(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}async function vc(e,t,n){try{let r=await jc(t);for(let s of Fc(r))await Mc(e,s,n,!1)}finally{await Ac(t,{force:!0})}}async function Mc(e,t,n,r){let s=t.event?JSON.stringify(t.event):t.raw_line??"";try{if(await n(s)){r&&Tc(e,{correction_id:ui(),target_spool_id:t.spool_id,action:"resolved",created_at:new Date().toISOString()});return}}catch{}Tc(e,{correction_id:ui(),target_spool_id:t.spool_id,action:"retry",created_at:new Date().toISOString(),event_json:t.event?JSON.stringify(t.event):void 0})}async function jc(e){let t="";for(let n=0;n<5;n++){let r=await Ic(e,"utf8").catch(()=>"");if(r===t)return r;t=r,await new Promise(s=>setTimeout(s,2))}return t}function zt(e){try{let t=JSON.parse(e);return!Tr(t)||t.collection!==ae&&t.collection!==X&&t.collection!==ke&&t.collection!==Ke?null:t}catch{return null}}function Jp(e){return er().push(Wp(e))}function Tc(e,t){try{let n=Er(e);if(!n)return;let r=fi(n);Cc(Tn(r),{recursive:!0});let s=er();Dc(r,s.push({correction_id:t.correction_id,target_spool_id:t.target_spool_id,action:t.action,created_at:t.created_at,event_json:t.event_json??null}),{encoding:"utf8",mode:384})}catch{}}async function Uc(e){let t=[Ue(e),xr(e)],n=[];for(let r of t){let s=`${r}.${process.pid}.${Date.now()}.drain`;try{await Np(r,s),await li(r,"",{flag:"wx"}).catch(()=>{}),n.push(s)}catch(i){if(i.code!=="ENOENT")continue}}return n}async function Fp(e){await Promise.all([li(Ue(e),"",{flag:"a"}),li(xr(e),"",{flag:"a"})]).catch(()=>{})}async function Gp(e){let t=[];for(let n of e)t.push(...Fc(await jc(n)));return t}async function Jc(e){let t=await Ic(fi(e),"utf8").catch(()=>""),n=new Map;for(let r of Hp(t))n.set(r.target_spool_id,r);return[...n.values()].filter(r=>r.action==="retry"&&r.event_json).map(r=>({spool_id:r.target_spool_id,event:zt(r.event_json)??void 0})).filter(r=>r.event!==void 0)}function Fc(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s){try{let i=JSON.parse(s);if(Tr(i)){let o=zt(JSON.stringify(i));t.push(o?{spool_id:Sr(JSON.stringify(i)),event:o}:{spool_id:Sr(s),raw_line:s})}continue}catch{}if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n){t.push({spool_id:Sr(s),raw_line:s});continue}try{for(let i of Xn(`${n}
|
|
45
45
|
${s}
|
|
46
|
-
`))
|
|
46
|
+
`))di(i)&&Vp(i)&&t.push({spool_id:i.spool_id,event:Gc(i)})}catch{s.startsWith("{")&&t.push({spool_id:Sr(s),raw_line:s})}}}return t}function Hp(e){return qp(e).map(zp).filter(t=>t!==null)}function qp(e){let t=[],n="";for(let r of e.split(/\r?\n/)){let s=r.trim();if(s)try{let i=JSON.parse(s);di(i)&&t.push(i)}catch{if(/^\[(?:\d*)\]\{[^}]+\}:$/.test(s)){n=s;continue}if(!n)continue;try{for(let i of Xn(`${n}
|
|
47
47
|
${s}
|
|
48
|
-
`))li(i)&&t.push(i)}catch{}}}return t}function Sr(e){return`legacy:${Cp("sha256").update(e).digest("hex").slice(0,24)}`}function qp(e){let t={spool_id:e.spool_id};for(let[n,r]of Object.entries(e.event??{}))n!=="spool_id"&&(typeof r=="string"||typeof r=="number"||typeof r=="boolean"||r===null?t[n]=r:r!==void 0&&(t[n]=JSON.stringify(r)));return t}function Fc(e){let{spool_id:t,...n}=e;return zt(JSON.stringify(n))}function Wp(e){return typeof e.spool_id=="string"&&Fc(e)!==null}function Vp(e){return typeof e.correction_id=="string"&&typeof e.target_spool_id=="string"&&(e.action==="retry"||e.action==="resolved")&&typeof e.created_at=="string"&&(e.event_json===null||typeof e.event_json=="string")?{correction_id:e.correction_id,target_spool_id:e.target_spool_id,action:e.action,created_at:e.created_at,event_json:e.event_json??void 0}:null}function li(e){return Tr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}async function vr(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await Gc(e,s),o=(await vn(e,Z)).filter(R=>qt(R)>=s),a=i.filter(R=>P(R.event_type)!=="show"&&P(R.degradation_reason)===""),c=i.filter(R=>P(R.event_type)==="show"),u=i.filter(R=>P(R.degradation_reason)!==""),l=0,f=0,d=0,p=0,h=!1,m=new Map,g=new Map,w=[],y=0,T=0,x=0;for(let R of a){R.elided===!0&&l++;let $=Se(R.raw_bytes),Pe=Se(R.emitted_bytes),rt=Math.max(0,$-Pe),Tt=Vt(R,"raw"),b=Vt(R,"emitted"),v=Math.max(0,Tt.tokens-b.tokens);h||=(R.estimated===!0||Tt.estimated||b.estimated)&&v>0,f+=$,d+=Pe,p+=v;let st=pt(R).slice(0,10);st&&m.set(st,(m.get(st)??0)+v);let it=P(R.command)||"unknown",ue=g.get(it)??{command:it,invocations:0,bytes_saved:0,tokens_saved:0};ue.invocations++,ue.bytes_saved+=rt,ue.tokens_saved+=v,g.set(it,ue);let le=mt(R.wrapper_ms);le!=null&&w.push(le),y+=Se(R.store_open_count);let Ot=mt(R.store_elapsed_ms);Ot!=null&&(T+=Ot,x++)}let O=new Map,L=new Map,ce=[],he=null;for(let R of u){let $=P(R.degradation_reason)||P(R.reason)||"unknown",Pe=P(R.wrapper_family)||kr(P(R.command));O.set($,(O.get($)??0)+1),L.set(Pe,(L.get(Pe)??0)+1);let rt=pt(R);ce.push({timestamp:rt,family:Pe,command:P(R.command)||"unknown",reason:$,exit_code:mt(R.wrapper_exit_code),stderr_head:P(R.stderr_head)||null}),(!he||rt>he.timestamp)&&(he={timestamp:rt,reason:$,command:P(R.command)||"unknown"})}let V=a.length+u.length,Ge=c.filter(R=>R.hit===!0).length,z=qs(p,h),en=zp(o);return{window_days:r,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:f,emitted_bytes:d,bytes_saved:Math.max(0,f-d),tokens_saved:p,tokens_saved_estimated:z.tokens_saved_estimated,token_estimate_range_pct:z.token_estimate_range_pct,tokens_saved_low:z.tokens_saved_low,tokens_saved_high:z.tokens_saved_high,dollars_saved_estimate_usd:z.dollars_saved_estimate_usd,dollars_saved_low_usd:z.dollars_saved_low_usd,dollars_saved_high_usd:z.dollars_saved_high_usd,pricing_model_family:z.pricing_model_family,pricing_input_usd_per_million_tokens:z.pricing_input_usd_per_million_tokens,pricing_note:z.pricing_note,daily_tokens_saved:[...m.entries()].sort(([R],[$])=>R.localeCompare($)).map(([R,$])=>({date:R,tokens_saved:$})),top_commands:[...g.values()].sort((R,$)=>$.bytes_saved-R.bytes_saved||$.tokens_saved-R.tokens_saved||R.command.localeCompare($.command))},health:{degradations:u.length,degradation_rate:V===0?0:u.length/V,show_total:c.length,show_hits:Ge,show_misses:Math.max(0,c.length-Ge),show_hit_rate:c.length===0?0:H(Ge/c.length),by_reason:[...O.entries()].sort((R,$)=>$[1]-R[1]||R[0].localeCompare($[0])).map(([R,$])=>({reason:R,count:$})),by_family:[...L.entries()].sort((R,$)=>$[1]-R[1]||R[0].localeCompare($[0])).map(([R,$])=>({family:R,count:$})),recent_failures:ce.sort((R,$)=>$.timestamp.localeCompare(R.timestamp)).slice(0,20),most_recent:he},latency:{wrapper_ms_p50:Ht(w,.5),wrapper_ms_p95:Ht(w,.95),store_open_count_sum:y,store_elapsed_ms_sum:H(T),store_elapsed_ms_avg:x===0?null:H(T/x)},decisions:en}}function zp(e){let t=0,n=0,r=0,s=0,i=new Map;for(let o of e){let a=P(o.decision);if(a==="contributed"?t++:a==="failed-open"?r++:n++,o.quota_free===!0&&(s+=Math.max(1,Se(o.saved_units))),a!=="contributed"){let c=P(o.reason)||"unknown";i.set(c,(i.get(c)??0)+1)}}return{seen:e.length,contributed:t,passed:n,failed_open:r,quota_free_saved_units:s,contribution_rate:e.length===0?0:H(t/e.length),top_pass_reasons:[...i.entries()].sort((o,a)=>a[1]-o[1]||o[0].localeCompare(a[0])).map(([o,a])=>({reason:o,count:a}))}}async function mi(e,t,n=new Date){let s=(await vn(e,ae)).filter(i=>qt(i)<=n.getTime()||pt(i)==="");return{records:s.length,bytes:s.reduce((i,o)=>i+Buffer.byteLength(JSON.stringify(o),"utf8"),0),oldest:s.reduce((i,o)=>{let a=pt(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:rg(s)}}async function pi(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:28,s=n.toISOString(),i=new Date(n.getTime()-r*24*60*60*1e3).toISOString(),o=Date.parse(i),a=await Gc(e,o),c=a.filter(b=>P(b.event_type)!=="show"&&P(b.event_type)!=="control_holdout"&&b.control_holdout!==!0&&P(b.degradation_reason)===""),u=a.filter(b=>P(b.event_type)==="control_holdout"||b.control_holdout===!0),l=a.filter(b=>P(b.event_type)==="show"),f=a.filter(b=>P(b.degradation_reason)!==""),d=[...c,...f].map(qt).filter(b=>Number.isFinite(b)&&b>0),p=d.length===0?null:Math.min(...d),h=p==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-p)/fg()))),m=[],g=new Map,w=new Map,y=new Map,T=new Map,x=new Map,O=new Map,L=0,ce=!1,he=0,V=null,Ge=0,z=0;for(let b of c){let v=pt(b),st=v.slice(0,10),it=v.slice(0,16),ue=kr(P(b.command)),le=Math.max(0,Vt(b,"raw").tokens-Vt(b,"emitted").tokens);L+=le,ce||=b.estimated===!0&&le>0;let Ot=Math.max(0,Se(b.raw_bytes)-Se(b.emitted_bytes)),os=mt(b.wrapper_ms);if(os!=null){m.push(os);let Bo=g.get(ue)??[];Bo.push(os),g.set(ue,Bo)}st&&w.set(st,(w.get(st)??0)+1),it&&y.set(it,(y.get(it)??0)+1);let as=ag(v);as&&T.set(as,(T.get(as)??0)+1);let cs=lg(v);cs&&x.set(cs,(x.get(cs)??0)+le);let Vn=O.get(ue)??{command_family:ue,invocations:0,tokens_saved:0,bytes_saved:0};Vn.invocations++,Vn.tokens_saved+=le,Vn.bytes_saved+=Ot,O.set(ue,Vn),b.elided===!0&&he++,(b.store_open_count!=null||b.store_elapsed_ms!=null)&&(Ge++,Se(b.store_open_count)>0&&z++),le>0&&(!V||le>V.tokens_saved||le===V.tokens_saved&&Ot>V.bytes_saved)&&(V={timestamp:v,command_family:ue,tokens_saved:le,bytes_saved:Ot})}let en=f.map(b=>({timestamp:pt(b),command_family:kr(P(b.command)),reason:P(b.degradation_reason)||P(b.reason)||"unknown"})).sort((b,v)=>b.timestamp.localeCompare(v.timestamp)),R=new Map;for(let b of en)R.set(b.reason,(R.get(b.reason)??0)+1);let $=Zp(en),Pe=Qp(l),rt=eg([...O.values()],Pe,$),Tt=[...y.entries()].sort((b,v)=>v[1]-b[1]||b[0].localeCompare(v[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:h,since:i,until:s,label:`window: ${r}d, data: ${h}d`,empty:c.length===0&&f.length===0,invocations:c.length,degradations:f.length},latency:{global:Oc(m),by_command_family:[...g.entries()].sort((b,v)=>v[1].length-b[1].length||b[0].localeCompare(v[0])).map(([b,v])=>({command_family:b,count:v.length,...Oc(v)}))},throughput:{requests_per_day:[...w.entries()].sort(([b],[v])=>b.localeCompare(v)).map(([b,v])=>({date:b,requests:v})),active_minute_avg:y.size===0?null:H([...y.values()].reduce((b,v)=>b+v,0)/y.size),peak_minute:Tt?{minute:Tt[0],requests:Tt[1]}:null,hour_weekday_heatmap:cg(T)},savings:{tokens:qs(L,ce),measured_control_holdout:Kp(c,u),weekly_tokens_saved:dg(x),elision_rate:c.length===0?0:H(he/c.length),top_commands_by_tokens_saved:[...O.values()].sort((b,v)=>v.tokens_saved-b.tokens_saved||v.bytes_saved-b.bytes_saved||b.command_family.localeCompare(v.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((b,v)=>v.invocations-b.invocations||v.tokens_saved-b.tokens_saved||b.command_family.localeCompare(v.command_family)).slice(0,10),single_biggest_elision:V},health:{degradation_timeline:en,degradations_by_reason:[...R.entries()].sort((b,v)=>v[1]-b[1]||b[0].localeCompare(v[0])).map(([b,v])=>({reason:b,count:v})),cold_boots:Ge===0?null:z,warm_hits:Ge===0?null:Math.max(0,Ge-z)},mining:{recovery_usage_by_family:Pe,degradation_clusters:$,threshold_tuning_suggestions:rt}}}async function Gc(e,t){let n=(await vn(e,ae)).filter(o=>qt(o)>=t),r=n.some(o=>P(o.event_type)!=="show"||P(o.degradation_reason)!==""),s=(await vn(e,ke)).filter(o=>qt(o)>=t).filter(o=>!r&&o.accounting_recorded!==!0).map(o=>({...o,event_type:P(o.event_type)||"invocation"})),i=(await vn(e,Ke)).filter(o=>qt(o)>=t).filter(o=>!r&&o.accounting_recorded!==!0).map(o=>({...o,event_type:"invocation",degradation_reason:P(o.reason)||"unknown"}));return[...n,...s,...i]}function Vt(e,t){let n=mt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=Se(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function Kp(e,t){let n=ng(t.map(a=>mt(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:n,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let r=e.map(Tc).filter(a=>a!=null),s=t.map(Tc).filter(a=>a!=null),i=r.length>0?r:s,o=i.length===0?null:H(tg(i));return{enabled:!0,holdout_share:H(n),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:Yp(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Tc(e){let t=Vt(e,"raw").tokens;if(t<=0)return null;let n=Vt(e,"emitted").tokens;return Math.max(0,t-n)/t}function Yp(e,t){if(e.length<=1)return{low:H(Math.max(0,t)),high:H(Math.min(1,t))};let n=e.reduce((s,i)=>s+(i-t)**2,0)/(e.length-1),r=1.96*Math.sqrt(n/e.length);return{low:H(Math.max(0,t-r)),high:H(Math.min(1,t+r))}}function Qp(e){let t=new Map;for(let n of e){let r=kr(P(n.recovered_command)||P(n.command)),s=t.get(r)??{command_family:r,show_total:0,show_hits:0,show_misses:0};s.show_total++,n.hit===!0?s.show_hits++:s.show_misses++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.show_total-n.show_total||n.command_family.localeCompare(r.command_family)).map(n=>({...n,show_hit_rate:n.show_total===0?0:H(n.show_hits/n.show_total)}))}function Zp(e){let t=new Map;for(let n of e){let r=`${n.command_family}\0${n.reason}`,s=t.get(r)??{command_family:n.command_family,reason:n.reason,count:0};s.count++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.count-n.count||n.command_family.localeCompare(r.command_family)||n.reason.localeCompare(r.reason)).map(n=>({...n,suggestion:Xp(n)}))}function Xp(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function eg(e,t,n){let r=[];for(let s of t.filter(i=>i.show_total>0))r.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of n.filter(i=>i.count>1))r.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(i=>i.invocations>0&&i.tokens_saved===0))r.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return r.slice(0,10)}function tg(e){return e.reduce((t,n)=>t+n,0)/e.length}function ng(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function rg(e){let t=ig();for(let n of e){if(P(n.event_type)==="show"||P(n.degradation_reason)!==""||n.elided!==!0)continue;let r=sg(n.storage_class)??ft(P(n.command));t[r].records+=1;let s=Se(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function sg(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function ig(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}async function vn(e,t){return(await e.kv(t).list({limit:1e4}).catch(r=>{if(r instanceof Error&&/\bnot found\b/i.test(r.message))return{items:[]};throw r})).items.map(r=>og(r.value)).filter(r=>Tr(r))}function og(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function qt(e){let t=Date.parse(pt(e));return Number.isFinite(t)?t:0}function pt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function Se(e){return mt(e)??0}function mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ht(e,t){if(e.length===0)return null;let n=[...e].sort((s,i)=>s-i),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return H(n[r])}function Oc(e){return{wrapper_ms_p50:Ht(e,.5),wrapper_ms_p90:Ht(e,.9),wrapper_ms_p95:Ht(e,.95),wrapper_ms_p99:Ht(e,.99)}}function H(e){return Math.round(e*100)/100}function kr(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function ag(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${ug(t.getUTCDay())}:${t.getUTCHours()}`:null}function cg(e){let t=[];for(let n of["sun","mon","tue","wed","thu","fri","sat"])for(let r=0;r<24;r++){let s=e.get(`${n}:${r}`)??0;s>0&&t.push({weekday:n,hour:r,requests:s})}return t}function ug(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function lg(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let n=t.getUTCDay(),r=n===0?-6:1-n;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+r)).toISOString().slice(0,10)}function dg(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:H((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function fg(){return 24*60*60*1e3}function Tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ac,Nc,Bc,ae,Z,ke,Ke,On,Np,Ee=E(()=>{"use strict";Ce();ne();ze();Ws();Ac="rsp-telemetry.spool.toonl",Nc="rsp-telemetry.spool.jsonl",Bc="rsp-telemetry.spool.corrections.toonl",ae="rsp_accounting_events_v1",Z="rsp_decisions_v1",ke="rsp_telemetry_invocations_v1",Ke="rsp_telemetry_degradations_v1",On="rsp_telemetry_index_v1",Np=64*1024});var Hc=E(()=>{"use strict";zs()});var ht={};M(ht,{ResidentRspElisionStore:()=>Dn,ensureResidentServer:()=>ir,kickResidentServer:()=>or,pingResident:()=>lt,readResidentRegistry:()=>bn,removeResidentRegistry:()=>cr,residentRegistryStatus:()=>wn,resolveResidentPaths:()=>Ve,sweepResidentRegistry:()=>Va,warmResidentServer:()=>Wa,writeResidentRegistry:()=>ar});import{randomUUID as mg}from"node:crypto";function qc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Dn,Fe=E(()=>{"use strict";Hc();ur();Dn=class{constructor(t,n,r={}){this.paths=t;this.config=n;this.opts=r}metrics;lastResponseMetrics(){return this.metrics}async mint(t,n){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:n})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let n=await this.request({op:"get",handle:t});return n?qc(n)&&n.status==="expired"?n:!qc(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){this.opts.ensureResident!==!1&&await ir(this.paths,this.config);let n=await Lt(this.paths,{...t,id:mg()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Nr={};M(Nr,{RSP_WRAPPER_CAPABILITIES:()=>In,formatCodexHookDecision:()=>Yc,formatHookDecision:()=>Kc,hookDecisionFromClaudePreExecJson:()=>wg,hookDecisionFromCodexPreExecJson:()=>bg,rewriteCommand:()=>Vc,rewriteTableFromCapabilities:()=>Wc,runClaudePreExecHook:()=>_g,runCodexPreExecHook:()=>Rg});import{readFileSync as Cr}from"node:fs";import{existsSync as pg}from"node:fs";import{fileURLToPath as gg}from"node:url";function Wc(e){let t=new Map;for(let n of e)t.set(jg(n.command),["rsp",...n.wrapper]);return t}function Vc(e){let t=Dg(e);if(t)return t;let n=Og(e);if(!n)return Pr(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&au(r[0]))return Pr(e);let s=yg(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return Pr(e);let i=[...In].sort((c,u)=>u.command.length-c.command.length).find(c=>Pg(r,c.command));if(!i)return Pr(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=nu(n.redirectSuffix);return{kind:"rewrite",command:[...o.map($n),...a].join(" "),capabilityId:i.id}}function yg(e){let t=e.tokens.map(s=>s.text),n=t[0],r=nu(e.redirectSuffix);return n==="cat"&&t.length===2&&Or(t[1])?{kind:"rewrite",command:["rsp","cat",$n(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&Or(t[1])?{kind:"rewrite",command:["rsp","cat",`--${n}`,"10",$n(t[1]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Or(t[3])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[2],$n(t[3]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Or(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),$n(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function Or(e){return!!e&&!e.startsWith("-")}async function wg(e,t){return await zc(e,t)}async function bg(e,t){return await zc(e,t)}async function zc(e,t){return(await hi(e,t,"pre-exec")).decision}async function hi(e,t,n){let r=cu(e);if(!r.ok){let d={kind:"passthrough",reason:r.reason};return{decision:d,telemetryRoot:t.cwd,event:Cn({hook:n,command:"",decision:d,reason:r.reason})}}let s=r.payload,i=pe(s,["cwd"])||pe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Sg)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:gi(s),decision:d,reason:"disabled"})}}let a=gi(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=je(i,process.env).proxyEnabled?$g(a):(t.rewrite??Vc)(a),f=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let d=l.reason?l:{...l,reason:"unsupported-command"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:f})}}return await Eg(i,t.wakeResident??kg),{decision:l,telemetryRoot:i,event:Cn({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Kc(e){return e.kind==="rewrite"?Qc(e.command):{stdout:"",status:0}}function Yc(e){return e.kind==="rewrite"?Qc(e.command):{stdout:"",status:0}}function Qc(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
|
|
49
|
-
`,status:0}}async function
|
|
48
|
+
`))di(i)&&t.push(i)}catch{}}}return t}function Sr(e){return`legacy:${$p("sha256").update(e).digest("hex").slice(0,24)}`}function Wp(e){let t={spool_id:e.spool_id};for(let[n,r]of Object.entries(e.event??{}))n!=="spool_id"&&(typeof r=="string"||typeof r=="number"||typeof r=="boolean"||r===null?t[n]=r:r!==void 0&&(t[n]=JSON.stringify(r)));return t}function Gc(e){let{spool_id:t,...n}=e;return zt(JSON.stringify(n))}function Vp(e){return typeof e.spool_id=="string"&&Gc(e)!==null}function zp(e){return typeof e.correction_id=="string"&&typeof e.target_spool_id=="string"&&(e.action==="retry"||e.action==="resolved")&&typeof e.created_at=="string"&&(e.event_json===null||typeof e.event_json=="string")?{correction_id:e.correction_id,target_spool_id:e.target_spool_id,action:e.action,created_at:e.created_at,event_json:e.event_json??void 0}:null}function di(e){return Tr(e)?Object.values(e).every(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null):!1}async function vr(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=await Hc(e,s),o=(await vn(e,X)).filter(R=>qt(R)>=s),a=i.filter(R=>P(R.event_type)!=="show"&&P(R.degradation_reason)===""),c=i.filter(R=>P(R.event_type)==="show"),u=i.filter(R=>P(R.degradation_reason)!==""),l=0,f=0,d=0,p=0,h=!1,m=new Map,g=new Map,w=[],y=0,T=0,x=0;for(let R of a){R.elided===!0&&l++;let $=Se(R.raw_bytes),Pe=Se(R.emitted_bytes),rt=Math.max(0,$-Pe),Tt=Vt(R,"raw"),b=Vt(R,"emitted"),v=Math.max(0,Tt.tokens-b.tokens);h||=(R.estimated===!0||Tt.estimated||b.estimated)&&v>0,f+=$,d+=Pe,p+=v;let st=pt(R).slice(0,10);st&&m.set(st,(m.get(st)??0)+v);let it=P(R.command)||"unknown",ue=g.get(it)??{command:it,invocations:0,bytes_saved:0,tokens_saved:0};ue.invocations++,ue.bytes_saved+=rt,ue.tokens_saved+=v,g.set(it,ue);let le=mt(R.wrapper_ms);le!=null&&w.push(le),y+=Se(R.store_open_count);let Ot=mt(R.store_elapsed_ms);Ot!=null&&(T+=Ot,x++)}let O=new Map,L=new Map,ce=[],he=null;for(let R of u){let $=P(R.degradation_reason)||P(R.reason)||"unknown",Pe=P(R.wrapper_family)||kr(P(R.command));O.set($,(O.get($)??0)+1),L.set(Pe,(L.get(Pe)??0)+1);let rt=pt(R);ce.push({timestamp:rt,family:Pe,command:P(R.command)||"unknown",reason:$,exit_code:mt(R.wrapper_exit_code),stderr_head:P(R.stderr_head)||null}),(!he||rt>he.timestamp)&&(he={timestamp:rt,reason:$,command:P(R.command)||"unknown"})}let z=a.length+u.length,Ge=c.filter(R=>R.hit===!0).length,K=qs(p,h),en=Kp(o);return{window_days:r,empty:i.length===0,savings:{invocations:a.length,elided:l,raw_bytes:f,emitted_bytes:d,bytes_saved:Math.max(0,f-d),tokens_saved:p,tokens_saved_estimated:K.tokens_saved_estimated,token_estimate_range_pct:K.token_estimate_range_pct,tokens_saved_low:K.tokens_saved_low,tokens_saved_high:K.tokens_saved_high,dollars_saved_estimate_usd:K.dollars_saved_estimate_usd,dollars_saved_low_usd:K.dollars_saved_low_usd,dollars_saved_high_usd:K.dollars_saved_high_usd,pricing_model_family:K.pricing_model_family,pricing_input_usd_per_million_tokens:K.pricing_input_usd_per_million_tokens,pricing_note:K.pricing_note,daily_tokens_saved:[...m.entries()].sort(([R],[$])=>R.localeCompare($)).map(([R,$])=>({date:R,tokens_saved:$})),top_commands:[...g.values()].sort((R,$)=>$.bytes_saved-R.bytes_saved||$.tokens_saved-R.tokens_saved||R.command.localeCompare($.command))},health:{degradations:u.length,degradation_rate:z===0?0:u.length/z,show_total:c.length,show_hits:Ge,show_misses:Math.max(0,c.length-Ge),show_hit_rate:c.length===0?0:q(Ge/c.length),by_reason:[...O.entries()].sort((R,$)=>$[1]-R[1]||R[0].localeCompare($[0])).map(([R,$])=>({reason:R,count:$})),by_family:[...L.entries()].sort((R,$)=>$[1]-R[1]||R[0].localeCompare($[0])).map(([R,$])=>({family:R,count:$})),recent_failures:ce.sort((R,$)=>$.timestamp.localeCompare(R.timestamp)).slice(0,20),most_recent:he},latency:{wrapper_ms_p50:Ht(w,.5),wrapper_ms_p95:Ht(w,.95),store_open_count_sum:y,store_elapsed_ms_sum:q(T),store_elapsed_ms_avg:x===0?null:q(T/x)},decisions:en}}function Kp(e){let t=0,n=0,r=0,s=0,i=new Map;for(let o of e){let a=P(o.decision);if(a==="contributed"?t++:a==="failed-open"?r++:n++,o.quota_free===!0&&(s+=Math.max(1,Se(o.saved_units))),a!=="contributed"){let c=P(o.reason)||"unknown";i.set(c,(i.get(c)??0)+1)}}return{seen:e.length,contributed:t,passed:n,failed_open:r,quota_free_saved_units:s,contribution_rate:e.length===0?0:q(t/e.length),top_pass_reasons:[...i.entries()].sort((o,a)=>a[1]-o[1]||o[0].localeCompare(a[0])).map(([o,a])=>({reason:o,count:a}))}}async function pi(e,t,n=new Date){let s=(await vn(e,ae)).filter(i=>qt(i)<=n.getTime()||pt(i)==="");return{records:s.length,bytes:s.reduce((i,o)=>i+Buffer.byteLength(JSON.stringify(o),"utf8"),0),oldest:s.reduce((i,o)=>{let a=pt(o);return a&&(i==null||a<i)?a:i},null),budget:t,storage_classes:sg(s)}}async function gi(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:28,s=n.toISOString(),i=new Date(n.getTime()-r*24*60*60*1e3).toISOString(),o=Date.parse(i),a=await Hc(e,o),c=a.filter(b=>P(b.event_type)!=="show"&&P(b.event_type)!=="control_holdout"&&b.control_holdout!==!0&&P(b.degradation_reason)===""),u=a.filter(b=>P(b.event_type)==="control_holdout"||b.control_holdout===!0),l=a.filter(b=>P(b.event_type)==="show"),f=a.filter(b=>P(b.degradation_reason)!==""),d=[...c,...f].map(qt).filter(b=>Number.isFinite(b)&&b>0),p=d.length===0?null:Math.min(...d),h=p==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-p)/mg()))),m=[],g=new Map,w=new Map,y=new Map,T=new Map,x=new Map,O=new Map,L=0,ce=!1,he=0,z=null,Ge=0,K=0;for(let b of c){let v=pt(b),st=v.slice(0,10),it=v.slice(0,16),ue=kr(P(b.command)),le=Math.max(0,Vt(b,"raw").tokens-Vt(b,"emitted").tokens);L+=le,ce||=b.estimated===!0&&le>0;let Ot=Math.max(0,Se(b.raw_bytes)-Se(b.emitted_bytes)),os=mt(b.wrapper_ms);if(os!=null){m.push(os);let Lo=g.get(ue)??[];Lo.push(os),g.set(ue,Lo)}st&&w.set(st,(w.get(st)??0)+1),it&&y.set(it,(y.get(it)??0)+1);let as=cg(v);as&&T.set(as,(T.get(as)??0)+1);let cs=dg(v);cs&&x.set(cs,(x.get(cs)??0)+le);let Vn=O.get(ue)??{command_family:ue,invocations:0,tokens_saved:0,bytes_saved:0};Vn.invocations++,Vn.tokens_saved+=le,Vn.bytes_saved+=Ot,O.set(ue,Vn),b.elided===!0&&he++,(b.store_open_count!=null||b.store_elapsed_ms!=null)&&(Ge++,Se(b.store_open_count)>0&&K++),le>0&&(!z||le>z.tokens_saved||le===z.tokens_saved&&Ot>z.bytes_saved)&&(z={timestamp:v,command_family:ue,tokens_saved:le,bytes_saved:Ot})}let en=f.map(b=>({timestamp:pt(b),command_family:kr(P(b.command)),reason:P(b.degradation_reason)||P(b.reason)||"unknown"})).sort((b,v)=>b.timestamp.localeCompare(v.timestamp)),R=new Map;for(let b of en)R.set(b.reason,(R.get(b.reason)??0)+1);let $=Xp(en),Pe=Zp(l),rt=tg([...O.values()],Pe,$),Tt=[...y.entries()].sort((b,v)=>v[1]-b[1]||b[0].localeCompare(v[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:h,since:i,until:s,label:`window: ${r}d, data: ${h}d`,empty:c.length===0&&f.length===0,invocations:c.length,degradations:f.length},latency:{global:Pc(m),by_command_family:[...g.entries()].sort((b,v)=>v[1].length-b[1].length||b[0].localeCompare(v[0])).map(([b,v])=>({command_family:b,count:v.length,...Pc(v)}))},throughput:{requests_per_day:[...w.entries()].sort(([b],[v])=>b.localeCompare(v)).map(([b,v])=>({date:b,requests:v})),active_minute_avg:y.size===0?null:q([...y.values()].reduce((b,v)=>b+v,0)/y.size),peak_minute:Tt?{minute:Tt[0],requests:Tt[1]}:null,hour_weekday_heatmap:ug(T)},savings:{tokens:qs(L,ce),measured_control_holdout:Yp(c,u),weekly_tokens_saved:fg(x),elision_rate:c.length===0?0:q(he/c.length),top_commands_by_tokens_saved:[...O.values()].sort((b,v)=>v.tokens_saved-b.tokens_saved||v.bytes_saved-b.bytes_saved||b.command_family.localeCompare(v.command_family)).slice(0,10),top_commands_by_invocation_count:[...O.values()].sort((b,v)=>v.invocations-b.invocations||v.tokens_saved-b.tokens_saved||b.command_family.localeCompare(v.command_family)).slice(0,10),single_biggest_elision:z},health:{degradation_timeline:en,degradations_by_reason:[...R.entries()].sort((b,v)=>v[1]-b[1]||b[0].localeCompare(v[0])).map(([b,v])=>({reason:b,count:v})),cold_boots:Ge===0?null:K,warm_hits:Ge===0?null:Math.max(0,Ge-K)},mining:{recovery_usage_by_family:Pe,degradation_clusters:$,threshold_tuning_suggestions:rt}}}async function Hc(e,t){let n=(await vn(e,ae)).filter(o=>qt(o)>=t),r=n.some(o=>P(o.event_type)!=="show"||P(o.degradation_reason)!==""),s=(await vn(e,ke)).filter(o=>qt(o)>=t).filter(o=>!r&&o.accounting_recorded!==!0).map(o=>({...o,event_type:P(o.event_type)||"invocation"})),i=(await vn(e,Ke)).filter(o=>qt(o)>=t).filter(o=>!r&&o.accounting_recorded!==!0).map(o=>({...o,event_type:"invocation",degradation_reason:P(o.reason)||"unknown"}));return[...n,...s,...i]}function Vt(e,t){let n=mt(e[t==="raw"?"tokens_raw":"tokens_emitted"]);if(n!=null)return{tokens:n,estimated:!1};let r=Se(e[t==="raw"?"raw_bytes":"emitted_bytes"]);return{tokens:Math.ceil(r/4),estimated:r>0}}function Yp(e,t){let n=rg(t.map(a=>mt(a.holdout_share)))??0;if(t.length===0)return{enabled:!1,holdout_share:n,holdout_invocations:0,compressed_invocations:e.length,savings_rate:null,confidence_interval_95:null,note:"control holdout disabled or no holdout samples in window"};let r=e.map(Oc).filter(a=>a!=null),s=t.map(Oc).filter(a=>a!=null),i=r.length>0?r:s,o=i.length===0?null:q(ng(i));return{enabled:!0,holdout_share:q(n),holdout_invocations:t.length,compressed_invocations:e.length,savings_rate:o,confidence_interval_95:o==null?null:Qp(i,o),note:"measured from opt-in uncompressed control holdout; report proposes, it does not tune automatically"}}function Oc(e){let t=Vt(e,"raw").tokens;if(t<=0)return null;let n=Vt(e,"emitted").tokens;return Math.max(0,t-n)/t}function Qp(e,t){if(e.length<=1)return{low:q(Math.max(0,t)),high:q(Math.min(1,t))};let n=e.reduce((s,i)=>s+(i-t)**2,0)/(e.length-1),r=1.96*Math.sqrt(n/e.length);return{low:q(Math.max(0,t-r)),high:q(Math.min(1,t+r))}}function Zp(e){let t=new Map;for(let n of e){let r=kr(P(n.recovered_command)||P(n.command)),s=t.get(r)??{command_family:r,show_total:0,show_hits:0,show_misses:0};s.show_total++,n.hit===!0?s.show_hits++:s.show_misses++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.show_total-n.show_total||n.command_family.localeCompare(r.command_family)).map(n=>({...n,show_hit_rate:n.show_total===0?0:q(n.show_hits/n.show_total)}))}function Xp(e){let t=new Map;for(let n of e){let r=`${n.command_family}\0${n.reason}`,s=t.get(r)??{command_family:n.command_family,reason:n.reason,count:0};s.count++,t.set(r,s)}return[...t.values()].sort((n,r)=>r.count-n.count||n.command_family.localeCompare(r.command_family)||n.reason.localeCompare(r.reason)).map(n=>({...n,suggestion:eg(n)}))}function eg(e){return/unavailable|not provisioned|missing/i.test(e.reason)?`Investigate ${e.command_family} wrapper availability before changing thresholds`:/timeout|large|limit/i.test(e.reason)?`Review ${e.command_family} byte thresholds and timeout caps for ${e.count} matching degradations`:`Investigate ${e.command_family} ${e.reason} cluster before tuning compression thresholds`}function tg(e,t,n){let r=[];for(let s of t.filter(i=>i.show_total>0))r.push({command_family:s.command_family,signal:`recovery_show_rate=${s.show_total}`,suggestion:s.show_hit_rate>=.5?"Consider preserving more context or raising terse thresholds for frequently recovered outputs":"Recovery misses dominate; inspect handle lifetime before threshold changes"});for(let s of n.filter(i=>i.count>1))r.push({command_family:s.command_family,signal:`degradation_cluster=${s.reason}:${s.count}`,suggestion:"Fix the repeated degradation before tightening compression"});for(let s of e.filter(i=>i.invocations>0&&i.tokens_saved===0))r.push({command_family:s.command_family,signal:"zero_token_savings",suggestion:"Consider bypassing or raising admission thresholds for this family"});return r.slice(0,10)}function ng(e){return e.reduce((t,n)=>t+n,0)/e.length}function rg(e){let t=e.filter(n=>n!=null);return t.length===0?null:Math.max(...t)}function sg(e){let t=og();for(let n of e){if(P(n.event_type)==="show"||P(n.degradation_reason)!==""||n.elided!==!0)continue;let r=ig(n.storage_class)??ft(P(n.command));t[r].records+=1;let s=Se(n.raw_bytes);t[r].bytes+=s,t[r].raw_bytes+=s}return t}function ig(e){return e==="derivable"||e==="re-executable"||e==="ephemeral"?e:null}function og(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}async function vn(e,t){return(await e.kv(t).list({limit:1e4}).catch(r=>{if(r instanceof Error&&/\bnot found\b/i.test(r.message))return{items:[]};throw r})).items.map(r=>ag(r.value)).filter(r=>Tr(r))}function ag(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function qt(e){let t=Date.parse(pt(e));return Number.isFinite(t)?t:0}function pt(e){return P(e.created_at)||P(e.ts)||""}function P(e){return typeof e=="string"?e:""}function Se(e){return mt(e)??0}function mt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ht(e,t){if(e.length===0)return null;let n=[...e].sort((s,i)=>s-i),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return q(n[r])}function Pc(e){return{wrapper_ms_p50:Ht(e,.5),wrapper_ms_p90:Ht(e,.9),wrapper_ms_p95:Ht(e,.95),wrapper_ms_p99:Ht(e,.99)}}function q(e){return Math.round(e*100)/100}function kr(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function cg(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${lg(t.getUTCDay())}:${t.getUTCHours()}`:null}function ug(e){let t=[];for(let n of["sun","mon","tue","wed","thu","fri","sat"])for(let r=0;r<24;r++){let s=e.get(`${n}:${r}`)??0;s>0&&t.push({weekday:n,hour:r,requests:s})}return t}function lg(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function dg(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return null;let n=t.getUTCDay(),r=n===0?-6:1-n;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()+r)).toISOString().slice(0,10)}function fg(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:q((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function mg(){return 24*60*60*1e3}function Tr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Nc,Bc,Lc,ae,X,ke,Ke,On,Bp,Ee=E(()=>{"use strict";Ce();Q();ze();Ws();Nc="rsp-telemetry.spool.toonl",Bc="rsp-telemetry.spool.jsonl",Lc="rsp-telemetry.spool.corrections.toonl",ae="rsp_accounting_events_v1",X="rsp_decisions_v1",ke="rsp_telemetry_invocations_v1",Ke="rsp_telemetry_degradations_v1",On="rsp_telemetry_index_v1",Bp=64*1024});var qc=E(()=>{"use strict";zs()});var ht={};M(ht,{ResidentRspElisionStore:()=>Dn,ensureResidentServer:()=>ir,kickResidentServer:()=>or,pingResident:()=>lt,readResidentRegistry:()=>bn,removeResidentRegistry:()=>cr,residentRegistryStatus:()=>wn,resolveResidentPaths:()=>Ve,sweepResidentRegistry:()=>za,warmResidentServer:()=>Va,writeResidentRegistry:()=>ar});import{randomUUID as pg}from"node:crypto";function Wc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Dn,Fe=E(()=>{"use strict";qc();ur();Dn=class{constructor(t,n,r={}){this.paths=t;this.config=n;this.opts=r}metrics;lastResponseMetrics(){return this.metrics}async mint(t,n){let s=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:n})).handle;if(!s?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return s}async get(t){let n=await this.request({op:"get",handle:t});return n?Wc(n)&&n.status==="expired"?n:!Wc(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async accountingStats(t){return await this.request({op:"accounting-stats",byteBudget:t})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async telemetryGains(t){return await this.request({op:"telemetry-gains",sinceDays:t})}async memory(t,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){this.opts.ensureResident!==!1&&await ir(this.paths,this.config);let n=await Lt(this.paths,{...t,id:pg()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Nr={};M(Nr,{RSP_WRAPPER_CAPABILITIES:()=>In,formatCodexHookDecision:()=>Qc,formatHookDecision:()=>Yc,hookDecisionFromClaudePreExecJson:()=>bg,hookDecisionFromCodexPreExecJson:()=>_g,rewriteCommand:()=>zc,rewriteTableFromCapabilities:()=>Vc,runClaudePreExecHook:()=>Rg,runCodexPreExecHook:()=>Sg});import{readFileSync as Cr}from"node:fs";import{existsSync as gg}from"node:fs";import{fileURLToPath as hg}from"node:url";function Vc(e){let t=new Map;for(let n of e)t.set(Ug(n.command),["rsp",...n.wrapper]);return t}function zc(e){let t=Cg(e);if(t)return t;let n=Pg(e);if(!n)return Pr(e);let r=n.tokens.map(c=>c.text);if(r.length>0&&cu(r[0]))return Pr(e);let s=wg(n);if(s)return s;if(n.tokens.some(c=>c.quoted))return Pr(e);let i=[...In].sort((c,u)=>u.command.length-c.command.length).find(c=>Dg(r,c.command));if(!i)return Pr(e);let o=["rsp",...i.wrapper,...r.slice(i.command.length)],a=ru(n.redirectSuffix);return{kind:"rewrite",command:[...o.map($n),...a].join(" "),capabilityId:i.id}}function wg(e){let t=e.tokens.map(s=>s.text),n=t[0],r=ru(e.redirectSuffix);return n==="cat"&&t.length===2&&Or(t[1])?{kind:"rewrite",command:["rsp","cat",$n(t[1]),...r].join(" "),capabilityId:"cat:file"}:(n==="head"||n==="tail")&&t.length===2&&Or(t[1])?{kind:"rewrite",command:["rsp","cat",`--${n}`,"10",$n(t[1]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===4&&t[1]==="-n"&&/^[1-9][0-9]*$/.test(t[2])&&Or(t[3])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[2],$n(t[3]),...r].join(" "),capabilityId:`cat:${n}`}:(n==="head"||n==="tail")&&t.length===3&&/^-[1-9][0-9]*$/.test(t[1])&&Or(t[2])?{kind:"rewrite",command:["rsp","cat",`--${n}`,t[1].slice(1),$n(t[2]),...r].join(" "),capabilityId:`cat:${n}`}:null}function Or(e){return!!e&&!e.startsWith("-")}async function bg(e,t){return await Kc(e,t)}async function _g(e,t){return await Kc(e,t)}async function Kc(e,t){return(await yi(e,t,"pre-exec")).decision}async function yi(e,t,n){let r=uu(e);if(!r.ok){let d={kind:"passthrough",reason:r.reason};return{decision:d,telemetryRoot:t.cwd,event:Cn({hook:n,command:"",decision:d,reason:r.reason})}}let s=r.payload,i=pe(s,["cwd"])||pe(s,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??kg)(i)){let d={kind:"passthrough",reason:"disabled"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:hi(s),decision:d,reason:"disabled"})}}let a=hi(s);if(!a){let d={kind:"passthrough",reason:"missing-command"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:a,decision:d,reason:"missing-command"})}}let c=process.hrtime.bigint(),l=je(i,process.env).proxyEnabled?Ig(a):(t.rewrite??zc)(a),f=Number(process.hrtime.bigint()-c)/1e6;if(l.kind!=="rewrite"){let d=l.reason?l:{...l,reason:"unsupported-command"};return{decision:d,telemetryRoot:i,event:Cn({hook:n,command:a,decision:d,reason:d.reason??"unsupported-command",decisionMs:f})}}return await xg(i,t.wakeResident??Eg),{decision:l,telemetryRoot:i,event:Cn({hook:n,command:a,decision:l,reason:l.capabilityId==="proxy:universal"?"universal-proxy":"matched-capability",decisionMs:f})}}function Yc(e){return e.kind==="rewrite"?Zc(e.command):{stdout:"",status:0}}function Qc(e){return e.kind==="rewrite"?Zc(e.command):{stdout:"",status:0}}function Zc(e){return{stdout:`${JSON.stringify({hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow",updatedInput:{command:e}}})}
|
|
49
|
+
`,status:0}}async function Rg(e){let t="";try{t=e?Cr(e,"utf8"):Cr(0,"utf8");let n=await yi(t,{cwd:process.cwd()},"claude-pre-exec");$r(n.telemetryRoot,n.event);let r=n.decision;eu("claude-pre-exec",r);let s=Yc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return $r(process.cwd(),Xc("claude-pre-exec",t,n)),tu("claude-pre-exec",n),0}}async function Sg(e){let t="";try{t=e?Cr(e,"utf8"):Cr(0,"utf8");let n=await yi(t,{cwd:process.cwd()},"codex-pre-exec");$r(n.telemetryRoot,n.event);let r=n.decision;eu("codex-pre-exec",r);let s=Qc(r);return s.stdout&&process.stdout.write(s.stdout),s.status}catch(n){return $r(process.cwd(),Xc("codex-pre-exec",t,n)),tu("codex-pre-exec",n),0}}function $r(e,t){Je(e,t).catch(()=>{})}function Cn(e){let t=e.command.trim(),n=e.decision.kind==="rewrite"?e.decision.capabilityId:void 0;return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e.hook,command:t||"unknown",command_family:au(t),decision:n?"contributed":"passed",reason:e.reason,capability_id:n,decision_ms:e.decisionMs}}function Xc(e,t,n){let r=uu(t),s=r.ok?hi(r.payload):"";return{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:e,command:s||"unknown",command_family:au(s),decision:"failed-open",reason:"hook-exception",error:wi(n)}}function kg(e){return je(e,process.env).enabled}async function Eg(e){let t=je(e,process.env);if(!t.enabled||!Og(t))return;let n=Ve(e);await or(n,Tg(t))}async function xg(e,t){try{await Promise.resolve(t(e))}catch(n){vg(n)}}function eu(e,t){if(process.env.RSP_DEBUG==="1"){if(t.kind==="rewrite"){process.stderr.write(`rsp hook ${e}: rewrite ${t.capabilityId}
|
|
50
50
|
`);return}process.stderr.write(`rsp hook ${e}: passthrough ${t.reason??"unsupported-command"}
|
|
51
|
-
`)}}function
|
|
52
|
-
`)}function
|
|
53
|
-
`)}function
|
|
54
|
-
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Nn(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let n=new Set([0,e.length-1]),r=
|
|
51
|
+
`)}}function tu(e,t){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook ${e}: exception ${wi(t)}
|
|
52
|
+
`)}function vg(e){process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp hook pre-exec: resident-wake-failed ${wi(e)}
|
|
53
|
+
`)}function wi(e){return e instanceof Error?e.name||"Error":typeof e}function Tg(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs}}function Og(e){if(!e.storeUri.startsWith("file://"))return!0;try{return gg(hg(e.storeUri))}catch{return!1}}function hi(e){return pe(e,["tool_input","command"])||pe(e,["tool_input","cmd"])||pe(e,["tool_input","args","command"])||pe(e,["input","command"])||pe(e,["input","cmd"])||pe(e,["arguments","command"])||pe(e,["arguments","cmd"])||pe(e,["command"])||pe(e,["cmd"])}function Pg(e){let t=e.trim();if(!t||/[\n\r|;()$`]/.test(t))return null;let n=nu(t);if(n.length===0||n[0]?.quoted||n.some(i=>/[()$`]/.test(i.text))||n.some(i=>i.text.includes("=")&&cu(i.text)))return null;let r=[],s=[];for(let i of n){if(i.text.includes(">")||i.text.includes("<")){if(i.quoted||i.text!=="2>/dev/null"&&i.text!=="2>&1")return null;s.push(i);continue}r.push(i)}return r.length===0?null:{tokens:r,redirectSuffix:s}}function nu(e){let t=[],n="",r=!1,s=null,i=()=>{!n&&!r||(t.push({text:n,quoted:r}),n="",r=!1)};for(let o=0;o<e.length;o+=1){let a=e[o];if(s){if(a===s){s=null;continue}if(s==='"'&&a==="\\"&&o+1<e.length){o+=1,n+=e[o];continue}n+=a;continue}if(a==="'"||a==='"'){s=a,r=!0;continue}if(a==="\\"&&o+1<e.length){o+=1,n+=e[o];continue}if(/[ \t]/.test(a)){i();continue}n+=a}return s?[]:(i(),t)}function Dg(e,t){return e.length<t.length?!1:t.every((n,r)=>e[r]===n)}function Cg(e){let t=nu(e.trim()).map(n=>n.text);return Dr(t)?{kind:"passthrough",reason:yg}:null}function Dr(e){return e[0]==="gh"&&e.some($g)}function $g(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function ru(e){return e.map(t=>t.text)}function $n(e){return/[^\w@%+=:,./-]/.test(e)?bi(e):e}function Ig(e){let t=Ag(e);return t?{kind:"passthrough",reason:t}:{kind:"rewrite",command:`rsp proxy -- ${bi(e.trim())}`,capabilityId:"proxy:universal"}}function Ag(e){let t=e.trim();if(!t)return"missing-command";if(iu(t))return"background";if(/\b(?:RSP_NO_PROXY|RED_SKILLS_RSP_NO_PROXY)=1\b/.test(t))return"opt-out";let n=Ar(Ir(t)[0]??"")[0];if(n==="rsp")return"opt-out";if(n&&su.has(n))return"interactive"}function Pr(e){let t=e.trim();return Ng(t)?{kind:"rewrite",command:`rsp exec -- ${bi(t)}`,capabilityId:"exec:compound"}:{kind:"passthrough"}}function Ng(e){return!(!e||!Bg(e)||!Lg(e)||iu(e)||/<<-?/.test(e)||/\$\(|`/.test(e)||/[<>]/.test(e)||Mg(e,"rsp")||ou(e,su)||jg(e))}function Bg(e){return/&&|[;|]/.test(e)}function iu(e){for(let t=0;t<e.length;t+=1)if(e[t]==="&"&&!(e[t-1]==="&"||e[t+1]==="&")&&!(e[t-1]===">"||e[t+1]===">"))return!0;return!1}function Lg(e){return Ir(e).some(t=>{let n=Ar(t);return n.length===0?!1:n[0]==="git"?["log","diff","show","blame"].includes(n[1]??""):n[0]==="gh"?n.some((r,s)=>s>0&&(r==="list"||r==="view")):n[0]==="vitest"?!0:n[0]==="cargo"&&n[1]==="test"})}function ou(e,t){return Ir(e).some(n=>{let r=Ar(n)[0];return r?t.has(r):!1})}function Mg(e,t){return ou(e,new Set([t]))}function jg(e){return Ir(e).some(t=>{let n=Ar(t);return n[0]==="grep"&&n.includes("-q")})}function Ir(e){return e.split(/&&|[;|]/).map(t=>t.trim()).filter(Boolean)}function Ar(e){return e.split(/[ \t]+/).filter(Boolean).map(t=>t.replace(/^env$/,""))}function bi(e){return`'${e.replace(/'/g,"'\\''")}'`}function au(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Dr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Dr(t)&&t[1]?`gh ${t[1]} json-jq`:Dr(t)?"gh json-jq":t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function cu(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Ug(e){return e.join("\0")}function uu(e){try{let t=JSON.parse(e);return lu(t)?{ok:!0,payload:t}:{ok:!1,reason:"payload-not-object"}}catch{return{ok:!1,reason:"payload-parse-error"}}}function pe(e,t){let n=e;for(let r of t){if(!lu(n))return"";n=n[r]}return typeof n=="string"?n:""}function lu(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var In,g0,yg,su,An=E(()=>{"use strict";Re();Fe();Ee();In=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"git:blame",command:["git","blame"],wrapper:["git","blame"]},{id:"git:branch:av",command:["git","branch","-av"],wrapper:["git","branch","-av"]},{id:"git:show",command:["git","show"],wrapper:["git","show"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],g0=Vc(In),yg="lossless-gh-json-jq";su=new Set(["bash","fish","htop","less","more","nano","node","python","python3","ssh","top","vi","vim","zsh"])});var ki={};M(ki,{NORMALIZATION_ALLOWLIST:()=>yu,NORMALIZE_ANSI:()=>Lr,NORMALIZE_BLANK_LINES:()=>Ur,NORMALIZE_CR_PROGRESS:()=>Mr,NORMALIZE_JSON_TOON:()=>hu,NORMALIZE_TRAILING_WHITESPACE:()=>jr,crushJsonArrayItems:()=>Nn,formatCodexNormalizeDecision:()=>Su,formatNormalizeDecision:()=>Ru,hookDecisionFromClaudePostExecJson:()=>wu,hookDecisionFromCodexPostExecJson:()=>bu,normalizeOutput:()=>Jr,renderGenericJsonLane:()=>Ri,runClaudePostExecHook:()=>Gg,runCodexPostExecHook:()=>Hg,transcodeJsonToToon:()=>gu});import{readFileSync as Br}from"node:fs";function gu(e,t){let n=t?.encode??D,r=t?.decode??j,s=e.trimEnd();if(!s)return e;let i;try{i=JSON.parse(s)}catch{return e}let o;try{o=n(i)}catch{return e}let a;try{a=r(o)}catch{return e}return _i(i,a)?o.trimEnd():e}async function Ri(e,t={}){let n=zg(e);if(!n)return{output:e,detected:!1,lossy:!1};let r=n.value;if(!Array.isArray(r))return{output:D(r).trimEnd(),detected:!0,lossy:!1};let s=r.length,i=pu(t.minTokens,Jg),o=pu(t.maxItems,Fg);if(!(s>o&&Xg(e)>=i))return{output:D(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s};let c;try{c=(t.crusher??Nn)(r,o)}catch(m){return{output:D(r).trimEnd(),detected:!0,lossy:!1,totalItems:s,keptItems:s,degradation:{reason:"json-array-crusher-failed",family:"json",stderrHead:eh(m)}}}let u=c.items,l={items:u},f=`items: ${c.kept} kept, ${c.dropped} dropped (shape outliers: ${c.shapeOutliers}, value outliers: ${c.valueOutliers})`,d;t.level&&t.level!=="lossless"&&(d=await t.store?.mint(Buffer.from(e),{command:t.command??"rsp json",loss:{level:t.level,bytes_elided:Buffer.byteLength(e)}}));let p=d?`original: rsp show ${d}`:`original: unavailable - re-run: ${t.command??"command"}`,h=D(l).trimEnd();return{output:[f,p,h].filter(Boolean).join(`
|
|
54
|
+
`),detected:!0,lossy:!0,totalItems:s,keptItems:u.length,handle:d}}function Nn(e,t){if(e.length<=t)return{items:[...e],total:e.length,kept:e.length,dropped:0,shapeOutliers:0,valueOutliers:0};let n=new Set([0,e.length-1]),r=Kg(e),s=new Set;r&&e.forEach((a,c)=>{Si(a)!==r&&s.add(c)});let i=Yg(e,r);for(let a of s)n.add(a);for(let a of i)n.add(a);let o=[...n].sort((a,c)=>a-c).slice(0,Math.max(2,t));return{items:o.map(a=>e[a]),total:e.length,kept:o.length,dropped:e.length-o.length,shapeOutliers:[...s].filter(a=>o.includes(a)).length,valueOutliers:[...i].filter(a=>o.includes(a)).length}}function Jr(e){let t=e;for(let n of yu)t=n.apply(t);return t}async function wu(e,t){return await _u(e,t)}async function bu(e,t){return await _u(e,t)}async function _u(e,t){let n=Vg(e),r=th(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Wg)(r))return{kind:"passthrough",reason:"disabled"};let i=nh(n,"tool_response");if(!i)return{kind:"passthrough",reason:"missing-output"};if(typeof i.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=i.output,c=(t.normalize??Jr)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Ru(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}function Su(e){return{stdout:"",status:0}}async function Gg(e){let t=e?Br(e,"utf8"):Br(0,"utf8"),n=await wu(t,{cwd:process.cwd()}),r=Ru(n);return r.stdout&&process.stdout.write(r.stdout),r.status}async function Hg(e){let t=e?Br(e,"utf8"):Br(0,"utf8"),n=await bu(t,{cwd:process.cwd()}),r=Su(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function qg(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let s=e.charCodeAt(n+1);if(s===93){for(n+=2;n<e.length;){let i=e.charCodeAt(n);if(i===7){n++;break}if(i===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(s===91){for(n+=2;n<e.length&&du(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&du(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function du(e){return e>=32&&e<=63}function Wg(e){return je(e,process.env).enabled}function Vg(e){try{let t=JSON.parse(e);return Kt(t)?t:{}}catch{return{}}}function zg(e){let t=e.trim();if(!t)return null;try{let r=JSON.parse(t);return Kt(r)||Array.isArray(r)?{value:r}:null}catch{}let n=[];for(let r of e.split(/\r?\n/))if(r.trim())try{n.push(JSON.parse(r))}catch{return null}return n.length>0?{value:n}:null}function Kg(e){let t=new Map;for(let s of e){let i=Si(s);t.set(i,(t.get(i)??0)+1)}let[n,r]=[...t.entries()].sort((s,i)=>i[1]-s[1]||s[0].localeCompare(i[0]))[0]??[];return typeof n=="string"&&typeof r=="number"&&r>e.length/2?n:null}function Si(e){return Array.isArray(e)?"array":Kt(e)?Object.keys(e).sort().map(t=>`${t}:${fu(e[t])}`).join("|"):fu(e)}function Yg(e,t){let n=new Set,r=new Map;e.forEach((s,i)=>{if(!(t&&Si(s)!==t))for(let[o,a]of ku(s)){let c=r.get(o)??[];c.push({index:i,value:a}),r.set(o,c)}});for(let s of r.values()){for(let i of Qg(s))n.add(i);for(let i of Zg(s))n.add(i)}return n}function Qg(e){let t=e.filter(a=>typeof a.value=="number"&&Number.isFinite(a.value));if(t.length<5||t.length!==e.length)return[];let n=t.map(a=>a.value).sort((a,c)=>a-c),r=mu(n),s=n.map(a=>Math.abs(a-r)).sort((a,c)=>a-c),i=mu(s);if(i===0)return t.filter(c=>c.value===r).length/t.length<.8?[]:t.filter(c=>c.value!==r).map(c=>c.index);let o=i*8;return t.filter(a=>Math.abs(a.value-r)>o).map(a=>a.index)}function Zg(e){if(e.length<5)return[];if(!e.every(s=>typeof s.value=="string"||typeof s.value=="boolean"||s.value===null))return[];let t=new Map;for(let s of e)t.set(String(s.value),(t.get(String(s.value))??0)+1);if(Math.max(...t.values())/e.length<.8)return[];let r=Math.max(2,Math.floor(e.length*.05));return e.filter(s=>(t.get(String(s.value))??0)<=r).map(s=>s.index)}function ku(e,t=""){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[[t||"$",e]]:Array.isArray(e)?[]:Kt(e)?Object.entries(e).flatMap(([n,r])=>ku(r,t?`${t}.${n}`:n)):[]}function fu(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function mu(e){let t=Math.floor(e.length/2);return e.length%2===1?e[t]??0:((e[t-1]??0)+(e[t]??0))/2}function Xg(e){return Math.ceil(e.length/4)}function pu(e,t){return e==null?t:Number.isFinite(e)&&e>0?Math.floor(e):t}function eh(e){let n=(e instanceof Error?e.message:String(e??"unknown crusher failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown crusher failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function th(e,t){let n=e;for(let r of t){if(!Kt(n))return"";n=n[r]}return typeof n=="string"?n:""}function nh(e,t){let n=e[t];return Kt(n)?n:null}function Kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function _i(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let o=t;return e.length!==o.length?!1:e.every((a,c)=>_i(a,o[c]))}let n=e,r=t,s=Object.keys(n),i=Object.keys(r);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&_i(n[o],r[o]))}var Lr,Mr,jr,Ur,hu,Jg,Fg,yu,Bn=E(()=>{"use strict";Q();Re();Lr={id:"ansi",apply:qg},Mr={id:"cr-progress",apply:e=>e.split(`
|
|
55
55
|
`).map(t=>{let n=t.endsWith("\r")?t.slice(0,-1):t,r=n.lastIndexOf("\r");return r>=0?n.slice(r+1):n}).join(`
|
|
56
56
|
`)},jr={id:"trailing-whitespace",apply:e=>e.split(`
|
|
57
57
|
`).map(t=>t.replace(/[ \t]+$/,"")).join(`
|
|
58
58
|
`)},Ur={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
|
|
59
59
|
|
|
60
|
-
`)};
|
|
61
|
-
`),s=
|
|
60
|
+
`)};hu={id:"json-to-toon",apply:e=>gu(e)},Jg=200,Fg=15;yu=[Lr,Mr,jr,Ur,hu]});var Du={};M(Du,{REPO_STORE_PATH:()=>xi,mergeRspBlock:()=>Tu,provisionRspRepoStore:()=>fh});import{constants as rh}from"node:fs";import{access as sh,copyFile as ih,mkdir as Eu,readFile as oh,rename as ah,writeFile as xu}from"node:fs/promises";import{dirname as ch,join as Ln,resolve as uh}from"node:path";async function fh(e,t={}){let n=uh(e),r=Ln(n,".red"),s=Ln(r,"config.yaml"),i=Ln(n,xi);await Eu(r,{recursive:!0}),await Eu(ch(i),{recursive:!0});let o="";try{o=await oh(s,"utf8")}catch(p){if(p.code!=="ENOENT")throw p}let a=Tu(o,{enabled:!0,ttlDays:t.ttlDays??Be,ephemeralTtlHours:t.ephemeralTtlHours??Le,byteBudget:t.byteBudget??Me,heavyGitByteThreshold:t.heavyGitByteThreshold??Ne}),c=a!==o;c&&await xu(s,a,"utf8");let u=!await Ei(i),l=!1,f=!1;if(u){let p=Ln(n,lh),h=Ln(n,dh);if(await Ei(p))await ah(p,i),f=!0;else if(await Ei(h))await ih(h,i),l=!0;else{let{RspElisionStore:m}=await Promise.resolve().then(()=>(ze(),Gt)),g=process.env.REDDB_BIN;try{await(await m.open({uri:`file://${i}`,ttlDays:t.ttlDays??Be,ephemeralTtlHours:t.ephemeralTtlHours??Le,byteBudget:t.byteBudget??Me,allowResidentOpen:!0})).close()}finally{g===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=g}}}let d=mh(a,xi);return d!==a&&await xu(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:u,memoryStoreMigrated:l,legacyStoreMigrated:f}}function Tu(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${Fr(t.ttlDays,Be)}`,` ephemeralTtlHours: ${Fr(t.ephemeralTtlHours,Le)}`,` byteBudget: ${Fr(t.byteBudget,Me)}`,` heavyGitByteThreshold: ${Fr(t.heavyGitByteThreshold,Ne)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
61
|
+
`),s=Ou(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
|
|
62
62
|
`)}
|
|
63
|
-
`}let i=
|
|
63
|
+
`}let i=vi(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
|
|
64
64
|
`)}
|
|
65
|
-
`}function
|
|
66
|
-
`),r=
|
|
65
|
+
`}function Ou(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Oi(r)&&Ti(r)===0&&Pu(r)===t)return n}return-1}function vi(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(Oi(e[s])&&Ti(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Ti(e){return(e.match(/^ */)?.[0]??"").length}function Oi(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Pu(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function Fr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function mh(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
|
|
66
|
+
`),r=Ou(n,"plugins");if(r===-1)return e;let s=vi(n,r,0),i=vu(n,"memory",r+1,s,2);if(i===-1)return e;let o=vi(n,i,2),a=[...n],c=vu(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
|
|
67
67
|
`)}
|
|
68
|
-
`}function
|
|
69
|
-
`}function
|
|
68
|
+
`}function vu(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(Oi(o)&&Ti(o)===s&&Pu(o)===t)return i}return-1}async function Ei(e){try{return await sh(e,rh.F_OK),!0}catch{return!1}}var xi,lh,dh,Cu=E(()=>{"use strict";Ce();Re();xi=Zs,lh=aa,dh=".red/memory/graph.rdb"});var Bu={};M(Bu,{runRspMcpServer:()=>gh});import{createInterface as ph}from"node:readline";async function gh(){let e=je(process.cwd(),process.env),t=ph({input:process.stdin,crlfDelay:1/0});for await(let n of t){if(!n.trim())continue;let r;try{r=JSON.parse(n);let s=await hh(r,e);Au({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Au({jsonrpc:"2.0",id:typeof Nu(n)?.id>"u"?null:Nu(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function hh(e,t){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return t.enabled?{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}},{name:"rsp_stats",description:"Read resident rsp accounting stats.",inputSchema:{type:"object",properties:{}}},{name:"rsp_show",description:"Read an rsp elision handle through the resident server.",inputSchema:{type:"object",properties:{handle:{type:"string"}},required:["handle"]}},{name:"rsp_compress",description:"Compress arbitrary text or JSON through rsp normalization, JSON selection, TOON rendering, and reversible elision.",inputSchema:{type:"object",properties:{payload:{description:"Text, JSON value, or JSON-serializable payload to compress."},level:{type:"string",enum:["brief","terse"],description:"Compression level. Defaults to brief."}},required:["payload"]}}]}:{tools:[{name:"rsp_status",description:"Explain whether rsp is enabled in this directory.",inputSchema:{type:"object",properties:{}}}]};if(e.method==="tools/call"){let n=e.params;if(n?.name==="rsp_status")return{content:[{type:"text",text:Iu(t)}]};if(!t.enabled)return{content:[{type:"text",text:Iu(t)}],isError:!0};let r=Eh(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:yt({tool:"rsp_stats",...await r.accountingStats(t.telemetryByteBudget)})}]};if(n?.name==="rsp_show"){let s=String(n.arguments?.handle??""),i=await r.get(s);return i?"status"in i?{content:[{type:"text",text:yt({tool:"rsp_show",handle:s,found:!1,category:"real-error",error:i.status,expired_at:i.expired_at,help:[i.command]})}],isError:!0}:{content:[{type:"text",text:yt({tool:"rsp_show",handle:s,found:!0,bytes:i.original.length,text:i.original.toString("utf8")})}]}:{content:[{type:"text",text:yt(yh(s,"not found"))}],isError:!0}}if(n?.name==="rsp_compress")return{content:[{type:"text",text:await wh(n.arguments,r)}]}}return{}}function yt(e){return`${G(e)}
|
|
69
|
+
`}function yh(e,t){return{tool:"rsp_show",handle:e,found:!1,category:"real-error",error:t,help:["rsp show el:<id>"]}}async function wh(e,t){let n=bh(e?.payload),r=_h(e?.level),s=await Ri(n,{level:r,command:"rsp mcp compress",store:t});if(s.detected)return Sh(s.output);let i=Jr(n);if(r==="brief"&&Buffer.byteLength(i)<=2*1024)return yt({tool:"rsp_compress",level:r,detected:"text",bytes:Buffer.byteLength(n),text:i});let o=Buffer.from(n),a=await t.mint(o,{command:"rsp mcp compress",loss:{level:r,bytes_elided:o.length}});return Rh(i,o.length,a,r)}function bh(e){return typeof e=="string"?e:e==null?"":JSON.stringify(e)}function _h(e){return e==="terse"?"terse":"brief"}function Rh(e,t,n,r){let s=r==="terse"?1024:2048,i=Buffer.from(e),o=Math.max(1,Math.floor(s/2)),a=$u(i.subarray(0,o)),c=$u(i.subarray(Math.max(0,i.length-o)));return yt({tool:"rsp_compress",level:r,detected:"text",bytes:t,lines:kh(i),head:a,tail:c&&c!==a?c:null,handle:n,help:[`rsp show ${n}`]})}function Sh(e){return e.endsWith(`
|
|
70
70
|
`)?e:`${e}
|
|
71
|
-
`}function
|
|
72
|
-
`)}function
|
|
71
|
+
`}function $u(e){return e.toString("utf8").replace(/�$/g,"")}function kh(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function Eh(e){return new Dn(Ve(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:e.telemetryDrainTimeoutMs,idleMs:e.idleMs})}function Iu(e){return yt({tool:"rsp_status",enabled:e.enabled,status:e.enabled?"enabled":"disabled",message:e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory",help:e.enabled?[]:["/red-setup"]})}function Au(e){process.stdout.write(`${JSON.stringify(e)}
|
|
72
|
+
`)}function Nu(e){try{return JSON.parse(e)}catch{return null}}var Lu=E(()=>{"use strict";pn();Re();Bn();Fe()});var Ju={};M(Ju,{readGhConditionalJson:()=>ee});import{spawn as xh}from"node:child_process";import{createHash as vh,randomUUID as Th}from"node:crypto";import{mkdir as Oh,readFile as Ph,rename as Dh,writeFile as Ch}from"node:fs/promises";import{dirname as $h,join as Mu}from"node:path";async function ee(e){let t=e.cwd??process.cwd(),n=e.telemetryRoot??t,r=Nh(e.path,e.params),s=Bh(r),i=await jh(n),o=i.entries[s],a=["api","--include","--method","GET",e.path];for(let[f,d]of ju(e.params))a.push("-f",`${f}=${String(d)}`);o?.etag&&a.push("-H",`If-None-Match: ${o.etag}`);let c=await Lh(a,t,e.env),u=Mh(c.stdout);if(u.statusCode===304&&!!o)return await Pi(n,e.command??`gh api ${e.path}`,!0),{status:0,stdout:o.body,stderr:c.stderr,etag:o.etag,quotaFree:!0};if(u.statusCode>=200&&u.statusCode<300){let f=u.headers.get("etag");return f&&(i.entries[s]={key:s,request:r,etag:f,body:u.body,updated_at:new Date().toISOString()},await Uh(n,i)),await Pi(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body,stderr:c.stderr,etag:f??void 0,quotaFree:!1}}return await Pi(n,e.command??`gh api ${e.path}`,!1),{status:c.status,stdout:u.body||c.stdout,stderr:c.stderr,quotaFree:!1}}function ju(e){return Object.entries(e??{}).filter(t=>t[1]!==void 0).sort(([t],[n])=>t.localeCompare(n))}function Nh(e,t){return JSON.stringify({method:"GET",path:e,params:ju(t)})}function Bh(e){return vh("sha256").update(`rsp-gh-etag-v1\0${e}`).digest("hex")}async function Lh(e,t,n){return await new Promise(r=>{let s=xh("gh",e,{cwd:t,env:n?{...process.env,...n}:process.env,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>r({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{r({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}function Mh(e){let t=e.replace(/\r\n/g,`
|
|
73
73
|
`),n=[...t.matchAll(/^HTTP\/\S+\s+(\d{3})[^\n]*\n/gm)];if(n.length===0)return{statusCode:0,headers:new Map,body:e};let r=n[n.length-1],s=Number(r[1]),i=r.index+r[0].length,o=t.indexOf(`
|
|
74
74
|
|
|
75
75
|
`,i),a=o>=0?t.slice(i,o):t.slice(i),c=new Map;for(let u of a.split(`
|
|
76
|
-
`)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:o>=0?t.slice(o+2):""}}async function
|
|
77
|
-
`,{encoding:"utf8",mode:384}),await
|
|
78
|
-
`),0;if(!
|
|
79
|
-
`),await
|
|
80
|
-
`)}function
|
|
81
|
-
`),stdout:JSON.stringify({number:Mn(r,"number"),state:
|
|
82
|
-
`,"utf8")}async function
|
|
83
|
-
`)}function
|
|
84
|
-
`)}function Wr(e,t){if(t.length===0)return[];if(t.some(i=>i.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(i=>i.command.slice(1)).filter(i=>i.length===1).map(i=>i[0]).filter(Vr),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(Vr)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let i=n.map(o=>Ku(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of Sy(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${Ey(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Ku(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function Sy(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function ky(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Vr(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function Vr(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Ku(e){return e.replace(/[\\|)&;]/g,"\\$&")}function Ey(e){return e.replace(/'/g,"'\\''")}function xy(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Qu=E(()=>{"use strict";An()});function Ui(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.schemaVersion===1&&typeof t.id=="string"&&t.id.length>0&&typeof t.emitter=="string"&&t.emitter.length>0&&typeof t.occurredAt=="string"&&typeof t.taskClass=="string"&&vy(t.chosenOption)&&Ty(t.outcome)&&Oy(t.cost)}function vy(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Ty(e){return e==="success"||e==="failure"||e==="escalated"}function Oy(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var Zu=E(()=>{});import{createHash as Py}from"node:crypto";function ll(e,t){return new Fi(e,t)}function Xu(e){let t=Number(e.red_entity_id??e.rid),n=Gi(e.properties??e.PROPERTIES),r=dl(String(e.node_type??e.NODE_TYPE??n.kind??"note"));if(!Number.isFinite(t))return null;let s=String(n.id??e.label??e.LABEL??t),i=String(n.title??e.label??e.LABEL??s),o=String(n.content??""),a=Array.isArray(n.tags)?n.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:r,properties:{...n,id:s,title:i,content:o,tags:a,created_at:Number(n.created_at??c),updated_at:Number(n.updated_at??n.created_at??c),hash:String(n.hash??"")}}}function el(e){let t=Number(e.red_entity_id??e.rid),n=Number(e.from??e.FROM??e.from_rid??e.source),r=Number(e.to??e.TO??e.to_rid??e.target),s=fl(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)?null:{rid:t,kind:s,from_rid:n,to_rid:r,weight:Number(e.weight??1),properties:Gi(e.properties??e.PROPERTIES)}}function $y(e){let t=Number(e.red_entity_id??e.rid),n=Gi(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Ui(n)?null:{rid:t,event:n}}function Gi(e){return e==null?{}:typeof e=="string"?JSON.parse(e):zr(e)?e:{}}function dl(e){let t=e==="contact"?"person":e;if(Dy.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function fl(e){if(Cy.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Iy(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function tl(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Rt(e){return zr(e)?e:{}}function nl(e,t){return Rt(e)[t]}function rl(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function sl(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function il(e){let t=Rt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function ee(e){return typeof e=="string"&&e.length>0?e:void 0}function zr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ji(e){return e!=null}function Ay(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function Ny(e){return Py("sha256").update(JSON.stringify(e)).digest("hex")}function By(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function ol(e){return`artifact-hash:${e}`}function al(e,t,n){return`connection:${e}:${t}:${n}`}function cl(){return"model-tier-bandit:v1"}function Ly(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ul(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function ml(e,t){let n=e.properties.title.toLowerCase(),r=e.properties.content.toLowerCase(),s=e.properties.tags.map(o=>o.toLowerCase()),i=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+ul(n,a)*3+ul(r,a),0),tags:t.reduce((o,a)=>o+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(i===a?3:i.includes(a)||a.includes(i)?1:0),0)}}function My(e,t,n,r){let s=0;for(let i of n){let o=i.from_rid===e.rid?i.to_rid:i.to_rid===e.rid?i.from_rid:null;if(o==null)continue;let a=r.get(o);if(!a)continue;let c=pl({...ml(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return _t(s)}function pl(e){return{...e,lexical:_t(e.lexical),tags:_t(e.tags),kind:_t(e.kind),connections:_t(e.connections),vector:_t(e.vector),total:_t(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function _t(e){return Math.round(e*1e3)/1e3}function jy(e,t){if(e.length<=220)return e;let n=e.toLowerCase(),r=t.map(i=>n.indexOf(i)).filter(i=>i>=0).sort((i,o)=>i-o)[0]??0,s=Math.max(0,r-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function Uy(e,t){let n=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",r=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,i)=>({ref:`B${i+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:n,missing_evidence:r}}function Jy(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var xe,Dy,Cy,Fi,gl=E(()=>{"use strict";Zu();xe={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Dy=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),Cy=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Fi=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(Rt(n));if(t==="getArtifact")return await this.getArtifact(nl(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Rt(n);return await this.search(rl(r,"query"),sl(r,"limit")??10,il(r.options))}if(t==="think"){let r=Rt(n);return await this.think(rl(r,"query"),sl(r,"limit")??8,il(r.options))}if(t==="link")return await this.link(Rt(n));if(t==="backlinks")return await this.backlinks(nl(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Rt(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:Jy(t.map(r=>r.kind))}}async capture(t){let n=ee(t.title)||"Untitled artifact",r=ee(t.content);if(!r)throw new Error("brain capture requires content");let s=dl(ee(t.kind)||"note"),i=Ay(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=Ny([s,n,r,i,ee(t.sourcePath),ee(t.sourceSession)]),c=await this.kv().get(ol(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${By(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:ee(t.sourceAgent),source_runner:ee(t.sourceRunner),source_session:ee(t.sourceSession),source_path:ee(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:zr(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${xe.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let p=Xu(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(ol(a),p.rid),await this.materializeTagConnections(p),p}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${xe.artifacts}`)).rows.map(Xu).filter(Ji)}async search(t,n,r={}){let s=Ly(t),i=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!i.has(u.rid)).map(u=>{let l=ml(u,s),f=pl({...l,connections:My(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:jy(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,n)))}async think(t,n,r={}){let s=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return Uy(t,s)}async link(t){let n=await this.getArtifact(tl(t.from)),r=await this.getArtifact(tl(t.to));if(!n)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!r)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=fl(ee(t.kind)||"related_to"),i=await this.findConnection(n.rid,r.rid,s);if(i!=null){let l=(await this.listConnections()).find(f=>f.rid===i);if(l)return l}let o={reason:ee(t.reason),confidence:ee(t.confidence)||"explicit",created_at:Date.now(),metadata:zr(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${xe.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=el(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(al(n.rid,r.rid,s),u.rid),u}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${xe.connections}`)).rows.map(el).filter(Ji)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=Iy(ee(t.interval)||"day"),s=ee(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:s,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Ui(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${xe.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${xe.outcomeEvents}`)).rows.map($y).filter(Ji).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(cl());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(cl(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let n={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(n),n}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let n of t.properties.tags){let r=await this.capture({title:n,content:`Tag: ${n}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:r.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,n,r){let s=await this.kv().get(al(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(xe.kv)}}});var Ol={};M(Ol,{runResidentServer:()=>Ky});import{randomUUID as Qt}from"node:crypto";import{execFileSync as Fy,spawn as Gy}from"node:child_process";import{existsSync as Hy}from"node:fs";import{mkdir as Sl,rename as qy,rm as hl,writeFile as kl}from"node:fs/promises";import{createServer as Wy}from"node:net";import{dirname as Vi,join as Kr}from"node:path";import{fileURLToPath as Vy,pathToFileURL as zy}from"node:url";async function Ky(e){await Sl(Vi(e.socketPath),{recursive:!0});let t=cw();aw();let n=e.telemetryDrainTimeoutMs??El,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??fr,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=Wy(x=>{l.add(x),x.once("close",()=>l.delete(x)),h(),gw(x,async O=>{h();let L=await hw(r,O,e.storeUri,e.residentVersion??"0.0.0-dev"),ce={id:O.id,ok:!0,value:L,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};Tl(x,ce),O.op==="handover"&&setImmediate(()=>p())})});function p(){i=!0,u=!0,c=ow(c),d.close();for(let x of l)x.destroy()}function h(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(x=>{let O=()=>{Yr(),d.close();for(let L of l)L.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,O),{signal:x,handler:O}});await new Promise((x,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise(V=>setTimeout(V,O));let L=await xn.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),ce=Number(process.hrtime.bigint()-x)/1e6,he=new Wi(L,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??lr,byteBudget:e.telemetryByteBudget??e.byteBudget??dr});if(i){await L.close();return}if(await Hi(he,n),i){await L.close();return}r={kind:"ready",store:L,telemetry:he,storeOpenCount:1,storeElapsedMs:ce},s=setInterval(()=>{let V=r.kind==="ready"?r:void 0;V&&Hi(V.telemetry,n)},f),s.unref(),h()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},h()}),e.pidPath&&await kl(e.pidPath,`${process.pid}
|
|
85
|
-
`,{encoding:"utf8",mode:384});let w=e.residentVersion??"0.0.0-dev",y=e.registryPath??Kr(
|
|
86
|
-
`,{encoding:"utf8",mode:384}),await
|
|
87
|
-
`)}}async function
|
|
76
|
+
`)){let l=u.indexOf(":");l<=0||c.set(u.slice(0,l).trim().toLowerCase(),u.slice(l+1).trim())}return{statusCode:s,headers:c,body:o>=0?t.slice(o+2):""}}async function jh(e){for(let t of[Uu(e),Jh(e)])try{let n=Fh(await Ph(t,"utf8"));if(Gh(n))return n}catch{}return{version:1,entries:{}}}async function Uh(e,t){let n=Uu(e);await Oh($h(n),{recursive:!0});let r=`${n}.${process.pid}.${Date.now()}.tmp`;await Ch(r,`${D(t)}
|
|
77
|
+
`,{encoding:"utf8",mode:384}),await Dh(r,n)}function Uu(e){return Mu(F(e),Ih)}function Jh(e){return Mu(F(e),Ah)}function Fh(e){try{return JSON.parse(e)}catch{return j(e)}}async function Pi(e,t,n){await Je(e,{collection:X,id:Th(),created_at:new Date().toISOString(),command:t,command_family:"gh api",decision:"contributed",reason:n?"gh-conditional-304":"gh-conditional-fetch",quota_free:n,saved_units:n?1:0})}function Gh(e){return Di(e)&&e.version===1&&Di(e.entries)&&Object.values(e.entries).every(Hh)}function Hh(e){return Di(e)&&typeof e.key=="string"&&typeof e.request=="string"&&typeof e.etag=="string"&&typeof e.body=="string"&&typeof e.updated_at=="string"}function Di(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ih,Ah,Gr=E(()=>{"use strict";Ce();Q();Ee();Ih="gh-etag-cache.toon",Ah="gh-etag-cache.json"});var ji={};M(ji,{listWaits:()=>Wu,renderWaitHelp:()=>Ni,runWait:()=>Qh});import{spawn as Li}from"node:child_process";import{existsSync as Ai}from"node:fs";import{mkdir as qh,readdir as Wh,readFile as Vh,rm as qu,writeFile as zh}from"node:fs/promises";import{join as Un,resolve as Ci}from"node:path";import{randomUUID as Kh}from"node:crypto";async function Qh(e,t=process.cwd()){let n=Xh(e);if(n.kind==="help"||e.includes("--help")||e.includes("-h"))return process.stdout.write(Ni()),0;if(n.kind==="ls")return process.stdout.write(`${G({waits:await Wu(t)})}
|
|
78
|
+
`),0;if(!Zh(n.kind))return process.stdout.write(Ni()),2;let r=n.kind,s={id:Kh(),target:my(n),reason:n.options.reason,pid:process.pid,started_at:new Date().toISOString(),poll_tier:Yh[n.kind],status:"running"},i=Un(await Bi(t),`${s.id}.json`),o={status:"indeterminate",exitCode:2,summary:"wait did not start"};try{return await qh(await Bi(t),{recursive:!0}),await Vu(i,s),o=await ey({...n,kind:r},t,i,s),process.stdout.write(`${G(fy(r,s,o))}
|
|
79
|
+
`),await dy(n.options),o.exitCode}finally{await qu(i,{force:!0})}}function Zh(e){return e==="cmd"||e==="pr"||e==="run"||e==="release"}function Ni(){return["usage: rsp wait <subcommand> [options]","","Subcommands:"," rsp wait pr <number> [--timeout 45m] [--reason <text>]"," rsp wait run <id|--branch <branch> --latest> [--timeout 45m]"," rsp wait release [--tag <glob>] [--timeout 2h]",' rsp wait cmd -- "<command line>" [--timeout 30m]'," rsp wait ls","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Doctrine: never hand-write sleep polling loops; run rsp wait in a background shell - process exit IS the signal.","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate.",'Completion hooks: --signal-pid <pid> [--signal USR1] and --notify-cmd "<cmd>" run after a verdict.',""].join(`
|
|
80
|
+
`)}function Xh(e){let t=e[1],n={timeoutMs:Fu.cmd,reason:"",signal:"SIGUSR1"},r={kind:t,options:n};if(!t||t==="--help"||t==="-h")return{...r,kind:"help"};if(t==="ls")return r;if(t!=="cmd"&&t!=="pr"&&t!=="run"&&t!=="release")return{...r,kind:void 0};n.timeoutMs=Fu[t];let s=e.indexOf("--"),i=s>=0?s:e.length;for(let o=2;o<i;o++){let a=e[o];a==="--timeout"?n.timeoutMs=zu(e[++o]??""):a==="--reason"?n.reason=e[++o]??"":a==="--signal-pid"?n.signalPid=Number(e[++o]):a==="--signal"?n.signal=hy(e[++o]??""):a==="--notify-cmd"?n.notifyCmd=e[++o]??"":t==="run"&&a==="--branch"?r.branch=e[++o]??"":t==="run"&&a==="--latest"?r.latest=!0:t==="release"&&a==="--tag"?r.tagGlob=e[++o]??"":!a.startsWith("--")&&!r.target&&(r.target=a)}return t==="cmd"&&(r.commandLine=s>=0?e.slice(s+1).join(" "):""),r}async function ey(e,t,n,r){switch(e.kind){case"cmd":return await ty(e.commandLine??"",e.options.timeoutMs,t,n,r);case"pr":return await $i(ny(e.target??"",t,{emptyChecksGraceMs:Hu("RSP_WAIT_PR_EMPTY_CHECKS_GRACE_MS",3e4)}),e.options.timeoutMs,Hu("RSP_WAIT_PR_POLL_MS",15e3),n,r);case"run":return await $i(()=>sy(e,t),e.options.timeoutMs,15e3,n,r);case"release":return await $i(()=>oy(e.tagGlob,new Date(r.started_at),t),e.options.timeoutMs,6e4,n,r)}}async function ty(e,t,n,r,s){return e.trim()?await new Promise(i=>{let o=!1,a=l=>{o||(o=!0,i(l))},c=Li(e,{cwd:n,shell:!0,stdio:"ignore",detached:!1}),u=setTimeout(()=>{c.kill("SIGTERM"),jn(r,s,"timeout"),a({status:"timeout",exitCode:2,summary:`command timed out after ${Ku(t)}`})},t);c.once("error",l=>{clearTimeout(u),jn(r,s,"failure"),a({status:"failure",exitCode:1,summary:l.message})}),c.once("close",(l,f)=>{if(clearTimeout(u),o)return;let d=l===0;jn(r,s,d?"success":"failure"),a({status:d?"success":"failure",exitCode:d?0:1,summary:d?"command exited successfully":`command exited with ${f??l??"unknown"}`,details:{status:l??null,signal:f??null}})})}):{status:"indeterminate",exitCode:2,summary:"missing command line"}}async function $i(e,t,n,r,s){let i=Date.now()+t,o=0;for(;Date.now()<i;){let a=await e();if(a.status!=="running"&&a.status!=="indeterminate")return await jn(r,s,a.status),a;let c=Math.min(n*4,Math.round(n*Math.pow(1.25,o++)))+Math.floor(Math.random()*1e3);await by(Math.min(c,Math.max(0,i-Date.now())))}return await jn(r,s,"timeout"),{status:"timeout",exitCode:2,summary:`timed out after ${Ku(t)}`}}function ny(e,t,n){let r=Date.now();return()=>ry(e,t,n,r)}async function ry(e,t,n,r){if(!/^[1-9][0-9]*$/.test(e))return{status:"indeterminate",exitCode:2,summary:"missing PR number"};let s=await qr(["pr","view",e,"--json","number,state,mergeable,statusCheckRollup,url"],t);if(s.status!==0)return{status:"indeterminate",exitCode:2,summary:s.stderr||"gh pr view failed"};let i=Mi(s.stdout),o=Array.isArray(i.statusCheckRollup)?i.statusCheckRollup:[],a=String(i.mergeable??""),c=o.map(py),u=c.filter(f=>f==="failure").length,l=c.filter(f=>f==="pending").length;if(String(i.state)!=="OPEN")return wt("failure",`PR #${e} is ${String(i.state).toLowerCase()}`,{mergeable:a});if(u>0)return wt("failure",`PR #${e} has failing checks`,{failing:u,pending:l,mergeable:a});if(l>0)return{status:"running",exitCode:2,summary:`PR #${e} has ${l} pending checks`};if(o.length===0){let f=Date.now()-r;return a==="UNKNOWN"||f<n.emptyChecksGraceMs?{status:"running",exitCode:2,summary:`PR #${e} has no registered checks yet`,details:{checks:0,mergeable:a,empty_checks_elapsed_ms:f}}:wt("success",`PR #${e} has no checks configured`,{checks:0,mergeable:a})}return a==="UNKNOWN"?{status:"running",exitCode:2,summary:`PR #${e} mergeability is still unknown`,details:{checks:o.length,mergeable:a}}:wt("success",`PR #${e} checks passed`,{checks:o.length,mergeable:a})}async function sy(e,t){let n=e.target??(e.latest&&e.branch?await iy(e.branch,t):"");if(!n)return{status:"indeterminate",exitCode:2,summary:"missing run id"};let r=await qr(["run","view",n,"--json","databaseId,status,conclusion,workflowName,headBranch,url"],t);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh run view failed"};let s=Mi(r.stdout),i=String(s.status??"").toLowerCase(),o=String(s.conclusion??"").toLowerCase();return i!=="completed"?{status:"running",exitCode:2,summary:`run ${n} is ${i||"pending"}`}:o==="success"?wt("success",`run ${n} succeeded`,Gu(s)):wt("failure",`run ${n} concluded ${o||"unknown"}`,Gu(s))}async function iy(e,t){let n=await qr(["run","list","--branch",e,"--limit","1","--json","databaseId"],t);if(n.status!==0)return"";let r=JSON.parse(n.stdout),s=Array.isArray(r)?r[0]:void 0;return bt(s)&&s.databaseId!=null?String(s.databaseId):""}async function oy(e,t,n){let r=await qr(["release","list","--limit","20","--json","tagName,publishedAt,isDraft"],n);if(r.status!==0)return{status:"indeterminate",exitCode:2,summary:r.stderr||"gh release list failed"};let s=JSON.parse(r.stdout),o=(Array.isArray(s)?s.filter(bt):[]).find(a=>{let c=String(a.tagName??""),u=new Date(String(a.publishedAt??""));return a.isDraft!==!0&&(!e||yy(e,c))&&u>=t});return o?wt("success",`release ${String(o.tagName)} published`,{tag:String(o.tagName),published_at:String(o.publishedAt??"")}):{status:"running",exitCode:2,summary:"no matching release is published yet"}}async function qr(e,t){let n=await ay(e,t);return n||await new Promise(r=>{let s=Li("gh",e,{cwd:t,stdio:["ignore","pipe","pipe"]}),i=[],o=[];s.stdout.on("data",a=>i.push(Buffer.from(a))),s.stderr.on("data",a=>o.push(Buffer.from(a))),s.once("error",a=>r({status:1,stdout:"",stderr:a.message})),s.once("close",a=>{r({status:a??1,stdout:Buffer.concat(i).toString("utf8"),stderr:Buffer.concat(o).toString("utf8").trim()})})})}async function ay(e,t){if(e[0]==="pr"&&e[1]==="view"&&e[2])return await cy(e[2],t);if(e[0]==="run"&&e[1]==="view"&&e[2]){let n=await ee({path:`repos/{owner}/{repo}/actions/runs/${e[2]}`,cwd:t,command:`gh ${e.join(" ")}`});if(n.status!==0)return n;let r=Yt(JSON.parse(n.stdout));return{status:0,stderr:n.stderr,stdout:JSON.stringify({databaseId:Mn(r,"database_id")||Mn(r,"id"),status:W(r,"status").toUpperCase(),conclusion:W(r,"conclusion").toUpperCase(),workflowName:W(r,"workflow_name")||W(r,"name"),headBranch:W(r,"head_branch"),url:W(r,"html_url")})}}if(e[0]==="run"&&e[1]==="list"){let n=Ii(e,"--branch"),r=Ii(e,"--limit")??"20",s=await ee({path:"repos/{owner}/{repo}/actions/runs",params:{branch:n,per_page:r},cwd:t,command:`gh ${e.join(" ")}`});if(s.status!==0)return s;let i=Hr(Yt(JSON.parse(s.stdout)).workflow_runs).map(o=>({databaseId:Mn(o,"database_id")||Mn(o,"id")}));return{status:0,stdout:JSON.stringify(i),stderr:s.stderr}}if(e[0]==="release"&&e[1]==="list"){let n=Ii(e,"--limit")??"20",r=await ee({path:"repos/{owner}/{repo}/releases",params:{per_page:n},cwd:t,command:`gh ${e.join(" ")}`});if(r.status!==0)return r;let s=Hr(JSON.parse(r.stdout)).map(i=>({tagName:W(i,"tag_name"),publishedAt:W(i,"published_at"),isDraft:i.draft===!0}));return{status:0,stdout:JSON.stringify(s),stderr:r.stderr}}return null}async function cy(e,t){let n=await ee({path:`repos/{owner}/{repo}/pulls/${e}`,cwd:t,command:`gh pr view ${e}`});if(n.status!==0)return n;let r=Yt(JSON.parse(n.stdout));if(Array.isArray(r.statusCheckRollup))return{status:0,stdout:n.stdout,stderr:n.stderr};let s=W(Yt(r.head),"sha"),[i,o]=s?await Promise.all([ee({path:`repos/{owner}/{repo}/commits/${s}/status`,cwd:t,command:`gh pr view ${e} status`}),ee({path:`repos/{owner}/{repo}/commits/${s}/check-runs`,cwd:t,command:`gh pr view ${e} check-runs`})]):[{status:0,stdout:"{}",stderr:"",quotaFree:!1},{status:0,stdout:"{}",stderr:"",quotaFree:!1}],a=i.status===0?Hr(Yt(JSON.parse(i.stdout)).statuses):[],c=o.status===0?Hr(Yt(JSON.parse(o.stdout)).check_runs):[];return{status:0,stderr:[n.stderr,i.stderr,o.stderr].filter(Boolean).join(`
|
|
81
|
+
`),stdout:JSON.stringify({number:Mn(r,"number"),state:W(r,"state").toUpperCase(),mergeable:uy(r),statusCheckRollup:[...a.map(u=>({conclusion:W(u,"state").toUpperCase()})),...c.map(u=>({status:W(u,"status").toUpperCase(),conclusion:W(u,"conclusion").toUpperCase()}))],url:W(r,"html_url")})}}function uy(e){let t=W(e,"mergeable_state").toUpperCase();return t&&t!=="UNKNOWN"?t==="CLEAN"?"MERGEABLE":t:e.mergeable===!0?"MERGEABLE":e.mergeable===!1?"CONFLICTING":"UNKNOWN"}async function Wu(e){let t=await Bi(e);if(!Ai(t))return[];let n=await Wh(t).catch(()=>[]),r=[];for(let s of n.filter(i=>i.endsWith(".json")||i.endsWith(".toon"))){let i=Un(t,s),o=gy(await Vh(i,"utf8").catch(()=>"{}")),a=typeof o.pid=="number"?o.pid:0;if(!a||!wy(a)){await qu(i,{force:!0});continue}r.push(o)}return r}async function Bi(e){return Un(await ly(e),".red","tmp","waits")}async function ly(e){let t=Ci(e);for(;;){if(Ai(Un(t,".red"))||Ai(Un(t,".git")))return t;let n=Ci(t,"..");if(n===t)return Ci(e);t=n}}async function jn(e,t,n){await Vu(e,{...t,status:n}).catch(()=>{})}async function Vu(e,t){await zh(e,`${G(t)}
|
|
82
|
+
`,"utf8")}async function dy(e){if(e.signalPid&&Number.isInteger(e.signalPid)&&e.signalPid>0)try{process.kill(e.signalPid,e.signal)}catch{}e.notifyCmd?.trim()&&await new Promise(t=>{let n=Li(e.notifyCmd,{shell:!0,stdio:"ignore",detached:!0});n.once("error",()=>t()),n.once("close",()=>t())})}function fy(e,t,n){return{wait:{id:t.id,target:t.target,kind:e,status:n.status,reason:t.reason,started_at:t.started_at,completed_at:new Date().toISOString(),poll_tier:t.poll_tier},verdict:{exit_code:n.exitCode,summary:n.summary,...n.details?{details:n.details}:{}}}}function wt(e,t,n){return{status:e,exitCode:e==="success"?0:1,summary:t,details:n}}function my(e){return e.kind==="cmd"?`cmd:${e.commandLine??""}`:e.kind==="run"&&e.branch&&e.latest?`run:${e.branch}:latest`:e.kind==="release"?`release:${e.tagGlob??"*"}`:`${e.kind}:${e.target??""}`}function py(e){let t=bt(e)?e:{},n=String(t.conclusion??t.state??t.status??"").toLowerCase();return["success","successful","passed","completed","neutral","skipped"].includes(n)?"success":["failure","failed","error","timed_out","cancelled","action_required"].includes(n)?"failure":"pending"}function Gu(e){return{database_id:typeof e.databaseId=="number"?e.databaseId:String(e.databaseId??""),conclusion:String(e.conclusion??""),workflow:String(e.workflowName??""),branch:String(e.headBranch??""),url:String(e.url??"")}}function Mi(e){let t=JSON.parse(e);if(!bt(t))throw new Error("expected JSON object");return t}function gy(e){let t=e.trim();if(!t)return{};try{return Mi(t)}catch{let n=j(t);if(!bt(n))throw new Error("expected structured object");return n}}function bt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Yt(e){return bt(e)?e:{}}function Hr(e){return Array.isArray(e)?e.filter(bt):[]}function W(e,t){let n=e[t];return typeof n=="string"?n:""}function Mn(e,t){let n=e[t];return typeof n=="number"?n:0}function Ii(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function zu(e){let t=/^([1-9][0-9]*)(ms|s|m|h)?$/.exec(e);if(!t)throw new Error(`invalid timeout: ${e}`);let n=Number(t[1]),r=t[2]??"ms";return r==="ms"?n:r==="s"?n*1e3:r==="m"?n*6e4:n*60*6e4}function Hu(e,t){let n=process.env[e];if(!n)return t;try{return zu(n)}catch{return t}}function hy(e){return e.startsWith("SIG")?e:`SIG${e}`}function Ku(e){return e%36e5===0?`${e/36e5}h`:e%6e4===0?`${e/6e4}m`:e%1e3===0?`${e/1e3}s`:`${e}ms`}function yy(e,t){let n=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${n}$`).test(t)}function wy(e){try{return process.kill(e,0),!0}catch{return!1}}async function by(e){await new Promise(t=>setTimeout(t,e))}var Fu,Yh,Ui=E(()=>{"use strict";Q();pn();Gr();Fu={cmd:30*6e4,pr:60*6e4,run:60*6e4,release:2*60*6e4},Yh={cmd:"local-cmd:2-5s",pr:"github-pr:15-20s-backoff-jitter",run:"github-run:15-20s-backoff-jitter",release:"release:60s"}});var Qu={};M(Qu,{renderShellInit:()=>_y});function _y(e,t=In){if(e==="fish")return Ry(t);if(e==="bash"||e==="zsh")return Sy(e,t);throw new Error(`unsupported shell: ${e}`)}function Ry(e){return["# rsp shell-init fish","# Opt-in only: source this output from config.fish; remove that line to restore raw commands.","if type -q rsp",...[...new Set(e.map(n=>n.command[0]).filter(Vr))].map(n=>` abbr --add --position command -- ${n} '${vy(`rsp ${n}`)}'`)," function rspx --description 'Run a shell pipeline through rsp exec'"," rsp exec -- $argv"," end","else"," # rsp is not on PATH; rsp abbreviations and rspx were not installed.","end",""].join(`
|
|
83
|
+
`)}function Sy(e,t){let n=Ey(t);return[`# rsp shell-init ${e}`,`# Opt-in only: source this output from ${e} startup files; remove that line to restore raw commands.`,...Wr("git",n.get("git")??[]),...Wr("gh",n.get("gh")??[]),...Wr("vitest",n.get("vitest")??[]),...Wr("cargo",n.get("cargo")??[]),"rspx() {"," if command -v rsp >/dev/null 2>&1; then",' command rsp exec -- "$@"'," return"," fi"," printf '%s\\n' 'rspx requires rsp with exec support on PATH' >&2"," return 127","}",""].join(`
|
|
84
|
+
`)}function Wr(e,t){if(t.length===0)return[];if(t.some(i=>i.command.length===1))return[`${e}() {`," if command -v rsp >/dev/null 2>&1; then",` command rsp ${e} "$@"`," return"," fi",` command ${e} "$@"`,"}"];let n=t.map(i=>i.command.slice(1)).filter(i=>i.length===1).map(i=>i[0]).filter(Vr),r=t.map(i=>i.command.slice(1)).filter(i=>i.length>1&&i.every(Vr)),s=[`${e}() {`," if ! command -v rsp >/dev/null 2>&1; then",` command ${e} "$@"`," return"," fi",' case "$1" in'];if(n.length>0){let i=n.map(o=>Yu(o)).join("|");s.push(` ${i}) command rsp ${e} "$@" ;;`)}for(let[i,o]of ky(r)){let a=o.map(c=>c.map((u,l)=>`[ "$${l+2}" = '${xy(u)}' ]`).join(" && ")).join(" || ");s.push(` ${Yu(i)}) if ${a}; then command rsp ${e} "$@"; else command ${e} "$@"; fi ;;`)}return s.push(` *) command ${e} "$@" ;;`," esac","}"),s}function ky(e){let t=new Map;for(let[n,...r]of e){if(!n)continue;let s=t.get(n)??[];s.push(r),t.set(n,s)}return t}function Ey(e){let t=new Map;for(let n of e){let r=n.command[0];if(!r||!Vr(r))continue;let s=t.get(r)??[];s.push(n),t.set(r,s)}return t}function Vr(e){return!!(e&&/^[A-Za-z0-9_./:-]+$/.test(e))}function Yu(e){return e.replace(/[\\|)&;]/g,"\\$&")}function xy(e){return e.replace(/'/g,"'\\''")}function vy(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}var Zu=E(()=>{"use strict";An()});function Ji(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.schemaVersion===1&&typeof t.id=="string"&&t.id.length>0&&typeof t.emitter=="string"&&t.emitter.length>0&&typeof t.occurredAt=="string"&&typeof t.taskClass=="string"&&Ty(t.chosenOption)&&Oy(t.outcome)&&Py(t.cost)}function Ty(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.kind=="string"&&t.kind.length>0}function Oy(e){return e==="success"||e==="failure"||e==="escalated"}function Py(e){if(typeof e!="object"||e===null)return!1;let t=e.signal;return t==="none"||t==="low"||t==="medium"||t==="high"||t==="unknown"}var Xu=E(()=>{});import{createHash as Dy}from"node:crypto";function dl(e,t){return new Gi(e,t)}function el(e){let t=Number(e.red_entity_id??e.rid),n=Hi(e.properties??e.PROPERTIES),r=fl(String(e.node_type??e.NODE_TYPE??n.kind??"note"));if(!Number.isFinite(t))return null;let s=String(n.id??e.label??e.LABEL??t),i=String(n.title??e.label??e.LABEL??s),o=String(n.content??""),a=Array.isArray(n.tags)?n.tags.map(String):[],c=Date.now();return{rid:t,label:String(e.label??e.LABEL??s),kind:r,properties:{...n,id:s,title:i,content:o,tags:a,created_at:Number(n.created_at??c),updated_at:Number(n.updated_at??n.created_at??c),hash:String(n.hash??"")}}}function tl(e){let t=Number(e.red_entity_id??e.rid),n=Number(e.from??e.FROM??e.from_rid??e.source),r=Number(e.to??e.TO??e.to_rid??e.target),s=ml(String(e.label??e.LABEL??"related_to"));return!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)?null:{rid:t,kind:s,from_rid:n,to_rid:r,weight:Number(e.weight??1),properties:Hi(e.properties??e.PROPERTIES)}}function Iy(e){let t=Number(e.red_entity_id??e.rid),n=Hi(e.properties??e.PROPERTIES);return!Number.isFinite(t)||!Ji(n)?null:{rid:t,event:n}}function Hi(e){return e==null?{}:typeof e=="string"?JSON.parse(e):zr(e)?e:{}}function fl(e){let t=e==="contact"?"person":e;if(Cy.has(t))return t;throw new Error(`invalid Brain artifact kind: ${e}`)}function ml(e){if($y.has(e))return e;throw new Error(`invalid Brain connection kind: ${e}`)}function Ay(e){return e==="hour"||e==="week"||e==="month"?e:"day"}function nl(e){if(typeof e=="number")return e;let t=String(e??"");return/^\d+$/.test(t)?Number(t):t}function Rt(e){return zr(e)?e:{}}function rl(e,t){return Rt(e)[t]}function sl(e,t){let n=e[t];if(typeof n!="string")throw new Error(`brain ${t} must be a string`);return n}function il(e,t){let n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function ol(e){let t=Rt(e);return{excludeRids:Array.isArray(t.excludeRids)?t.excludeRids.map(Number).filter(Number.isFinite):void 0}}function te(e){return typeof e=="string"&&e.length>0?e:void 0}function zr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Fi(e){return e!=null}function Ny(e){return Array.from(new Set(e.map(t=>t.trim()).filter(Boolean))).sort()}function By(e){return Dy("sha256").update(JSON.stringify(e)).digest("hex")}function Ly(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"artifact"}function al(e){return`artifact-hash:${e}`}function cl(e,t,n){return`connection:${e}:${t}:${n}`}function ul(){return"model-tier-bandit:v1"}function My(e){return e.toLowerCase().split(/[^a-z0-9_]+/).map(t=>t.trim()).filter(t=>t.length>1)}function ll(e,t){let n=0,r=e.indexOf(t);for(;r>=0;)n++,r=e.indexOf(t,r+t.length);return n}function pl(e,t){let n=e.properties.title.toLowerCase(),r=e.properties.content.toLowerCase(),s=e.properties.tags.map(o=>o.toLowerCase()),i=e.kind.toLowerCase();return{lexical:t.reduce((o,a)=>o+ll(n,a)*3+ll(r,a),0),tags:t.reduce((o,a)=>o+s.reduce((c,u)=>c+(u===a?4:u.includes(a)||a.includes(u)?2:0),0),0),kind:t.reduce((o,a)=>o+(i===a?3:i.includes(a)||a.includes(i)?1:0),0)}}function jy(e,t,n,r){let s=0;for(let i of n){let o=i.from_rid===e.rid?i.to_rid:i.to_rid===e.rid?i.from_rid:null;if(o==null)continue;let a=r.get(o);if(!a)continue;let c=gl({...pl(a,t),connections:0,vector:0}).total;c>0&&(s+=Math.min(c,12)*.35)}return _t(s)}function gl(e){return{...e,lexical:_t(e.lexical),tags:_t(e.tags),kind:_t(e.kind),connections:_t(e.connections),vector:_t(e.vector),total:_t(e.lexical+e.tags+e.kind+e.connections+e.vector)}}function _t(e){return Math.round(e*1e3)/1e3}function Uy(e,t){if(e.length<=220)return e;let n=e.toLowerCase(),r=t.map(i=>n.indexOf(i)).filter(i=>i>=0).sort((i,o)=>i-o)[0]??0,s=Math.max(0,r-80);return`${s>0?"...":""}${e.slice(s,s+220)}${s+220<e.length?"...":""}`}function Jy(e,t){let n=t.length===0?"none":t[0].score>=5?"high":t[0].score>=3?"medium":"low",r=t.length===0?[`No Brain artifacts matched "${e}".`]:[];return{answer:t.length===0?`Brain has no cited evidence for "${e}".`:`Brain found ${t.length} cited artifact${t.length===1?"":"s"} for "${e}".`,hits:t,citations:t.map((s,i)=>({ref:`B${i+1}`,rid:s.artifact.rid,id:s.artifact.properties.id,title:s.artifact.properties.title,kind:s.artifact.kind,score:s.score,score_breakdown:s.score_breakdown,excerpt:s.excerpt})),confidence:n,missing_evidence:r}}function Fy(e){let t={};for(let n of e)t[n]=(t[n]??0)+1;return t}var xe,Cy,$y,Gi,hl=E(()=>{"use strict";Xu();xe={artifacts:"brain_artifacts",connections:"brain_connections",outcomeEvents:"brain_outcome_events",kv:"brain_kv"},Cy=new Set(["pillar","decision","concept","question","playbook","task","event","pattern","hypothesis","fact","source","bookmark","note","reference","custom","project","idea","meeting","claim","organization","person"]),$y=new Set(["supports","contradicts","depends_on","derived_from","related_to","part_of","preceded_by","followed_by","authored","tagged"]),Gi=class{constructor(t,n){this.db=t;this.uri=n}async request(t,n){if(await this.bootstrap(),t==="status")return await this.status();if(t==="capture")return await this.capture(Rt(n));if(t==="getArtifact")return await this.getArtifact(rl(n,"ridOrId"));if(t==="listArtifacts")return await this.listArtifacts();if(t==="search"){let r=Rt(n);return await this.search(sl(r,"query"),il(r,"limit")??10,ol(r.options))}if(t==="think"){let r=Rt(n);return await this.think(sl(r,"query"),il(r,"limit")??8,ol(r.options))}if(t==="link")return await this.link(Rt(n));if(t==="backlinks")return await this.backlinks(rl(n,"target"));if(t==="listConnections")return await this.listConnections();if(t==="eventKpis")return await this.eventKpis(Rt(n));if(t==="appendOutcomeEvent")return await this.appendOutcomeEvent(n);if(t==="replayOutcomeEvents")return await this.replayOutcomeEvents();if(t==="loadModelTierBanditDocument")return await this.loadModelTierBanditDocument();if(t==="saveModelTierBanditDocument")return await this.saveModelTierBanditDocument(n);if(t==="refreshModelTierBanditDocument")return await this.refreshModelTierBanditDocument();throw new Error(`unsupported resident brain action: ${t}`)}async bootstrap(){await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.artifacts}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.connections}`),await this.db.execute(`CREATE GRAPH IF NOT EXISTS ${xe.outcomeEvents}`)}async status(){let t=await this.listArtifacts(),n=await this.listConnections();return{uri:this.uri,artifacts:t.length,connections:n.length,kinds:Fy(t.map(r=>r.kind))}}async capture(t){let n=te(t.title)||"Untitled artifact",r=te(t.content);if(!r)throw new Error("brain capture requires content");let s=fl(te(t.kind)||"note"),i=Ny(Array.isArray(t.tags)?t.tags.map(String):[]),o=Date.now(),a=By([s,n,r,i,te(t.sourcePath),te(t.sourceSession)]),c=await this.kv().get(al(a));if(c!=null){let h=await this.getArtifact(Number(c));if(h)return h}let u=`${Ly(n)}-${a.slice(0,8)}`,l={id:u,title:n,content:r,tags:i,source_agent:te(t.sourceAgent),source_runner:te(t.sourceRunner),source_session:te(t.sourceSession),source_path:te(t.sourcePath),created_at:o,updated_at:o,hash:a,metadata:zr(t.metadata)?t.metadata:void 0},d=(await this.db.query(`INSERT INTO ${xe.artifacts} NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *`,u,s,a,l)).rows[0];if(!d)throw new Error("INSERT artifact returned no row");let p=el(d);if(!p)throw new Error("INSERT artifact returned invalid row");return await this.kv().put(al(a),p.rid),await this.materializeTagConnections(p),p}async getArtifact(t){let n=await this.listArtifacts();return typeof t=="number"?n.find(r=>r.rid===t)??null:n.find(r=>r.properties.id===t||r.label===t)??null}async listArtifacts(){return(await this.db.query(`SELECT * FROM ${xe.artifacts}`)).rows.map(el).filter(Fi)}async search(t,n,r={}){let s=My(t),i=new Set(r.excludeRids??[]),o=await this.listArtifacts(),a=await this.listConnections(),c=new Map(o.map(u=>[u.rid,u]));return o.filter(u=>!i.has(u.rid)).map(u=>{let l=pl(u,s),f=gl({...l,connections:jy(u,s,a,c),vector:0});return{artifact:u,score:f.total,score_breakdown:f,excerpt:Uy(u.properties.content,s)}}).filter(u=>u.score>0).sort((u,l)=>l.score-u.score||l.artifact.properties.updated_at-u.artifact.properties.updated_at).slice(0,Math.max(1,Math.min(100,n)))}async think(t,n,r={}){let s=(await this.search(t,Math.max(n*2,n+5),r)).slice(0,n);return Jy(t,s)}async link(t){let n=await this.getArtifact(nl(t.from)),r=await this.getArtifact(nl(t.to));if(!n)throw new Error(`Brain artifact not found: ${String(t.from)}`);if(!r)throw new Error(`Brain artifact not found: ${String(t.to)}`);let s=ml(te(t.kind)||"related_to"),i=await this.findConnection(n.rid,r.rid,s);if(i!=null){let l=(await this.listConnections()).find(f=>f.rid===i);if(l)return l}let o={reason:te(t.reason),confidence:te(t.confidence)||"explicit",created_at:Date.now(),metadata:zr(t.metadata)?t.metadata:void 0},c=(await this.db.query(`INSERT INTO ${xe.connections} EDGE (label, from, to, weight, properties) VALUES ($1, $2, $3, $4, $5) RETURNING *`,s,n.rid,r.rid,1,o)).rows[0];if(!c)throw new Error("INSERT connection returned no row");let u=tl(c);if(!u)throw new Error("INSERT connection returned invalid row");return await this.kv().put(cl(n.rid,r.rid,s),u.rid),u}async backlinks(t){let n=await this.getArtifact(t);if(!n)throw new Error(`Brain artifact not found: ${t}`);return(await this.listConnections()).filter(r=>r.to_rid===n.rid)}async listConnections(){return(await this.db.query(`SELECT * FROM ${xe.connections}`)).rows.map(tl).filter(Fi)}async eventKpis(t){let n=(await this.listArtifacts()).filter(i=>i.kind==="event"),r=Ay(te(t.interval)||"day"),s=te(t.timeField)==="ingested"?"ingested":"event";return{kind:"event",interval:r,timeField:s,range:{from:null,to:null},total:n.length,series:[{group:null,total:n.length,buckets:[]}]}}async appendOutcomeEvent(t){if(!Ji(t))throw new Error("invalid Brain outcome event");if(!(await this.db.query(`INSERT INTO ${xe.outcomeEvents} NODE (label, node_type, properties) VALUES ($1, $2, $3) RETURNING *`,t.id,`outcome_event.v${t.schemaVersion}`,t)).rows[0])throw new Error("INSERT outcome event returned no row");return t}async replayOutcomeEvents(){return(await this.db.query(`SELECT * FROM ${xe.outcomeEvents}`)).rows.map(Iy).filter(Fi).sort((n,r)=>n.rid-r.rid).map(({event:n})=>n)}async loadModelTierBanditDocument(){let t=await this.kv().get(ul());return typeof t=="string"?JSON.parse(t):t}async saveModelTierBanditDocument(t){return await this.kv().put(ul(),JSON.stringify(t)),t}async refreshModelTierBanditDocument(){let t=await this.loadModelTierBanditDocument();if(t!=null)return t;let n={schema_version:"brain.model-tier-bandit.v1",updated_at:new Date().toISOString(),arms:{}};return await this.saveModelTierBanditDocument(n),n}async materializeTagConnections(t){if(t.properties.metadata?.derived_kind!=="tag")for(let n of t.properties.tags){let r=await this.capture({title:n,content:`Tag: ${n}`,kind:"custom",tags:["tag"],metadata:{derived:!0,derived_kind:"tag"}});await this.link({from:t.rid,to:r.rid,kind:"tagged",confidence:"derived"})}}async findConnection(t,n,r){let s=await this.kv().get(cl(t,n,r));return s!=null?Number(s):null}kv(){return this.db.kv(xe.kv)}}});var Pl={};M(Pl,{runResidentServer:()=>Yy});import{randomUUID as Qt}from"node:crypto";import{execFileSync as Gy,spawn as Hy}from"node:child_process";import{existsSync as qy}from"node:fs";import{mkdir as kl,rename as Wy,rm as yl,writeFile as El}from"node:fs/promises";import{createServer as Vy}from"node:net";import{dirname as zi,join as Kr}from"node:path";import{fileURLToPath as zy,pathToFileURL as Ky}from"node:url";async function Yy(e){await kl(zi(e.socketPath),{recursive:!0});let t=uw();cw();let n=e.telemetryDrainTimeoutMs??xl,r={kind:"opening",startedAt:process.hrtime.bigint()},s,i=!1,o=e.idleMs??fr,a,c,u=!1,l=new Set,f=e.telemetryDrainIntervalMs??3e4,d=Vy(x=>{l.add(x),x.once("close",()=>l.delete(x)),h(),hw(x,async O=>{h();let L=await yw(r,O,e.storeUri,e.residentVersion??"0.0.0-dev"),ce={id:O.id,ok:!0,value:L,storeOpenCount:r.kind==="ready"?r.storeOpenCount:void 0,storeElapsedMs:r.kind==="ready"?r.storeElapsedMs:void 0};Ol(x,ce),O.op==="handover"&&setImmediate(()=>p())})});function p(){i=!0,u=!0,c=aw(c),d.close();for(let x of l)x.destroy()}function h(){r.kind!=="opening"&&(a&&clearTimeout(a),a=setTimeout(()=>{p()},o),a.unref())}let g=["SIGINT","SIGTERM"].map(x=>{let O=()=>{Yr(),d.close();for(let L of l)L.destroy();setTimeout(()=>process.exit(0),1e3)};return process.once(x,O),{signal:x,handler:O}});await new Promise((x,O)=>{d.once("error",O),d.listen(e.socketPath,()=>{d.off("error",O),x()})}),(async()=>{let x=process.hrtime.bigint();process.env.RSP_TEST_HANG_RESIDENT_STORE_OPEN==="1"&&await new Promise(()=>{});let O=Number(process.env.RSP_TEST_DELAY_RESIDENT_STORE_OPEN_MS??"0");Number.isFinite(O)&&O>0&&await new Promise(z=>setTimeout(z,O));let L=await xn.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget,allowResidentOpen:!0}),ce=Number(process.hrtime.bigint()-x)/1e6,he=new Vi(L,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??lr,byteBudget:e.telemetryByteBudget??e.byteBudget??dr});if(i){await L.close();return}if(await qi(he,n),i){await L.close();return}r={kind:"ready",store:L,telemetry:he,storeOpenCount:1,storeElapsedMs:ce},s=setInterval(()=>{let z=r.kind==="ready"?r:void 0;z&&qi(z.telemetry,n)},f),s.unref(),h()})().catch(x=>{r={kind:"failed",error:x instanceof Error?x:new Error(String(x))},h()}),e.pidPath&&await El(e.pidPath,`${process.pid}
|
|
85
|
+
`,{encoding:"utf8",mode:384});let w=e.residentVersion??"0.0.0-dev",y=e.registryPath??Kr(F(e.rootDir??process.cwd()),"rsp-resident.pid.json");try{await ar(y,{socket_path:e.socketPath,store_uri:e.storeUri,resident_version:w})}catch{}await new Promise(x=>d.once("close",x)),a&&clearTimeout(a),s&&clearInterval(s),await yl(e.socketPath,{force:!0});let T=r;T.kind==="ready"&&(await qi(T.telemetry,n,u),await T.store.close()),c&&clearTimeout(c);for(let{signal:x,handler:O}of g)process.off(x,O);t?.kill("SIGTERM"),Yr(),e.pidPath&&await yl(e.pidPath,{force:!0}),await cr(y)}async function nw(e,t,n=new Date){let r=await vr(e,1,n),s=n.toISOString().slice(0,10),i=r.savings.daily_tokens_saved.find(l=>l.date===s)?.tokens_saved??0,o=r.savings.tokens_saved>0?i/r.savings.tokens_saved*r.savings.dollars_saved_estimate_usd:0,a=Kr(F(t),ew),c=`${a}.${process.pid}.${Date.now()}.tmp`,u={version:1,tokens_saved_today:i,dollars_saved_today_usd:Math.round(o*1e6)/1e6,show_total_today:r.health.show_total,updated_at:n.toISOString()};r.health.show_total>0&&(u.show_hit_rate=r.health.show_hit_rate),r.decisions.seen>0&&(u.decisions={seen:r.decisions.seen,contributed:r.decisions.contributed}),await kl(zi(a),{recursive:!0}),await El(c,`${G(u)}
|
|
86
|
+
`,{encoding:"utf8",mode:384}),await Wy(c,a)}async function qi(e,t=xl,n=!1){try{n&&process.env.RSP_TEST_HANG_TELEMETRY_DRAIN==="1"&&await new Promise(()=>{}),await Tl(e.drainAndSweep(),t,"telemetry drain timed out")}catch(r){process.stderr.write(`rsp resident: telemetry drain failed: ${r instanceof Error?r.message:String(r)}
|
|
87
|
+
`)}}async function rw(e){let t=[];for(let n of tw){let r=await sw(e,n);r.ok||(r.previousModel&&(r.previousModel!=="collection"&&await iw(e,n,r.previousModel),t.push({collection:n,previousModel:r.previousModel})),await e.query(`CREATE KV IF NOT EXISTS ${vl(n)}`))}return t}async function sw(e,t){try{return await e.kv(t).get("__rsp_telemetry_model_probe__"),{ok:!0}}catch(n){let r=n instanceof Error?n.message:String(n);if(/\bnot found\b/i.test(r))return{ok:!1,previousModel:null};let s=r.match(/model mismatch: expected kv, got ([A-Za-z_][A-Za-z0-9_]*)/i);if(s?.[1])return{ok:!1,previousModel:s[1].toLowerCase()};if(/does not allow 'kv' operations/i.test(r))return{ok:!1,previousModel:"collection"};let i=(await e.list()).find(o=>o.name===t);if(i&&i.model!=="kv")return{ok:!1,previousModel:i.model};throw n}}async function iw(e,t,n){let r=ow(n);if(!r)throw new Error(`cannot self-heal telemetry collection ${t}: unsupported model ${n}`);await e.query(`DROP ${r} ${vl(t)}`)}function ow(e){let t=e.toLowerCase();return t==="table"?"TABLE":t==="kv"?"KV":t==="graph"?"GRAPH":t==="queue"?"QUEUE":t==="document"||t==="documents"?"DOCUMENT":null}function vl(e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw new Error(`invalid telemetry collection name: ${e}`);return e}function aw(e){return e&&clearTimeout(e),setTimeout(()=>{Yr(),process.exit(0)},Xy)}function cw(){wl||(wl=!0,process.on("exit",()=>Yr()))}function uw(){if(process.platform==="win32")return;let t=Hy(process.execPath,["-e",`
|
|
88
88
|
const { execFileSync } = require("node:child_process");
|
|
89
89
|
const parentPid = Number(process.argv[1]);
|
|
90
90
|
const known = new Set();
|
|
@@ -125,52 +125,52 @@ const timer = setInterval(() => {
|
|
|
125
125
|
clearInterval(timer);
|
|
126
126
|
process.exit(0);
|
|
127
127
|
}, 500);
|
|
128
|
-
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Yr(){for(let e of
|
|
129
|
-
`);if(s<0)return;let i=n.slice(0,s);e.pause(),(async()=>{let o;try{o=JSON.parse(i),await t(o)}catch(a){let u={id:o?.id??Qt(),ok:!1,error:a instanceof Error?a.message:String(a)};
|
|
130
|
-
`)}catch{}}async function
|
|
131
|
-
`),n(127)}),t.on("close",(r,s)=>{if(s){process.kill(process.pid,s),n(128);return}n(r??0)})})}function
|
|
128
|
+
`,String(process.pid)],{detached:!0,stdio:"ignore"});return t.unref(),t}function Yr(){for(let e of lw())try{process.kill(e,"SIGTERM")}catch{}}function lw(){if(process.platform==="win32")return[];let e="";try{e=Gy("ps",["-eo","pid=,ppid=,args="],{encoding:"utf8"})}catch{return[]}let t=[];for(let n of e.split(/\n/)){let r=/^\s*(\d+)\s+(\d+)\s+([\s\S]*)$/.exec(n);if(!r)continue;let s=Number(r[1]),i=Number(r[2]),o=r[3]??"";i===process.pid&&/(^|\s)\S*red(?:\.exe)?\s+rpc\s+--stdio(\s|$)/.test(o)&&t.push(s)}return t}async function dw(e){if(e.collection!==ke)return e;let t=await bl(e.raw_text,Rl(e.raw_bytes)),n=await bl(e.emitted_text,Rl(e.emitted_bytes)),{raw_text:r,emitted_text:s,...i}=e;return{...i,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function bl(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");if(n<=Qy)try{return await Tl((async()=>({tokens:(await fw())("cl100k_base").encode(e).length,estimated:!1}))(),Zy,"telemetry tokenization timed out")}catch{return{tokens:Math.ceil(n/4),estimated:!0}}return{tokens:Math.ceil(n/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function fw(){return _l??=import(Ky(mw()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await _l}function mw(){let e=zi(zy(import.meta.url)),n=[Kr(e,"..","node_modules","js-tiktoken","dist","index.js"),Kr(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>qy(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Rl(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function U(e){return typeof e=="string"&&e.trim()!==""?e:void 0}function Wi(e){return e.trim().split(/\s+/).filter(Boolean)[0]??"unknown"}async function Tl(e,t,n){let r;try{return await Promise.race([e,new Promise((s,i)=>{r=setTimeout(()=>i(new Error(n)),t),r.unref()})])}finally{r&&clearTimeout(r)}}function pw(e){try{return JSON.parse(e)}catch{return e}}function gw(e){return Sl(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Sl(t)&&(t.collection===ae||t.collection===X||t.collection===ke||t.collection===Ke)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Sl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function hw(e,t){let n="";e.setEncoding("utf8"),e.on("error",()=>{}),e.on("data",r=>{n+=r;let s=n.indexOf(`
|
|
129
|
+
`);if(s<0)return;let i=n.slice(0,s);e.pause(),(async()=>{let o;try{o=JSON.parse(i),await t(o)}catch(a){let u={id:o?.id??Qt(),ok:!1,error:a instanceof Error?a.message:String(a)};Ol(e,u)}finally{e.end()}})()})}function Ol(e,t){if(!(e.destroyed||!e.writable))try{e.write(`${JSON.stringify(t)}
|
|
130
|
+
`)}catch{}}async function yw(e,t,n,r){if(t.op==="handover")return{handover:!0,version:r,clientVersion:t.clientVersion};if(e.kind==="opening")throw new Error("rsp resident store is not ready");if(e.kind==="failed")throw new Error(`rsp resident store failed to open: ${e.error.message}`);let s=e.store;if(t.op==="ping")return{pong:!0,version:r};if(t.op==="stats")return await s.stats();if(t.op==="accounting-stats"){let i=s.redDb();if(!i)throw new Error("rsp accounting stats require the shared RedDB store");return await pi(i,t.byteBudget)}if(t.op==="telemetry-stats"){let i=s.redDb();if(!i)throw new Error("rsp telemetry stats require the shared RedDB store");return await vr(i,t.sinceDays)}if(t.op==="telemetry-gains"){let i=s.redDb();if(!i)throw new Error("rsp telemetry gains require the shared RedDB store");return await gi(i,t.sinceDays)}if(t.op==="mint")return{handle:await s.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return bw(await s.get(t.handle));if(t.op==="memory")return await s.memory(t.action,t.payload);if(t.op==="brain")return await ww(s,n,t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}async function ww(e,t,n,r){let s=e.redDb();if(!s)throw new Error("resident brain operations require the shared RedDB store");return await dl(s,t).request(n,r)}function bw(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Qy,Zy,xl,Xy,ew,tw,Vi,wl,_l,Dl=E(()=>{"use strict";Ce();ur();pn();ze();hl();Ee();Re();Qy=256*1024,Zy=500,xl=2e3,Xy=Math.max(1,Number(process.env.RSP_TEST_IDLE_SHUTDOWN_WATCHDOG_MS??"10000")),ew="rsp-status-summary.json",tw=[ae,X,ke,Ke,On],Vi=class{constructor(t,n){this.store=t;this.opts=n;this.pendingHeals=[...n.bootHeals??[]]}running;pending=!1;pendingHeals;async drainAndSweep(){if(this.running){this.pending=!0,await this.running;return}this.running=(async()=>{do this.pending=!1,await this.drainAndSweepOnce();while(this.pending)})().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await rw(t);n.unshift(...this.pendingHeals),this.pendingHeals=[];let r=await this.readIndex(t),s=r.records.length,i=[...r.records];for(let a of n)i.push(await this.writeDrainDegradation(t,{reason:"telemetry collection model mismatch",command:"rsp resident telemetry drain",source_collection:a.collection,error:`expected kv, got ${a.previousModel}`,bytes:0}));await mi(this.opts.rootDir,async a=>{let c=zt(a);if(!c){let u=await this.writeDrainDegradation(t,{reason:"telemetry parse failed",command:"unknown",bytes:Buffer.byteLength(a,"utf8")});return i.push(u),!0}try{let u=await this.writeEvent(t,c);i.push(u);let l=await this.writeAccountingMirror(t,c);return l&&i.push(l),!0}catch(u){let l=await this.writeDrainDegradation(t,{reason:"telemetry event dropped",command:U(c.command)||"unknown",source_id:U(c.id),source_collection:U(c.collection),error:u instanceof Error?u.message:String(u),bytes:Buffer.byteLength(a,"utf8")});return i.push(l),!0}});let o=i.length>s;await this.prune(t,{version:1,records:i},o),await nw(t,this.opts.rootDir)}async writeEvent(t,n){let r=new Date,s=typeof n.created_at=="string"?n.created_at:r.toISOString(),i=new Date(Date.parse(s)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof n.id=="string"&&n.id.trim()!==""?n.id:Qt(),a={...await dw(n),id:o,created_at:s,expires_at:i};return await t.kv(n.collection).put(o,a),{collection:n.collection,key:o,created_at:s,expires_at:i,bytes:n.collection===ae?0:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async writeAccountingMirror(t,n){return n.collection===ae||n.accounting_recorded===!0?null:n.collection===ke?await this.writeEvent(t,{collection:ae,id:`mirror:${U(n.id)||Qt()}`,created_at:U(n.created_at)||U(n.ts)||new Date().toISOString(),event_type:"invocation",command:U(n.command)||"unknown",command_class:Wi(U(n.command)||"unknown"),wrapper:n.wrapper,loss:n.loss,elided:n.elided,raw_bytes:n.raw_bytes,emitted_bytes:n.emitted_bytes,tokens_raw:n.tokens_raw,tokens_emitted:n.tokens_emitted,estimated:n.estimated,wrapper_ms:n.wrapper_ms,store_open_count:n.store_open_count,store_elapsed_ms:n.store_elapsed_ms}):n.collection===Ke?await this.writeEvent(t,{collection:ae,id:`mirror:${U(n.id)||Qt()}`,created_at:U(n.created_at)||U(n.ts)||new Date().toISOString(),event_type:"invocation",command:U(n.command)||"unknown",command_class:Wi(U(n.command)||"unknown"),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:U(n.reason)||"unknown",wrapper_family:U(n.wrapper_family),wrapper_exit_code:n.wrapper_exit_code,stderr_head:U(n.stderr_head)}):null}async writeDrainDegradation(t,n){let r=await this.writeEvent(t,{collection:Ke,id:Qt(),created_at:new Date().toISOString(),reason:n.reason,command:n.command,bytes:n.bytes,source_id:n.source_id,source_collection:n.source_collection,error:n.error});return await this.writeEvent(t,{collection:ae,id:`mirror:${Qt()}`,created_at:r.created_at,event_type:"invocation",command:n.command,command_class:Wi(n.command),loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:n.reason,source_id:n.source_id,source_collection:n.source_collection,error:n.error}),r}async readIndex(t){let n=await t.kv(On).get("index:v1"),r=typeof n=="string"?pw(n):n;return gw(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(On).put("index:v1",n)}async prune(t,n,r=!1){let s=Date.now(),i=[];for(let a of n.records)Date.parse(a.expires_at)<=s?await t.kv(a.collection).delete(a.key):i.push(a);let o=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));o>this.opts.byteBudget&&i.length>0;){let a=i.shift();o-=a.bytes,await t.kv(a.collection).delete(a.key)}(r||i.length<n.records.length)&&await this.writeIndex(t,{version:1,records:i})}};wl=!1});var Zr={};M(Zr,{parseProxyCommandLine:()=>Al,rewriteProxyCommandLine:()=>Il,runProxy:()=>Rw});import{spawn as _w}from"node:child_process";async function Rw(e,t){let n="",r="",s=[],i=process.hrtime.bigint();try{if(n=Al(e),process.env.RSP_PROXY_FAIL_INTERNAL==="1")throw new Error("forced proxy failure");let c=Il(n,t.level??"lossless");r=c.commandLine,s=c.matches}catch(c){if(n)return await Sw(t.telemetryRoot,n,c),await Cl(n);throw c}for(let c of s)await kw(t.telemetryRoot,c);let o=await Cl(r||n),a=Number(process.hrtime.bigint()-i)/1e6;return await Je(t.telemetryRoot,{collection:ke,ts:new Date().toISOString(),command:n,wrapper:"proxy",loss:"lossless",elided:!1,raw_bytes:0,emitted_bytes:0,wrapper_ms:a,accounting_recorded:!1}),o}function Il(e,t="lossless"){let n=Pw(e),r=[];return{commandLine:n.map((i,o)=>{if(i.kind==="operator"||Ow(n,o)==="|")return i.text;let a=Ew(i.text,t);return a?(r.push(a.match),a.text):i.text}).join(""),matches:r}}function Al(e){if(e[0]!=="proxy")throw new Error("expected rsp proxy -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp proxy -- <command line>");return r}async function Sw(e,t,n){await Je(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t,command_family:Yi(t),decision:"failed-open",reason:"proxy-internal-error",error:n instanceof Error?n.name:typeof n})}async function kw(e,t){await Je(e,{collection:X,event_type:"decision",ts:new Date().toISOString(),hook:"proxy",command:t.command,command_family:t.commandFamily,decision:t.decision,reason:t.reason,capability_id:t.capabilityId})}async function Cl(e){let t=_w(e,{shell:!0,stdio:"inherit"});return await new Promise(n=>{t.on("error",r=>{process.stderr.write(`${r instanceof Error?r.message:String(r)}
|
|
131
|
+
`),n(127)}),t.on("close",(r,s)=>{if(s){process.kill(process.pid,s),n(128);return}n(r??0)})})}function Ew(e,t){let n=e.match(/^\s*/)?.[0]??"",r=e.match(/\s*$/)?.[0]??"",s=e.trim();if(!s)return null;let i=Cw(s);if(!i)return null;let o=Tw(i);if(o>=i.length)return null;let a=i.slice(o),c=a.map(p=>p.value);if(Qr(c))return{text:e,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Yi(c.join(" ")),decision:"passed",reason:"lossless-gh-json-jq"}};let u=xw(a);if(!u)return null;let l=i.slice(0,o).map(p=>p.raw),f=t==="lossless"?[]:[`--${t}`],d=[...l,"rsp",...f,...u.wrapperWords].join(" ");return{text:`${n}${d}${r}`,match:{command:a.map(p=>p.raw).join(" "),commandFamily:Yi(c.join(" ")),decision:"contributed",reason:"proxy-segment",capabilityId:u.capabilityId}}}function xw(e){let t=e.map(r=>r.value),n=e.map(r=>r.raw);return t[0]==="git"&&["status","log","diff","show","blame"].includes(t[1]??"")?{capabilityId:`git:${t[1]}`,wrapperWords:n}:t[0]==="git"&&t[1]==="branch"&&t[2]==="-av"?{capabilityId:"git:branch:av",wrapperWords:n}:t[0]==="gh"&&["pr","issue","run"].includes(t[1]??"")&&["list","view"].includes(t[2]??"")?{capabilityId:`gh:${t[1]}:${t[2]}`,wrapperWords:n}:t[0]==="vitest"?{capabilityId:t[1]==="run"?"vitest:run":"vitest",wrapperWords:n}:t[0]==="cargo"&&t[1]==="test"?{capabilityId:"cargo:test",wrapperWords:n}:vw(t,n)}function vw(e,t){return e[0]==="cat"&&e.length===2&&Ki(e[1])?{capabilityId:"cat:file",wrapperWords:["cat",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===2&&Ki(e[1])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,"10",t[1]]}:(e[0]==="head"||e[0]==="tail")&&e.length===4&&e[1]==="-n"&&/^[1-9][0-9]*$/.test(e[2])&&Ki(e[3])?{capabilityId:`cat:${e[0]}`,wrapperWords:["cat",`--${e[0]}`,e[2],t[3]]}:null}function Ki(e){return!!e&&!e.startsWith("-")}function Tw(e){let t=0;for(;t<e.length&&$l(e[t].value);)t+=1;if(e[t]?.value!=="env")return t;for(t+=1;t<e.length&&$l(e[t].value);)t+=1;return t}function Ow(e,t){for(let n=t+1;n<e.length;n+=1)if(e[n].kind==="operator")return e[n].text}function Pw(e){let t=[],n=0,r,s=!1;for(let i=0;i<e.length;i+=1){let o=e[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(r){o===r&&(r=void 0);continue}if(o==="'"||o==='"'){r=o;continue}let a=Dw(e,i);a&&(i>n&&t.push({kind:"segment",text:e.slice(n,i)}),t.push({kind:"operator",text:a}),i+=a.length-1,n=i+1)}return n<e.length&&t.push({kind:"segment",text:e.slice(n)}),t}function Dw(e,t){let n=e.slice(t,t+2);if(n==="&&"||n==="||")return n;let r=e[t];return r===";"||r==="|"?r:void 0}function Cw(e){let t=[],n="",r="",s,i=!1,o=!1,a=()=>{o&&(t.push({raw:n,value:r}),n="",r="",o=!1)};for(let c=0;c<e.length;c+=1){let u=e[c];if(i){n+=u,r+=u,i=!1,o=!0;continue}if(u==="\\"){n+=u,i=!0,o=!0;continue}if(s){n+=u,u===s?s=void 0:r+=u,o=!0;continue}if(u==="'"||u==='"'){n+=u,s=u,o=!0;continue}if(/[ \t]/.test(u)){a();continue}if(/[()<>`]/.test(u))return null;n+=u,r+=u,o=!0}return s||i?null:(a(),t)}function Yi(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?"unknown":t[0]==="git"&&t[1]?`git ${t[1]}`:Qr(t)&&t[1]&&t[2]?`gh ${t[1]} ${t[2]} json-jq`:Qr(t)&&t[1]?`gh ${t[1]} json-jq`:Qr(t)?"gh json-jq":t[0]==="gh"&&t[1]&&t[2]?`gh ${t[1]} ${t[2]}`:t[0]==="gh"&&t[1]?`gh ${t[1]}`:t[0]==="cargo"&&t[1]?`cargo ${t[1]}`:t[0]==="vitest"?"vitest":t[0]}function Qr(e){return e[0]==="gh"&&e.some($w)}function $w(e){return e==="--json"||e==="--jq"||e.startsWith("--json=")||e.startsWith("--jq=")}function $l(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}var Xr=E(()=>{"use strict";Ee()});var Qi={};M(Qi,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>Ne,GIT_LOG_MACHINE_FIELDS:()=>Nl,StructuredUsageError:()=>es,cleanStatusPayload:()=>jl,recoveryInstruction:()=>ge,renderGitContract:()=>Bl,runGitWrapper:()=>Aw});import{spawn as Iw}from"node:child_process";async function Aw(e,t){let n=Ll(e),r=Ml(n.argv),s=await Mw(r,n.argv.slice(1));return Bl(e,s,t)}async function Bl(e,t,n){let r=Ll(e);if((t.status??0)!==0||t.signal){let f=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(f),stderr:Buffer.from(t.stderr),status:f.exitCode??1,signal:t.signal}}let s=Ml(r.argv),i=jw(s,r.argv,t.stdout,r.query),o=D(i);if(Nw(s,o,r.full,n))return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let a=Yw(i);if(!a)return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let c=Buffer.byteLength(o),u=await n.store?.mint(Buffer.from(o),{command:e.join(" "),loss:{level:"terse",bytes_elided:c}});if(!u)throw new Error("terse git output requires an elision store");let l=`\u2026 elided ${a.rowsElided} rows (+${c}) \u2014 ${ge(u)}
|
|
132
132
|
`;return{stdout:Buffer.from(`${D(a.payload)}
|
|
133
|
-
${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function ge(e){return e.startsWith("el:")?`rsp show ${e}`:e}function
|
|
134
|
-
`)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),i=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(i?.[1]??0),f=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:f,summary:`commit ${c} on ${a}: ${u} files, +${l} -${f}`}}function
|
|
135
|
-
`).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,f=""]=c.split(" "),[d,p]=(l??"").split(":");return{flag:u??"",from:d??"",to:p??"",summary:f}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:r,refs:s,summary:`push already satisfied for ${o} -> ${r}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:r,refs:s,summary:`pushed ${o} -> ${r} +${a} commits`}}function
|
|
136
|
-
`),s=[],i=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){i={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!i)continue;if(c.startsWith("author ")){i.author=c.slice(7);continue}if(c.startsWith("filename ")){i.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),f=i.commit.slice(0,12);l&&l.commit===f&&l.author===i.author&&l.path===i.path&&l.line_end+1===i.finalLine?l.line_end=i.finalLine:s.push({line_start:i.finalLine,line_end:i.finalLine,author:i.author,commit:f,path:i.path}),i=null}let o=
|
|
137
|
-
`).filter(Boolean).map(o=>{let[a,c,u,l,f,d]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=
|
|
138
|
-
`)){let T=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!T)continue;let x=T[3]??"";p.push({path:(T[1]??"").trim(),changed:Number(T[2]??0),added:[...x].filter(O=>O==="+").length,deleted:[...x].filter(O=>O==="-").length,binary:x.startsWith("Bin")})}let h=
|
|
139
|
-
`).length:0,files:h,summary:`${n?`${h.length}/${p.length}`:h.length} files, ${m} changed, +${g} -${w}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Ye(e,t,n){return t?Ie(e,n):e}function
|
|
133
|
+
${l}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:a.payload,mintedHandle:u,bytesElided:c,rowsElided:a.rowsElided,rawOutput:Buffer.from(o)}}function ge(e){return e.startsWith("el:")?`rsp show ${e}`:e}function Ll(e){let t=ct(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}let s=n.slice(2).find(i=>i.startsWith("--rsp-"));if(s)throw new es(e.join(" "),s,["--full","--brief","--terse","--query"]);return{argv:n,query:t.query,full:r}}function Nw(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Bw(e)||r.level!=="lossless")return!0;let s=Kw(r.heavyGitByteThreshold,Ne);return Buffer.byteLength(t)<=s}function Bw(e){return e==="diff"||e==="log"||e==="blame"||e==="show"}function Ml(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push"||t==="blame"||t==="branch"||t==="show")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function Lw(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Nl.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n];case"blame":return["blame","--line-porcelain",...n];case"branch":return["branch","--format=%(HEAD)%00%(refname:short)%00%(objectname:short)%00%(upstream:short)%00%(worktreepath)%00%(contents:subject)",...n];case"show":return["show","--format=%x1e%H%x1f%h%x1f%an%x1f%aI%x1f%s%x1f%b%x1e","--stat",...n]}}async function Mw(e,t){let n=Iw("git",Lw(e,t),{stdio:["ignore","pipe","pipe"]}),r=[],s=[];return n.stdout.on("data",i=>r.push(i)),n.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{n.on("error",o),n.on("close",(a,c)=>{i({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function jw(e,t,n,r){switch(e){case"status":return Uw(t,n,r);case"log":return Jw(t,n,r);case"diff":return Fw(t,n,r);case"commit":return Ye(Gw(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ye(Hw(t,n),r,["rsp gh pr list --query <branch>"]);case"blame":return qw(t,n,r);case"branch":return Ww(t,n,r);case"show":return Vw(t,n,r)}}function Uw(e,t,n){let r="",s=[];for(let a of t.split("\0")){if(!a)continue;if(a.startsWith("# branch.head ")){r=a.slice(14);continue}if(!a.startsWith("1 "))continue;let c=a.split(" "),u=c[1]??"..",l=c.slice(8).join(" ");s.push({path:l,index:u[0]??".",worktree:u[1]??".",state:zw(u)})}if(s.length===0)return jl(e.join(" "),r);let i=H(s,n),o=Ul(i,"state");return Ye({command:e.join(" "),branch:r,rows:i,summary:`${n?`${i.length}/${s.length}`:i.length} changes: ${o.added??0} added, ${o.modified??0} modified, ${o.deleted??0} deleted`},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function jl(e="git status",t=""){return{command:e,category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:t,rows:[],summary:"git status clean: 0 changes"}}function Jw(e,t,n){let r=t.split("\0").filter(Boolean).map(i=>{let o=i.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),s=H(r,n);return Ye({command:e.join(" "),commits:s,summary:`${n?`${s.length}/${r.length}`:s.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function Fw(e,t,n){let s=t.split("\0").filter(Boolean).map(a=>{let[c,u,l]=a.split(" ");return{path:l??"",added:c==="-"?null:Number(c??0),deleted:u==="-"?null:Number(u??0)}}),i=H(s,n),o=i.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return Ye({command:e.join(" "),files:i,summary:`${n?`${i.length}/${s.length}`:i.length} files, +${o.added} -${o.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function Gw(e,t){let n=t.split(`
|
|
134
|
+
`)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),s=/(\d+) files? changed/.exec(t),i=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",u=Number(s?.[1]??0),l=Number(i?.[1]??0),f=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:u,insertions:l,deletions:f,summary:`commit ${c} on ${a}: ${u} files, +${l} -${f}`}}function Hw(e,t){let n=t.split(`
|
|
135
|
+
`).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[u,l,f=""]=c.split(" "),[d,p]=(l??"").split(":");return{flag:u??"",from:d??"",to:p??"",summary:f}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.summary.includes("..")?1:0;return s.length>0&&s.every(c=>c.flag==="=")?{command:e.join(" "),category:"no-op",exit_code:0,noop:!0,remote:r,refs:s,summary:`push already satisfied for ${o} -> ${r}`,help:["rsp gh pr list --query <branch>"]}:{command:e.join(" "),remote:r,refs:s,summary:`pushed ${o} -> ${r} +${a} commits`}}function qw(e,t,n){let r=t.split(`
|
|
136
|
+
`),s=[],i=null;for(let c of r){let u=/^([0-9a-f]{8,40}) \d+ (\d+)(?: \d+)?$/.exec(c);if(u){i={commit:u[1]??"",finalLine:Number(u[2]??0),author:"",path:""};continue}if(!i)continue;if(c.startsWith("author ")){i.author=c.slice(7);continue}if(c.startsWith("filename ")){i.path=c.slice(9);continue}if(!c.startsWith(" "))continue;let l=s.at(-1),f=i.commit.slice(0,12);l&&l.commit===f&&l.author===i.author&&l.path===i.path&&l.line_end+1===i.finalLine?l.line_end=i.finalLine:s.push({line_start:i.finalLine,line_end:i.finalLine,author:i.author,commit:f,path:i.path}),i=null}let o=H(s,n),a=Ul(o,"author");return Ye({command:e.join(" "),ranges:o,authors:a,summary:`${n?`${o.length}/${s.length}`:o.length} ranges, ${Object.keys(a).length} authors`},n,["rsp git show --query <commit>","rsp git log --query <author>"])}function Ww(e,t,n){let r=t.split(`
|
|
137
|
+
`).filter(Boolean).map(o=>{let[a,c,u,l,f,d]=o.split("\0");return{current:a==="*",name:c??"",commit:u??"",upstream:l||null,worktree:f||null,subject:d??""}}),s=H(r,n),i=s.find(o=>o.current)?.name??"";return Ye({command:e.join(" "),branches:s,summary:`${n?`${s.length}/${r.length}`:s.length} branches${i?`, current ${i}`:""}`},n,["rsp git log --query <branch>","rsp gh pr list --query <branch>"])}function Vw(e,t,n){let r=t.indexOf(""),s=r>=0?t.indexOf("",r+1):-1,i=r>=0&&s>=0?t.slice(r+1,s):"",o=s>=0?t.slice(s+1):t,[a,c,u,l,f,d=""]=i.split(""),p=[];for(let y of o.split(`
|
|
138
|
+
`)){let T=/^\s*(.+?)\s+\|\s+(\d+)\s+([+\-]+|Bin.*)$/.exec(y);if(!T)continue;let x=T[3]??"";p.push({path:(T[1]??"").trim(),changed:Number(T[2]??0),added:[...x].filter(O=>O==="+").length,deleted:[...x].filter(O=>O==="-").length,binary:x.startsWith("Bin")})}let h=H(p,n),m=0,g=0,w=0;for(let y of h)m+=typeof y.changed=="number"?y.changed:0,g+=typeof y.added=="number"?y.added:0,w+=typeof y.deleted=="number"?y.deleted:0;return Ye({command:e.join(" "),commit:a??"",short:c??"",author:u??"",date:l??"",subject:f??"",body_lines:d.trim()?d.trim().split(`
|
|
139
|
+
`).length:0,files:h,summary:`${n?`${h.length}/${p.length}`:h.length} files, ${m} changed, +${g} -${w}`},n,["rsp git blame --query <author-or-path>","rsp git diff --query <path>"])}function Ye(e,t,n){return t?Ie(e,n):e}function zw(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Ul(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function Kw(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Yw(e){for(let t of["rows","commits","files","refs","ranges","branches"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var Nl,es,St=E(()=>{"use strict";Q();Re();gn();ut();Re();Nl=["%h","%an","%as","%s"];es=class extends Error{constructor(n,r,s){super(`unknown flag: ${r}`);this.command=n;this.flag=r;this.validFlags=s}render(){return tr(this.command,this.flag,this.validFlags,`${this.command} --help`)}}});var io={};M(io,{renderGhContract:()=>Wl,runGhWrapper:()=>nb});import{spawn as Qw}from"node:child_process";async function nb(e,t){let n=Vl(e),r=await sb(n);return Wl(e,r,t)}async function Wl(e,t,n){if((t.status??0)!==0||t.signal){let p=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(p),stderr:Buffer.from(t.stderr),status:p.exitCode??1,signal:t.signal}}let r=Vl(e),s=Jn(t.stdout),i=fb(r,e,s);if(typeof i=="string")return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=_b(i);if(o){if(!n.store)throw new Error("truncated gh output requires an elision store");let p=await n.store.mint(Buffer.from(o.original),{command:e.join(" "),loss:{level:r.full?"brief":n.level,bytes_elided:o.bytes}});o.target.truncated.handle=p}let a=o?.target.truncated.handle||void 0,c=D(i);if(n.level!=="terse")return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let u=Rb(i);if(!u)return{stdout:Buffer.from(c),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,mintedHandle:a,bytesElided:o?.bytes};let l=Buffer.byteLength(c),f=await n.store?.mint(Buffer.from(c),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!f)throw new Error("terse gh output requires an elision store");let d=`\u2026 elided ${u.rowsElided} rows (+${l}) \u2014 ${ge(f)}
|
|
140
140
|
`;return{stdout:Buffer.from(`${D(u.payload)}
|
|
141
|
-
${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:f,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Wl(e){let t=ct(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let s=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||s))throw new Error(`unsupported gh subcommand: ${r??""}`);let i=n,o=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let p=0;p<l.length;p+=1){let h=l[p]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=Jl(l[++p]??""):h.startsWith("--fields=")?u=Jl(h.slice(9)):o.push(h)}let d={kind:i,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:a,wide:c,fields:u,passthrough:o,query:t.query};return nb(d),d}function Ul(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide||e.fields.size>0?Zw[t]:Qw[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function Jl(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function nb(e){if(e.fields.size===0)return;if(e.action!=="list")throw new ts(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,n=eb[t];for(let r of e.fields)if(!n.includes(r))throw new ts(e,`unknown field: ${r}`,n)}async function rb(e){if(e.action==="combined")return await sb(e);let t=ib(e);if(!t)return await lb(Ul(e));let n=await X({...t,command:["gh",...Ul(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await ob(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function sb(e){let t=e.target??"",[n,r,s]=await Promise.all([X({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),X({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),X({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),i=[n,r,s].find(a=>(a.status??0)!==0);if(i)return{stdout:i.stdout,stderr:i.stderr,status:i.status,signal:null};let o=zl(Jn(n.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:re(Jn(s.stdout)).map(cb)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function ib(e){let t=Kl(e.passthrough),n=ub(e.passthrough,"--limit")??30,r=ve(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:r,per_page:n}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:r,labels:ve(e.passthrough,"--label"),per_page:n}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:n}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function ob(e,t){let n=Jn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return re(n).map(Vl);case"pr:view":return zl(n);case"issue:list":return re(n).filter(r=>!kt(r.pull_request)).map(Fl);case"issue:view":return Fl(n);case"run:list":return{items:re(A(n).workflow_runs).map(Gl),total:te(A(n),"total_count")};case"run:view":{let r=Gl(n),s=Kl(e.passthrough);if(!s)return r;let i=await X({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...r,jobs:i.status===0?re(A(Jn(i.stdout)).jobs).map(ab):[]}}default:return n}}function Vl(e){let t=A(e);return{number:te(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:no(t.user),labels:re(t.labels).map(n=>({name:S(n,"name")})),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body"),baseRefName:S(A(t.base),"ref"),headRefName:S(A(t.head),"ref")}}function zl(e){return Vl(e)}function Fl(e){let t=A(e);return{number:te(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:re(t.labels).map(n=>({name:S(n,"name")})),author:no(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function Gl(e){let t=A(e);return{databaseId:te(t,"database_id")||te(t,"id"),name:S(t,"name")||S(t,"display_title"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),event:S(t,"event"),headBranch:S(t,"head_branch"),workflowName:S(t,"workflow_name"),createdAt:S(t,"created_at"),url:S(t,"html_url"),jobs:[]}}function ab(e){let t=A(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function cb(e){let t=A(e);return{author:no(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function no(e){let t=A(e);return{login:S(t,"login")}}function Kl(e){return e.find(t=>!t.startsWith("-"))}function ve(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function ub(e,t){let n=ve(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function lb(e){let t=Yw("gh",e,{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}function db(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Qi(n,"prs"),i=s.rows.map(c=>Yl(c,e)),o=G(i,e.query),a=Zi(o.length,i.length,s.total,e.query);return o.length===0?Xi(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Zt({...r,prs:o,aggregate:a,summary:`${eo(o.length,i.length,e.query)} ${Hl(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Zt({...r,pr:Ql(A(n),e),summary:`PR #${te(A(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return fb(e,t,A(n));case"issue:list":{let s=Qi(n,"issues"),i=s.rows.map(c=>Zl(c,e)),o=G(i,e.query),a=Zi(o.length,i.length,s.total,e.query);return o.length===0?Xi(r,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Zt({...r,issues:o,aggregate:a,summary:`${eo(o.length,i.length,e.query)} ${Hl(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Zt({...r,issue:yb(A(n),e),summary:`issue #${te(A(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Qi(n,"runs"),i=s.rows.map(c=>Xl(c,e)),o=G(i,e.query),a=Zi(o.length,i.length,s.total,e.query);return o.length===0?Xi(r,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Zt({...r,runs:o,aggregate:a,summary:`${eo(o.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Zt({...r,run:wb(A(n),e),summary:`run ${te(A(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function fb(e,t,n){let r=Ql(A(n.view),{...e,action:"view",wide:!0}),s=G(re(n.checks).map(mb),e.query),i=A(n.comments).comments,o=G(re(i).map(pb).slice(-3),e.query);return Ie({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${te(A(n.view),"number")}: ${s.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function mb(e){return{name:S(e,"name"),state:Fn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function pb(e){return{author:td(e.author),body:ns(e,"body",to,!1),created:S(e,"createdAt")}}function Qi(e,t){if(Array.isArray(e))return{rows:re(e)};let n=A(e),r=te(n,"total")||te(n,"total_count")||void 0;return Array.isArray(n.items)?{rows:re(n.items),total:r}:t==="runs"&&Array.isArray(n.workflow_runs)?{rows:re(n.workflow_runs),total:r}:{rows:[]}}function Zi(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function Xi(e,t,n,r,s){return Ie({...e,empty:!0,scope:gb(t),[n]:[],aggregate:r,summary:`0 ${hb(t)}`},s)}function gb(e){let t=ve(e.passthrough,"--state")??"open",n=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${n}`;if(e.kind==="issue"){let i=ve(e.passthrough,"--label");return`${t} issues${i?` label=${i}`:""}${n}`}let r=ve(e.passthrough,"--branch")??ve(e.passthrough,"-b"),s=ve(e.passthrough,"--workflow")??ve(e.passthrough,"-w");return`workflow runs${r?` branch=${r}`:""}${s?` workflow=${s}`:""}${n}`}function hb(e){let t=ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Yl(e,t){let n={number:te(e,"number"),title:S(e,"title"),state:Fn(e),draft:!!e.isDraft};return ro(n,e,t,["author","labels","url","updated"]),n}function Ql(e,t){let n=Yl(e,t);return n.body=ns(e,"body",to,t.full),t.wide&&(n.base=S(e,"baseRefName"),n.head=S(e,"headRefName")),n}function Zl(e,t){let n={number:te(e,"number"),title:S(e,"title"),state:Fn(e),labels:ed(e.labels)};return ro(n,e,t,["author","url","updated"]),n}function yb(e,t){let n=Zl(e,t);return n.body=ns(e,"body",to,t.full),n}function Xl(e,t){let n={id:te(e,"databaseId"),name:S(e,"name"),status:Fn(e),conclusion:S(e,"conclusion")};return ro(n,e,t,["event","branch","workflow","created"]),n}function wb(e,t){let n=Xl(e,t),r=re(e.jobs).map(s=>({name:S(s,"name"),status:Fn(s),conclusion:S(s,"conclusion"),log:ns(s,"log",Xw,t.full)}));return n.jobs=r,n}function ns(e,t,n,r){let s=S(e,t);if(r||Buffer.byteLength(s)<=n)return s;let i=s.slice(0,n),o={preview:i,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(i),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:s,enumerable:!1}),o}function bb(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(kt(n)){if(kt(n.truncated)&&n.truncated.handle===""&&typeof n.preview=="string"){let r=typeof n.__rsp_original=="string"?n.__rsp_original:n.preview;return{target:n,original:r,bytes:Number(n.truncated.bytes??0)}}t.push(...Object.values(n))}}return null}function _b(e){for(let t of["prs","issues","runs","jobs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}function Hl(e,t){return e.every(n=>n.state===t)?t:"returned"}function eo(e,t,n){return n?`${e}/${t}`:String(e)}function Zt(e,t,n){return t.query?Ie(e,n):e}function Fn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function ro(e,t,n,r){if(!(!n.wide&&n.fields.size===0))for(let s of r)!n.wide&&!n.fields.has(s)||(s==="author"?e.author=td(t.author):s==="labels"?e.labels=ed(t.labels):s==="url"?e.url=S(t,"url"):s==="updated"?e.updated=S(t,"updatedAt"):s==="event"?e.event=S(t,"event"):s==="branch"?e.branch=S(t,"headBranch"):s==="workflow"?e.workflow=S(t,"workflowName"):s==="created"&&(e.created=S(t,"createdAt")))}function ed(e){return Array.isArray(e)?e.map(t=>kt(t)?S(t,"name"):String(t)).filter(Boolean):[]}function td(e){return kt(e)?S(e,"login"):""}function Jn(e){return e.trim()?JSON.parse(e):null}function re(e){return Array.isArray(e)?e.filter(kt):[]}function A(e){return kt(e)?e:{}}function S(e,t){let n=e[t];return typeof n=="string"?n:""}function te(e,t){let n=e[t];return typeof n=="number"?n:0}function kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Qw,Zw,to,Xw,eb,ts,io=E(()=>{"use strict";ne();Gr();St();gn();ut();Qw={"pr:list":["number","title","state","isDraft"],"pr:view":["number","title","state","body"],"issue:list":["number","title","state","labels"],"issue:view":["number","title","state","body"],"run:list":["databaseId","name","status","conclusion"],"run:view":["databaseId","name","status","conclusion","jobs"]},Zw={"pr:list":["number","title","state","isDraft","author","labels","url","updatedAt"],"pr:view":["number","title","state","body","author","labels","url","baseRefName","headRefName"],"issue:list":["number","title","state","labels","author","url","updatedAt"],"issue:view":["number","title","state","body","author","labels","url","updatedAt"],"run:list":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt"],"run:view":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt","jobs","url"]},to=160,Xw=160,eb={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};ts=class extends Error{constructor(n,r,s=[]){super(r);this.command=n;this.validFields=s}render(){return N({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var co={};M(co,{renderTestContract:()=>nd,runTestWrapper:()=>xb});import{spawn as Rb}from"node:child_process";async function xb(e,t){let n=ct(e),r=await Db(n.argv);return await nd(e,r,t)}async function nd(e,t,n){let r=ct(e),i=rd(r.argv)==="vitest"?Cb(t.stdout):$b(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let h=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${Nb(i.durationSeconds)}`,c=G(i.failures,r.query);if(n.level==="terse")return await vb(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,f=0;for(let h of c){let m=await Ib(h.excerpt,r.argv.join(" "),n.store);u.push({suite:h.suite,name:h.name,excerpt:m.text}),l??=m.handle,f+=m.bytesElided}let d={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let p=r.query?Ie(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(D(p)),stderr:Buffer.from(t.stderr),status:ao(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function vb(e,t,n,r,s,i,o){let a=Tb(n.failures),c={exit_code:r,summary:o?`${s} \xB7 ${n.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=o?Ie(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=D(u),f=Math.max(0,n.failures.length-a.length),d=a.some((T,x)=>T.excerpt!==n.failures[x].excerpt);if(f===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:ao(t.status),signal:t.signal,payload:u};let p={exit_code:r,summary:s};n.failures.length>0&&(p.failures=n.failures.map(T=>({suite:T.suite,name:T.name,excerpt:T.excerpt})));let h=D(p),m=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!g)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${m}) \u2014 ${ge(g)}`;return{stdout:Buffer.from(`${l}
|
|
142
|
-
${y}`),stderr:Buffer.from(t.stderr),status:
|
|
141
|
+
${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:f,bytesElided:l,rowsElided:u.rowsElided,rawOutput:Buffer.from(c)}}function Vl(e){let t=ct(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let s=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||s))throw new Error(`unsupported gh subcommand: ${r??""}`);let i=n,o=[],a=!1,c=!1,u=new Set,l=t.argv.slice(3);for(let p=0;p<l.length;p+=1){let h=l[p]??"";h==="--full"?a=!0:h==="--wide"?c=!0:h==="--fields"?u=Fl(l[++p]??""):h.startsWith("--fields=")?u=Fl(h.slice(9)):o.push(h)}let d={kind:i,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:a,wide:c,fields:u,passthrough:o,query:t.query};return rb(d),d}function Jl(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide||e.fields.size>0?Xw[t]:Zw[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}function Fl(e){return new Set(e.split(",").map(t=>t.trim()).filter(Boolean))}function rb(e){if(e.fields.size===0)return;if(e.action!=="list")throw new ts(e,"--fields is supported for list outputs");let t=`${e.kind}:list`,n=tb[t];for(let r of e.fields)if(!n.includes(r))throw new ts(e,`unknown field: ${r}`,n)}async function sb(e){if(e.action==="combined")return await ib(e);let t=ob(e);if(!t)return await db(Jl(e));let n=await ee({...t,command:["gh",...Jl(e)].join(" ")});return n.status!==0?{stdout:n.stdout,stderr:n.stderr,status:n.status,signal:null}:{stdout:JSON.stringify(await ab(e,n.stdout)),stderr:n.stderr,status:0,signal:null}}async function ib(e){let t=e.target??"",[n,r,s]=await Promise.all([ee({path:`repos/{owner}/{repo}/pulls/${t}`,command:`gh pr view ${t}`}),ee({path:`repos/{owner}/{repo}/pulls/${t}/commits`,command:`gh pr checks ${t}`}),ee({path:`repos/{owner}/{repo}/issues/${t}/comments`,command:`gh pr view ${t} --comments`})]),i=[n,r,s].find(a=>(a.status??0)!==0);if(i)return{stdout:i.stdout,stderr:i.stderr,status:i.status,signal:null};let o=Kl(Jn(n.stdout));return{stdout:JSON.stringify({view:o,checks:[],comments:{comments:re(Jn(s.stdout)).map(ub)}}),stderr:[n.stderr,r.stderr,s.stderr].filter(Boolean).join(""),status:0,signal:null}}function ob(e){let t=Yl(e.passthrough),n=lb(e.passthrough,"--limit")??30,r=ve(e.passthrough,"--state")??"open";switch(`${e.kind}:${e.action}`){case"pr:list":return{path:"repos/{owner}/{repo}/pulls",params:{state:r,per_page:n}};case"pr:view":return t?{path:`repos/{owner}/{repo}/pulls/${t}`}:null;case"issue:list":return{path:"repos/{owner}/{repo}/issues",params:{state:r,labels:ve(e.passthrough,"--label"),per_page:n}};case"issue:view":return t?{path:`repos/{owner}/{repo}/issues/${t}`}:null;case"run:list":return{path:"repos/{owner}/{repo}/actions/runs",params:{per_page:n}};case"run:view":return t?{path:`repos/{owner}/{repo}/actions/runs/${t}`}:null;default:return null}}async function ab(e,t){let n=Jn(t);switch(`${e.kind}:${e.action}`){case"pr:list":return re(n).map(zl);case"pr:view":return Kl(n);case"issue:list":return re(n).filter(r=>!kt(r.pull_request)).map(Gl);case"issue:view":return Gl(n);case"run:list":return{items:re(A(n).workflow_runs).map(Hl),total:ne(A(n),"total_count")};case"run:view":{let r=Hl(n),s=Yl(e.passthrough);if(!s)return r;let i=await ee({path:`repos/{owner}/{repo}/actions/runs/${s}/jobs`,command:`gh run view ${s} jobs`});return{...r,jobs:i.status===0?re(A(Jn(i.stdout)).jobs).map(cb):[]}}default:return n}}function zl(e){let t=A(e);return{number:ne(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),isDraft:!!t.draft,author:ro(t.user),labels:re(t.labels).map(n=>({name:S(n,"name")})),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body"),baseRefName:S(A(t.base),"ref"),headRefName:S(A(t.head),"ref")}}function Kl(e){return zl(e)}function Gl(e){let t=A(e);return{number:ne(t,"number"),title:S(t,"title"),state:S(t,"state").toUpperCase(),labels:re(t.labels).map(n=>({name:S(n,"name")})),author:ro(t.user),url:S(t,"html_url"),updatedAt:S(t,"updated_at"),body:S(t,"body")}}function Hl(e){let t=A(e);return{databaseId:ne(t,"database_id")||ne(t,"id"),name:S(t,"name")||S(t,"display_title"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),event:S(t,"event"),headBranch:S(t,"head_branch"),workflowName:S(t,"workflow_name"),createdAt:S(t,"created_at"),url:S(t,"html_url"),jobs:[]}}function cb(e){let t=A(e);return{name:S(t,"name"),status:S(t,"status").toUpperCase(),conclusion:S(t,"conclusion").toUpperCase(),log:""}}function ub(e){let t=A(e);return{author:ro(t.user),body:S(t,"body"),createdAt:S(t,"created_at")}}function ro(e){let t=A(e);return{login:S(t,"login")}}function Yl(e){return e.find(t=>!t.startsWith("-"))}function ve(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function lb(e,t){let n=ve(e,t);if(!n)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}async function db(e){let t=Qw("gh",e,{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}function fb(e,t,n){let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Zi(n,"prs"),i=s.rows.map(c=>Ql(c,e)),o=H(i,e.query),a=Xi(o.length,i.length,s.total,e.query);return o.length===0?eo(r,e,"prs",a,["rsp gh issue list","rsp gh pr list --query <title-or-label>"]):Zt({...r,prs:o,aggregate:a,summary:`${to(o.length,i.length,e.query)} ${ql(o,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Zt({...r,pr:Zl(A(n),e),summary:`PR #${ne(A(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return mb(e,t,A(n));case"issue:list":{let s=Zi(n,"issues"),i=s.rows.map(c=>Xl(c,e)),o=H(i,e.query),a=Xi(o.length,i.length,s.total,e.query);return o.length===0?eo(r,e,"issues",a,["rsp gh issue list --state all","rsp gh issue list --query <label-or-title>"]):Zt({...r,issues:o,aggregate:a,summary:`${to(o.length,i.length,e.query)} ${ql(o,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Zt({...r,issue:wb(A(n),e),summary:`issue #${ne(A(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Zi(n,"runs"),i=s.rows.map(c=>ed(c,e)),o=H(i,e.query),a=Xi(o.length,i.length,s.total,e.query);return o.length===0?eo(r,e,"runs",a,["rsp gh run list --limit 20","rsp gh run list --query <workflow-or-status>"]):Zt({...r,runs:o,aggregate:a,summary:`${to(o.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Zt({...r,run:bb(A(n),e),summary:`run ${ne(A(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function mb(e,t,n){let r=Zl(A(n.view),{...e,action:"view",wide:!0}),s=H(re(n.checks).map(pb),e.query),i=A(n.comments).comments,o=H(re(i).map(gb).slice(-3),e.query);return Ie({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${ne(A(n.view),"number")}: ${s.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function pb(e){return{name:S(e,"name"),state:Fn(e),bucket:S(e,"bucket"),conclusion:S(e,"conclusion"),workflow:S(e,"workflow"),link:S(e,"link")}}function gb(e){return{author:nd(e.author),body:ns(e,"body",no,!1),created:S(e,"createdAt")}}function Zi(e,t){if(Array.isArray(e))return{rows:re(e)};let n=A(e),r=ne(n,"total")||ne(n,"total_count")||void 0;return Array.isArray(n.items)?{rows:re(n.items),total:r}:t==="runs"&&Array.isArray(n.workflow_runs)?{rows:re(n.workflow_runs),total:r}:{rows:[]}}function Xi(e,t,n,r){let s={returned:e};return typeof n=="number"&&n>0&&(s.total=n),r&&(s.unfiltered=t),s}function eo(e,t,n,r,s){return Ie({...e,empty:!0,scope:hb(t),[n]:[],aggregate:r,summary:`0 ${yb(t)}`},s)}function hb(e){let t=ve(e.passthrough,"--state")??"open",n=e.query?` query=${e.query}`:"";if(e.kind==="pr")return`${t} PRs${n}`;if(e.kind==="issue"){let i=ve(e.passthrough,"--label");return`${t} issues${i?` label=${i}`:""}${n}`}let r=ve(e.passthrough,"--branch")??ve(e.passthrough,"-b"),s=ve(e.passthrough,"--workflow")??ve(e.passthrough,"-w");return`workflow runs${r?` branch=${r}`:""}${s?` workflow=${s}`:""}${n}`}function yb(e){let t=ve(e.passthrough,"--state")??"open";return e.kind==="pr"?`${t} PRs`:e.kind==="issue"?`${t} issues`:"runs"}function Ql(e,t){let n={number:ne(e,"number"),title:S(e,"title"),state:Fn(e),draft:!!e.isDraft};return so(n,e,t,["author","labels","url","updated"]),n}function Zl(e,t){let n=Ql(e,t);return n.body=ns(e,"body",no,t.full),t.wide&&(n.base=S(e,"baseRefName"),n.head=S(e,"headRefName")),n}function Xl(e,t){let n={number:ne(e,"number"),title:S(e,"title"),state:Fn(e),labels:td(e.labels)};return so(n,e,t,["author","url","updated"]),n}function wb(e,t){let n=Xl(e,t);return n.body=ns(e,"body",no,t.full),n}function ed(e,t){let n={id:ne(e,"databaseId"),name:S(e,"name"),status:Fn(e),conclusion:S(e,"conclusion")};return so(n,e,t,["event","branch","workflow","created"]),n}function bb(e,t){let n=ed(e,t),r=re(e.jobs).map(s=>({name:S(s,"name"),status:Fn(s),conclusion:S(s,"conclusion"),log:ns(s,"log",eb,t.full)}));return n.jobs=r,n}function ns(e,t,n,r){let s=S(e,t);if(r||Buffer.byteLength(s)<=n)return s;let i=s.slice(0,n),o={preview:i,truncated:{bytes:Buffer.byteLength(s),shown_bytes:Buffer.byteLength(i),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:s,enumerable:!1}),o}function _b(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(kt(n)){if(kt(n.truncated)&&n.truncated.handle===""&&typeof n.preview=="string"){let r=typeof n.__rsp_original=="string"?n.__rsp_original:n.preview;return{target:n,original:r,bytes:Number(n.truncated.bytes??0)}}t.push(...Object.values(n))}}return null}function Rb(e){for(let t of["prs","issues","runs","jobs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}function ql(e,t){return e.every(n=>n.state===t)?t:"returned"}function to(e,t,n){return n?`${e}/${t}`:String(e)}function Zt(e,t,n){return t.query?Ie(e,n):e}function Fn(e){return(S(e,"state")||S(e,"status")).toLowerCase()}function so(e,t,n,r){if(!(!n.wide&&n.fields.size===0))for(let s of r)!n.wide&&!n.fields.has(s)||(s==="author"?e.author=nd(t.author):s==="labels"?e.labels=td(t.labels):s==="url"?e.url=S(t,"url"):s==="updated"?e.updated=S(t,"updatedAt"):s==="event"?e.event=S(t,"event"):s==="branch"?e.branch=S(t,"headBranch"):s==="workflow"?e.workflow=S(t,"workflowName"):s==="created"&&(e.created=S(t,"createdAt")))}function td(e){return Array.isArray(e)?e.map(t=>kt(t)?S(t,"name"):String(t)).filter(Boolean):[]}function nd(e){return kt(e)?S(e,"login"):""}function Jn(e){return e.trim()?JSON.parse(e):null}function re(e){return Array.isArray(e)?e.filter(kt):[]}function A(e){return kt(e)?e:{}}function S(e,t){let n=e[t];return typeof n=="string"?n:""}function ne(e,t){let n=e[t];return typeof n=="number"?n:0}function kt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Zw,Xw,no,eb,tb,ts,oo=E(()=>{"use strict";Q();Gr();St();gn();ut();Zw={"pr:list":["number","title","state","isDraft"],"pr:view":["number","title","state","body"],"issue:list":["number","title","state","labels"],"issue:view":["number","title","state","body"],"run:list":["databaseId","name","status","conclusion"],"run:view":["databaseId","name","status","conclusion","jobs"]},Xw={"pr:list":["number","title","state","isDraft","author","labels","url","updatedAt"],"pr:view":["number","title","state","body","author","labels","url","baseRefName","headRefName"],"issue:list":["number","title","state","labels","author","url","updatedAt"],"issue:view":["number","title","state","body","author","labels","url","updatedAt"],"run:list":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt"],"run:view":["databaseId","name","status","conclusion","event","headBranch","workflowName","createdAt","jobs","url"]},no=160,eb=160,tb={"pr:list":["number","title","state","draft","author","labels","url","updated"],"issue:list":["number","title","state","labels","author","url","updated"],"run:list":["id","name","status","conclusion","event","branch","workflow","created"]};ts=class extends Error{constructor(n,r,s=[]){super(r);this.command=n;this.validFields=s}render(){return N({command:`gh ${this.command.kind} ${this.command.action}`,category:"usage",error:this.message,help:`gh ${this.command.kind} ${this.command.action} --help`,validFlags:this.validFields})}}});var uo={};M(uo,{renderTestContract:()=>rd,runTestWrapper:()=>vb});import{spawn as Sb}from"node:child_process";async function vb(e,t){let n=ct(e),r=await Cb(n.argv);return await rd(e,r,t)}async function rd(e,t,n){let r=ct(e),i=sd(r.argv)==="vitest"?$b(t.stdout):Ib(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0){let h=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(h),stderr:Buffer.from(t.stderr),status:h.exitCode??1,signal:t.signal}}let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${Bb(i.durationSeconds)}`,c=H(i.failures,r.query);if(n.level==="terse")return await Tb(r.argv,t,{...i,failures:c},o,a,n,r.query);let u=[],l,f=0;for(let h of c){let m=await Ab(h.excerpt,r.argv.join(" "),n.store);u.push({suite:h.suite,name:h.name,excerpt:m.text}),l??=m.handle,f+=m.bytesElided}let d={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};u.length>0&&(d.failures=u);let p=r.query?Ie(d,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):d;return{stdout:Buffer.from(D(p)),stderr:Buffer.from(t.stderr),status:co(t.status),signal:t.signal,payload:p,mintedHandle:l,bytesElided:f>0?f:void 0,rowsElided:u.length>0?Math.max(0,i.total-u.length):void 0}}async function Tb(e,t,n,r,s,i,o){let a=Ob(n.failures),c={exit_code:r,summary:o?`${s} \xB7 ${n.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let u=o?Ie(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,l=D(u),f=Math.max(0,n.failures.length-a.length),d=a.some((T,x)=>T.excerpt!==n.failures[x].excerpt);if(f===0&&!d)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:co(t.status),signal:t.signal,payload:u};let p={exit_code:r,summary:s};n.failures.length>0&&(p.failures=n.failures.map(T=>({suite:T.suite,name:T.name,excerpt:T.excerpt})));let h=D(p),m=Buffer.byteLength(h),g=await i.store?.mint(Buffer.from(h),{command:e.join(" "),loss:{level:"terse",bytes_elided:m}});if(!g)throw new Error("terse test output requires an elision store");let y=`\u2026 elided ${f>0?`${f} failures`:"full detail"} (+${m}) \u2014 ${ge(g)}`;return{stdout:Buffer.from(`${l}
|
|
142
|
+
${y}`),stderr:Buffer.from(t.stderr),status:co(t.status),signal:t.signal,payload:u,mintedHandle:g,bytesElided:m,rowsElided:f,rawOutput:Buffer.from(h)}}function co(e){return e===0||e===null?0:1}function Ob(e){let t=[],n=Eb;for(let r of e.slice(0,xb)){let s=Pb(r.excerpt,Math.min(kb,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function Pb(e,t){if(t<=0)return"";let n=e.split(`
|
|
143
143
|
`),r=n.length<=2?e:`${n[0]}
|
|
144
144
|
\u2026
|
|
145
|
-
${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function
|
|
146
|
-
`).filter(Boolean).map(c=>
|
|
147
|
-
`)}),i||=1,r||=1,s||=1),s||=n.length,i||=1,r||=Math.max(s,n.length),{failed:s,total:r,suites:i,durationSeconds:o,failures:n}}async function
|
|
148
|
-
\u2026 elided ${o} bytes (+${r.length}) \u2014 ${ge(s)}`,handle:s,bytesElided:r.length}}function
|
|
149
|
-
`):""}function
|
|
150
|
-
`),status:1,signal:null}}return
|
|
151
|
-
`;if(!o&&Buffer.byteLength(c)<=
|
|
152
|
-
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function
|
|
153
|
-
`),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??
|
|
145
|
+
${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function sd(e){if(e[0]==="vitest")return"vitest";if(e[0]==="cargo"&&e[1]==="test")return"cargo";throw new Error(`unsupported test command: ${e.join(" ")}`)}function Db(e){if(sd(e)==="vitest"){let s=e.slice(1);return{executable:"vitest",args:s.some(o=>o==="--reporter=json"||o==="--reporter"||o.startsWith("--reporter="))?s:["run","--reporter=json",...s]}}let n=e.slice(1);return{executable:"cargo",args:n.some(s=>s==="--message-format=json"||s.startsWith("--message-format="))?n:["test","--message-format=json",...n.slice(1)]}}async function Cb(e){let t=Db(e),n=Sb(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=[],s=[];return n.stdout.on("data",i=>r.push(i)),n.stderr.on("data",i=>s.push(i)),await new Promise((i,o)=>{n.on("error",o),n.on("close",(a,c)=>{i({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(s).toString("utf8"),status:a,signal:c})})})}function $b(e){let t=id(e);if(!Qe(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=Ze(t.numTotalTests),i=Ze(t.numFailedTests),o=Lb(Ze(t.startTime),Ze(t.endTime));for(let a of n){if(!Qe(a))continue;let c=Te(a.name)||Te(a.file)||"",u=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let l of u)Qe(l)&&l.status==="failed"&&r.push({suite:c,name:Te(l.fullName)||Te(l.title)||Te(l.name),excerpt:Nb(l.failureMessages)||Te(l.failureMessage)})}return s||=n.reduce((a,c)=>!Qe(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=r.length,o||=n.reduce((a,c)=>Qe(c)?a+Ze(c.perfStats&&Qe(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:n.length||1,durationSeconds:o,failures:r}}function Ib(e){let t=e.split(`
|
|
146
|
+
`).filter(Boolean).map(c=>id(c)).filter(Qe);if(t.length===0)return null;let n=[],r=0,s=0,i=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(i+=1,r+=Ze(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=Ze(c.failed),o+=Ze(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:Te(c.name).split("::").slice(0,-1).join("::"),name:Te(c.name),excerpt:Te(c.stdout)});continue}if(c.reason==="compiler-message"&&Qe(c.message)){let u=Te(c.message.rendered);u&&a.push(u)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
|
|
147
|
+
`)}),i||=1,r||=1,s||=1),s||=n.length,i||=1,r||=Math.max(s,n.length),{failed:s,total:r,suites:i,durationSeconds:o,failures:n}}async function Ab(e,t,n){let r=Buffer.from(e);if(r.length<=ao)return{text:e,bytesElided:0};if(!n)throw new Error("over-limit test failure excerpt requires an elision store");let s=await n.mint(r,{command:t,loss:{level:"brief",bytes_elided:r.length}}),i=r.subarray(0,ao).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(i);return{text:`${i}
|
|
148
|
+
\u2026 elided ${o} bytes (+${r.length}) \u2014 ${ge(s)}`,handle:s,bytesElided:r.length}}function id(e){try{return JSON.parse(e)}catch{return null}}function Nb(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
|
|
149
|
+
`):""}function Bb(e){return`${Number(e.toFixed(1))}s`}function Lb(e,t){return e>0&&t>e?(t-e)/1e3:0}function Ze(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function Te(e){return typeof e=="string"?e:""}function Qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ao,kb,Eb,xb,lo=E(()=>{"use strict";Q();St();gn();ut();ao=320,kb=160,Eb=ao,xb=3});var po={};M(po,{parseCatCommand:()=>mo,renderCatContract:()=>qb,runCatWrapper:()=>Hb});import{isUtf8 as Mb}from"node:buffer";import{readFile as jb}from"node:fs/promises";import{extname as Ub}from"node:path";async function Hb(e,t){let n=mo(e),r;try{r=await jb(n.file)}catch(s){let i=s instanceof Error?s.message:String(s),o=fe(e.join(" "),"",i);return{stdout:N({...o,help:`ls ${n.file}`}),stderr:Buffer.from(`${i}
|
|
150
|
+
`),status:1,signal:null}}return dd(r)?{stdout:r,stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:r}:await ld(e,n,r,t)}async function qb(e,t,n){if((t.status??0)!==0||t.signal){let o=fe(e.join(" "),t.stdout,t.stderr);return{stdout:N(o),stderr:Buffer.from(t.stderr),status:o.exitCode??1,signal:t.signal}}let r=mo(e),s=Buffer.from(t.stdout,"utf8");return dd(s)?{stdout:s,stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,rawOutput:s}:{...await ld(e,r,s,n),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal}}function mo(e){if(e[0]!=="cat")throw new Error("expected rsp cat <file>");let t=e.slice(1),n="full",r,s=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="--full"){s=!0;continue}if(a==="--head"||a==="--tail"){n=a.slice(2),r=ud(t[++o],fo);continue}if(a.startsWith("--head=")||a.startsWith("--tail=")){let[c,u]=a.split("=",2);n=c.slice(2),r=ud(u,fo);continue}i.push(a)}if(i.length!==1)throw new Error("usage: rsp cat [--full] [--head N|--tail N] <file>");return{file:i[0],mode:n,...r?{limit:r}:{},...s?{inlineFull:s}:{}}}async function ld(e,t,n,r){let s=n.toString("utf8"),i=zb(s,t);if(t.inlineFull)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let o=r.level!=="lossless"||n.length>cd(r.heavyByteThreshold,od)||i.truncated;if(!ad(t.file)&&!o)return{stdout:Buffer.from(i.text),stderr:Buffer.alloc(0),status:0,signal:null,rawOutput:n};let a=ad(t.file)?Wb(e,t.file,n,s,r.level,i):Vb(e,t.file,n,s,i),c=`${D(a)}
|
|
151
|
+
`;if(!o&&Buffer.byteLength(c)<=cd(r.heavyByteThreshold,od))return{stdout:Buffer.from(c),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,rawOutput:n};let u=await r.store?.mint(n,{command:e.join(" "),loss:{level:r.level==="lossless"?"terse":r.level,bytes_elided:n.length}});if(!u)throw new Error("rsp cat elision requires an elision store");let l=`\u2026 elided file bytes (+${n.length}) \u2014 ${ge(u)}
|
|
152
|
+
`;return{stdout:Buffer.from(`${c}${l}`),stderr:Buffer.alloc(0),status:0,signal:null,payload:a,mintedHandle:u,bytesElided:n.length,rawOutput:n}}function Wb(e,t,n,r,s,i){let o=rs(r),a=s==="terse"?Fb:Jb,c=rs(i.text),u=c.slice(0,a),l=c.slice(Math.max(u.length,c.length-a));return{command:e.join(" "),file:t,kind:"code",outline_source:"regex",bytes:n.length,lines:o.length,symbols:Kb(o),content:{head:u,tail:l,truncated:i.truncated||u.length+l.length<o.length}}}function Vb(e,t,n,r,s){return{command:e.join(" "),file:t,kind:"text",bytes:n.length,lines:rs(r).length,content:rs(s.text),truncated:s.truncated}}function zb(e,t){if(t.mode==="full")return{text:e,truncated:!1};let n=e.split(`
|
|
153
|
+
`),r=n.at(-1)==="",s=r?n.slice(0,-1):n,i=t.limit??fo,o=t.mode==="head"?s.slice(0,i):s.slice(Math.max(0,s.length-i));return{text:`${o.join(`
|
|
154
154
|
`)}${r&&o.length>0?`
|
|
155
|
-
`:""}`,truncated:o.length<s.length}}function
|
|
156
|
-
`);return t.at(-1)===""?t.slice(0,-1):t}function ld(e){return e.includes(0)||!Lb(e)}function od(e){return Fb.has(jb(e).toLowerCase())}function Kb(e){return["for","if","switch","while"].includes(e)}function ad(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function cd(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var id,lo,Ub,Jb,Fb,po=E(()=>{"use strict";ne();St();ut();id=8*1024,lo=10,Ub=8,Jb=2,Fb=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});function md(e,t={}){let n=Yb(e);if(n.length<12)return[];let r=new Map,s=new Map;for(let d of n){s.set(d.signature,(s.get(d.signature)??0)+1);for(let p of new Set(d.tokens))r.set(p,(r.get(p)??0)+1)}let i=n.map(d=>d.length),o=n.map(d=>d.tokens.length),a=n.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=go(i),u=go(o),l=go(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(p=>n_(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:ho(d.length,c)+ho(d.tokens.length,u)+ho(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+e_(d.tokens,r,n.length)+t_(d.signature,s,n.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,p)=>p.score-d.score||d.line.index-p.line.index).slice(0,t.maxOutliers??3).sort((d,p)=>d.line.index-p.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function Yb(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(dd(r++,n,i,e.slice(n,i).replace(/\r$/,""))),n=i+1}return(n<e.length||e.length===0)&&t.push(dd(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function dd(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:Qb(r),tokens:Zb(r),numbers:Xb(r),length:r.length}}function Qb(e){return e.replace(/[A-Z]+/g,"A").replace(/[a-z]+/g,"a").replace(/\d+(?:\.\d+)?/g,"0").replace(/\s+/g," ").slice(0,160)}function Zb(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function Xb(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function e_(e,t,n){let r=[...new Set(e)];if(r.length===0)return 0;let s=r.map(i=>Math.log2(n/Math.max(1,t.get(i)??n))).sort((i,o)=>o-i).slice(0,6);return s.reduce((i,o)=>i+o,0)/Math.max(1,s.length)}function t_(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function go(e){let t=fd(e),n=fd(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function ho(e,t){return Math.abs(e-t.median)/t.mad}function fd(e){let t=[...e].sort((r,s)=>r-s),n=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[n]:((t[n-1]??0)+(t[n]??0))/2}function n_(e,t,n,r){return e<r&&n<t}var pd=E(()=>{"use strict"});var qn={};M(qn,{parseExecCommandLine:()=>_d,renderExecContract:()=>bd,runExecWrapper:()=>a_});import{isUtf8 as r_}from"node:buffer";import{spawn as s_}from"node:child_process";async function a_(e,t){let n=_d(e),r=await c_(n);return await bd(n,r,t)}async function bd(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=fe(e,t.stdout,t.stderr);return{stdout:N(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:r}}if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let i=u_(r),o=i.kind==="text"?Buffer.from(i.text):r,a=P_(n.heavyByteThreshold,i_);if(o.length<=a&&n.level!=="terse")return{stdout:o,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let f=i.kind==="text"?d_(i.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):f_(r,r.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r,degradation:f.degradation}}function _d(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function c_(e){let t=s_(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(r).toString("binary"),status:o,signal:a})})})}function u_(e){return r_(e)?{kind:"text",text:l_(e.toString("utf8"))}:{kind:"bytes"}}function l_(e){let t=e;for(let n of[Lr,Mr,jr,Ur])t=n.apply(t);return t}function d_(e,t,n,r,s,i=S_,o=Nn){let c=Math.max(1,Math.floor((r==="terse"?wd:o_)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=R_(e,c,l,i),d=m_(e),p=p_(d,e,u,c,l,f.kind==="ok"?f.lines:[],o),h=Rd(s,d,t,O_(u),n,p.summary),m=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Td(f.error)}:p.degradation;return{text:vd(h),degradation:m}}function f_(e,t,n,r){let s=Math.max(1,Math.floor(wd/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:vd(Rd(r,"bytes",t,0,n,i))}}function Rd(e,t,n,r,s,i){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:i,recovery:{original:ge(s)}}}function m_(e){let t=e.trim();return t?kd(t)?"json":Ed(e)?"jsonl":k_(e)?"unified-diff":xd(e)?"tabular":E_(e)?"log-like":x_(e)?"prose":"untyped":"untyped"}function p_(e,t,n,r,s,i,o=Nn){switch(e){case"json":return g_(t,o);case"jsonl":return{summary:h_(t)};case"unified-diff":return{summary:y_(t)};case"tabular":return{summary:w_(t)};case"log-like":return{summary:b_(t,i)};case"prose":return{summary:__(t)};case"bytes":return{summary:{}};case"untyped":return{summary:Sd(n,r,s,i)}}}function g_(e,t){let n=kd(e);if(Array.isArray(n)){if(n.length>15)try{let r=t(n,15);return{summary:{root_type:"array",total:r.total,kept:r.kept,dropped:r.dropped,shape_outliers:r.shapeOutliers,value_outliers:r.valueOutliers,items:r.items.map(Xe),item_keys:wo(n)}}}catch(r){return{summary:hd(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Td(r)}}}return{summary:hd(n)}}if(Hn(n)){let r=Object.entries(n);return{summary:{root_type:"object",keys:r.map(([s])=>s).slice(0,20),key_count:r.length,sample:Object.fromEntries(r.slice(0,8).map(([s,i])=>[s,Xe(i)]))}}}return{summary:{root_type:typeof n,value:Xe(n)}}}function hd(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Xe),item_keys:wo(e)}}function h_(e){let t=Ed(e)??[],n=v_(t,"level");return{records:t.length,keys:wo(t),levels:n,first:Xe(t[0]),last:Xe(t.at(-1))}}function y_(e){let t=new Map,n="",r=0,s=0,i=0;for(let o of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(o);if(a){n=a[2]??a[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0});continue}if(!n){let c=/^\+\+\+ b\/(.+)$/.exec(o);c&&(n=c[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0}))}o.startsWith("@@")?(i++,n&&t.get(n).hunks++):o.startsWith("+")&&!o.startsWith("+++")?(r++,n&&t.get(n).added++):o.startsWith("-")&&!o.startsWith("---")&&(s++,n&&t.get(n).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:i,added_lines:r,deleted_lines:s}}function w_(e){let t=xd(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:Sd(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function b_(e,t){let n=Gn(e);return{entries:n.length,levels:T_(n),first:Et(n[0]??""),last:Et(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:Et(r.text)}))}}function __(e){let t=e.trim().split(/\n\s*\n/).filter(r=>r.trim()),n=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:n.length,opening:Et(t[0]??""),closing:Et(t.at(-1)??"")}}function Sd(e,t,n,r){let s=yd(e.subarray(0,t)),i=yd(e.subarray(n));return{head:s,tail:i,outliers:r.map(o=>({line:o.lineNumber,score:Number(o.score.toFixed(2)),text:Et(o.text)}))}}function R_(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function S_(e,t){return md(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function kd(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return Hn(n)||Array.isArray(n)?n:null}catch{return null}}function Ed(e){let t=Gn(e);if(t.length<2||!t.every(r=>/^[\[{]/.test(r.trim())))return null;let n=[];for(let r of t)try{n.push(JSON.parse(r))}catch{return null}return n}function k_(e){let t=Gn(e),n=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(n)&&!/^--- /.test(n))return!1;let r=t.some(o=>/^diff --git a\/.+ b\/.+/.test(o))||t.some(o=>/^--- /.test(o))&&t.some(o=>/^\+\+\+ /.test(o)),s=t.some(o=>/^@@ /.test(o)),i=t.some(o=>/^[+-]/.test(o)&&!/^(---|\+\+\+) /.test(o));return r&&s&&i}function xd(e){let t=Gn(e);if(t.length<3)return null;let n=t[0]??"";if(/[=:{}/]/.test(n)||/^\d{4}-\d{2}-\d{2}/.test(n))return null;let r=n.includes(" ")?/\t+/:/\s{2,}/,s=n.split(r).map(o=>o.trim()).filter(Boolean);if(s.length<2||s.some(o=>!/^[A-Za-z0-9_.-]+$/.test(o)))return null;let i=[];for(let o of t.slice(1)){let a=o.split(r).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;i.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return i.length>0?{columns:s,rows:i}:null}function E_(e){let t=Gn(e);return t.length<3?!1:t.filter(r=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(r)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(r)||(r.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(r)).length/t.length>=.6}function x_(e){let t=e.trim();if(!t)return!1;let n=t.split(/\s+/).filter(Boolean),r=t.match(/[.!?](?:\s|$)/g)?.length??0;return n.length>=20&&r>=2}function Gn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function wo(e){let t=new Map;for(let n of e)if(Hn(n))for(let r of Object.keys(n))t.set(r,(t.get(r)??0)+1);return[...t.entries()].sort((n,r)=>r[1]-n[1]||n[0].localeCompare(r[0])).slice(0,20).map(([n])=>n)}function v_(e,t){let n=new Map;for(let r of e){if(!Hn(r))continue;let s=r[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let i=String(s).toLowerCase();n.set(i,(n.get(i)??0)+1)}}return Object.fromEntries([...n.entries()].sort((r,s)=>r[0].localeCompare(s[0])))}function T_(e){let t=new Map;for(let n of e){let r=/\blevel=([A-Za-z]+)\b/.exec(n)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(n);if(!r)continue;let s=(r[1]??r[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((n,r)=>n[0].localeCompare(r[0])))}function Xe(e){return typeof e=="string"?Et(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(Xe):Hn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,Xe(n)])):String(e)}function Et(e){let t=e.replace(/\s+/g," ").trim();return t.length<=gd?t:`${t.slice(0,gd-1)}\u2026`}function vd(e){let t=D(e).trimEnd(),n=Y(t);if(!yo(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
|
|
157
|
-
`}function
|
|
158
|
-
`),0);if(n.command==="git"&&
|
|
159
|
-
`),0)}if(n.command==="warm-resident"){let m=o(process.cwd()),g=Oe(n.positional,"--socket")??m.socketPath,w=Oe(n.positional,"--wake-lock")??m.wakeLockPath,y=r(process.cwd(),process.env,n.storeUri??Oe(n.positional,"--store-uri"));if(!y.enabled)return 0;let{warmResidentServer:T}=await Promise.resolve().then(()=>(Fe(),ht));return await T({...m,socketPath:g,wakeLockPath:w},{storeUri:y.storeUri,ttlDays:
|
|
160
|
-
`),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(Gr(),
|
|
161
|
-
`),w.status}if(!n.command){let m=await
|
|
162
|
-
`),1;let g=await m.telemetryGains(
|
|
163
|
-
`;s+=Buffer.byteLength(a),process.stderr.write(a),i({stdoutBytes:r,stderrBytes:s,status:127,signal:null})}),n.on("close",(o,a)=>i({stdoutBytes:r,stderrBytes:s,status:o,signal:a}))})}function
|
|
164
|
-
`)}async function
|
|
165
|
-
`}async function
|
|
166
|
-
`}function
|
|
167
|
-
`);let s=await
|
|
168
|
-
`),await
|
|
169
|
-
`),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}async function
|
|
155
|
+
`:""}`,truncated:o.length<s.length}}function Kb(e){let t=[];for(let n=0;n<e.length;n++){let s=e[n].trim(),i=/^(?:export\s+)?(?:default\s+)?(?:abstract\s+)?(class|interface|type)\s+([A-Za-z_$][\w$]*)/.exec(s);if(i){t.push({kind:i[1],name:i[2],line:n+1,signature:s});continue}let o=/^(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?/.exec(s);if(o){t.push({kind:"function",name:o[1],line:n+1,signature:s});continue}let a=/^(?:public\s+|private\s+|protected\s+|static\s+|async\s+)*([A-Za-z_$][\w$]*)\s*\([^)]*\)\s*(?::[^{]+)?\s*\{/.exec(s);a&&!Yb(a[1])&&t.push({kind:"method",name:a[1],line:n+1,signature:s})}return t}function rs(e){let t=e.split(`
|
|
156
|
+
`);return t.at(-1)===""?t.slice(0,-1):t}function dd(e){return e.includes(0)||!Mb(e)}function ad(e){return Gb.has(Ub(e).toLowerCase())}function Yb(e){return["for","if","switch","while"].includes(e)}function cd(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ud(e,t){let n=Number(e);return Number.isInteger(n)&&n>0?n:t}var od,fo,Jb,Fb,Gb,go=E(()=>{"use strict";Q();St();ut();od=8*1024,fo=10,Jb=8,Fb=2,Gb=new Set([".c",".cc",".cpp",".cs",".go",".java",".js",".jsx",".mjs",".py",".rs",".ts",".tsx"])});function pd(e,t={}){let n=Qb(e);if(n.length<12)return[];let r=new Map,s=new Map;for(let d of n){s.set(d.signature,(s.get(d.signature)??0)+1);for(let p of new Set(d.tokens))r.set(p,(r.get(p)??0)+1)}let i=n.map(d=>d.length),o=n.map(d=>d.tokens.length),a=n.map(d=>d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs))),c=ho(i),u=ho(o),l=ho(a),f=t.excludedByteRanges??[];return n.filter(d=>d.text.trim().length>0).filter(d=>!f.some(p=>r_(d.start,d.end,p.start,p.end))).map(d=>({line:d,score:yo(d.length,c)+yo(d.tokens.length,u)+yo(d.numbers.length===0?0:Math.max(...d.numbers.map(Math.abs)),l)+t_(d.tokens,r,n.length)+n_(d.signature,s,n.length)})).filter(d=>d.score>=(t.minScore??7)).sort((d,p)=>p.score-d.score||d.line.index-p.line.index).slice(0,t.maxOutliers??3).sort((d,p)=>d.line.index-p.line.index).map(d=>({lineNumber:d.line.index+1,score:Math.round(d.score*100)/100,text:d.line.text}))}function Qb(e){let t=[],n=0,r=0;for(let s of e.matchAll(/\n/g)){let i=s.index??e.length;t.push(fd(r++,n,i,e.slice(n,i).replace(/\r$/,""))),n=i+1}return(n<e.length||e.length===0)&&t.push(fd(r,n,e.length,e.slice(n).replace(/\r$/,""))),t}function fd(e,t,n,r){return{index:e,start:t,end:n,text:r,signature:Zb(r),tokens:Xb(r),numbers:e_(r),length:r.length}}function Zb(e){return e.replace(/[A-Z]+/g,"A").replace(/[a-z]+/g,"a").replace(/\d+(?:\.\d+)?/g,"0").replace(/\s+/g," ").slice(0,160)}function Xb(e){return e.toLowerCase().match(/[a-z0-9_.:/-]{3,}/g)??[]}function e_(e){return[...e.matchAll(/[-+]?\d+(?:\.\d+)?/g)].map(t=>Number(t[0])).filter(t=>Number.isFinite(t))}function t_(e,t,n){let r=[...new Set(e)];if(r.length===0)return 0;let s=r.map(i=>Math.log2(n/Math.max(1,t.get(i)??n))).sort((i,o)=>o-i).slice(0,6);return s.reduce((i,o)=>i+o,0)/Math.max(1,s.length)}function n_(e,t,n){return Math.log2(n/Math.max(1,t.get(e)??n))}function ho(e){let t=md(e),n=md(e.map(r=>Math.abs(r-t)))||1;return{median:t,mad:n}}function yo(e,t){return Math.abs(e-t.median)/t.mad}function md(e){let t=[...e].sort((r,s)=>r-s),n=Math.floor(t.length/2);return t.length===0?0:t.length%2===1?t[n]:((t[n-1]??0)+(t[n]??0))/2}function r_(e,t,n,r){return e<r&&n<t}var gd=E(()=>{"use strict"});var qn={};M(qn,{parseExecCommandLine:()=>Rd,renderExecContract:()=>_d,runExecWrapper:()=>c_});import{isUtf8 as s_}from"node:buffer";import{spawn as i_}from"node:child_process";async function c_(e,t){let n=Rd(e),r=await u_(n);return await _d(n,r,t)}async function _d(e,t,n){let r=Buffer.from(t.stdout,"binary"),s=Buffer.from(t.stderr,"binary");if((t.status??0)!==0||t.signal){let d=fe(e,t.stdout,t.stderr);return{stdout:N(d),stderr:s,status:d.exitCode??1,signal:t.signal,rawOutput:r}}if(r.length===0)return{stdout:r,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let i=l_(r),o=i.kind==="text"?Buffer.from(i.text):r,a=D_(n.heavyByteThreshold,o_);if(o.length<=a&&n.level!=="terse")return{stdout:o,stderr:s,status:t.status,signal:t.signal,rawOutput:r};let c=r.length,u=n.level==="lossless"?"terse":n.level,l=await n.store?.mint(r,{command:e,loss:{level:u,bytes_elided:c}});if(!l)throw new Error("rsp exec output elision requires an elision store");let f=i.kind==="text"?f_(i.text,r.length,l,n.level,e,n.anomalyScorer,n.jsonArrayCrusher):m_(r,r.length,l,e);return{stdout:Buffer.from(f.text),stderr:s,status:t.status,signal:t.signal,mintedHandle:l,bytesElided:c,rawOutput:r,degradation:f.degradation}}function Rd(e){if(e[0]!=="exec")throw new Error("expected rsp exec -- <command line>");let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1),r=n.length===1?n[0]:n.join(" ");if(!r.trim())throw new Error("usage: rsp exec -- <command line>");return r}async function u_(e){let t=i_(e,{shell:!0,stdio:["inherit","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("binary"),stderr:Buffer.concat(r).toString("binary"),status:o,signal:a})})})}function l_(e){return s_(e)?{kind:"text",text:d_(e.toString("utf8"))}:{kind:"bytes"}}function d_(e){let t=e;for(let n of[Lr,Mr,jr,Ur])t=n.apply(t);return t}function f_(e,t,n,r,s,i=k_,o=Nn){let c=Math.max(1,Math.floor((r==="terse"?bd:a_)/2)),u=Buffer.from(e),l=Math.max(0,u.length-c),f=S_(e,c,l,i),d=p_(e),p=g_(d,e,u,c,l,f.kind==="ok"?f.lines:[],o),h=Sd(s,d,t,P_(u),n,p.summary),m=f.kind==="failed"?{reason:"exec-anomaly-scorer-failed",family:"exec",stderrHead:Od(f.error)}:p.degradation;return{text:Td(h),degradation:m}}function m_(e,t,n,r){let s=Math.max(1,Math.floor(bd/2)),i={head_hex:e.subarray(0,s).toString("hex"),tail_hex:e.subarray(Math.max(0,e.length-s)).toString("hex")};return{text:Td(Sd(r,"bytes",t,0,n,i))}}function Sd(e,t,n,r,s,i){return{family:"exec",command:e,content:t,bytes:n,lines:r,summary:i,recovery:{original:ge(s)}}}function p_(e){let t=e.trim();return t?Ed(t)?"json":xd(e)?"jsonl":E_(e)?"unified-diff":vd(e)?"tabular":x_(e)?"log-like":v_(e)?"prose":"untyped":"untyped"}function g_(e,t,n,r,s,i,o=Nn){switch(e){case"json":return h_(t,o);case"jsonl":return{summary:y_(t)};case"unified-diff":return{summary:w_(t)};case"tabular":return{summary:b_(t)};case"log-like":return{summary:__(t,i)};case"prose":return{summary:R_(t)};case"bytes":return{summary:{}};case"untyped":return{summary:kd(n,r,s,i)}}}function h_(e,t){let n=Ed(e);if(Array.isArray(n)){if(n.length>15)try{let r=t(n,15);return{summary:{root_type:"array",total:r.total,kept:r.kept,dropped:r.dropped,shape_outliers:r.shapeOutliers,value_outliers:r.valueOutliers,items:r.items.map(Xe),item_keys:bo(n)}}}catch(r){return{summary:yd(n),degradation:{reason:"exec-json-array-crusher-failed",family:"exec",stderrHead:Od(r)}}}return{summary:yd(n)}}if(Hn(n)){let r=Object.entries(n);return{summary:{root_type:"object",keys:r.map(([s])=>s).slice(0,20),key_count:r.length,sample:Object.fromEntries(r.slice(0,8).map(([s,i])=>[s,Xe(i)]))}}}return{summary:{root_type:typeof n,value:Xe(n)}}}function yd(e){return{root_type:"array",items:e.length,sample:e.slice(0,5).map(Xe),item_keys:bo(e)}}function y_(e){let t=xd(e)??[],n=T_(t,"level");return{records:t.length,keys:bo(t),levels:n,first:Xe(t[0]),last:Xe(t.at(-1))}}function w_(e){let t=new Map,n="",r=0,s=0,i=0;for(let o of e.split(/\r?\n/)){let a=/^diff --git a\/(.+?) b\/(.+)$/.exec(o);if(a){n=a[2]??a[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0});continue}if(!n){let c=/^\+\+\+ b\/(.+)$/.exec(o);c&&(n=c[1]??"unknown",t.has(n)||t.set(n,{path:n,added:0,deleted:0,hunks:0}))}o.startsWith("@@")?(i++,n&&t.get(n).hunks++):o.startsWith("+")&&!o.startsWith("+++")?(r++,n&&t.get(n).added++):o.startsWith("-")&&!o.startsWith("---")&&(s++,n&&t.get(n).deleted++)}return{files:[...t.values()].slice(0,12),file_count:t.size,hunks:i,added_lines:r,deleted_lines:s}}function b_(e){let t=vd(e);return t?{columns:t.columns,rows:t.rows.length,sample:t.rows.slice(0,5)}:kd(Buffer.from(e),512,Math.max(0,Buffer.byteLength(e)-512),[])}function __(e,t){let n=Gn(e);return{entries:n.length,levels:O_(n),first:Et(n[0]??""),last:Et(n.at(-1)??""),outliers:t.map(r=>({line:r.lineNumber,score:Number(r.score.toFixed(2)),text:Et(r.text)}))}}function R_(e){let t=e.trim().split(/\n\s*\n/).filter(r=>r.trim()),n=e.trim().split(/\s+/).filter(Boolean);return{paragraphs:t.length,words:n.length,opening:Et(t[0]??""),closing:Et(t.at(-1)??"")}}function kd(e,t,n,r){let s=wd(e.subarray(0,t)),i=wd(e.subarray(n));return{head:s,tail:i,outliers:r.map(o=>({line:o.lineNumber,score:Number(o.score.toFixed(2)),text:Et(o.text)}))}}function S_(e,t,n,r){try{return{kind:"ok",lines:r(e,{headBytes:t,tailStart:n})}}catch(s){return{kind:"failed",error:s}}}function k_(e,t){return pd(e,{excludedByteRanges:[{start:0,end:t.headBytes},{start:t.tailStart,end:Buffer.byteLength(e,"utf8")}]})}function Ed(e){let t=e.trim();if(!t||!/^[\[{]/.test(t))return null;try{let n=JSON.parse(t);return Hn(n)||Array.isArray(n)?n:null}catch{return null}}function xd(e){let t=Gn(e);if(t.length<2||!t.every(r=>/^[\[{]/.test(r.trim())))return null;let n=[];for(let r of t)try{n.push(JSON.parse(r))}catch{return null}return n}function E_(e){let t=Gn(e),n=t[0]??"";if(!/^diff --git a\/.+ b\/.+/.test(n)&&!/^--- /.test(n))return!1;let r=t.some(o=>/^diff --git a\/.+ b\/.+/.test(o))||t.some(o=>/^--- /.test(o))&&t.some(o=>/^\+\+\+ /.test(o)),s=t.some(o=>/^@@ /.test(o)),i=t.some(o=>/^[+-]/.test(o)&&!/^(---|\+\+\+) /.test(o));return r&&s&&i}function vd(e){let t=Gn(e);if(t.length<3)return null;let n=t[0]??"";if(/[=:{}/]/.test(n)||/^\d{4}-\d{2}-\d{2}/.test(n))return null;let r=n.includes(" ")?/\t+/:/\s{2,}/,s=n.split(r).map(o=>o.trim()).filter(Boolean);if(s.length<2||s.some(o=>!/^[A-Za-z0-9_.-]+$/.test(o)))return null;let i=[];for(let o of t.slice(1)){let a=o.split(r).map(c=>c.trim());if(a.length!==s.length||a.some(c=>c===""))return null;i.push(Object.fromEntries(s.map((c,u)=>[c,a[u]??""])))}return i.length>0?{columns:s,rows:i}:null}function x_(e){let t=Gn(e);return t.length<3?!1:t.filter(r=>/^\d{4}-\d{2}-\d{2}[T\s]/.test(r)||/\b(?:TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.test(r)||(r.match(/\b[A-Za-z0-9_.+:-]+=/g)?.length??0)>=2||/^\[[^\]]+\]\s+/.test(r)).length/t.length>=.6}function v_(e){let t=e.trim();if(!t)return!1;let n=t.split(/\s+/).filter(Boolean),r=t.match(/[.!?](?:\s|$)/g)?.length??0;return n.length>=20&&r>=2}function Gn(e){return e.split(/\r?\n/).filter(t=>t.trim()!=="")}function bo(e){let t=new Map;for(let n of e)if(Hn(n))for(let r of Object.keys(n))t.set(r,(t.get(r)??0)+1);return[...t.entries()].sort((n,r)=>r[1]-n[1]||n[0].localeCompare(r[0])).slice(0,20).map(([n])=>n)}function T_(e,t){let n=new Map;for(let r of e){if(!Hn(r))continue;let s=r[t];if(typeof s=="string"||typeof s=="number"||typeof s=="boolean"){let i=String(s).toLowerCase();n.set(i,(n.get(i)??0)+1)}}return Object.fromEntries([...n.entries()].sort((r,s)=>r[0].localeCompare(s[0])))}function O_(e){let t=new Map;for(let n of e){let r=/\blevel=([A-Za-z]+)\b/.exec(n)??/\b(TRACE|DEBUG|INFO|WARN|WARNING|ERROR|FATAL|PANIC)\b/i.exec(n);if(!r)continue;let s=(r[1]??r[0]).toLowerCase();t.set(s,(t.get(s)??0)+1)}return Object.fromEntries([...t.entries()].sort((n,r)=>n[0].localeCompare(r[0])))}function Xe(e){return typeof e=="string"?Et(e):typeof e=="number"||typeof e=="boolean"||e===null?e:Array.isArray(e)?e.slice(0,5).map(Xe):Hn(e)?Object.fromEntries(Object.entries(e).slice(0,8).map(([t,n])=>[t,Xe(n)])):String(e)}function Et(e){let t=e.replace(/\s+/g," ").trim();return t.length<=hd?t:`${t.slice(0,hd-1)}\u2026`}function Td(e){let t=D(e).trimEnd(),n=j(t);if(!wo(e,n))throw new Error("exec TOON round-trip guard failed");return`${t}
|
|
157
|
+
`}function wo(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let o=t;return e.length!==o.length?!1:e.every((a,c)=>wo(a,o[c]))}let n=e,r=t,s=Object.keys(n),i=Object.keys(r);return s.length!==i.length?!1:s.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&wo(n[o],r[o]))}function Hn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Od(e){let n=(e instanceof Error?e.message:String(e??"unknown scorer failure")).split(/\r?\n/,1)[0]?.replace(/\s+/g," ").trim()||"unknown scorer failure";return n.length<=240?n:`${n.slice(0,239)}\u2026`}function wd(e){return e.toString("utf8").replace(/�$/g,"")}function P_(e){if(e.length===0)return 0;let t=0;for(let n of e)n===10&&t++;return e[e.length-1]===10?t:t+1}function D_(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}var o_,a_,bd,hd,Wn=E(()=>{"use strict";Q();gd();St();Bn();ut();o_=8*1024,a_=2*1024,bd=1024,hd=240});Ts();Ce();pn();import{spawn as xo}from"node:child_process";import{createHash as C_}from"node:crypto";import{existsSync as vt,readFileSync as $_,readdirSync as I_,statSync as A_}from"node:fs";import{tmpdir as N_}from"node:os";import{dirname as B_,join as tt}from"node:path";import{fileURLToPath as is}from"node:url";function $a(e){let t={app:e,version:_m(Bt("__RED_BUILD_VERSION__",()=>"2.74.0")??"0.0.0-dev"),gitSha:Bt("__RED_BUILD_GIT_SHA__",()=>"353fb936f7811540bc4282b060041633338c5894")??"unknown",buildTime:Bt("__RED_BUILD_TIME__",()=>"2026-07-18T12:28:46-03:00")??"unknown",bundleAsset:Bt("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},n=Bt("__REDDB_SDK_VERSION__",()=>"1.23.1"),r=Bt("__REDDB_BINARY_TAG__",()=>"v1.23.1");return n&&(t.reddbSdkVersion=n),r&&(t.reddbBinaryTag=r),t}function _m(e){return e.startsWith("v")?e.slice(1):e}function Bt(e,t){try{let n=t();return typeof n=="string"&&n.length>0?n:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}gn();Ws();ut();Ee();async function L_(e=process.argv.slice(2)){let t=$a("rsp");if(hR(e))return process.stdout.write(yR(e)),0;let n=bR(e);if(n.command==="hook"&&n.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(An(),Nr));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-pre-exec"){let{runCodexPreExecHook:m}=await Promise.resolve().then(()=>(An(),Nr));return await m()}if(n.command==="hook"&&n.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(Bn(),ki));return await m()}if(n.command==="hook"&&n.positional[1]==="codex-post-exec"){let{runCodexPostExecHook:m}=await Promise.resolve().then(()=>(Bn(),ki));return await m()}if(n.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Cu(),Du)),g=await m(process.cwd());return process.stdout.write(TR(g)),0}if(n.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Lu(),Bu));return await m(),0}if(n.command==="wait"){let{runWait:m}=await Promise.resolve().then(()=>(Ui(),ji));return await m(n.positional)}if(n.command==="shell-init"){let m=n.positional[1];if(m!=="fish"&&m!=="bash"&&m!=="zsh")return process.stdout.write(N({command:n.positional.join(" ")||"shell-init",category:"usage",error:"usage rsp shell-init fish|bash|zsh",help:"rsp shell-init bash"})),2;let{renderShellInit:g}=await Promise.resolve().then(()=>(Zu(),Qu));return process.stdout.write(g(m)),0}let{resolveRspConfig:r}=await Promise.resolve().then(()=>(Re(),ic)),s=r(process.cwd(),process.env,n.storeUri);if(n.command==="doctor"){let{resolveResidentPaths:m}=await Promise.resolve().then(()=>(Fe(),ht)),g=m(process.cwd()),w=await W_(s,g,So(n.positional,1));return process.stdout.write(Z_(w)),w.exitCode}let i=pR(n.command);if(!s.enabled)return i?await mR(n.positional):(process.stdout.write(`${Do()}
|
|
158
|
+
`),0);if(n.command==="git"&&vo(n.positional)){let m=process.hrtime.bigint();return await se(n,await To(),m,void 0,await F_(process.cwd()))}let{resolveResidentPaths:o,ResidentRspElisionStore:a,ensureResidentServer:c}=await Promise.resolve().then(()=>(Fe(),ht)),u=o(process.cwd());if(i&&U_(s.measurementHoldoutShare))return await M_(n,u.rootDir,s.measurementHoldoutShare);if(n.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(Dl(),Pl)),g=o(process.cwd()),w=Oe(n.positional,"--socket")??g.socketPath,y=r(process.cwd(),process.env,n.storeUri??Oe(n.positional,"--store-uri"));return y.enabled?(await m({socketPath:w,pidPath:Oe(n.positional,"--pid-file")??o(process.cwd()).pidPath,rootDir:g.rootDir,storeUri:y.storeUri,ttlDays:J(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:J(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:J(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:J(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:J(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:J(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:J(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:J(n.positional,"--idle-ms")??y.idleMs,residentVersion:Oe(n.positional,"--resident-version")??t.version,registryPath:Oe(n.positional,"--registry")??g.registryPath}),0):(process.stdout.write(`${Do()}
|
|
159
|
+
`),0)}if(n.command==="warm-resident"){let m=o(process.cwd()),g=Oe(n.positional,"--socket")??m.socketPath,w=Oe(n.positional,"--wake-lock")??m.wakeLockPath,y=r(process.cwd(),process.env,n.storeUri??Oe(n.positional,"--store-uri"));if(!y.enabled)return 0;let{warmResidentServer:T}=await Promise.resolve().then(()=>(Fe(),ht));return await T({...m,socketPath:g,wakeLockPath:w},{storeUri:y.storeUri,ttlDays:J(n.positional,"--ttl-days")??y.ttlDays,ephemeralTtlHours:J(n.positional,"--ephemeral-ttl-hours")??y.ephemeralTtlHours,byteBudget:J(n.positional,"--byte-budget")??y.byteBudget,telemetryTtlDays:J(n.positional,"--telemetry-ttl-days")??y.telemetryTtlDays,telemetryByteBudget:J(n.positional,"--telemetry-byte-budget")??y.telemetryByteBudget,telemetryDrainIntervalMs:J(n.positional,"--telemetry-drain-interval-ms")??y.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:J(n.positional,"--telemetry-drain-timeout-ms")??y.telemetryDrainTimeoutMs,idleMs:J(n.positional,"--idle-ms")??y.idleMs,clientVersion:t.version}),0}if(n.command==="proxy"){let{runProxy:m}=await Promise.resolve().then(()=>(Xr(),Zr));return await m(n.positional,{telemetryRoot:u.rootDir,level:n.level})}if(n.command==="status"||n.command==="sweep"){let{residentRegistryStatus:m,sweepResidentRegistry:g}=await Promise.resolve().then(()=>(Fe(),ht)),w=n.command==="sweep"?await g(u):await m(u);return process.stdout.write(`${G(w)}
|
|
160
|
+
`),0}if(n.command==="gh-api-json"){let{readGhConditionalJson:m}=await Promise.resolve().then(()=>(Gr(),Ju)),g=_R(n.positional);if(!g)return process.stdout.write(N({command:n.positional.join(" "),category:"usage",error:"usage rsp gh-api-json <path> [-f name=value ...]",help:"rsp gh-api-json repos/{owner}/{repo}",validFlags:["-f","-F"]})),2;let w=await m({path:g.path,params:g.params,cwd:process.cwd(),telemetryRoot:u.rootDir,command:`rsp ${n.positional.join(" ")}`});return process.stdout.write(w.stdout),w.stderr&&process.stderr.write(`${w.stderr}
|
|
161
|
+
`),w.status}if(!n.command){let m=await X_(s);return process.stdout.write(tR(m)),0}if(!n.storeUri&&s.storeUri.startsWith("file://")&&!vt(is(s.storeUri)))return i?await q_(n,s,u.rootDir):(process.stdout.write(N({command:nt(n)||"rsp",category:"real-error",error:"rsp repo store is not provisioned",help:"/red-setup"})),1);let l=(m=!0)=>Promise.resolve(new a(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version},{ensureResident:m})),f=()=>c(u,{storeUri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget,telemetryTtlDays:s.telemetryTtlDays,telemetryByteBudget:s.telemetryByteBudget,telemetryDrainIntervalMs:s.telemetryDrainIntervalMs,telemetryDrainTimeoutMs:s.telemetryDrainTimeoutMs,idleMs:s.idleMs,clientVersion:t.version}),d=async()=>{let{RspElisionStore:m}=await Promise.resolve().then(()=>(ze(),Gt));return await m.open({uri:s.storeUri,ttlDays:s.ttlDays,ephemeralTtlHours:s.ephemeralTtlHours,byteBudget:s.byteBudget})},p=()=>s.storeUri.endsWith("/red-skills.rdb")?l():d(),h;try{if(n.command==="stats"){let{stats:m,telemetry:g}=await Ao(s,So(n.positional,30));return process.stdout.write(SR(m,g,RR(n.positional))),0}if(n.command==="gains"){let m=await p();if(h=()=>m.close(),!H_(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
|
|
162
|
+
`),1;let g=await m.telemetryGains(So(n.positional,28));return process.stdout.write(kR(g)),0}if(n.command==="git"){if(et(f()),vo(n.positional)){let T=process.hrtime.bigint();return await se(n,await To(),T,void 0,u.rootDir)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(St(),Qi)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyGitByteThreshold:s.heavyGitByteThreshold});return await se(n,y,w,g,u.rootDir)}if(n.command==="gh"){et(f());let{runGhWrapper:m}=await Promise.resolve().then(()=>(oo(),io)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g});return await se(n,y,w,g,u.rootDir)}if(n.command==="vitest"||n.command==="cargo"){et(f());let{runTestWrapper:m}=await Promise.resolve().then(()=>(lo(),uo)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g});return await se(n,y,w,g,u.rootDir)}if(n.command==="cat"){et(f());let{runCatWrapper:m}=await Promise.resolve().then(()=>(go(),po)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await se(n,y,w,g,u.rootDir)}if(n.command==="exec"){et(f());let{runExecWrapper:m}=await Promise.resolve().then(()=>(Wn(),qn)),g=new xt(()=>l(!1));h=()=>g.close();let w=process.hrtime.bigint(),y=await m(n.positional,{level:n.level,store:g,heavyByteThreshold:s.heavyGitByteThreshold});return await se(n,y,w,g,u.rootDir)}if(n.command==="show"&&n.handle){let m=await p();h=()=>m.close();let g=await m.get(n.handle);if(g&&"original"in g&&g.original)return process.stdout.write(g.original),await Ro(u.rootDir,n.handle,!0,g.original.length),0;if(g?.status==="expired"){let y=N({command:`rsp show ${n.handle}`,category:"real-error",error:`expired ${g.expired_at}`,help:g.command});return process.stdout.write(y),await Ro(u.rootDir,n.handle,!1,y.length),1}let w=N({command:`rsp show ${n.handle}`,category:"real-error",error:"expired unknown",help:n.handle});return process.stdout.write(w),await Ro(u.rootDir,n.handle,!1,w.length),1}return process.stdout.write(N({command:n.positional.join(" ")||"rsp",category:"usage",error:"usage rsp show el:<id>",help:"rsp show el:<id>"})),2}catch(m){if(No(m))return process.stdout.write(m.render()),2;if(i)return await Po("wrapper failed",n.positional,m,u.rootDir);throw m}finally{await h?.()}}async function M_(e,t,n){let r=process.hrtime.bigint(),s=await j_(e.positional),i=Number(process.hrtime.bigint()-r)/1e6;return J_(t,e,s,i,n),s.signal?(process.kill(process.pid,s.signal),128):s.status??0}async function j_(e){let t=e[0];if(!t)return{stdoutBytes:0,stderrBytes:0,status:2,signal:null};let n;if(t==="exec"||t==="proxy"){let i=t==="proxy"?await Promise.resolve().then(()=>(Xr(),Zr)).then(o=>o.parseProxyCommandLine(e)):await Promise.resolve().then(()=>(Wn(),qn)).then(o=>o.parseExecCommandLine(e));n=xo(i,{shell:!0,stdio:["inherit","pipe","pipe"]})}else n=xo(t,e.slice(1),{stdio:["inherit","pipe","pipe"]});let r=0,s=0;return n.stdout?.on("data",i=>{r+=i.length,process.stdout.write(i)}),n.stderr?.on("data",i=>{s+=i.length,process.stderr.write(i)}),await new Promise(i=>{n.on("error",o=>{let a=`${o instanceof Error?o.message:String(o)}
|
|
163
|
+
`;s+=Buffer.byteLength(a),process.stderr.write(a),i({stdoutBytes:r,stderrBytes:s,status:127,signal:null})}),n.on("close",(o,a)=>i({stdoutBytes:r,stderrBytes:s,status:o,signal:a}))})}function U_(e){return e>0&&Math.random()<e}function J_(e,t,n,r,s){let i=n.stdoutBytes+n.stderrBytes,o={event_type:"control_holdout",control_holdout:!0,holdout_share:s,ts:new Date().toISOString(),command:nt(t),command_class:t.command??"unknown",wrapper:t.command,loss:"lossless",elided:!1,raw_bytes:i,emitted_bytes:i,wrapper_ms:r};gt(e,{collection:"rsp_accounting_events_v1",...o}),gt(e,{collection:"rsp_telemetry_invocations_v1",...o,accounting_recorded:!0})}function Oe(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function J(e,t){let n=Oe(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function vo(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function To(){if(G_(process.cwd()))return{stdout:_o(),stderr:Buffer.alloc(0),status:0,signal:null};let{spawnSync:e}=await import("node:child_process");if(e("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:_o(),stderr:Buffer.alloc(0),status:0,signal:null};let n=e("git",["status","--porcelain=v1"],{encoding:"buffer"});if((n.status??0)!==0)return{stdout:n.stdout,stderr:n.stderr,status:n.status??1,signal:n.signal};let r=n.stdout.length===0?_o():n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function _o(){return Buffer.from(`${G({command:"git status",category:"no-op",exit_code:0,noop:!0,scope:"git status",empty:!0,branch:"",rows:[],summary:"git status clean: 0 changes"})}
|
|
164
|
+
`)}async function F_(e){try{let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Fe(),ht));return t(e).rootDir}catch{return e}}function G_(e){try{return!vt(`${e}/.git`)||vt(`${e}/.git/index`)?!1:I_(e).every(t=>t===".git")}catch{return!1}}function H_(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var xt=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){try{let n=await this.open(),r=await n.mint(...t);return this.metrics=n.lastResponseMetrics?.(),r}catch{return`recovery unavailable (resident cold) \u2014 re-run: ${t[1].command}`}}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}lastResponseMetrics(){return this.metrics}},Oo=class{async mint(t,n){return`recovery unavailable (cold store) \u2014 re-run: ${n.command}`}lastResponseMetrics(){}async close(){}};async function q_(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw r instanceof Error?r:new Error("cold store");let s=new Oo,i=process.hrtime.bigint();try{if(e.command==="git"){if(vo(e.positional))return await se(e,await To(),i,s,n,t);let{runGitWrapper:o}=await Promise.resolve().then(()=>(St(),Qi)),a=await o(e.positional,{level:e.level,store:s,heavyGitByteThreshold:t.heavyGitByteThreshold});return await se(e,a,i,s,n,t)}if(e.command==="gh"){let{runGhWrapper:o}=await Promise.resolve().then(()=>(oo(),io)),a=await o(e.positional,{level:e.level,store:s});return await se(e,a,i,s,n,t)}if(e.command==="vitest"||e.command==="cargo"){let{runTestWrapper:o}=await Promise.resolve().then(()=>(lo(),uo)),a=await o(e.positional,{level:e.level,store:s});return await se(e,a,i,s,n,t)}if(e.command==="cat"){let{runCatWrapper:o}=await Promise.resolve().then(()=>(go(),po)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,i,s,n,t)}if(e.command==="exec"){let{runExecWrapper:o}=await Promise.resolve().then(()=>(Wn(),qn)),a=await o(e.positional,{level:e.level,store:s,heavyByteThreshold:t.heavyGitByteThreshold});return await se(e,a,i,s)}}catch(o){return No(o)?(process.stdout.write(o.render()),2):await Po("wrapper failed",e.positional,o,n)}finally{await s.close()}return await Po("wrapper failed",e.positional,r,n)}async function Ao(e,t){let n={stats:vR(e.telemetryByteBudget),telemetry:Io(t)};if(!e.storeUri.startsWith("file://"))return n;let r=is(e.storeUri);if(!vt(r))return n;if(!r.endsWith("red-skills.rdb")){let{RspElisionStore:c}=await Promise.resolve().then(()=>(ze(),Gt)),u=await c.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return{stats:await u.stats(),telemetry:Io(t)}}finally{await u.close()}}let{ensureReddbBinaryFromWarmCache:s}=await Promise.resolve().then(()=>(ze(),Gt));await s();let{readAccountingLaneStats:i,readTelemetryStats:o}=await Promise.resolve().then(()=>(Ee(),Pn)),a=await Ct(e.storeUri);try{return{stats:await i(a,e.telemetryByteBudget),telemetry:await o(a,t)}}finally{await a.close()}}async function W_(e,t,n){let r=[],s=!e.enabled;if(r.push(s?V("config_gate_resolution","rsp disabled in this directory; run /red-setup to opt in"):V("config_gate_resolution","rsp.enabled resolved true for this directory")),s)return r.push(V("hook_wiring","skipped because rsp is disabled"),V("proxy_mode","skipped because rsp is disabled"),V("resident_liveness","skipped because rsp is disabled"),V("store_provisioning","skipped because rsp is disabled"),V("recent_degradation_rate","skipped because rsp is disabled")),Pd("disabled",r,n);r.push(await V_(e)),r.push(e.proxyEnabled?V("proxy_mode","proxy routing enabled for pre-exec rewrites"):Xt("proxy_mode","proxy routing is explicitly disabled; hook falls back to fixed wrapper capabilities","rsp setup"));let{residentRegistryStatus:i}=await Promise.resolve().then(()=>(Fe(),ht));if(r.push(z_(await i(t))),r.push(K_(e)),Cd(e)){let{telemetry:o}=await Ao(e,n);r.push(Y_(o,n))}else r.push(V("recent_degradation_rate","no telemetry store available yet; no recent degradation spike detected"));return Pd(r.some(o=>!o.pass)?"fail":"pass",r,n)}async function V_(e){try{if(e.proxyEnabled)return V("hook_wiring","pre-exec hook would rewrite git status through rsp proxy");let{rewriteCommand:t}=await Promise.resolve().then(()=>(An(),Nr)),n=t("git status");return n.kind==="rewrite"?V("hook_wiring",`pre-exec hook would rewrite git status through ${n.capabilityId}`):Xt("hook_wiring",`pre-exec hook passed git status through: ${n.reason??"unsupported-command"}`,"rsp setup")}catch(t){return Xt("hook_wiring",`pre-exec hook probe failed: ${t instanceof Error?ss(t.message):"unknown error"}`,"rsp setup")}}function z_(e){return e.state==="registered-alive-socket-healthy"?V("resident_liveness","resident registry points at a healthy socket"):Xt("resident_liveness",`resident registry state is ${e.state}`,"rsp warm-resident")}function K_(e){return e.storeUri.startsWith("file://")?Cd(e)?V("store_provisioning","rsp store exists for this directory"):Xt("store_provisioning","rsp store is not provisioned","rsp setup"):V("store_provisioning","non-file store URI configured; provisioning is delegated to that backend")}function Y_(e,t){let n=e.health.by_reason[0];if(e.health.degradations===0)return V("recent_degradation_rate",`0 degradations in the recent ${t}d window`);let r=e.health.degradations,s=n?.reason??e.health.most_recent?.reason??"unknown",i=n?.count??r;return Xt("recent_degradation_rate",`${r} degradation(s) in the recent ${t}d window; dominant reason ${s} (${i})`,Q_(s,t))}function Q_(e,t){return/unavailable|not provisioned|missing/i.test(e)?"rsp setup":/resident|socket|registry/i.test(e)?"rsp warm-resident":`rsp stats --since ${t}d --full`}function Cd(e){if(!e.storeUri.startsWith("file://"))return!0;try{return vt(is(e.storeUri))}catch{return!1}}function V(e,t){return{name:e,pass:!0,finding:t}}function Xt(e,t,n){return{name:e,pass:!1,finding:t,fix_command:n,error:Vs({command:`rsp doctor:${e}`,category:"real-error",error:t,help:n})}}function Pd(e,t,n){return{schema_version:"red.rsp.doctor.v1",status:e,exitCode:e==="fail"?1:0,window_days:n,probes:t,errors:t.map(r=>r.error).filter(r=>!!r)}}function Z_(e){let{exitCode:t,...n}=e;return`${G({...n,exit_code:e.exitCode,probes:e.probes,errors:e.errors})}
|
|
165
|
+
`}async function X_(e){let{stats:t,telemetry:n}=await Ao(e,30),[r,s]=await Promise.all([eR(e),Promise.resolve().then(()=>(Ui(),ji)).then(i=>i.listWaits(process.cwd()),()=>[])]);return{stats:t,telemetry:n,recoveryHandles:r,waits:s}}async function eR(e){if(!e.storeUri.startsWith("file://"))return[];let t=is(e.storeUri);if(!vt(t))return[];let{RspElisionStore:n}=await Promise.resolve().then(()=>(ze(),Gt)),r=await n.open({uri:e.storeUri,ttlDays:e.ttlDays,ephemeralTtlHours:e.ephemeralTtlHours,byteBudget:e.byteBudget});try{return await r.recoveryHandles(5)}finally{await r.close()}}function tR(e){let t=Id(e.stats,e.telemetry,!1),n=Gs({executable:{name:"rsp",command:"rsp"},recovery:{pending:e.recoveryHandles.length,handles:e.recoveryHandles},waits:{active:e.waits.length,entries:e.waits},store:{records:e.stats.records,bytes:e.stats.bytes,oldest:e.stats.oldest,budget:e.stats.budget,storage_classes:e.stats.storage_classes??Bo()},savings:t.savings,health:t.health,decisions:t.decisions,latency:t.latency},nR(e));return`${G(n)}
|
|
166
|
+
`}function nR(e){return[e.recoveryHandles.length>0?"rsp show <handle>":"rsp <wrapped-command> --terse",e.waits.length>0?"rsp wait ls":'rsp wait cmd -- "<command>"',"rsp stats --since <days>d"]}async function se(e,t,n,r,s=process.cwd(),i){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let o=Number(process.hrtime.bigint()-n)/1e6;return r?(et(aR(s,e,t,o,r.lastResponseMetrics())),i&&rR(s,i)):cR(s,e,t,o),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}function rR(e,t){try{let n=Ue(e),r=A_(n),s=t.telemetryDrainIntervalMs*2;if(r.size<t.telemetryByteBudget&&!oR(n,Date.now()-s))return;let i=sR(e),o=iR(i),a=tt(o,"rsp.sock"),c=tt(o,"rsp.pid"),u=tt(F(i),"rsp-resident.pid.json"),l=tt(i,".red","tmp","rsp.wake.lock");xo(process.execPath,[...process.execArgv,process.argv[1]??"","warm-resident","--socket",a,"--pid-file",c,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--ephemeral-ttl-hours",String(t.ephemeralTtlHours),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays),"--telemetry-byte-budget",String(t.telemetryByteBudget),"--telemetry-drain-interval-ms",String(t.telemetryDrainIntervalMs),"--telemetry-drain-timeout-ms",String(t.telemetryDrainTimeoutMs),"--idle-ms",String(t.idleMs),"--registry",u,"--wake-lock",l],{cwd:i,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref()}catch{}}function sR(e){let t=e;for(;;){if(vt(tt(t,".git")))return t;let n=B_(t);if(n===t)return e;t=n}}function iR(e){let t=C_("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=tt(n,"red-skills",t);if(tt(s,"rsp.sock").length<108)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return tt(N_(),`red-skills-${r}`,t)}function oR(e,t){try{let n=$_(e,"utf8");for(let r of n.split(/\r?\n/))if(r.trim())try{let s=JSON.parse(r),i=typeof s.created_at=="string"?s.created_at:s.ts;if(typeof i=="string"){let o=Date.parse(i);if(Number.isFinite(o)&&o<=t)return!0}}catch{}}catch{}return!1}async function aR(e,t,n,r,s){let i=Buffer.concat([n.stdout,n.stderr]),o=Buffer.concat([n.rawOutput??n.stdout,n.stderr]),{appendTelemetryEvent:a,RSP_ACCOUNTING_EVENTS_COLLECTION:c,RSP_TELEMETRY_INVOCATIONS_COLLECTION:u}=await Promise.resolve().then(()=>(Ee(),Pn));await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:nt(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,wrapper_ms:r,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs}),await a(e,{collection:u,ts:new Date().toISOString(),command:nt(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:o.length,emitted_bytes:i.length,raw_text:o.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:r,store_open_count:s?.storeOpenCount,store_elapsed_ms:s?.storeElapsedMs,accounting_recorded:!0}),n.degradation&&(await a(e,{collection:c,event_type:"invocation",ts:new Date().toISOString(),command:nt(t),command_class:t.command??"unknown",loss:t.level,raw_bytes:o.length,emitted_bytes:i.length,degradation_reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead}),await a(e,{collection:"rsp_telemetry_degradations_v1",ts:new Date().toISOString(),command:nt(t),reason:n.degradation.reason,wrapper_family:n.degradation.family,wrapper_exit_code:0,stderr_head:n.degradation.stderrHead,accounting_recorded:!0}))}function cR(e,t,n,r){try{let s=Buffer.concat([n.stdout,n.stderr]),i=Buffer.concat([n.rawOutput??n.stdout,n.stderr]);gt(e,{collection:"rsp_accounting_events_v1",event_type:"invocation",ts:new Date().toISOString(),command:nt(t),command_class:t.command??"unknown",wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:r}),gt(e,{collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:nt(t),wrapper:t.command,loss:t.level,elided:!!(n.mintedHandle||n.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,wrapper_ms:r,accounting_recorded:!0})}catch{}}async function Po(e,t,n,r){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);process.stderr.write(`rsp: ${e}, passing through
|
|
167
|
+
`);let s=await $d(t);if(r){let i=uR(e,t,n),{appendTelemetryEvent:o,RSP_ACCOUNTING_EVENTS_COLLECTION:a,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:c}=await Promise.resolve().then(()=>(Ee(),Pn));et(o(r,{collection:a,event_type:"invocation",ts:new Date().toISOString(),command:Co(t),command_class:t[0]??"unknown",loss:"lossless",raw_bytes:0,emitted_bytes:0,degradation_reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead})),et(o(r,{collection:c,ts:new Date().toISOString(),command:Co(t),reason:i.reason,wrapper_family:i.family,wrapper_exit_code:i.exitCode,stderr_head:i.stderrHead,accounting_recorded:!0}))}return s}function uR(e,t,n){let r=t[0]??"unknown",s=lR(n)||e;return{reason:Dd(n)==="ENOENT"||Dd(n)==="MODULE_NOT_FOUND"||/(?:command not found|cannot find package|cannot find module|module not found|not provisioned)/i.test(s)?"wrapper-unavailable":"wrapper-crash",family:r,exitCode:fR(n)??1,stderrHead:dR(s,240)}}function lR(e){return e instanceof Error?ss(e.message):ss(String(e??""))}function ss(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function dR(e,t){let n=ss(e).replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}\u2026`}function Dd(e){if(typeof e!="object"||e===null||!("code"in e))return"";let t=e.code;return typeof t=="string"?t:""}function fR(e){if(typeof e!="object"||e===null)return null;for(let t of["status","exitCode","exit_code"]){let n=e[t];if(typeof n=="number"&&Number.isFinite(n))return n}return null}function et(e){e.catch(()=>{})}async function Ro(e,t,n,r){let{appendTelemetryEvent:s,RSP_ACCOUNTING_EVENTS_COLLECTION:i}=await Promise.resolve().then(()=>(Ee(),Pn));await s(e,{collection:i,event_type:"show",ts:new Date().toISOString(),command:"rsp show",command_class:"show",handle:t,hit:n,loss:"lossless",raw_bytes:n?r:0,emitted_bytes:r})}async function mR(e){return process.env.RSP_DEBUG==="1"&&process.stderr.write(`rsp: ${Do()}, passing through
|
|
168
|
+
`),await $d(e)}function Do(){return"rsp is not enabled in this directory; run /red-setup"}function pR(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"||e==="cat"||e==="exec"||e==="proxy"||e==="gh-api-json"}async function $d(e){if(e[0]==="exec"||e[0]==="proxy")return await gR(e);let t=e[0];if(!t)return 2;let{spawn:n}=await import("node:child_process"),r=n(t,e.slice(1),{stdio:"inherit"});return await new Promise(s=>{r.on("error",i=>{process.stderr.write(`${i instanceof Error?i.message:String(i)}
|
|
169
|
+
`),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}async function gR(e){let t;try{if(e[0]==="proxy"){let{parseProxyCommandLine:s}=await Promise.resolve().then(()=>(Xr(),Zr));t=s(e)}else{let{parseExecCommandLine:s}=await Promise.resolve().then(()=>(Wn(),qn));t=s(e)}}catch(s){return process.stderr.write(`${s instanceof Error?s.message:String(s)}
|
|
170
170
|
`),2}let{spawn:n}=await import("node:child_process"),r=n(t,{shell:!0,stdio:"inherit"});return await new Promise(s=>{r.on("error",i=>{process.stderr.write(`${i instanceof Error?i.message:String(i)}
|
|
171
|
-
`),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function nt(e){return
|
|
171
|
+
`),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function nt(e){return Co(e.positional)}function Co(e){if(e[0]!=="exec")return e.join(" ");try{let t=e.indexOf("--"),n=t>=0?e.slice(t+1):e.slice(1);return n.length===1?n[0]:n.join(" ")}catch{return e.join(" ")}}function hR(e){return e[0]==="--help"||e[0]==="-h"||e.includes("--help")||e.includes("-h")}function yR(e){let t=e[0]==="--help"||e[0]==="-h"?void 0:e[0];return`${wR(t).join(`
|
|
172
172
|
`)}
|
|
173
|
-
`}function
|
|
174
|
-
`}function
|
|
175
|
-
`}function
|
|
176
|
-
`)}import.meta.url===`file://${process.argv[1]}`&&
|
|
173
|
+
`}function wR(e){switch(e){case"stats":return B("rsp stats [--since <days>d] [--full]",["Defaults: --since 30d, --full false","--since <days>d telemetry window, default 30d","--full include wider daily/top-command/failure lists, default false","--store-uri <uri> read a non-default store"],["rsp stats","rsp stats --since 7d --full"]);case"gains":return B("rsp gains [--since <days>d]",["--since <days>d gains window, default 28d","--store-uri <uri> read a non-default shared RedDB store"],["rsp gains","rsp gains --since 14d"]);case"show":return B("rsp show <handle>",["<handle> elision handle such as el:<id>","--store-uri <uri> read a non-default store"],["rsp show el:<id>","rsp show <handle>"]);case"git":return B("rsp git <status|log|diff|show|blame|branch|commit|push> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp git status --brief","rsp git log --terse","rsp git diff --query <path>"]);case"gh":return B("rsp gh <pr|issue|run> <list|view> [options]",["--brief compact output, default lossless","--terse aggressively summarize and mint recovery handles","--query <text> filter rendered rows","--full keep full supported wrapper detail"],["rsp gh pr list --query <title-or-label>","rsp gh issue view <number>","rsp gh run list --limit 20"]);case"vitest":return B("rsp vitest [run] [vitest-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp vitest run","rsp vitest run --query <suite-or-test>"]);case"cargo":return B("rsp cargo test [cargo-test-options]",["--brief compact output, default lossless","--terse summarize long failures and mint recovery handles","--query <text> filter failure rows"],["rsp cargo test","rsp cargo test --query <test-name>"]);case"cat":return B("rsp cat [--head <n>|--tail <n>|--full] <file>",["--head <n> show first n lines, default slice 10","--tail <n> show last n lines, default slice 10","--full emit full text even when it is large","--brief/--terse reduce large text context"],["rsp cat <file>","rsp cat --head 20 <file>","rsp cat --tail 20 <file>"]);case"exec":return B('rsp exec -- "<command line>"',["--brief compact recognized stdout, default lossless","--terse summarize large stdout and mint recovery handles","--query <text> filter supported structured summaries"],['rsp exec -- "pnpm -C apps/rsp build"','rsp exec -- "git status --short"']);case"proxy":return B("rsp proxy -- <command line>",["--brief compact recognized stdout, default lossless","--terse summarize recognized large stdout"],["rsp proxy -- git status","rsp proxy -- pnpm test"]);case"wait":return["usage: rsp wait <subcommand> [options]","","Flags and defaults:"," --timeout <duration> default 30m for cmd, 60m for pr/run, 2h for release"," --reason <text> default empty"," --signal-pid <pid> optional completion signal target"," --signal <signal> default USR1"," --notify-cmd <cmd> optional completion command","","Examples:",' rsp wait pr 123 --reason "before merge"'," rsp wait run --branch feature/wait --latest",' rsp wait release --tag "v2.*"',' rsp wait cmd -- "pnpm -C apps/rsp build"'," rsp wait ls","","Exit codes: 0 = success verdict, 1 = failure verdict, 2 = timeout/indeterminate."];case"doctor":return B("rsp doctor [--since <days>d]",["--since <days>d recent degradation window, default 1d"],["rsp doctor","rsp doctor --since 7d"]);case"status":return B("rsp status",["No flags. Prints resident registry status as TOON."],["rsp status"]);case"sweep":return B("rsp sweep",["No flags. Removes stale resident registry entries and prints TOON status."],["rsp sweep"]);case"setup":return B("rsp setup",["No flags. Provisions repo rsp configuration and store state."],["rsp setup"]);case"mcp":return B("rsp mcp",["No flags. Starts the rsp MCP server over stdio."],["rsp mcp"]);case"shell-init":return B("rsp shell-init <fish|bash|zsh>",["<fish|bash|zsh> target shell, no default"],["rsp shell-init bash","rsp shell-init fish"]);case"server":return B("rsp server [options]",["--socket <path> default resident socket","--pid-file <path> default resident pid file","--store-uri <uri> default repo store","--ttl-days <days> default from config","--ephemeral-ttl-hours <hours> default from config","--byte-budget <bytes> default from config","--idle-ms <ms> default from config"],["rsp server","rsp server --socket <path> --store-uri <uri>"]);case"warm-resident":return B("rsp warm-resident [options]",["--socket <path> default resident socket","--wake-lock <path> default resident wake lock","--store-uri <uri> default repo store","--idle-ms <ms> default from config"],["rsp warm-resident","rsp warm-resident --store-uri <uri>"]);case"gh-api-json":return B("rsp gh-api-json <path> [-f name=value ...]",["-f name=value string GitHub API field","-F name=value typed GitHub API field"],["rsp gh-api-json repos/{owner}/{repo}","rsp gh-api-json repos/{owner}/{repo}/pulls -f state=open"]);case"hook":return B("rsp hook <claude-pre-exec|codex-pre-exec|claude-post-exec|codex-post-exec>",["Reads hook payload from stdin. Defaults come from the calling host."],["rsp hook codex-pre-exec","rsp hook claude-pre-exec"]);case void 0:return["usage: rsp <subcommand> [options]","","Bare invocation:"," rsp"," renders a live TOON dashboard with recovery handles, active waits, savings, and health.","","Subcommands:"," stats, gains, show, git, gh, vitest, cargo, cat, exec, proxy, wait"," doctor, status, sweep, setup, mcp, shell-init, server, warm-resident, gh-api-json, hook","","Global flags:"," --store-uri <uri> default repo store"," --brief compact summaries"," --terse aggressive summaries with recovery handles"," --query <text> filter supported rendered output"," --help, -h scoped help","","Examples:"," rsp"," rsp stats --since 7d"," rsp git log --terse"," rsp show el:<id>"];default:return B(`rsp ${e} [options]`,["Unknown rsp subcommand. Use root help to list supported subcommands."],["rsp --help"])}}function B(e,t,n){return[`usage: ${e}`,"","Flags and defaults:",...t.map(r=>` ${r}`),"","Examples:",...n.map(r=>` ${r}`)]}function bR(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let s=e[r];if(s==="--store-uri")t.storeUri=e[++r];else if(s==="--brief")t.level="brief";else if(s==="--terse")t.level="terse";else if(s==="--query")t.query=e[++r];else if(s.startsWith("--query="))t.query=s.slice(8);else{if(n.length===0&&s.startsWith("--"))throw new $o(s);n.push(s)}}return t.query&&n[0]!=="show"&&!n.some(r=>r==="--query"||r.startsWith("--query="))&&n.push("--query",t.query),t.command=n[0],t.handle=n[1],t.positional=n,t}var $o=class extends Error{constructor(n){super(`unknown flag: ${n}`);this.flag=n}render(){return tr("rsp",this.flag,["--store-uri","--brief","--terse","--query"],"rsp --help")}};function No(e){return typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function"}function _R(e){let t=e[1];if(!t)return null;let n={};for(let r=2;r<e.length;r++){let s=e[r];if(s!=="-f"&&s!=="-F")continue;let i=e[++r]??"",o=i.indexOf("=");o<=0||(n[i.slice(0,o)]=i.slice(o+1))}return{path:t,params:n}}function So(e,t){let n=Oe(e,"--since")??e.find(i=>i.startsWith("--since="))?.slice(8);if(!n)return t;let r=/^(\d+)(d)?$/.exec(n);if(!r)return t;let s=Number(r[1]);return Number.isFinite(s)&&s>0?s:t}function RR(e){return e.includes("--full")}function SR(e,t=Io(30),n=!1){return`${G(Id(e,t,n))}
|
|
174
|
+
`}function Id(e,t,n){let r=t.savings.top_commands.slice(0,n?10:3),s=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7),i=e.storage_classes??Bo(),o=t.health.recent_failures.slice(0,n?20:5),a=t.decisions.top_pass_reasons.slice(0,n?10:3);return{records:e.records,bytes:e.bytes,oldest:e.oldest,budget:e.budget,storage_classes:i,savings:{window_days:t.window_days,empty:t.empty,...t.savings,tokens_saved_display:ER(t.savings),dollars_saved_estimate_usd_display:xR(t.savings),daily_tokens_saved:s,daily_tokens_saved_elided:n?0:Math.max(0,t.savings.daily_tokens_saved.length-s.length),top_commands:r,top_commands_elided:n?0:Math.max(0,t.savings.top_commands.length-r.length)},health:{...t.health,degradation_rate_display:Eo(t.health.degradation_rate),show_hit_rate_display:Eo(t.health.show_hit_rate),by_reason:t.health.by_reason,by_family:t.health.by_family,recent_failures:o,recent_failures_elided:n?0:Math.max(0,t.health.recent_failures.length-o.length),most_recent_degradation_at:t.health.most_recent?.timestamp??null,most_recent_degradation_reason:t.health.most_recent?.reason??null},decisions:{...t.decisions,contribution_rate_display:Eo(t.decisions.contribution_rate),top_pass_reasons:a,top_pass_reasons_elided:n?0:Math.max(0,t.decisions.top_pass_reasons.length-a.length)},latency:{...t.latency,wrapper_ms_p50_display:ko(t.latency.wrapper_ms_p50),wrapper_ms_p95_display:ko(t.latency.wrapper_ms_p95),store_elapsed_ms_avg_display:ko(t.latency.store_elapsed_ms_avg)}}}function kR(e){return`${G(e)}
|
|
175
|
+
`}function ER(e){return e.tokens_saved_estimated?`${e.tokens_saved_low}-${e.tokens_saved_high} (estimate_midpoint: ${e.tokens_saved}, range_pct: ${e.token_estimate_range_pct})`:String(e.tokens_saved)}function xR(e){return e.dollars_saved_low_usd==null||e.dollars_saved_high_usd==null?hn(e.dollars_saved_estimate_usd):`${hn(e.dollars_saved_low_usd)}-${hn(e.dollars_saved_high_usd)} (estimate_midpoint: ${hn(e.dollars_saved_estimate_usd)})`}function ko(e){return e==null?"none":String(e)}function Eo(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function Io(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,tokens_saved_estimated:!1,token_estimate_range_pct:null,tokens_saved_low:null,tokens_saved_high:null,dollars_saved_estimate_usd:0,dollars_saved_low_usd:null,dollars_saved_high_usd:null,pricing_model_family:"gpt-5",pricing_input_usd_per_million_tokens:1.25,pricing_note:"estimate derived from byte-based token estimate when token counts are estimated",daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,show_total:0,show_hits:0,show_misses:0,show_hit_rate:0,by_reason:[],by_family:[],recent_failures:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null},decisions:{seen:0,contributed:0,passed:0,failed_open:0,quota_free_saved_units:0,contribution_rate:0,top_pass_reasons:[]}}}function vR(e){return{records:0,bytes:0,oldest:null,budget:e,storage_classes:Bo()}}function Bo(){return{derivable:{records:0,bytes:0,raw_bytes:0},"re-executable":{records:0,bytes:0,raw_bytes:0},ephemeral:{records:0,bytes:0,raw_bytes:0}}}function TR(e){let t=e.legacyStoreMigrated?"migrated":e.storeCreated?"created":"existing";return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${t}`,""].join(`
|
|
176
|
+
`)}import.meta.url===`file://${process.argv[1]}`&&L_().then(e=>process.exit(e),e=>{No(e)&&(process.stdout.write(e.render()),process.exit(2)),process.stdout.write(N({command:"rsp",category:"real-error",error:e instanceof Error?e.message:String(e),help:"rsp --help"})),process.exit(1)});export{L_ as main,TR as renderSetupResult,SR as renderStats};
|