@reddb-io/red-skills 2.37.0 → 2.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,76 +1,80 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var xs=Object.defineProperty;var w=(e,t)=>()=>(e&&(t=e(e=0)),t);var v=(e,t)=>{for(var n in t)xs(e,n,{get:t[n],enumerable:!0})};import{existsSync as Ts,readFileSync as _u}from"node:fs";import{dirname as Os,join as vs}from"node:path";function jn(e,t){let n=e;for(let r=0;r<16;r++){let i=vs(n,t);if(Ts(i))return i;let s=Os(n);if(s===n)break;n=s}return null}function As(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Tt(e,t){let n=[];for(let r of e.split(`
4
- `)){let i=r.replace(/\r$/,""),s=i.trim();if(!s||s.startsWith("#"))continue;let o=i.indexOf(":");if(o<0)continue;let a=i.length-i.trimStart().length,c=i.slice(0,o).trim();if(!c)continue;let l=i.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),l&&n.map(d=>d.key).join(".")===t)return As(l)}}var Cn=w(()=>{});var Gn={};v(Gn,{DEFAULT_RSP_BYTE_BUDGET:()=>q,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>C,DEFAULT_RSP_STORE_PATH:()=>Ye,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>Qe,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>ze,DEFAULT_RSP_TTL_DAYS:()=>U,resolveRspConfig:()=>V});import{readFileSync as Ps}from"node:fs";import{dirname as Un,join as qn,resolve as Mn}from"node:path";function V(e,t,n){let r=jn(Mn(e),qn(".red","config.yaml")),i=r?Un(Un(r)):e,s=r?Ps(r,"utf8"):"",o=Tt(s,"rsp.enabled")==="true",a=Te(le(s,"rsp.ttlDays"),U),c=Te(le(s,"rsp.byteBudget"),q),l=Te(le(s,"rsp.telemetryTtlDays"),ze),u=Te(le(s,"rsp.telemetryByteBudget")??le(s,"rsp.byteBudget"),Qe),d=Te($s(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??le(s,"rsp.heavyGitByteThreshold"),C),f=n??t.RSP_STORE_URI??`file://${qn(Mn(i),Ye)}`;return{enabled:o,storeUri:f,ttlDays:a,byteBudget:c,telemetryTtlDays:l,telemetryByteBudget:u,heavyGitByteThreshold:d}}function le(e,t){let n=Tt(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Te(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function $s(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var C,Ye,U,q,ze,Qe,D=w(()=>{"use strict";Cn();C=8*1024,Ye=".red/tmp/red-skills.rdb",U=7,q=64*1024*1024,ze=90,Qe=4*1024*1024});import{createConnection as Is}from"node:net";async function Oe(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=Is(e.socketPath),o=!1,a="",c=setTimeout(()=>{l(()=>i(new Error("resident rsp server timed out"))),s.destroy()},n);function l(u){o||(o=!0,clearTimeout(c),u())}s.on("connect",()=>{s.write(`${JSON.stringify(t)}
5
- `)}),s.on("data",u=>{a+=u.toString("utf8");let d=a.indexOf(`
6
- `);if(d<0)return;let f=a.slice(0,d);l(()=>{try{r(JSON.parse(f))}catch(E){i(E)}}),s.end()}),s.on("error",u=>l(()=>i(u))),s.on("close",()=>{o||l(()=>i(new Error("resident rsp server closed without response")))})})}var Ot=w(()=>{});var Fn=w(()=>{"use strict";Ot()});import{createHash as Ds,randomUUID as Ns}from"node:crypto";import{spawn as Hn}from"node:child_process";import{constants as vt}from"node:fs";import{readFileSync as Ls}from"node:fs";import{mkdir as At,open as Bs,rm as Pt}from"node:fs/promises";import{tmpdir as js}from"node:os";import{dirname as Ze,join as H,resolve as $t}from"node:path";import{fileURLToPath as Cs}from"node:url";function ne(e){let t=Fs(e)??$t(e),n=Gs(t);return{rootDir:t,socketPath:H(n,"rsp.sock"),lockPath:H(n,"rsp.lock"),wakeLockPath:H(n,"rsp.wake.lock")}}async function Xe(e,t){if(await At(Ze(e.socketPath),{recursive:!0,mode:448}),await K(e.socketPath))return;let n=await Wn(e.lockPath);if(n)try{if(await K(e.socketPath))return;await qs(e.socketPath);let r=Ms(e,t);await Jn(e.socketPath,r);return}finally{await n.close(),await Pt(e.lockPath,{force:!0})}await Jn(e.socketPath)}async function K(e,t=200){try{return(await Oe({socketPath:e,timeoutMs:t},{id:Ns(),op:"ping"})).ok}catch{return!1}}async function et(e,t){if(await At(Ze(e.socketPath),{recursive:!0,mode:448}),await K(e.socketPath,50))return!1;let n=await Wn(e.wakeLockPath);if(!n)return!1;await n.close();let[r,i]=Yn(t);return Hn(r,[...i,"warm-resident","--socket",e.socketPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget),"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function Kn(e,t){try{await Xe(e,t)}finally{await Pt(e.wakeLockPath,{force:!0})}}async function Jn(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await K(e))return;if(t&&t.exitCode!=null)throw new Error(`resident rsp server exited before ready (${t.exitCode})`);await new Promise(i=>setTimeout(i,50))}throw r instanceof Error?r:new Error("resident rsp server did not start")}async function qs(e){await Pt(e,{force:!0})}async function Wn(e){await At(Ze(e),{recursive:!0,mode:448});try{return await Bs(e,vt.O_CREAT|vt.O_EXCL|vt.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Ms(e,t){let[n,r]=Yn(t),i=Hn(n,[...r,"server","--socket",e.socketPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget),"--telemetry-ttl-days",String(t.telemetryTtlDays??90),"--telemetry-byte-budget",String(t.telemetryByteBudget??t.byteBudget)],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return i.unref(),i}function Yn(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?$t(process.argv[1]):Cs(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function Gs(e){let t=Ds("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let i=H(n,"red-skills",t);if(H(i,"rsp.sock").length<Us)return i}let r=typeof process.getuid=="function"?process.getuid():"nouid";return H(js(),`red-skills-${r}`,t)}function Fs(e){let t=$t(e);for(let n=0;n<32;n++){try{if(Vn(H(t,".red","config.yaml"))!=null||Vn(H(t,".git","HEAD"))!=null)return t}catch{}let r=Ze(t);if(r===t)return null;t=r}return null}function Vn(e){try{return Ls(e,"utf8")}catch{return null}}var Us,zn=w(()=>{Ot();Us=108});var tt={};v(tt,{ResidentRspElisionStore:()=>ve,ensureResidentServer:()=>Xe,kickResidentServer:()=>et,pingResident:()=>K,resolveResidentPaths:()=>ne,warmResidentServer:()=>Kn});import{randomUUID as Js}from"node:crypto";function Qn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ve,ue=w(()=>{"use strict";Fn();zn();ve=class{constructor(t,n){this.paths=t;this.config=n}metrics;lastResponseMetrics(){return this.metrics}async mint(t,n){let i=(await this.request({op:"mint",original:Buffer.from(t).toString("base64"),meta:n})).handle;if(!i?.startsWith("el:"))throw new Error("resident rsp returned invalid handle");return i}async get(t){let n=await this.request({op:"get",handle:t});return n?Qn(n)&&n.status==="expired"?n:!Qn(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async telemetryStats(t){return await this.request({op:"telemetry-stats",sinceDays:t})}async memory(t,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){await Xe(this.paths,this.config);let n=await Oe(this.paths,{...t,id:Js()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var sr={};v(sr,{RSP_WRAPPER_CAPABILITIES:()=>It,formatHookDecision:()=>nr,hookDecisionFromClaudePreExecJson:()=>tr,rewriteCommand:()=>er,rewriteTableFromCapabilities:()=>Xn,runClaudePreExecHook:()=>Ws});import{readFileSync as Zn}from"node:fs";import{existsSync as Vs}from"node:fs";import{fileURLToPath as Hs}from"node:url";function Xn(e){let t=new Map;for(let n of e)t.set(Ae(n.command),["rsp",...n.wrapper]);return t}function er(e){let t=to(e);if(!t)return{kind:"passthrough"};if(t.length>0&&rr(t[0]))return{kind:"passthrough"};let n=Ks.get(Ae(t));if(!n)return{kind:"passthrough"};let r=It.find(i=>Ae(i.command)===Ae(t));return{kind:"rewrite",command:n.join(" "),capabilityId:r?.id??Ae(t)}}async function tr(e,t){let n=no(e),r=I(n,["cwd"])||I(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??Ys)(r))return{kind:"passthrough",reason:"disabled"};let s=eo(n);if(!s)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??er)(s);return o.kind!=="rewrite"||await(t.isResidentHealthy??zs)(r)?o:(await(t.wakeResident??Qs)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function nr(e){return e.kind==="rewrite"?{stdout:`${e.command}
7
- `,status:0}:{stdout:"",status:1}}async function Ws(e){let t=e?Zn(e,"utf8"):Zn(0,"utf8"),n=await tr(t,{cwd:process.cwd()}),r=nr(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Ys(e){return V(e,process.env).enabled}async function zs(e){let t=ne(e);return await K(t.socketPath,50)}async function Qs(e){let t=V(e,process.env);if(!t.enabled||!Xs(t))return;let n=ne(e);await et(n,Zs(t))}function Zs(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget}}function Xs(e){if(!e.storeUri.startsWith("file://"))return!0;try{return Vs(Hs(e.storeUri))}catch{return!1}}function eo(e){return I(e,["tool_input","command"])||I(e,["tool_input","cmd"])||I(e,["tool_input","args","command"])||I(e,["input","command"])||I(e,["input","cmd"])||I(e,["arguments","command"])||I(e,["arguments","cmd"])||I(e,["command"])||I(e,["cmd"])}function to(e){let t=e.trim();if(!t||/[\n\r|&;()$<>`'"]/.test(t))return null;let n=t.split(/[ \t]+/).filter(Boolean);return n.length===0||n.some(r=>r.includes("=")&&rr(r))?null:n}function rr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function Ae(e){return e.join("\0")}function no(e){try{let t=JSON.parse(e);return ir(t)?t:{}}catch{return{}}}function I(e,t){let n=e;for(let r of t){if(!ir(n))return"";n=n[r]}return typeof n=="string"?n:""}function ir(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var It,Ks,or=w(()=>{"use strict";D();ue();It=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],Ks=Xn(It)});function fr(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/[\u0000-\u001F]/g,t=>`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`)}function pr(e){let t="",n=0;for(;n<e.length;){if(e[n]==="\\"){if(n+1>=e.length)throw new SyntaxError("Invalid escape sequence: backslash at end of string");let r=e[n+1];if(r==="n"){t+=`
8
- `,n+=2;continue}if(r==="t"){t+=" ",n+=2;continue}if(r==="r"){t+="\r",n+=2;continue}if(r==="\\"){t+="\\",n+=2;continue}if(r==='"'){t+='"',n+=2;continue}if(r==="u"){if(n+6>e.length)throw new SyntaxError(`Invalid escape sequence: truncated \\u escape at "${e.slice(n,n+6)}"`);let i=e.slice(n+2,n+6);if(!/^[0-9a-f]{4}$/i.test(i))throw new SyntaxError(`Invalid escape sequence: \\u must be followed by 4 hex digits, got "${i}"`);let s=Number.parseInt(i,16);if(s>=55296&&s<=57343)throw new SyntaxError(`Invalid escape sequence: \\u${i} is a lone surrogate; supplementary code points MUST appear as literal UTF-8`);t+=String.fromCodePoint(s),n+=6;continue}throw new SyntaxError(`Invalid escape sequence: \\${r}`)}t+=e[n],n++}return t}function at(e,t){let n=t+1;for(;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==='"')return n;n++}return-1}function Lt(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}function A(e,t){try{return t()}catch(n){throw n instanceof P?n:n instanceof Error?new P(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function mr(e){return e==="true"||e==="false"||e==="null"}function so(e){if(!e||!io.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function it(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let g=at(r,0);if(g===-1||!r.slice(g+1).startsWith("["))return;let b=e.length-r.length+g+1;i=e.indexOf("[",b)}else i=e.indexOf("[");if(i===-1)return;let s=e.indexOf("]",i);if(s===-1)return;let o=s+1,a=o,c=e.indexOf("{",s);if(c!==-1&&c<e.indexOf(":",s)){let g=e.slice(s+1,c);if(g!==""){if(n){let y=g.trim();throw new SyntaxError(y===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${y}" between bracket and fields segment`)}return}let b=e.indexOf("}",c);b!==-1&&(a=b+1)}if(o=e.indexOf(":",Math.max(s,a)),o===-1)return;let l=Math.max(s+1,a),u=e.slice(l,o);if(u!==""){if(n){let g=u.trim();throw new SyntaxError(g===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${g}" between bracket segment and colon`)}return}let d;if(i>0){let g=e.slice(0,i).trim();d=g.startsWith('"')?Dt(g):g}let f=e.slice(o+1).trim(),E=e.slice(i+1,s),R;try{R=ao(E,t)}catch(g){if(n)throw g;return}let{length:k,delimiter:m}=R,h;if(c!==-1&&c<o){let g=e.indexOf("}",c);if(g!==-1&&g<o){let b=e.slice(c+1,g),y=lo(b,m);if(y!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${ar(m)}" but fields segment contains unquoted "${ar(y)}"`);return}h=Bt(b,m).map(S=>Dt(S.trim()))}}return{header:{key:d,length:k,delimiter:m,fields:h},inlineValues:f||void 0}}function ao(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=rt.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=rt.pipe,n=n.slice(0,-1)),!oo.test(n))throw new SyntaxError(`Invalid array length: "${e}" (expected non-negative integer with no leading zeros)`);return{length:Number.parseInt(n,10),delimiter:r}}function lo(e,t){for(let n of co)if(n!==t&&Lt(e,n)!==-1)return n}function ar(e){return e===" "?"\\t":e}function Bt(e,t){let n=[],r="",i=!1,s=0;for(;s<e.length;){let o=e[s];if(o==="\\"&&s+1<e.length&&i){r+=o+e[s+1],s+=2;continue}if(o==='"'){i=!i,r+=o,s++;continue}if(o===t&&!i){n.push(r.trim()),r="",s++;continue}r+=o,s++}return(r||n.length>0)&&n.push(r.trim()),n}function yr(e){return e.map(t=>ct(t))}function ct(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return Dt(t);if(mr(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(so(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function Dt(e){let t=e.trim();if(t.startsWith('"')){let n=at(t,0);if(n===-1)throw new SyntaxError("Unterminated string: missing closing quote");if(n!==t.length-1)throw new SyntaxError("Unexpected characters after closing quote");return pr(t.slice(1,n))}return t}function uo(e,t){let n=t;for(;n<e.length&&e[n]!==":";)n++;if(n>=e.length||e[n]!==":")throw new SyntaxError("Missing colon after key");let r=e.slice(t,n).trim();return n++,{key:r,end:n}}function fo(e,t){let n=at(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=pr(e.slice(t+1,n)),i=n+1;if(i>=e.length||e[i]!==":")throw new SyntaxError("Missing colon after key");return i++,{key:r,end:i}}function po(e,t){let n=e[t]==='"';return{...n?fo(e,t):uo(e,t),isQuoted:n}}function gr(e){return e.trim().startsWith("[")&&Lt(e,":")!==-1}function mo(e){return Lt(e,":")!==-1}function yo(){return{lineNumber:0,blankLines:[]}}function go(e,t,n,r){t.lineNumber++;let i=t.lineNumber,s=0;for(;s<e.length&&e[s]===" ";)s++;let o=e.slice(s);if(!o.trim()){let c=cr(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=cr(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new P("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new P(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*ho(e,t,n,r){for(let i of e){let s=go(i,r,t,n);s!==void 0&&(yield s)}}function cr(e,t){return Math.floor(e/t)}function Pe(e,t,n,r,i){if(r.strict&&e!==t)throw new P(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function wo(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new P(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function bo(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Ro(e.content,n.delimiter))throw new P(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function hr(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new P(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Ro(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*_o(e,t){if(t?.expandPaths!==void 0)throw new Error("expandPaths is not supported in streaming decode");let n={indent:t?.indent??2,strict:t?.strict??!0},r=yo(),i=new Eo(ho(e,n.indent,n.strict,r),r),s=i.peekSync();if(!s){yield{type:"startObject"},yield{type:"endObject"};return}if(s.content.trim()==="[]"){i.advanceSync(),yield{type:"startArray",length:0},yield{type:"endArray"};return}if(gr(s.content)){let a=A(s,()=>it(s.content,L,n.strict));if(a){i.advanceSync(),yield*st(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!ur(s)){yield{type:"primitive",value:A(s,()=>ct(s.content.trim()))};return}if(!ur(s)&&i.peekSync()?.depth===0)throw new P("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*de(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*de(a,i,0,n,o)}yield{type:"endObject"}}function lr(e,t,n){if(n){if(n.has(e))throw new P(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*de(e,t,n,r,i){let s=e.content,o=A(e,()=>it(s,L,r.strict));if(o&&o.header.key!==void 0){lr(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*st(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=A(e,()=>po(s,0)),l=s.indexOf(":",a.length),u=l>=0?s.slice(l+1).trim():"";if(lr(a,e,i),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!u){let d=t.peekSync();if(d&&d.depth>n){yield{type:"startObject"},yield*ko(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(u==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:A(e,()=>ct(u))}}function*ko(e,t,n){let r,i=n.strict?new Set:void 0;for(;!e.atEndSync();){let s=e.peekSync();if(!s||s.depth<t)break;if(r===void 0&&s.depth>=t&&(r=s.depth),s.depth===r)e.advanceSync(),yield*de(s,e,r,n,i);else break}}function*st(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*So(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*xo(e,n,r,i,s),yield{type:"endArray"};return}yield*To(e,n,r,i,s),yield{type:"endArray"}}function*So(e,t,n,r){if(!t.trim()){Pe(0,e.length,"inline array items",n,r);return}let i=A(r,()=>Bt(t,e.delimiter)),s=A(r,()=>yr(i));Pe(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*xo(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;if(u.depth===s){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,t.advanceSync();let d=A(u,()=>Bt(u.content,e.delimiter));Pe(d.length,e.fields.length,"tabular row values",r,u);let f=A(u,()=>yr(d));yield*vo(e.fields,f),o++}else break}Pe(o,e.length,"tabular rows",r,l),r.strict&&a!==void 0&&c!==void 0&&hr(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&bo(t.peekSync(),s,e)}function*To(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;let d=u.content.startsWith("- ")||u.content==="-";if(u.depth===s&&d){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,yield*Oo(t,s,r);let f=t.current();f&&(c=f.lineNumber,l=f),o++}else break}Pe(o,e.length,"list array items",r,l),r.strict&&a!==void 0&&c!==void 0&&hr(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&wo(t.peekSync(),s,e.length)}function*Oo(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new P('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(gr(i)){let a=A(s,()=>it(i,L,n.strict));if(a){yield*st(a.header,a.inlineValues,e,t,n,s);return}}let o=A(s,()=>it(i,L,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*st(a,o.inlineValues,e,t+1,n,s);let l=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<l)break;if(u.depth===l&&!u.content.startsWith("- "))e.advanceSync(),yield*de(u,e,l,n,c);else break}yield{type:"endObject"};return}if(mo(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*de(s,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<c)break;if(l.depth===c&&!l.content.startsWith("- "))e.advanceSync(),yield*de(l,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:A(s,()=>ct(i))}}function ur(e){let t=e.content;if(t.startsWith('"')){let n=at(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*vo(e,t){yield{type:"startObject"};for(let n=0;n<e.length;n++)yield{type:"key",key:e[n]},yield{type:"primitive",value:t[n]};yield{type:"endObject"}}function M(e){if(e===null)return null;if(typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"){let t=e.toJSON();if(t!==e)return M(t)}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e=="bigint")return e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(M);if(e instanceof Set)return Array.from(e).map(M);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),M(n)]));if(Ao(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=M(e[n]));return t}return null}function re(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function W(e){return Array.isArray(e)}function x(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function $e(e){return Object.keys(e).length===0}function Ao(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function Ie(e){return e.length===0||e.every(t=>re(t))}function Po(e){return e.length===0||e.every(t=>W(t))}function wr(e){return e.length===0||e.every(t=>x(t))}function Do(e){return/^[A-Z_][\w.]*$/i.test(e)}function br(e){return/^[A-Z_]\w*$/i.test(e)}function No(e,t=L){return!(!e||e!==e.trim()||mr(e)||Lo(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function Lo(e){return $o.test(e)||Io.test(e)}function nt(e,t){if(Array.isArray(e))return e.map(n=>nt(n,t));if(x(e)){let n={},r=e[Rr];for(let[i,s]of Object.entries(e)){let o=r?.has(i);if(i.includes(".")&&!o){let c=i.split(".");if(c.every(l=>br(l))){Bo(n,c,nt(s,t),t);continue}}let a=nt(s,t);if(i in n){let c=n[i];if(Ct(c,a))jt(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof c} with ${typeof a}`);n[i]=a}}else n[i]=a}return n}return e}function Bo(e,t,n,r){let i=e;for(let a=0;a<t.length-1;a++){let c=t[a],l=i[c];if(l===void 0){let u={};i[c]=u,i=u}else if(x(l))i=l;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof l}`);let u={};i[c]=u,i=u}}let s=t[t.length-1],o=i[s];if(o===void 0)i[s]=n;else if(Ct(o,n))jt(o,n,r);else{if(r)throw new TypeError(`Path expansion conflict at key "${s}": cannot merge ${typeof o} with ${typeof n}`);i[s]=n}}function jt(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(Ct(s,i))jt(s,i,n);else{if(n)throw new TypeError(`Path expansion conflict at key "${r}": cannot merge ${typeof s} with ${typeof i}`);e[r]=i}}}function Ct(e,t){return x(e)&&x(t)}function jo(e){let t={stack:[],root:void 0};for(let n of e)Co(t,n);return Uo(t)}function Co(e,t){let{stack:n}=e;switch(t.type){case"startObject":{let r={},i=new Set;if(n.length===0)n.push({type:"object",obj:r,quotedKeys:i});else{let s=n[n.length-1];if(s.type==="object"){if(s.currentKey===void 0)throw new Error("Object startObject event without preceding key");s.obj[s.currentKey]=r,s.currentKey=void 0}else s.type==="array"&&s.arr.push(r);n.push({type:"object",obj:r,quotedKeys:i})}break}case"endObject":{if(n.length===0)throw new Error("Unexpected endObject event");let r=n.pop();if(r.type!=="object")throw new Error("Mismatched endObject event");r.quotedKeys.size>0&&Object.defineProperty(r.obj,Rr,{value:r.quotedKeys,enumerable:!1,writable:!1,configurable:!1}),n.length===0&&(e.root=r.obj);break}case"startArray":{let r=[];if(n.length===0)n.push({type:"array",arr:r});else{let i=n[n.length-1];if(i.type==="object"){if(i.currentKey===void 0)throw new Error("Array startArray event without preceding key");i.obj[i.currentKey]=r,i.currentKey=void 0}else i.type==="array"&&i.arr.push(r);n.push({type:"array",arr:r})}break}case"endArray":{if(n.length===0)throw new Error("Unexpected endArray event");let r=n.pop();if(r.type!=="array")throw new Error("Mismatched endArray event");n.length===0&&(e.root=r.arr);break}case"key":{if(n.length===0)throw new Error("Key event outside of object context");let r=n[n.length-1];if(r.type!=="object")throw new Error("Key event in non-object context");r.currentKey=t.key,t.wasQuoted&&r.quotedKeys.add(t.key);break}case"primitive":if(n.length===0)e.root=t.value;else{let r=n[n.length-1];if(r.type==="object"){if(r.currentKey===void 0)throw new Error("Primitive event without preceding key in object");r.obj[r.currentKey]=t.value,r.currentKey=void 0}else r.type==="array"&&r.arr.push(t.value)}break}}function Uo(e){if(e.stack.length!==0)throw new Error("Incomplete event stream: stack not empty at end");if(e.root===void 0)throw new Error("No root value built from events");return e.root}function qo(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!x(t))return;let{segments:a,tail:c,leafValue:l}=Mo(e,t,o??r.flattenDepth);if(a.length<2||!a.every(f=>br(f)))return;let u=Go(a),d=s?`${s}.${u}`:u;if(!n.includes(u)&&!(i&&i.has(d)))return{foldedKey:u,remainder:c,leafValue:l,segmentCount:a.length}}function Mo(e,t,n){let r=[e],i=t;for(;r.length<n&&x(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!x(i)||$e(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function Go(e){return e.join(".")}function pe(e,t){return e===null?ro:typeof e=="boolean"||typeof e=="number"?String(e):Fo(e,t)}function Fo(e,t=L){return No(e,t)?e:`"${fr(e)}"`}function me(e){return Do(e)?e:`"${fr(e)}"`}function Er(e,t=L){return e.map(n=>pe(n,t)).join(t)}function ie(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=me(n)),s+=`[${e}${i!==L?i:""}]`,r){let o=r.map(a=>me(a));s+=`{${o.join(i)}}`}return s+=":",s}function*Jo(e,t,n){if(re(e)){let r=pe(e,t.delimiter);r!==""&&(yield r);return}W(e)?yield*Nt(void 0,e,n,t):x(e)&&(yield*fe(e,n,t))}function*fe(e,t,n,r,i,s){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=s??n.flattenDepth;for(let[c,l]of Object.entries(e))yield*Vo(c,l,t,n,o,r,i,a)}function*Vo(e,t,n,r,i,s,o,a){let c=o?`${o}.${e}`:e,l=a??r.flattenDepth;if(r.keyFolding==="safe"&&i){let d=qo(e,t,i,r,s,o,l);if(d){let{foldedKey:f,remainder:E,leafValue:R,segmentCount:k}=d,m=me(f);if(E===void 0){if(re(R)){yield T(n,`${m}: ${pe(R,r.delimiter)}`,r.indent);return}else if(W(R)){yield*Nt(f,R,n,r);return}else if(x(R)&&$e(R)){yield T(n,`${m}:`,r.indent);return}}if(x(E)){yield T(n,`${m}:`,r.indent);let h=l-k,g=o?`${o}.${f}`:f;yield*fe(E,n+1,r,s,g,h);return}}}let u=me(e);re(t)?yield T(n,`${u}: ${pe(t,r.delimiter)}`,r.indent):W(t)?yield*Nt(e,t,n,r):x(t)&&(yield T(n,`${u}:`,r.indent),$e(t)||(yield*fe(t,n+1,r,s,c,l)))}function*Nt(e,t,n,r){if(t.length===0){yield T(n,e!=null?`${me(e)}: []`:"[]",r.indent);return}if(Ie(t)){yield T(n,lt(t,r.delimiter,e),r.indent);return}if(Po(t)&&t.every(i=>Ie(i))){yield*Ho(e,t,n,r);return}if(wr(t)){let i=_r(t);i?yield*Ko(e,t,i,n,r):yield*dr(e,t,n,r);return}yield*dr(e,t,n,r)}function*Ho(e,t,n,r){yield T(n,ie(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(Ie(i)){let s=lt(i,r.delimiter);yield N(n+1,s,r.indent)}}function lt(e,t,n){let r=ie(e.length,{key:n,delimiter:t}),i=Er(e,t);return e.length===0?r:`${r} ${i}`}function*Ko(e,t,n,r,i){yield T(r,ie(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*kr(t,n,r+1,i)}function _r(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&Wo(e,n))return n}function Wo(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let r of t)if(!(r in n)||!re(n[r]))return!1}return!0}function*kr(e,t,n,r){for(let i of e)yield T(n,Er(t.map(s=>i[s]),r.delimiter),r.indent)}function*dr(e,t,n,r){yield T(n,ie(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*Ut(i,n+1,r)}function*Yo(e,t,n){if($e(e)){yield T(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(W(s)&&wr(s)){let c=_r(s);if(c){yield N(t,ie(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*kr(s,c,t+2,n),o.length>0&&(yield*fe(Object.fromEntries(o),t+1,n));return}}let a=me(i);if(re(s))yield N(t,`${a}: ${pe(s,n.delimiter)}`,n.indent);else if(W(s))if(s.length===0)yield N(t,`${a}: []`,n.indent);else if(Ie(s))yield N(t,`${a}${lt(s,n.delimiter)}`,n.indent);else{yield N(t,`${a}${ie(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*Ut(c,t+2,n)}else x(s)&&(yield N(t,`${a}:`,n.indent),$e(s)||(yield*fe(s,t+2,n)));o.length>0&&(yield*fe(Object.fromEntries(o),t+1,n))}function*Ut(e,t,n){if(re(e))yield N(t,pe(e,n.delimiter),n.indent);else if(W(e))if(Ie(e))yield N(t,lt(e,n.delimiter),n.indent);else{yield N(t,ie(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Ut(r,t+1,n)}else x(e)&&(yield*Yo(e,t,n))}function T(e,t,n){return" ".repeat(n*e)+t}function N(e,t,n){return T(e,"- "+t,n)}function zo(e,t){let n=t("",e,[]);return n===void 0?ot(e,t,[]):ot(M(n),t,[])}function ot(e,t,n){return x(e)?Qo(e,t,n):W(e)?Zo(e,t,n):e}function Qo(e,t,n){let r={};for(let[i,s]of Object.entries(e)){let o=[...n,i],a=t(i,s,o);a!==void 0&&(r[i]=ot(M(a),t,o))}return r}function Zo(e,t,n){let r=[];for(let i=0;i<e.length;i++){let s=e[i],o=[...n,i],a=t(String(i),s,o);if(a===void 0)continue;let c=M(a);r.push(ot(c,t,o))}return r}function O(e,t){return Array.from(Sr(e,t)).join(`
9
- `)}function qt(e,t){return xr(e.split(`
10
- `),t)}function Sr(e,t){let n=M(e),r=Xo(t);return Jo(r.replacer?zo(n,r.replacer):n,r,0)}function xr(e,t){let n=ea(t),r=jo(_o(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?nt(r,n.strict):r}function Xo(e){return{indent:e?.indent??2,delimiter:e?.delimiter??L,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function ea(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var ro,rt,L,P,io,oo,co,Eo,$o,Io,Rr,Tr=w(()=>{ro="null",rt={comma:",",tab:" ",pipe:"|"},L=rt.comma;P=class extends SyntaxError{constructor(e,t){let n=t?.line!==void 0?`Line ${t.line}: `:"";super(n+e,t?.cause!==void 0?{cause:t.cause}:void 0),this.name="ToonDecodeError",this.line=t?.line,this.source=t?.source}};io=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;oo=/^(?:0|[1-9]\d*)$/;co=[","," ","|"];Eo=class{constructor(e,t){this.buffer=[],this.done=!1,this.generator=e,this.scanState=t}getBlankLines(){return this.scanState.blankLines}async peek(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=await this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}async next(){let e=await this.peek();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}async advance(){await this.next()}current(){return this.lastLine}async atEnd(){return await this.peek()===void 0}peekSync(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}nextSync(){let e=this.peekSync();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}advanceSync(){this.nextSync()}atEndSync(){return this.peekSync()===void 0}};$o=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,Io=/^0\d+$/;Rr=Symbol("quotedKey")});var De=w(()=>{"use strict";Tr()});var Ur={};v(Ur,{NORMALIZATION_ALLOWLIST:()=>Lr,NORMALIZE_ANSI:()=>Ar,NORMALIZE_BLANK_LINES:()=>Ir,NORMALIZE_CR_PROGRESS:()=>Pr,NORMALIZE_JSON_TOON:()=>Nr,NORMALIZE_TRAILING_WHITESPACE:()=>$r,formatNormalizeDecision:()=>Cr,hookDecisionFromClaudePostExecJson:()=>jr,normalizeOutput:()=>Br,runClaudePostExecHook:()=>ta,transcodeJsonToToon:()=>Dr});import{readFileSync as Or}from"node:fs";function Dr(e,t){let n=t?.encode??O,r=t?.decode??qt,i=e.trimEnd();if(!i)return e;let s;try{s=JSON.parse(i)}catch{return e}let o;try{o=n(s)}catch{return e}let a;try{a=r(o)}catch{return e}return Mt(s,a)?o:e}function Br(e){let t=e;for(let n of Lr)t=n.apply(t);return t}async function jr(e,t){let n=ia(e),r=sa(n,["cwd"])||t.cwd;if(!await(t.isEnabled??ra)(r))return{kind:"passthrough",reason:"disabled"};let s=oa(n,"tool_response");if(!s)return{kind:"passthrough",reason:"missing-output"};if(typeof s.output!="string")return{kind:"passthrough",reason:"missing-output"};let o=s.output,c=(t.normalize??Br)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Cr(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function ta(e){let t=e?Or(e,"utf8"):Or(0,"utf8"),n=await jr(t,{cwd:process.cwd()}),r=Cr(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function na(e){let t="",n=0;for(;n<e.length;){let r=e.charCodeAt(n);if(r===27){let i=e.charCodeAt(n+1);if(i===93){for(n+=2;n<e.length;){let s=e.charCodeAt(n);if(s===7){n++;break}if(s===27&&e.charCodeAt(n+1)===92){n+=2;break}n++}continue}if(i===91){for(n+=2;n<e.length&&vr(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&vr(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function vr(e){return e>=32&&e<=63}function ra(e){return V(e,process.env).enabled}function ia(e){try{let t=JSON.parse(e);return Gt(t)?t:{}}catch{return{}}}function sa(e,t){let n=e;for(let r of t){if(!Gt(n))return"";n=n[r]}return typeof n=="string"?n:""}function oa(e,t){let n=e[t];return Gt(n)?n:null}function Gt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mt(e,t){if(e===t)return!0;if(e===null||t===null||typeof e!=typeof t||typeof e!="object"||Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e)){let o=t;return e.length!==o.length?!1:e.every((a,c)=>Mt(a,o[c]))}let n=e,r=t,i=Object.keys(n),s=Object.keys(r);return i.length!==s.length?!1:i.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&Mt(n[o],r[o]))}var Ar,Pr,$r,Ir,Nr,Lr,qr=w(()=>{"use strict";De();D();Ar={id:"ansi",apply:na},Pr={id:"cr-progress",apply:e=>e.split(`
3
+ var Mi=Object.defineProperty;var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var P=(e,t)=>{for(var n in t)Mi(e,n,{get:t[n],enumerable:!0})};function rr(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/[\u0000-\u001F]/g,t=>`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`)}function sr(e){let t="",n=0;for(;n<e.length;){if(e[n]==="\\"){if(n+1>=e.length)throw new SyntaxError("Invalid escape sequence: backslash at end of string");let r=e[n+1];if(r==="n"){t+=`
4
+ `,n+=2;continue}if(r==="t"){t+=" ",n+=2;continue}if(r==="r"){t+="\r",n+=2;continue}if(r==="\\"){t+="\\",n+=2;continue}if(r==='"'){t+='"',n+=2;continue}if(r==="u"){if(n+6>e.length)throw new SyntaxError(`Invalid escape sequence: truncated \\u escape at "${e.slice(n,n+6)}"`);let s=e.slice(n+2,n+6);if(!/^[0-9a-f]{4}$/i.test(s))throw new SyntaxError(`Invalid escape sequence: \\u must be followed by 4 hex digits, got "${s}"`);let i=Number.parseInt(s,16);if(i>=55296&&i<=57343)throw new SyntaxError(`Invalid escape sequence: \\u${s} is a lone surrogate; supplementary code points MUST appear as literal UTF-8`);t+=String.fromCodePoint(i),n+=6;continue}throw new SyntaxError(`Invalid escape sequence: \\${r}`)}t+=e[n],n++}return t}function pt(e,t){let n=t+1;for(;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==='"')return n;n++}return-1}function Vt(e,t,n=0){let r=!1,s=n;for(;s<e.length;){if(e[s]==="\\"&&s+1<e.length&&r){s+=2;continue}if(e[s]==='"'){r=!r,s++;continue}if(e[s]===t&&!r)return s;s++}return-1}function D(e,t){try{return t()}catch(n){throw n instanceof $?n:n instanceof Error?new $(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function ir(e){return e==="true"||e==="false"||e==="null"}function Fi(e){if(!e||!Gi.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function dt(e,t,n=!1){let r=e.trimStart(),s=-1;if(r.startsWith('"')){let g=pt(r,0);if(g===-1||!r.slice(g+1).startsWith("["))return;let k=e.length-r.length+g+1;s=e.indexOf("[",k)}else s=e.indexOf("[");if(s===-1)return;let i=e.indexOf("]",s);if(i===-1)return;let o=i+1,a=o,c=e.indexOf("{",i);if(c!==-1&&c<e.indexOf(":",i)){let g=e.slice(i+1,c);if(g!==""){if(n){let y=g.trim();throw new SyntaxError(y===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${y}" between bracket and fields segment`)}return}let k=e.indexOf("}",c);k!==-1&&(a=k+1)}if(o=e.indexOf(":",Math.max(i,a)),o===-1)return;let l=Math.max(i+1,a),u=e.slice(l,o);if(u!==""){if(n){let g=u.trim();throw new SyntaxError(g===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${g}" between bracket segment and colon`)}return}let d;if(s>0){let g=e.slice(0,s).trim();d=g.startsWith('"')?Ft(g):g}let f=e.slice(o+1).trim(),R=e.slice(s+1,i),_;try{_=Vi(R,t)}catch(g){if(n)throw g;return}let{length:E,delimiter:m}=_,w;if(c!==-1&&c<o){let g=e.indexOf("}",c);if(g!==-1&&g<o){let k=e.slice(c+1,g),y=Ki(k,m);if(y!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${Zn(m)}" but fields segment contains unquoted "${Zn(y)}"`);return}w=Ht(k,m).map(x=>Ft(x.trim()))}}return{header:{key:d,length:E,delimiter:m,fields:w},inlineValues:f||void 0}}function Vi(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=ut.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=ut.pipe,n=n.slice(0,-1)),!Ji.test(n))throw new SyntaxError(`Invalid array length: "${e}" (expected non-negative integer with no leading zeros)`);return{length:Number.parseInt(n,10),delimiter:r}}function Ki(e,t){for(let n of Hi)if(n!==t&&Vt(e,n)!==-1)return n}function Zn(e){return e===" "?"\\t":e}function Ht(e,t){let n=[],r="",s=!1,i=0;for(;i<e.length;){let o=e[i];if(o==="\\"&&i+1<e.length&&s){r+=o+e[i+1],i+=2;continue}if(o==='"'){s=!s,r+=o,i++;continue}if(o===t&&!s){n.push(r.trim()),r="",i++;continue}r+=o,i++}return(r||n.length>0)&&n.push(r.trim()),n}function or(e){return e.map(t=>yt(t))}function yt(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return Ft(t);if(ir(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(Fi(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function Ft(e){let t=e.trim();if(t.startsWith('"')){let n=pt(t,0);if(n===-1)throw new SyntaxError("Unterminated string: missing closing quote");if(n!==t.length-1)throw new SyntaxError("Unexpected characters after closing quote");return sr(t.slice(1,n))}return t}function Wi(e,t){let n=t;for(;n<e.length&&e[n]!==":";)n++;if(n>=e.length||e[n]!==":")throw new SyntaxError("Missing colon after key");let r=e.slice(t,n).trim();return n++,{key:r,end:n}}function Yi(e,t){let n=pt(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=sr(e.slice(t+1,n)),s=n+1;if(s>=e.length||e[s]!==":")throw new SyntaxError("Missing colon after key");return s++,{key:r,end:s}}function zi(e,t){let n=e[t]==='"';return{...n?Yi(e,t):Wi(e,t),isQuoted:n}}function ar(e){return e.trim().startsWith("[")&&Vt(e,":")!==-1}function Qi(e){return Vt(e,":")!==-1}function Zi(){return{lineNumber:0,blankLines:[]}}function Xi(e,t,n,r){t.lineNumber++;let s=t.lineNumber,i=0;for(;i<e.length&&e[i]===" ";)i++;let o=e.slice(i);if(!o.trim()){let c=Xn(i,n);t.blankLines.push({lineNumber:s,indent:i,depth:c});return}let a=Xn(i,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new $("Tabs are not allowed in indentation in strict mode",{line:s,source:e});if(i>0&&i%n!==0)throw new $(`Indentation must be exact multiple of ${n}, but found ${i} spaces`,{line:s,source:e})}return{raw:e,indent:i,content:o,depth:a,lineNumber:s}}function*eo(e,t,n,r){for(let s of e){let i=Xi(s,r,t,n);i!==void 0&&(yield i)}}function Xn(e,t){return Math.floor(e/t)}function qe(e,t,n,r,s){if(r.strict&&e!==t)throw new $(`Expected ${t} ${n}, but got ${e}`,{line:s.lineNumber,source:s.raw})}function to(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new $(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function no(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&ro(e.content,n.delimiter))throw new $(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function cr(e,t,n,r,s){if(!r)return;let i=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(i)throw new $(`Blank lines inside ${s} are not allowed in strict mode`,{line:i.lineNumber})}function ro(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*io(e,t){if(t?.expandPaths!==void 0)throw new Error("expandPaths is not supported in streaming decode");let n={indent:t?.indent??2,strict:t?.strict??!0},r=Zi(),s=new so(eo(e,n.indent,n.strict,r),r),i=s.peekSync();if(!i){yield{type:"startObject"},yield{type:"endObject"};return}if(i.content.trim()==="[]"){s.advanceSync(),yield{type:"startArray",length:0},yield{type:"endArray"};return}if(ar(i.content)){let a=D(i,()=>dt(i.content,j,n.strict));if(a){s.advanceSync(),yield*ft(a.header,a.inlineValues,s,0,n,i);return}}if(s.advanceSync(),s.atEndSync()&&!tr(i)){yield{type:"primitive",value:D(i,()=>yt(i.content.trim()))};return}if(!tr(i)&&s.peekSync()?.depth===0)throw new $("Top-level document must start with a key-value or array-header line",{line:i.lineNumber,source:i.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*Ee(i,s,0,n,o);!s.atEndSync();){let a=s.peekSync();if(!a||a.depth!==0)break;s.advanceSync(),yield*Ee(a,s,0,n,o)}yield{type:"endObject"}}function er(e,t,n){if(n){if(n.has(e))throw new $(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*Ee(e,t,n,r,s){let i=e.content,o=D(e,()=>dt(i,j,r.strict));if(o&&o.header.key!==void 0){er(o.header.key,e,s),yield{type:"key",key:o.header.key},yield*ft(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=D(e,()=>zi(i,0)),l=i.indexOf(":",a.length),u=l>=0?i.slice(l+1).trim():"";if(er(a,e,s),yield c?{type:"key",key:a,wasQuoted:!0}:{type:"key",key:a},!u){let d=t.peekSync();if(d&&d.depth>n){yield{type:"startObject"},yield*oo(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(u==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:D(e,()=>yt(u))}}function*oo(e,t,n){let r,s=n.strict?new Set:void 0;for(;!e.atEndSync();){let i=e.peekSync();if(!i||i.depth<t)break;if(r===void 0&&i.depth>=t&&(r=i.depth),i.depth===r)e.advanceSync(),yield*Ee(i,e,r,n,s);else break}}function*ft(e,t,n,r,s,i){if(yield{type:"startArray",length:e.length},t){yield*ao(e,t,s,i),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*co(e,n,r,s,i),yield{type:"endArray"};return}yield*lo(e,n,r,s,i),yield{type:"endArray"}}function*ao(e,t,n,r){if(!t.trim()){qe(0,e.length,"inline array items",n,r);return}let s=D(r,()=>Ht(t,e.delimiter)),i=D(r,()=>or(s));qe(i.length,e.length,"inline array items",n,r);for(let o of i)yield{type:"primitive",value:o}}function*co(e,t,n,r,s){let i=n+1,o=0,a,c,l=s;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<i)break;if(u.depth===i){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,t.advanceSync();let d=D(u,()=>Ht(u.content,e.delimiter));qe(d.length,e.fields.length,"tabular row values",r,u);let f=D(u,()=>or(d));yield*fo(e.fields,f),o++}else break}qe(o,e.length,"tabular rows",r,l),r.strict&&a!==void 0&&c!==void 0&&cr(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&no(t.peekSync(),i,e)}function*lo(e,t,n,r,s){let i=n+1,o=0,a,c,l=s;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<i)break;let d=u.content.startsWith("- ")||u.content==="-";if(u.depth===i&&d){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,yield*uo(t,i,r);let f=t.current();f&&(c=f.lineNumber,l=f),o++}else break}qe(o,e.length,"list array items",r,l),r.strict&&a!==void 0&&c!==void 0&&cr(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&to(t.peekSync(),i,e.length)}function*uo(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let s;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))s=r.content.slice(2);else throw new $('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!s.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(s.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let i={...r,content:s};if(ar(s)){let a=D(i,()=>dt(s,j,n.strict));if(a){yield*ft(a.header,a.inlineValues,e,t,n,i);return}}let o=D(i,()=>dt(s,j,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*ft(a,o.inlineValues,e,t+1,n,i);let l=t+1;for(;!e.atEndSync();){let u=e.peekSync();if(!u||u.depth<l)break;if(u.depth===l&&!u.content.startsWith("- "))e.advanceSync(),yield*Ee(u,e,l,n,c);else break}yield{type:"endObject"};return}if(Qi(s)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*Ee(i,e,t+1,n,a);let c=t+1;for(;!e.atEndSync();){let l=e.peekSync();if(!l||l.depth<c)break;if(l.depth===c&&!l.content.startsWith("- "))e.advanceSync(),yield*Ee(l,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:D(i,()=>yt(s))}}function tr(e){let t=e.content;if(t.startsWith('"')){let n=pt(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*fo(e,t){yield{type:"startObject"};for(let n=0;n<e.length;n++)yield{type:"key",key:e[n]},yield{type:"primitive",value:t[n]};yield{type:"endObject"}}function F(e){if(e===null)return null;if(typeof e=="object"&&e!==null&&"toJSON"in e&&typeof e.toJSON=="function"){let t=e.toJSON();if(t!==e)return F(t)}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Object.is(e,-0)?0:Number.isFinite(e)?e:null;if(typeof e=="bigint")return e>=Number.MIN_SAFE_INTEGER&&e<=Number.MAX_SAFE_INTEGER?Number(e):e.toString();if(e instanceof Date)return e.toISOString();if(Array.isArray(e))return e.map(F);if(e instanceof Set)return Array.from(e).map(F);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),F(n)]));if(mo(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=F(e[n]));return t}return null}function le(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function Y(e){return Array.isArray(e)}function v(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ge(e){return Object.keys(e).length===0}function mo(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function Fe(e){return e.length===0||e.every(t=>le(t))}function po(e){return e.length===0||e.every(t=>Y(t))}function lr(e){return e.length===0||e.every(t=>v(t))}function ho(e){return/^[A-Z_][\w.]*$/i.test(e)}function ur(e){return/^[A-Z_]\w*$/i.test(e)}function wo(e,t=j){return!(!e||e!==e.trim()||ir(e)||bo(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function bo(e){return yo.test(e)||go.test(e)}function lt(e,t){if(Array.isArray(e))return e.map(n=>lt(n,t));if(v(e)){let n={},r=e[dr];for(let[s,i]of Object.entries(e)){let o=r?.has(s);if(s.includes(".")&&!o){let c=s.split(".");if(c.every(l=>ur(l))){Ro(n,c,lt(i,t),t);continue}}let a=lt(i,t);if(s in n){let c=n[s];if(Wt(c,a))Kt(c,a,t);else{if(t)throw new TypeError(`Path expansion conflict at key "${s}": cannot merge ${typeof c} with ${typeof a}`);n[s]=a}}else n[s]=a}return n}return e}function Ro(e,t,n,r){let s=e;for(let a=0;a<t.length-1;a++){let c=t[a],l=s[c];if(l===void 0){let u={};s[c]=u,s=u}else if(v(l))s=l;else{if(r)throw new TypeError(`Path expansion conflict at segment "${c}": expected object but found ${typeof l}`);let u={};s[c]=u,s=u}}let i=t[t.length-1],o=s[i];if(o===void 0)s[i]=n;else if(Wt(o,n))Kt(o,n,r);else{if(r)throw new TypeError(`Path expansion conflict at key "${i}": cannot merge ${typeof o} with ${typeof n}`);s[i]=n}}function Kt(e,t,n){for(let[r,s]of Object.entries(t)){let i=e[r];if(i===void 0)e[r]=s;else if(Wt(i,s))Kt(i,s,n);else{if(n)throw new TypeError(`Path expansion conflict at key "${r}": cannot merge ${typeof i} with ${typeof s}`);e[r]=s}}}function Wt(e,t){return v(e)&&v(t)}function _o(e){let t={stack:[],root:void 0};for(let n of e)Eo(t,n);return ko(t)}function Eo(e,t){let{stack:n}=e;switch(t.type){case"startObject":{let r={},s=new Set;if(n.length===0)n.push({type:"object",obj:r,quotedKeys:s});else{let i=n[n.length-1];if(i.type==="object"){if(i.currentKey===void 0)throw new Error("Object startObject event without preceding key");i.obj[i.currentKey]=r,i.currentKey=void 0}else i.type==="array"&&i.arr.push(r);n.push({type:"object",obj:r,quotedKeys:s})}break}case"endObject":{if(n.length===0)throw new Error("Unexpected endObject event");let r=n.pop();if(r.type!=="object")throw new Error("Mismatched endObject event");r.quotedKeys.size>0&&Object.defineProperty(r.obj,dr,{value:r.quotedKeys,enumerable:!1,writable:!1,configurable:!1}),n.length===0&&(e.root=r.obj);break}case"startArray":{let r=[];if(n.length===0)n.push({type:"array",arr:r});else{let s=n[n.length-1];if(s.type==="object"){if(s.currentKey===void 0)throw new Error("Array startArray event without preceding key");s.obj[s.currentKey]=r,s.currentKey=void 0}else s.type==="array"&&s.arr.push(r);n.push({type:"array",arr:r})}break}case"endArray":{if(n.length===0)throw new Error("Unexpected endArray event");let r=n.pop();if(r.type!=="array")throw new Error("Mismatched endArray event");n.length===0&&(e.root=r.arr);break}case"key":{if(n.length===0)throw new Error("Key event outside of object context");let r=n[n.length-1];if(r.type!=="object")throw new Error("Key event in non-object context");r.currentKey=t.key,t.wasQuoted&&r.quotedKeys.add(t.key);break}case"primitive":if(n.length===0)e.root=t.value;else{let r=n[n.length-1];if(r.type==="object"){if(r.currentKey===void 0)throw new Error("Primitive event without preceding key in object");r.obj[r.currentKey]=t.value,r.currentKey=void 0}else r.type==="array"&&r.arr.push(t.value)}break}}function ko(e){if(e.stack.length!==0)throw new Error("Incomplete event stream: stack not empty at end");if(e.root===void 0)throw new Error("No root value built from events");return e.root}function So(e,t,n,r,s,i,o){if(r.keyFolding!=="safe"||!v(t))return;let{segments:a,tail:c,leafValue:l}=xo(e,t,o??r.flattenDepth);if(a.length<2||!a.every(f=>ur(f)))return;let u=To(a),d=i?`${i}.${u}`:u;if(!n.includes(u)&&!(s&&s.has(d)))return{foldedKey:u,remainder:c,leafValue:l,segmentCount:a.length}}function xo(e,t,n){let r=[e],s=t;for(;r.length<n&&v(s);){let i=Object.keys(s);if(i.length!==1)break;let o=i[0],a=s[o];r.push(o),s=a}return!v(s)||Ge(s)?{segments:r,tail:void 0,leafValue:s}:{segments:r,tail:s,leafValue:s}}function To(e){return e.join(".")}function Se(e,t){return e===null?qi:typeof e=="boolean"||typeof e=="number"?String(e):vo(e,t)}function vo(e,t=j){return wo(e,t)?e:`"${rr(e)}"`}function xe(e){return ho(e)?e:`"${rr(e)}"`}function fr(e,t=j){return e.map(n=>Se(n,t)).join(t)}function ue(e,t){let n=t?.key,r=t?.fields,s=t?.delimiter??",",i="";if(n!=null&&(i+=xe(n)),i+=`[${e}${s!==j?s:""}]`,r){let o=r.map(a=>xe(a));i+=`{${o.join(s)}}`}return i+=":",i}function*Oo(e,t,n){if(le(e)){let r=Se(e,t.delimiter);r!==""&&(yield r);return}Y(e)?yield*Jt(void 0,e,n,t):v(e)&&(yield*ke(e,n,t))}function*ke(e,t,n,r,s,i){let o=Object.keys(e);t===0&&!r&&(r=new Set(o.filter(c=>c.includes("."))));let a=i??n.flattenDepth;for(let[c,l]of Object.entries(e))yield*Ao(c,l,t,n,o,r,s,a)}function*Ao(e,t,n,r,s,i,o,a){let c=o?`${o}.${e}`:e,l=a??r.flattenDepth;if(r.keyFolding==="safe"&&s){let d=So(e,t,s,r,i,o,l);if(d){let{foldedKey:f,remainder:R,leafValue:_,segmentCount:E}=d,m=xe(f);if(R===void 0){if(le(_)){yield A(n,`${m}: ${Se(_,r.delimiter)}`,r.indent);return}else if(Y(_)){yield*Jt(f,_,n,r);return}else if(v(_)&&Ge(_)){yield A(n,`${m}:`,r.indent);return}}if(v(R)){yield A(n,`${m}:`,r.indent);let w=l-E,g=o?`${o}.${f}`:f;yield*ke(R,n+1,r,i,g,w);return}}}let u=xe(e);le(t)?yield A(n,`${u}: ${Se(t,r.delimiter)}`,r.indent):Y(t)?yield*Jt(e,t,n,r):v(t)&&(yield A(n,`${u}:`,r.indent),Ge(t)||(yield*ke(t,n+1,r,i,c,l)))}function*Jt(e,t,n,r){if(t.length===0){yield A(n,e!=null?`${xe(e)}: []`:"[]",r.indent);return}if(Fe(t)){yield A(n,gt(t,r.delimiter,e),r.indent);return}if(po(t)&&t.every(s=>Fe(s))){yield*Po(e,t,n,r);return}if(lr(t)){let s=mr(t);s?yield*Do(e,t,s,n,r):yield*nr(e,t,n,r);return}yield*nr(e,t,n,r)}function*Po(e,t,n,r){yield A(n,ue(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let s of t)if(Fe(s)){let i=gt(s,r.delimiter);yield B(n+1,i,r.indent)}}function gt(e,t,n){let r=ue(e.length,{key:n,delimiter:t}),s=fr(e,t);return e.length===0?r:`${r} ${s}`}function*Do(e,t,n,r,s){yield A(r,ue(t.length,{key:e,fields:n,delimiter:s.delimiter}),s.indent),yield*pr(t,n,r+1,s)}function mr(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&$o(e,n))return n}function $o(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let r of t)if(!(r in n)||!le(n[r]))return!1}return!0}function*pr(e,t,n,r){for(let s of e)yield A(n,fr(t.map(i=>s[i]),r.delimiter),r.indent)}function*nr(e,t,n,r){yield A(n,ue(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let s of t)yield*Yt(s,n+1,r)}function*Io(e,t,n){if(Ge(e)){yield A(t,"-",n.indent);return}let r=Object.entries(e),[s,i]=r[0],o=r.slice(1);if(Y(i)&&lr(i)){let c=mr(i);if(c){yield B(t,ue(i.length,{key:s,fields:c,delimiter:n.delimiter}),n.indent),yield*pr(i,c,t+2,n),o.length>0&&(yield*ke(Object.fromEntries(o),t+1,n));return}}let a=xe(s);if(le(i))yield B(t,`${a}: ${Se(i,n.delimiter)}`,n.indent);else if(Y(i))if(i.length===0)yield B(t,`${a}: []`,n.indent);else if(Fe(i))yield B(t,`${a}${gt(i,n.delimiter)}`,n.indent);else{yield B(t,`${a}${ue(i.length,{delimiter:n.delimiter})}`,n.indent);for(let c of i)yield*Yt(c,t+2,n)}else v(i)&&(yield B(t,`${a}:`,n.indent),Ge(i)||(yield*ke(i,t+2,n)));o.length>0&&(yield*ke(Object.fromEntries(o),t+1,n))}function*Yt(e,t,n){if(le(e))yield B(t,Se(e,n.delimiter),n.indent);else if(Y(e))if(Fe(e))yield B(t,gt(e,n.delimiter),n.indent);else{yield B(t,ue(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Yt(r,t+1,n)}else v(e)&&(yield*Io(e,t,n))}function A(e,t,n){return" ".repeat(n*e)+t}function B(e,t,n){return A(e,"- "+t,n)}function No(e,t){let n=t("",e,[]);return n===void 0?mt(e,t,[]):mt(F(n),t,[])}function mt(e,t,n){return v(e)?Lo(e,t,n):Y(e)?Bo(e,t,n):e}function Lo(e,t,n){let r={};for(let[s,i]of Object.entries(e)){let o=[...n,s],a=t(s,i,o);a!==void 0&&(r[s]=mt(F(a),t,o))}return r}function Bo(e,t,n){let r=[];for(let s=0;s<e.length;s++){let i=e[s],o=[...n,s],a=t(String(s),i,o);if(a===void 0)continue;let c=F(a);r.push(mt(c,t,o))}return r}function O(e,t){return Array.from(yr(e,t)).join(`
5
+ `)}function zt(e,t){return gr(e.split(`
6
+ `),t)}function yr(e,t){let n=F(e),r=jo(t);return Oo(r.replacer?No(n,r.replacer):n,r,0)}function gr(e,t){let n=Co(t),r=_o(io(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?lt(r,n.strict):r}function jo(e){return{indent:e?.indent??2,delimiter:e?.delimiter??j,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function Co(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var qi,ut,j,$,Gi,Ji,Hi,so,yo,go,dr,hr=S(()=>{qi="null",ut={comma:",",tab:" ",pipe:"|"},j=ut.comma;$=class extends SyntaxError{constructor(e,t){let n=t?.line!==void 0?`Line ${t.line}: `:"";super(n+e,t?.cause!==void 0?{cause:t.cause}:void 0),this.name="ToonDecodeError",this.line=t?.line,this.source=t?.source}};Gi=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;Ji=/^(?:0|[1-9]\d*)$/;Hi=[","," ","|"];so=class{constructor(e,t){this.buffer=[],this.done=!1,this.generator=e,this.scanState=t}getBlankLines(){return this.scanState.blankLines}async peek(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=await this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}async next(){let e=await this.peek();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}async advance(){await this.next()}current(){return this.lastLine}async atEnd(){return await this.peek()===void 0}peekSync(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}nextSync(){let e=this.peekSync();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}advanceSync(){this.nextSync()}atEndSync(){return this.peekSync()===void 0}};yo=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,go=/^0\d+$/;dr=Symbol("quotedKey")});var Te=S(()=>{"use strict";hr()});import{existsSync as Uo,readFileSync as td}from"node:fs";import{dirname as Mo,join as qo}from"node:path";function wr(e,t){let n=e;for(let r=0;r<16;r++){let s=qo(n,t);if(Uo(s))return s;let i=Mo(n);if(i===n)break;n=i}return null}function Go(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Qt(e,t){let n=[];for(let r of e.split(`
7
+ `)){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 l=s.slice(o+1).trim();for(;n.length&&n[n.length-1].indent>=a;)n.pop();if(n.push({indent:a,key:c}),l&&n.map(d=>d.key).join(".")===t)return Go(l)}}var br=S(()=>{});var xr={};P(xr,{DEFAULT_RSP_BYTE_BUDGET:()=>H,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>J,DEFAULT_RSP_STORE_PATH:()=>ht,DEFAULT_RSP_TELEMETRY_BYTE_BUDGET:()=>bt,DEFAULT_RSP_TELEMETRY_DRAIN_INTERVAL_MS:()=>Sr,DEFAULT_RSP_TELEMETRY_TTL_DAYS:()=>wt,DEFAULT_RSP_TTL_DAYS:()=>V,resolveRspConfig:()=>z});import{readFileSync as Fo}from"node:fs";import{dirname as Rr,join as _r,resolve as Er}from"node:path";function z(e,t,n){let r=wr(Er(e),_r(".red","config.yaml")),s=r?Rr(Rr(r)):e,i=r?Fo(r,"utf8"):"",o=Qt(i,"rsp.enabled")==="true",a=ve(de(i,"rsp.ttlDays"),V),c=ve(de(i,"rsp.byteBudget"),H),l=ve(de(i,"rsp.telemetryTtlDays"),wt),u=ve(de(i,"rsp.telemetryByteBudget")??de(i,"rsp.byteBudget"),bt),d=ve(kr(t.RSP_TELEMETRY_DRAIN_INTERVAL_MS)??de(i,"rsp.telemetryDrainIntervalMs"),Sr),f=ve(kr(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??de(i,"rsp.heavyGitByteThreshold"),J),R=n??t.RSP_STORE_URI??`file://${_r(Er(s),ht)}`;return{enabled:o,storeUri:R,ttlDays:a,byteBudget:c,telemetryTtlDays:l,telemetryByteBudget:u,telemetryDrainIntervalMs:d,heavyGitByteThreshold:f}}function de(e,t){let n=Qt(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function ve(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function kr(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var J,ht,V,H,wt,bt,Sr,C=S(()=>{"use strict";br();J=8*1024,ht=".red/tmp/red-skills.rdb",V=7,H=64*1024*1024,wt=90,bt=4*1024*1024,Sr=3e4});import{createConnection as Jo}from"node:net";async function Je(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,s)=>{let i=Jo(e.socketPath),o=!1,a="",c=setTimeout(()=>{l(()=>s(new Error("resident rsp server timed out"))),i.destroy()},n);function l(u){o||(o=!0,clearTimeout(c),u())}i.on("connect",()=>{i.write(`${JSON.stringify(t)}
8
+ `)}),i.on("data",u=>{a+=u.toString("utf8");let d=a.indexOf(`
9
+ `);if(d<0)return;let f=a.slice(0,d);l(()=>{try{r(JSON.parse(f))}catch(R){s(R)}}),i.end()}),i.on("error",u=>l(()=>s(u))),i.on("close",()=>{o||l(()=>s(new Error("resident rsp server closed without response")))})})}var Zt=S(()=>{});var Tr=S(()=>{"use strict";Zt()});import{createHash as Vo,randomUUID as Ho}from"node:crypto";import{spawn as Ar}from"node:child_process";import{constants as Xt}from"node:fs";import{readFileSync as Ko}from"node:fs";import{mkdir as en,open as Wo,rm as tn}from"node:fs/promises";import{tmpdir as Yo}from"node:os";import{dirname as Rt,join as Q,resolve as nn}from"node:path";import{fileURLToPath as zo}from"node:url";function fe(e){let t=ta(e)??nn(e),n=ea(t);return{rootDir:t,socketPath:Q(n,"rsp.sock"),lockPath:Q(n,"rsp.lock"),wakeLockPath:Q(n,"rsp.wake.lock")}}async function _t(e,t){if(await en(Rt(e.socketPath),{recursive:!0,mode:448}),await Z(e.socketPath))return;let n=await Dr(e.lockPath);if(n)try{if(await Z(e.socketPath))return;await Zo(e.socketPath);let r=Xo(e,t);await vr(e.socketPath,r);return}finally{await n.close(),await tn(e.lockPath,{force:!0})}await vr(e.socketPath)}async function Z(e,t=200){try{return(await Je({socketPath:e,timeoutMs:t},{id:Ho(),op:"ping"})).ok}catch{return!1}}async function Et(e,t){if(await en(Rt(e.socketPath),{recursive:!0,mode:448}),await Z(e.socketPath,50))return!1;let n=await Dr(e.wakeLockPath);if(!n)return!1;await n.close();let[r,s]=$r(t);return Ar(r,[...s,"warm-resident","--socket",e.socketPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--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),"--wake-lock",e.wakeLockPath],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_WARMER:"1"}}).unref(),!0}async function Pr(e,t){try{await _t(e,t)}finally{await tn(e.wakeLockPath,{force:!0})}}async function vr(e,t){let n=Date.now()+5e3,r;for(;Date.now()<n;){if(await Z(e))return;if(t&&t.exitCode!=null)throw new Error(`resident rsp server exited before ready (${t.exitCode})`);await new Promise(s=>setTimeout(s,50))}throw r instanceof Error?r:new Error("resident rsp server did not start")}async function Zo(e){await tn(e,{force:!0})}async function Dr(e){await en(Rt(e),{recursive:!0,mode:448});try{return await Wo(e,Xt.O_CREAT|Xt.O_EXCL|Xt.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function Xo(e,t){let[n,r]=$r(t),s=Ar(n,[...r,"server","--socket",e.socketPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--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)],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}});return s.unref(),s}function $r(e){if(e.serverCommand)return[e.serverCommand,e.serverArgs??[]];let t=process.argv[1]?nn(process.argv[1]):zo(import.meta.url);return[process.execPath,[...process.execArgv,t]]}function ea(e){let t=Vo("sha256").update(e).digest("hex").slice(0,20),n=process.env.XDG_RUNTIME_DIR;if(n){let s=Q(n,"red-skills",t);if(Q(s,"rsp.sock").length<Qo)return s}let r=typeof process.getuid=="function"?process.getuid():"nouid";return Q(Yo(),`red-skills-${r}`,t)}function ta(e){let t=nn(e);for(let n=0;n<32;n++){try{if(Or(Q(t,".red","config.yaml"))!=null||Or(Q(t,".git","HEAD"))!=null)return t}catch{}let r=Rt(t);if(r===t)return null;t=r}return null}function Or(e){try{return Ko(e,"utf8")}catch{return null}}var Qo,Ir=S(()=>{Zt();Qo=108});var kt={};P(kt,{ResidentRspElisionStore:()=>Ve,ensureResidentServer:()=>_t,kickResidentServer:()=>Et,pingResident:()=>Z,resolveResidentPaths:()=>fe,warmResidentServer:()=>Pr});import{randomUUID as na}from"node:crypto";function Nr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ve,Oe=S(()=>{"use strict";Tr();Ir();Ve=class{constructor(t,n){this.paths=t;this.config=n}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?Nr(n)&&n.status==="expired"?n:!Nr(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}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){await _t(this.paths,this.config);let n=await Je(this.paths,{...t,id:na()});if(!n.ok)throw new Error(n.error);return this.metrics={storeOpenCount:n.storeOpenCount,storeElapsedMs:n.storeElapsedMs},n.value}}});var Gr={};P(Gr,{RSP_WRAPPER_CAPABILITIES:()=>rn,formatHookDecision:()=>Ur,hookDecisionFromClaudePreExecJson:()=>Cr,rewriteCommand:()=>jr,rewriteTableFromCapabilities:()=>Br,runClaudePreExecHook:()=>oa});import{readFileSync as Lr}from"node:fs";import{existsSync as ra}from"node:fs";import{fileURLToPath as sa}from"node:url";function Br(e){let t=new Map;for(let n of e)t.set(He(n.command),["rsp",...n.wrapper]);return t}function jr(e){let t=ma(e);if(!t)return{kind:"passthrough"};if(t.length>0&&Mr(t[0]))return{kind:"passthrough"};let n=ia.get(He(t));if(!n)return{kind:"passthrough"};let r=rn.find(s=>He(s.command)===He(t));return{kind:"rewrite",command:n.join(" "),capabilityId:r?.id??He(t)}}async function Cr(e,t){let n=pa(e),r=N(n,["cwd"])||N(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??aa)(r))return{kind:"passthrough",reason:"disabled"};let i=fa(n);if(!i)return{kind:"passthrough",reason:"missing-command"};let o=(t.rewrite??jr)(i);return o.kind!=="rewrite"||await(t.isResidentHealthy??ca)(r)?o:(await(t.wakeResident??la)(r),{kind:"passthrough",reason:"resident-unhealthy"})}function Ur(e){return e.kind==="rewrite"?{stdout:`${e.command}
10
+ `,status:0}:{stdout:"",status:1}}async function oa(e){let t=e?Lr(e,"utf8"):Lr(0,"utf8"),n=await Cr(t,{cwd:process.cwd()}),r=Ur(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function aa(e){return z(e,process.env).enabled}async function ca(e){let t=fe(e);return await Z(t.socketPath,50)}async function la(e){let t=z(e,process.env);if(!t.enabled||!da(t))return;let n=fe(e);await Et(n,ua(t))}function ua(e){return{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs}}function da(e){if(!e.storeUri.startsWith("file://"))return!0;try{return ra(sa(e.storeUri))}catch{return!1}}function fa(e){return N(e,["tool_input","command"])||N(e,["tool_input","cmd"])||N(e,["tool_input","args","command"])||N(e,["input","command"])||N(e,["input","cmd"])||N(e,["arguments","command"])||N(e,["arguments","cmd"])||N(e,["command"])||N(e,["cmd"])}function ma(e){let t=e.trim();if(!t||/[\n\r|&;()$<>`'"]/.test(t))return null;let n=t.split(/[ \t]+/).filter(Boolean);return n.length===0||n.some(r=>r.includes("=")&&Mr(r))?null:n}function Mr(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function He(e){return e.join("\0")}function pa(e){try{let t=JSON.parse(e);return qr(t)?t:{}}catch{return{}}}function N(e,t){let n=e;for(let r of t){if(!qr(n))return"";n=n[r]}return typeof n=="string"?n:""}function qr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var rn,ia,Fr=S(()=>{"use strict";C();Oe();rn=[{id:"git:status",command:["git","status"],wrapper:["git","status"]},{id:"git:log",command:["git","log"],wrapper:["git","log"]},{id:"git:diff",command:["git","diff"],wrapper:["git","diff"]},{id:"git:commit",command:["git","commit"],wrapper:["git","commit"]},{id:"git:push",command:["git","push"],wrapper:["git","push"]},{id:"gh:pr:list",command:["gh","pr","list"],wrapper:["gh","pr","list"]},{id:"gh:pr:view",command:["gh","pr","view"],wrapper:["gh","pr","view"]},{id:"gh:issue:list",command:["gh","issue","list"],wrapper:["gh","issue","list"]},{id:"gh:issue:view",command:["gh","issue","view"],wrapper:["gh","issue","view"]},{id:"gh:run:list",command:["gh","run","list"],wrapper:["gh","run","list"]},{id:"gh:run:view",command:["gh","run","view"],wrapper:["gh","run","view"]},{id:"vitest",command:["vitest"],wrapper:["vitest"]},{id:"vitest:run",command:["vitest","run"],wrapper:["vitest","run"]},{id:"cargo:test",command:["cargo","test"],wrapper:["cargo","test"]}],ia=Br(rn)});var ns={};P(ns,{NORMALIZATION_ALLOWLIST:()=>Zr,NORMALIZE_ANSI:()=>Hr,NORMALIZE_BLANK_LINES:()=>Yr,NORMALIZE_CR_PROGRESS:()=>Kr,NORMALIZE_JSON_TOON:()=>Qr,NORMALIZE_TRAILING_WHITESPACE:()=>Wr,formatNormalizeDecision:()=>ts,hookDecisionFromClaudePostExecJson:()=>es,normalizeOutput:()=>Xr,runClaudePostExecHook:()=>ya,transcodeJsonToToon:()=>zr});import{readFileSync as Jr}from"node:fs";function zr(e,t){let n=t?.encode??O,r=t?.decode??zt,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 sn(i,a)?o:e}function Xr(e){let t=e;for(let n of Zr)t=n.apply(t);return t}async function es(e,t){let n=wa(e),r=ba(n,["cwd"])||t.cwd;if(!await(t.isEnabled??ha)(r))return{kind:"passthrough",reason:"disabled"};let i=Ra(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??Xr)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function ts(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function ya(e){let t=e?Jr(e,"utf8"):Jr(0,"utf8"),n=await es(t,{cwd:process.cwd()}),r=ts(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function ga(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&&Vr(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=s>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Vr(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Vr(e){return e>=32&&e<=63}function ha(e){return z(e,process.env).enabled}function wa(e){try{let t=JSON.parse(e);return on(t)?t:{}}catch{return{}}}function ba(e,t){let n=e;for(let r of t){if(!on(n))return"";n=n[r]}return typeof n=="string"?n:""}function Ra(e,t){let n=e[t];return on(n)?n:null}function on(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function sn(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)=>sn(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)&&sn(n[o],r[o]))}var Hr,Kr,Wr,Yr,Qr,Zr,rs=S(()=>{"use strict";Te();C();Hr={id:"ansi",apply:ga},Kr={id:"cr-progress",apply:e=>e.split(`
11
11
  `).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(`
12
- `)},$r={id:"trailing-whitespace",apply:e=>e.split(`
12
+ `)},Wr={id:"trailing-whitespace",apply:e=>e.split(`
13
13
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
14
- `)},Ir={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
14
+ `)},Yr={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
15
15
 
16
- `)};Nr={id:"json-to-toon",apply:e=>Dr(e)},Lr=[Ar,Pr,$r,Ir,Nr]});async function Mr(e,t){return aa?ua(e,t):ca?fa(e,t):la(e,t)}async function la(e,t){let{spawn:n}=await import("node:child_process"),r=n(e,t,{stdio:["pipe","pipe","inherit"]});return{runtime:"node",stdin:{write(i){return new Promise((s,o)=>{r.stdin.write(i,a=>a?o(a):s())})},end(){r.stdin.end()}},stdout:r.stdout,kill(){r.kill("SIGTERM")},wait(){return new Promise(i=>{r.on("exit",s=>i(s??0))})}}}function ua(e,t){let n=globalThis.Bun.spawn({cmd:[e,...t],stdin:"pipe",stdout:"pipe",stderr:"inherit"}),r=n.stdin.getWriter?n.stdin.getWriter():null;return{runtime:"bun",stdin:{async write(i){r?await r.write(i):(n.stdin.write(i),await n.stdin.flush())},end(){r?r.close():n.stdin.end()}},stdout:da(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*da(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 fa(e,t){let r=new globalThis.Deno.Command(e,{args:t,stdin:"piped",stdout:"piped",stderr:"inherit"}).spawn(),i=r.stdin.getWriter();return{runtime:"deno",stdin:{async write(s){await i.write(s)},end(){try{i.close()}catch{}}},stdout:pa(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*pa(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var aa,ca,Gr=w(()=>{aa=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",ca=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as ma}from"node:fs";import{join as ya}from"node:path";function Fr(e){if(!e||typeof e!="object")throw new TypeError("resolveBin: options object required");let{name:t,packageRoot:n,envVar:r}=e;if(typeof t!="string"||t==="")throw new TypeError("resolveBin: `name` must be a non-empty string");if(typeof n!="string"||n==="")throw new TypeError("resolveBin: `packageRoot` must be a non-empty string");if(typeof r!="string"||r==="")throw new TypeError("resolveBin: `envVar` must be a non-empty string");let i=process.env?.[r];if(typeof i=="string"&&i!=="")return i;let s=ya(n,"bin",t);if(ma(s))return s;throw new Error(`reddb: binary "${t}" not found.
17
- expected at: ${s}
16
+ `)};Qr={id:"json-to-toon",apply:e=>zr(e)},Zr=[Hr,Kr,Wr,Yr,Qr]});async function ss(e,t){return _a?Sa(e,t):Ea?Ta(e,t):ka(e,t)}async function ka(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 Sa(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:xa(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*xa(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 Ta(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:va(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*va(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var _a,Ea,is=S(()=>{_a=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Ea=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Oa}from"node:fs";import{join as Aa}from"node:path";function os(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=Aa(n,"bin",t);if(Oa(i))return i;throw new Error(`reddb: binary "${t}" not found.
17
+ expected at: ${i}
18
18
  override: set ${r}=/path/to/${t}
19
19
  fix: re-run \`pnpm install\` (the postinstall script downloads it),
20
- or check the postinstall log for a download error.`)}var Jr=w(()=>{});import{fileURLToPath as ga}from"node:url";import{dirname as ha,resolve as wa,join as fd}from"node:path";function Ea(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Vr(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Fr({name:Ea(),packageRoot:Ra,envVar:"REDDB_BIN"})}var ba,Ra,Hr=w(()=>{Jr();ba=ha(ga(import.meta.url)),Ra=wa(ba,"..")});var _a,ka,p,ut,Y=w(()=>{_a=new TextEncoder,ka=new TextDecoder("utf-8"),p=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},ut=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 p("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(_a.encode(i+`
21
- `)).catch(a=>{this.pending.delete(r),o(a)})})}async close(){if(!this.closed){try{await this.call("close",{})}catch{}this.#e("close requested");try{this.child.stdin.end()}catch{}await this.child.wait()}}async#t(){let t=new Uint8Array(0);try{for await(let n of this.child.stdout){let r=new Uint8Array(t.length+n.length);r.set(t,0),r.set(n,t.length),t=r;let i=0;for(let s=0;s<t.length;s++)if(t[s]===10){let o=t.subarray(i,s);this.#n(ka.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new p(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new p("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function Jt(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:/"?Sa(e):xa(e)}function Sa(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let n;try{n=new URL(t)}catch(u){throw new p("UNPARSEABLE_URI",`failed to parse '${e}': ${u.message}`)}let r=n.searchParams,i=(r.get("proto")||"").toLowerCase(),s=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return s?{kind:"embedded",path:s,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=Ta(i),a=n.port?Number(n.port):Ft(o),c=n.username?decodeURIComponent(n.username):void 0,l=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:s||void 0,username:c,password:l,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function xa(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(s){throw new p("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):Ft(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new p("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):Ft(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 p("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Ta(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 p("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function Ft(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 Vt=w(()=>{Y()});function va(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Kr(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Kr(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Kr(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 Aa(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 Oa,Ne,Ht=w(()=>{Y();Oa=new Set(["embedded"]),Ne=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&Oa.has(this._transport))throw new p("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:Aa(r.value)}async put(t,n,r,i={}){this._guard("put");let s=va(r);await this._client.call("cache.put",{namespace:t,key:n,value:s,...i})}async exists(t,n){return this._guard("exists"),(await this._client.call("cache.exists",{namespace:t,key:n}))?.status??"maybe"}async invalidate(t,n){this._guard("invalidate"),await this._client.call("cache.invalidate",{namespace:t,key:n})}async invalidatePrefix(t,n){return this._guard("invalidatePrefix"),(await this._client.call("cache.invalidate_prefix",{namespace:t,prefix:n}))?.removed??0}async invalidateTags(t,n){return this._guard("invalidateTags"),(await this._client.call("cache.invalidate_tags",{namespace:t,tags:n}))?.removed??0}async flushNamespace(t){this._guard("flushNamespace"),await this._client.call("cache.flush_namespace",{namespace:t})}}});function Kt(e,t){return`${Wt(e)}.${Pa(t)}`}function Wt(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new p("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Pa(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function $a(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 Wr(e){return`'${String(e).replace(/'/g,"''")}'`}var ye,Yt=w(()=>{Y();ye=class{constructor(t,n="kv_default"){this.client=t,this.collection=n}put(t,n,r={}){let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Wr).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${Kt(i,t)} = ${$a(n)}${o}${s}`})}set(t,n,r={}){return this.put(t,n,r)}async get(t,n={}){let r=n.collection??this.collection;return(await this.client.call("query",{sql:`KV GET ${Kt(r,t)}`}))?.rows?.[0]?.value??null}async getMany(t,n={}){let r=[];for(let i of t)r.push(await this.get(i,n));return r}async exists(t,n={}){return{exists:await this.get(t,n)!==null}}async delete(t,n={}){let r=n.collection??this.collection,i=await this.client.call("query",{sql:`KV DELETE ${Kt(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new p("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${Wt(n)} ORDER BY key ASC LIMIT ${r}`})).rows??[];return{items:i.length>0?o.filter(c=>String(c.key).startsWith(i)):o}}async invalidateTags(t,n={}){let r=n.collection??this.collection,i=await this.client.call("query",{sql:`INVALIDATE TAGS [${t.map(Wr).join(", ")}] FROM ${Wt(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new p("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new p("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let l of c.split(`
20
+ or check the postinstall log for a download error.`)}var as=S(()=>{});import{fileURLToPath as Pa}from"node:url";import{dirname as Da,resolve as $a,join as Cd}from"node:path";function La(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function cs(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:os({name:La(),packageRoot:Na,envVar:"REDDB_BIN"})}var Ia,Na,ls=S(()=>{as();Ia=Da(Pa(import.meta.url)),Na=$a(Ia,"..")});var Ba,ja,h,St,X=S(()=>{Ba=new TextEncoder,ja=new TextDecoder("utf-8"),h=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},St=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 h("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(Ba.encode(s+`
21
+ `)).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(ja.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 h(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 h("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function cn(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:/"?Ca(e):Ua(e)}function Ca(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let n;try{n=new URL(t)}catch(u){throw new h("UNPARSEABLE_URI",`failed to parse '${e}': ${u.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=Ma(s),a=n.port?Number(n.port):an(o),c=n.username?decodeURIComponent(n.username):void 0,l=n.password?decodeURIComponent(n.password):void 0;return{kind:o,host:n.hostname,port:a,path:i||void 0,username:c,password:l,token:r.get("token")??void 0,apiKey:r.get("apiKey")??r.get("api_key")??void 0,loginUrl:r.get("loginUrl")??r.get("login_url")??void 0,params:r,originalUri:e}}function Ua(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 h("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):an(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 h("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):an(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 h("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function Ma(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 h("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function an(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 ln=S(()=>{X()});function Ga(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return us(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return us(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function us(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 Fa(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 qa,Ke,un=S(()=>{X();qa=new Set(["embedded"]),Ke=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&qa.has(this._transport))throw new h("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:Fa(r.value)}async put(t,n,r,s={}){this._guard("put");let i=Ga(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 dn(e,t){return`${fn(e)}.${Ja(t)}`}function fn(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new h("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function Ja(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function Va(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 ds(e){return`'${String(e).replace(/'/g,"''")}'`}var Ae,mn=S(()=>{X();Ae=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(ds).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${dn(s,t)} = ${Va(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 ${dn(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 ${dn(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 h("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 ${fn(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(ds).join(", ")}] FROM ${fn(r)}`});return s.affected??s.affected_rows??s.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new h("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 h("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let l of c.split(`
22
22
 
23
23
  `)){let u=l.split(`
24
- `).find(d=>d.startsWith("data: "));u&&(yield JSON.parse(u.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Ia(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new p("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=G(e),a=G(t),c=i!=null?` GROUP ${G(i)}`:"",l=s!=null?Qt(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${l} WAIT ${r}ms`}function G(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new p("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function Qt(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new p("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Da(e){if(!Number.isInteger(e))throw new p("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Na(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new p("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Da(e.priority)}`),e.key!=null&&(t+=` KEY ${Zt(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Zt(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function La(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Zt(e):JSON.stringify(e)}function Zt(e){return`'${String(e).replace(/'/g,"''")}'`}function zt(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Le,Xt=w(()=>{Y();Le=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${G(t)}`})}push(t,n,r={}){let i=Na(r);return this.client.call("query",{sql:`QUEUE PUSH ${G(t)} ${La(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${G(t)}${Qt(n)}`});return zt(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${G(t)}${Qt(n)}`});return zt(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${G(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${G(t)}`})}async readWait(t,n,r={}){let i=Ia(t,n,r),s=await this.client.call("query",{sql:i});return zt(s)}}});function Yr(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new p("INVALID_ARGUMENT",`${t} must be an object`)}function Ba(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new p("INVALID_ARGUMENT","limit must be a positive integer");return e}function dt(e){return String(e).split(".").map(zr).join(".")}function zr(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new p("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function ja(e){return Qr(JSON.stringify(e))}function Ca(e){return JSON.stringify(e)}function Ua(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?ja(e):Qr(e)}function Qr(e){return`'${String(e).replace(/'/g,"''")}'`}var Be,en=w(()=>{Y();Be=class{constructor(t){this.db=t}async insert(t,n){Yr(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${dt(t)} DOCUMENT VALUES (${Ca(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new p("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new p("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=Ba(n.limit),i=n.orderBy??n.order_by??"rid ASC",s=n.filter?` WHERE ${String(n.filter)}`:"";return{items:(await this.db.query(`SELECT * FROM ${dt(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Yr(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new p("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new p("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,l])=>`${zr(c)} = ${Ua(l)}`).join(", "),a=(await this.db.query(`UPDATE ${dt(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new p("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${dt(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function qa(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${z(n)}.${z(r)})`}return Ga(e)}function Ma(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 z(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 Ga(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Zr(e)}function Zr(e){return`'${String(e).replace(/'/g,"''")}'`}var je,tn=w(()=>{je=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){Ma(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Zr).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${z(i)} ${z(t)} = ${qa(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${z(r)} ${z(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${z(r)} ${z(t)}`})}}});function Fa(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 ge(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 Ja(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):Xr(e)}function Xr(e){return`'${String(e).replace(/'/g,"''")}'`}var Ce,nn=w(()=>{Ce=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){Fa(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(Xr).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${ge(i)}.${ge(t)} = ${Ja(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${ge(r)}.${ge(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${ge(r)}.${ge(t)}`})}}});async function ti(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Va)}async function ni(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${Ka(t)}`)).rows??[]).some(r=>r.name===String(t))}function Va(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function ei(e){return String(e).split(".").map(Ha).join(".")}function Ha(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new p("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function Ka(e){return`'${String(e).replace(/'/g,"''")}'`}var Ue,rn=w(()=>{Y();Ue=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new p("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(ei).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${ei(this.collection)}${n}`,s=(this.params.length>0?await this.db.query(r,this.params):await this.db.query(r)).rows??[];return this.columns==null?s:s.map(o=>{let a={};for(let c of this.columns)a[c]=o[c];return a})}}});async function oi(e,t={}){let n=Jt(e);if(rc(n),n.kind==="embedded"){let r=nc(n,t.auth);if(r.token||r.username)throw new p("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=tc(n),s=t.binary??Vr(),o=await Mr(s,i),a=new ut(o);return await a.call("version",{}),new on(a,{transport:"embedded"})}}function ii(e){return za(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:Za(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&ec(e)?{$uuid:e}:e}function za(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new p("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 p("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new p("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function Qa(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ii):e.map(ii)}function Za(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 Xa(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 ec(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function ft(e){if(Array.isArray(e))return e.map(ft);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return Xa(e.$bytes);if(typeof e.$uuid=="string")return e.$uuid;if(typeof e.$float=="string"){if(e.$float==="NaN")return Number.NaN;if(e.$float==="Infinity"||e.$float==="+Infinity")return 1/0;if(e.$float==="-Infinity")return-1/0}if(typeof e.$ts=="string"||typeof e.$ts=="number"){let r=typeof e.$ts=="string"?BigInt(e.$ts):BigInt(Math.trunc(e.$ts));return new Date(Number(r/1000000n))}}let n={};for(let[r,i]of Object.entries(e))n[r]=ft(i);return n}return e}function tc(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function nc(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 rc(e){if(e.kind!=="embedded")throw new p("EMBEDDED_ONLY",Wa)}function an(){return new p(ri,`${ri}: nested transactions are not supported on one connection`)}function ai(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function ic(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new p("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${si} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function sc(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new p("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${si} 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 p("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var Wa,Ya,si,ri,pt,sn,on,ci=w(()=>{Gr();Hr();Y();Vt();Ht();Yt();Xt();en();tn();nn();rn();Ht();Yt();Xt();en();tn();nn();rn();Vt();Wa="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",Ya="1.0",si="1.0.9",ri="NESTED_TX_NOT_SUPPORTED";pt=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 an()}},sn=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw an();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 p("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 p("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 p("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new pt(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){ai(n,r)}throw n}}},on=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=Ya,this.cache=new Ne(t,this.transport),this.queue=new Le(t),this.queues=this.queue,this.documents=new Be(this);let r=new ye(t);this.kv=Object.assign((i="kv_default")=>new ye(t,i),{put:r.put.bind(r),invalidateTags:r.invalidateTags.bind(r),watch:r.watch.bind(r),watchPrefix:r.watchPrefix.bind(r)}),this.config=(i="red.config")=>new je(t,i),this.vault=(i="red.vault")=>new Ce(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new p("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=Qa(n);return r==null?this.client.call("query",{sql:t}).then(ft):this.client.call("query",{sql:t,params:r}).then(ft)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return ic(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 sc(r,n.length)}tx(){return new sn(this)}async transaction(t){if(this.inTransaction)throw an();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 pt(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){ai(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return ni(this,t)}list(){return ti(this)}from(t){return new Ue(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()}}});var dn={};v(dn,{DEFAULT_RSP_BYTE_BUDGET:()=>q,DEFAULT_RSP_TTL_DAYS:()=>U,RSP_ELISION_COLLECTION:()=>oe,RspElisionStore:()=>Me});import{createHash as pi}from"node:crypto";import{existsSync as oc}from"node:fs";import{mkdir as ac,readFile as ln,readdir as mi,rename as cc,writeFile as lc}from"node:fs/promises";import{homedir as uc}from"node:os";import{basename as un,dirname as yi,join as we}from"node:path";import{fileURLToPath as dc}from"node:url";function li(e,t){return`el:${pi("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 se(e){return`record:${e.slice(3)}`}function he(e){return`expired:${e.slice(3)}`}function ui(){return"index:v1"}function yt(e){return/^el:[a-f0-9]{12}$/.test(e)}function fc(e){if(!qe(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:qe(e.scope)?e.scope:void 0,ranking:qe(e.ranking)?e.ranking:void 0}}}function pc(e){if(!qe(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(i=>typeof i=="string"):void 0;return{cwd:t,maxFiles:n,ignore:r}}function qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function mc(e,t,n){let r=[],i=new Set([".git","node_modules",".red",...n]);async function s(o){if(r.length>=t)return;let a=await mi(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(i.has(c.name))continue;let l=we(o,c.name);c.isDirectory()?await s(l):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(l)}}return await s(e),r}function yc(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,i=qe(r)?r:{},s=String(e.label??e.LABEL??i.title??`memory-${n}`),o=String(e.node_type??e.NODE_TYPE??"concept"),a=String(i.content??i.summary??i.title??s),c=`${s} ${a}`.toLowerCase(),l=t.filter(u=>c.includes(u));return l.length===0&&t.length>0?null:{id:String(n),rid:n,label:s,node_type:o,score:l.length||1,excerpt:a.slice(0,500)}}function di(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function mt(e){return Q(e)?e.collection===oe&&typeof e.handle=="string"&&yt(e.handle)&&typeof e.original=="string"&&e.original_encoding==="base64"&&typeof e.original_bytes=="number"&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&gc(e.loss):!1}function gi(e){return!Q(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>Q(t)&&typeof t.handle=="string"&&yt(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string")}function cn(e){return Q(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function gc(e){return Q(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function Q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function hc(e){try{let t=await ln(e,"utf8");if(t.trim()==="")return fi();let n=JSON.parse(t);if(_c(n))return n}catch(t){if(t.code==="ENOENT"){let n=fi();return await wi(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function wc(e){try{let t=await ln(e);return hi(e)?e:bc(t)?Rc(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function bc(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Rc(e){return un(e)==="red.rdb"?we(yi(e),"tmp","rsp-elisions.json"):`${e}.json`}function hi(e){return un(e)==="red-skills.rdb"}async function Ec(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?we(process.env.XDG_CACHE_HOME,"red-skills","bundles"):we(uc(),".cache","red-skills","bundles")),t=we(e,"reddb"),n;try{n=await mi(t)}catch{return}n.sort().reverse();for(let r of n){let i=we(t,r,process.platform==="win32"?"red.exe":"red");if(oc(i)){process.env.REDDB_BIN=i;return}}}async function wi(e,t){await ac(yi(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await lc(n,`${JSON.stringify(t)}
25
- `,"utf8"),await cc(n,e)}function fi(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function _c(e){return Q(e)&&e.version===1&&Q(e.records)&&Object.values(e.records).every(mt)&&Q(e.tombstones)&&Object.values(e.tombstones).every(cn)&&gi(e.index)}function kc(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return dc(e)}var oe,Me,gt=w(()=>{"use strict";ci();D();oe="rsp_elisions_v1",Me=class e{constructor(t,n){this.opts=n;this.path=t}document;db;path;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=kc(t.uri),r=await wc(n),i=new e(r,{uri:t.uri,ttlDays:di(t.ttlDays,U),byteBudget:di(t.byteBudget,q),now:t.now??(()=>new Date)});return hi(r)?(await Ec(),i.db=await oi(`file://${r}`),await i.ensureRedDbStore()):i.document=await hc(i.path),i}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),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=li(r,n),c=se(a),l={collection:oe,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};return delete this.document.tombstones[he(a)],this.document.records[c]=l,this.upsertIndex({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),this.prune(),await this.flush(),a}async get(t){if(this.db)return await this.getRedDb(t);if(!yt(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[se(t)];if(!mt(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return this.expireEntry({handle:r.handle,key:se(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),await this.flush(),s}let i=this.readOriginal(r);return i?{collection:oe,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}: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:n.reduce((r,i)=>r+i.bytes,0),oldest:n.reduce((r,i)=>r==null||i.created_at<r?i.created_at:r,null),budget:this.opts.byteBudget}}readIndex(){return this.document.index}writeIndex(t){this.document.index=t}upsertIndex(t){let r=this.readIndex().records.filter(i=>i.handle!==t.handle);r.push(t),this.writeIndex({version:1,records:r})}prune(){let t=this.opts.now().getTime(),n=new Date(t).toISOString(),r=this.readIndex(),i=[];for(let o of r.records)Date.parse(o.expires_at)<=t?this.expireEntry(o,o.expires_at):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,this.expireEntry(o,n)}this.writeIndex({version:1,records:i})}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[he(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[he(t)];return cn(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await wi(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(oe)}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 mintRedDb(t,n){let r=Buffer.from(t),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=li(r,n),c=se(a),l={collection:oe,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:s,expires_at:o,loss:n.loss};await this.kv().delete(he(a)),await this.kv().put(c,l);let d=(await this.readRedDbIndex()).records.filter(f=>f.handle!==a);return d.push({handle:a,key:c,bytes:r.length,command:n.command,created_at:s,expires_at:o}),await this.pruneRedDb({version:1,records:d}),await this.assertRedDbMintPersisted(a,r.length),a}async getRedDb(t){if(!yt(t))return null;let n=await this.kvGet(he(t));if(cn(n))return n;let r=await this.kvGet(se(t));if(!mt(r))return null;if(Date.parse(r.expires_at)<=this.opts.now().getTime()){let s={status:"expired",expired_at:r.expires_at,command:r.command};return await this.expireRedDbEntry({handle:r.handle,key:se(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),s}let i=this.readOriginal(r);return i?{collection:oe,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:t.records.reduce((n,r)=>n+r.bytes,0),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget}}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=fc(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=pc(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 mc(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let i of n){let o=(await ln(i,"utf8").catch(()=>"")).trim();if(!o)continue;let a=un(i),c=pi("sha256").update("resident-memory-v1\0").update(i).update("\0").update(o).digest("hex");if(await this.db.kv("memory_kv").get(`resident-node-hash:${c}`)!=null)continue;let l=Date.now(),u={title:a,content:o,source:i,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:l,updated_at:l,accessed_at:l,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[i],created_at:l,updated_at:l}},d=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,u),f=Number(d.rows[0]?.red_entity_id??d.rows[0]?.rid);Number.isFinite(f)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,f),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),i=t.toLowerCase().split(/\s+/).filter(Boolean),s=r.rows.map(o=>yc(o,i)).filter(o=>o!=null).sort((o,a)=>a.score-o.score).slice(0,Math.max(1,Math.min(100,n)));return{hits:s,context_md:s.map(o=>`- memory_nodes:${o.rid} ${o.label}: ${o.excerpt}`).join(`
26
- `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(ui());return gi(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(ui(),t)}async pruneRedDb(t){let n=this.opts.now().getTime(),r=new Date(n).toISOString(),i=[];for(let a of t.records)Date.parse(a.expires_at)<=n?await this.expireRedDbEntry(a,a.expires_at):i.push(a);let s=i.reduce((a,c)=>a+c.bytes,0);for(i.sort((a,c)=>a.created_at.localeCompare(c.created_at));s>this.opts.byteBudget&&i.length>0;){let a=i.shift();s-=a.bytes,await this.expireRedDbEntry(a,r)}let o={version:1,records:i};return await this.writeRedDbIndex(o),o}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(he(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(se(t));if(!mt(r))throw new Error(`rsp resident failed to persist elision record ${t}`);let s=(await this.readRedDbIndex()).records.find(o=>o.handle===t);if(!s||s.bytes!==n)throw new Error(`rsp resident failed to persist elision index ${t}`)}}});var Ti={};v(Ti,{REPO_STORE_PATH:()=>pn,mergeRspBlock:()=>ki,provisionRspRepoStore:()=>$c});import{constants as Sc}from"node:fs";import{access as xc,copyFile as Tc,mkdir as bi,readFile as Oc,writeFile as Ri}from"node:fs/promises";import{dirname as vc,join as ht,resolve as Ac}from"node:path";async function $c(e,t={}){let n=Ac(e),r=ht(n,".red"),i=ht(r,"config.yaml"),s=ht(n,pn);await bi(r,{recursive:!0}),await bi(vc(s),{recursive:!0});let o="";try{o=await Oc(i,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=ki(o,{enabled:!0,ttlDays:t.ttlDays??U,byteBudget:t.byteBudget??q,heavyGitByteThreshold:t.heavyGitByteThreshold??C}),c=a!==o;c&&await Ri(i,a,"utf8");let l=!await _i(s),u=!1;if(l){let f=ht(n,Pc);if(await _i(f))await Tc(f,s),u=!0;else{let{RspElisionStore:E}=await Promise.resolve().then(()=>(gt(),dn)),R=process.env.REDDB_BIN;try{await(await E.open({uri:`file://${s}`,ttlDays:t.ttlDays??U,byteBudget:t.byteBudget??q,allowResidentOpen:!0})).close()}finally{R===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=R}}}let d=Ic(a,pn);return d!==a&&await Ri(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:l,memoryStoreMigrated:u}}function ki(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${fn(t.ttlDays,U)}`,` byteBudget: ${fn(t.byteBudget,q)}`,` heavyGitByteThreshold: ${fn(t.heavyGitByteThreshold,C)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
27
- `),i=Si(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
24
+ `).find(d=>d.startsWith("data: "));u&&(yield JSON.parse(u.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function Ha(e,t,n){let{waitMs:r,group:s=null,count:i=null}=n??{};if(!Number.isInteger(r)||r<0)throw new h("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=K(e),a=K(t),c=s!=null?` GROUP ${K(s)}`:"",l=i!=null?yn(i):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${l} WAIT ${r}ms`}function K(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function yn(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new h("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function Ka(e){if(!Number.isInteger(e))throw new h("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function Wa(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new h("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${Ka(e.priority)}`),e.key!=null&&(t+=` KEY ${gn(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${gn(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function Ya(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?gn(e):JSON.stringify(e)}function gn(e){return`'${String(e).replace(/'/g,"''")}'`}function pn(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var We,hn=S(()=>{X();We=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${K(t)}`})}push(t,n,r={}){let s=Wa(r);return this.client.call("query",{sql:`QUEUE PUSH ${K(t)} ${Ya(n)}${s}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${K(t)}${yn(n)}`});return pn(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${K(t)}${yn(n)}`});return pn(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${K(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${K(t)}`})}async readWait(t,n,r={}){let s=Ha(t,n,r),i=await this.client.call("query",{sql:s});return pn(i)}}});function fs(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new h("INVALID_ARGUMENT",`${t} must be an object`)}function za(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new h("INVALID_ARGUMENT","limit must be a positive integer");return e}function xt(e){return String(e).split(".").map(ms).join(".")}function ms(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function Qa(e){return ps(JSON.stringify(e))}function Za(e){return JSON.stringify(e)}function Xa(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?Qa(e):ps(e)}function ps(e){return`'${String(e).replace(/'/g,"''")}'`}var Ye,wn=S(()=>{X();Ye=class{constructor(t){this.db=t}async insert(t,n){fs(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${xt(t)} DOCUMENT VALUES (${Za(n)}) RETURNING *`),s=r.rows?.[0];if(!s||s.rid==null)throw new h("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 h("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=za(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 ${xt(t)}${i} ORDER BY ${s} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){fs(r,"documents.patch patch");let s=Object.entries(r);if(s.length===0)throw new h("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of s)if(c.includes("/"))throw new h("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let i=s.map(([c,l])=>`${ms(c)} = ${Xa(l)}`).join(", "),a=(await this.db.query(`UPDATE ${xt(t)} SET ${i} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new h("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 ${xt(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function ec(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${ee(n)}.${ee(r)})`}return nc(e)}function tc(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function ee(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function nc(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):ys(e)}function ys(e){return`'${String(e).replace(/'/g,"''")}'`}var ze,bn=S(()=>{ze=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){tc(r,"config");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(ys).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${ee(s)} ${ee(t)} = ${ec(n,r)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${ee(r)} ${ee(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${ee(r)} ${ee(t)}`})}}});function rc(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 Pe(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 sc(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):gs(e)}function gs(e){return`'${String(e).replace(/'/g,"''")}'`}var Qe,Rn=S(()=>{Qe=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){rc(r,"vault");let s=r.collection??this.collection,i=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(gs).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${Pe(s)}.${Pe(t)} = ${sc(n)}${i}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${Pe(r)}.${Pe(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${Pe(r)}.${Pe(t)}`})}}});async function ws(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(ic)}async function bs(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${ac(t)}`)).rows??[]).some(r=>r.name===String(t))}function ic(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function hs(e){return String(e).split(".").map(oc).join(".")}function oc(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new h("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function ac(e){return`'${String(e).replace(/'/g,"''")}'`}var Ze,_n=S(()=>{X();Ze=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 h("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(hs).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${hs(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 ks(e,t={}){let n=cn(e);if(hc(n),n.kind==="embedded"){let r=gc(n,t.auth);if(r.token||r.username)throw new h("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let s=yc(n),i=t.binary??cs(),o=await ss(i,s),a=new St(o);return await a.call("version",{}),new kn(a,{transport:"embedded"})}}function _s(e){return uc(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:fc(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&pc(e)?{$uuid:e}:e}function uc(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new h("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 h("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new h("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function dc(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(_s):e.map(_s)}function fc(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 mc(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 pc(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Tt(e){if(Array.isArray(e))return e.map(Tt);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return mc(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]=Tt(s);return n}return e}function yc(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function gc(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 hc(e){if(e.kind!=="embedded")throw new h("EMBEDDED_ONLY",cc)}function Sn(){return new h(Rs,`${Rs}: nested transactions are not supported on one connection`)}function Ss(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function wc(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new h("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${Es} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function bc(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new h("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${Es} 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 h("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var cc,lc,Es,Rs,vt,En,kn,xs=S(()=>{is();ls();X();ln();un();mn();hn();wn();bn();Rn();_n();un();mn();hn();wn();bn();Rn();_n();ln();cc="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",lc="1.0",Es="1.0.9",Rs="NESTED_TX_NOT_SUPPORTED";vt=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 Sn()}},En=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw Sn();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 h("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 h("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 h("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new vt(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){Ss(n,r)}throw n}}},kn=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=lc,this.cache=new Ke(t,this.transport),this.queue=new We(t),this.queues=this.queue,this.documents=new Ye(this);let r=new Ae(t);this.kv=Object.assign((s="kv_default")=>new Ae(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 ze(t,s),this.vault=(s="red.vault")=>new Qe(t,s),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new h("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=dc(n);return r==null?this.client.call("query",{sql:t}).then(Tt):this.client.call("query",{sql:t,params:r}).then(Tt)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return wc(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 bc(r,n.length)}tx(){return new En(this)}async transaction(t){if(this.inTransaction)throw Sn();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 vt(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(s){Ss(r,s)}throw r}finally{this.inTransaction=!1}}exists(t){return bs(this,t)}list(){return ws(this)}from(t){return new Ze(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()}}});var On={};P(On,{DEFAULT_RSP_BYTE_BUDGET:()=>H,DEFAULT_RSP_TTL_DAYS:()=>V,RSP_ELISION_COLLECTION:()=>pe,RspElisionStore:()=>et});import{createHash as Ps}from"node:crypto";import{existsSync as Rc}from"node:fs";import{mkdir as _c,readFile as Tn,readdir as Ds,rename as Ec,writeFile as kc}from"node:fs/promises";import{homedir as Sc}from"node:os";import{basename as vn,dirname as $s,join as $e}from"node:path";import{fileURLToPath as xc}from"node:url";function Ts(e,t){return`el:${Ps("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 me(e){return`record:${e.slice(3)}`}function De(e){return`expired:${e.slice(3)}`}function vs(){return"index:v1"}function At(e){return/^el:[a-f0-9]{12}$/.test(e)}function Tc(e){if(!Xe(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:Xe(e.scope)?e.scope:void 0,ranking:Xe(e.ranking)?e.ranking:void 0}}}function vc(e){if(!Xe(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 Xe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Oc(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 Ds(o,{withFileTypes:!0}).catch(()=>[]);for(let c of a){if(r.length>=t)return;if(s.has(c.name))continue;let l=$e(o,c.name);c.isDirectory()?await i(l):c.isFile()&&/\.(md|mdx|txt|ts|tsx|js|jsx|json|yaml|yml|toml|rs|go|py|sql)$/i.test(c.name)&&r.push(l)}}return await i(e),r}function Ac(e,t){let n=Number(e.red_entity_id??e.rid);if(!Number.isFinite(n))return null;let r=e.properties??e.PROPERTIES,s=Xe(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(),l=t.filter(u=>c.includes(u));return l.length===0&&t.length>0?null:{id:String(n),rid:n,label:i,node_type:o,score:l.length||1,excerpt:a.slice(0,500)}}function Os(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ot(e){return te(e)?e.collection===pe&&typeof e.handle=="string"&&At(e.handle)&&typeof e.original=="string"&&e.original_encoding==="base64"&&typeof e.original_bytes=="number"&&typeof e.command=="string"&&typeof e.created_at=="string"&&typeof e.expires_at=="string"&&Pc(e.loss):!1}function Is(e){return!te(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>te(t)&&typeof t.handle=="string"&&At(t.handle)&&typeof t.key=="string"&&typeof t.bytes=="number"&&typeof t.command=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string")}function xn(e){return te(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Pc(e){return te(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function te(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Dc(e){try{let t=await Tn(e,"utf8");if(t.trim()==="")return As();let n=JSON.parse(t);if(Bc(n))return n}catch(t){if(t.code==="ENOENT"){let n=As();return await Ls(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function $c(e){try{let t=await Tn(e);return Ns(e)?e:Ic(t)?Nc(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Ic(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Nc(e){return vn(e)==="red.rdb"?$e($s(e),"tmp","rsp-elisions.json"):`${e}.json`}function Ns(e){return vn(e)==="red-skills.rdb"}async function Lc(){if(process.env.REDDB_BIN)return;let e=process.env.RED_SKILLS_CACHE_DIR??(process.env.XDG_CACHE_HOME?$e(process.env.XDG_CACHE_HOME,"red-skills","bundles"):$e(Sc(),".cache","red-skills","bundles")),t=$e(e,"reddb"),n;try{n=await Ds(t)}catch{return}n.sort().reverse();for(let r of n){let s=$e(t,r,process.platform==="win32"?"red.exe":"red");if(Rc(s)){process.env.REDDB_BIN=s;return}}}async function Ls(e,t){await _c($s(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await kc(n,`${JSON.stringify(t)}
25
+ `,"utf8"),await Ec(n,e)}function As(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function Bc(e){return te(e)&&e.version===1&&te(e.records)&&Object.values(e.records).every(Ot)&&te(e.tombstones)&&Object.values(e.tombstones).every(xn)&&Is(e.index)}function jc(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return xc(e)}var pe,et,Pt=S(()=>{"use strict";xs();C();pe="rsp_elisions_v1",et=class e{constructor(t,n){this.opts=n;this.path=t}document;db;path;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=jc(t.uri),r=await $c(n),s=new e(r,{uri:t.uri,ttlDays:Os(t.ttlDays,V),byteBudget:Os(t.byteBudget,H),now:t.now??(()=>new Date)});return Ns(r)?(await Lc(),s.db=await ks(`file://${r}`),await s.ensureRedDbStore()):s.document=await Dc(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=new Date(s.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=Ts(r,n),c=me(a),l={collection:pe,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:i,expires_at:o,loss:n.loss};return delete this.document.tombstones[De(a)],this.document.records[c]=l,this.upsertIndex({handle:a,key:c,bytes:r.length,command:n.command,created_at:i,expires_at:o}),this.prune(),await this.flush(),a}async get(t){if(this.db)return await this.getRedDb(t);if(!At(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[me(t)];if(!Ot(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:me(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),await this.flush(),i}let s=this.readOriginal(r);return s?{collection:pe,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss}: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:n.reduce((r,s)=>r+s.bytes,0),oldest:n.reduce((r,s)=>r==null||s.created_at<r?s.created_at:r,null),budget:this.opts.byteBudget}}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})}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=s.reduce((o,a)=>o+a.bytes,0);for(s.sort((o,a)=>o.created_at.localeCompare(a.created_at));i>this.opts.byteBudget&&s.length>0;){let o=s.shift();i-=o.bytes,this.expireEntry(o,n)}this.writeIndex({version:1,records:s})}expireEntry(t,n){delete this.document.records[t.key],this.document.tombstones[De(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[De(t)];return xn(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await Ls(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(pe)}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 mintRedDb(t,n){let r=Buffer.from(t),s=this.opts.now(),i=s.toISOString(),o=new Date(s.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=Ts(r,n),c=me(a),l={collection:pe,handle:a,original:r.toString("base64"),original_encoding:"base64",original_bytes:r.length,command:n.command,created_at:i,expires_at:o,loss:n.loss};await this.kv().delete(De(a)),await this.kv().put(c,l);let d=(await this.readRedDbIndex()).records.filter(f=>f.handle!==a);return d.push({handle:a,key:c,bytes:r.length,command:n.command,created_at:i,expires_at:o}),await this.pruneRedDb({version:1,records:d}),await this.assertRedDbMintPersisted(a,r.length),a}async getRedDb(t){if(!At(t))return null;let n=await this.kvGet(De(t));if(xn(n))return n;let r=await this.kvGet(me(t));if(!Ot(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:me(r.handle),bytes:r.original_bytes,command:r.command,created_at:r.created_at,expires_at:r.expires_at},r.expires_at),i}let s=this.readOriginal(r);return s?{collection:pe,handle:r.handle,original:s,command:r.command,created_at:r.created_at,loss:r.loss}:null}async statsRedDb(){let t=await this.pruneRedDb(await this.readRedDbIndex());return{records:t.records.length,bytes:t.records.reduce((n,r)=>n+r.bytes,0),oldest:t.records.reduce((n,r)=>n==null||r.created_at<n?r.created_at:n,null),budget:this.opts.byteBudget}}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=Tc(n);return await this.memoryRecallRedDb(r.query,r.limit)}if(t==="ingest"){let r=vc(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 Oc(t.cwd,t.maxFiles??200,t.ignore??[]),r=0;for(let s of n){let o=(await Tn(s,"utf8").catch(()=>"")).trim();if(!o)continue;let a=vn(s),c=Ps("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 l=Date.now(),u={title:a,content:o,source:s,confidence:"EXTRACTED",hash:c,project:"default",scope:"project",importance:1,tier:"durable",provenance_tier:"oracle",created_at:l,updated_at:l,accessed_at:l,access_count:0,provenance:{source_kind:"system",writer:"rsp-resident",confidence:"EXTRACTED",evidence:[s],created_at:l,updated_at:l}},d=await this.db.query("INSERT INTO memory_nodes NODE (label, node_type, hash, properties) VALUES ($1, $2, $3, $4) RETURNING *",a,"concept",c,u),f=Number(d.rows[0]?.red_entity_id??d.rows[0]?.rid);Number.isFinite(f)&&await this.db.kv("memory_kv").put(`resident-node-hash:${c}`,f),r+=1}return{files:n.length,nodes:r,edges:0,docs:n.length,added:r,updated:0,skipped:n.length-r,stale:0,semantic:{enabled:!1,nodes:0,edges:0,token_cost:{input:0,output:0}},durationMs:0}}async memoryRecallRedDb(t,n){if(!this.db)throw new Error("rsp RedDB store is not open");let r=await this.db.query("SELECT * FROM memory_nodes"),s=t.toLowerCase().split(/\s+/).filter(Boolean),i=r.rows.map(o=>Ac(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(`
26
+ `),diagnostics:{vector:{status:"unavailable",candidates:0,contributed:0,reason:"resident-basic-recall"}}}}async readRedDbIndex(){let t=await this.kvGet(vs());return Is(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(vs(),t)}async pruneRedDb(t){let n=this.opts.now().getTime(),r=new Date(n).toISOString(),s=[];for(let a of t.records)Date.parse(a.expires_at)<=n?await this.expireRedDbEntry(a,a.expires_at):s.push(a);let i=s.reduce((a,c)=>a+c.bytes,0);for(s.sort((a,c)=>a.created_at.localeCompare(c.created_at));i>this.opts.byteBudget&&s.length>0;){let a=s.shift();i-=a.bytes,await this.expireRedDbEntry(a,r)}let o={version:1,records:s};return await this.writeRedDbIndex(o),o}async expireRedDbEntry(t,n){await this.kv().delete(t.key),await this.kv().put(De(t.handle),{status:"expired",expired_at:n,command:t.command})}async assertRedDbMintPersisted(t,n){let r=await this.kvGet(me(t));if(!Ot(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 Fs={};P(Fs,{REPO_STORE_PATH:()=>Pn,mergeRspBlock:()=>Ms,provisionRspRepoStore:()=>Vc});import{constants as Cc}from"node:fs";import{access as Uc,copyFile as Mc,mkdir as Bs,readFile as qc,writeFile as js}from"node:fs/promises";import{dirname as Gc,join as Dt,resolve as Fc}from"node:path";async function Vc(e,t={}){let n=Fc(e),r=Dt(n,".red"),s=Dt(r,"config.yaml"),i=Dt(n,Pn);await Bs(r,{recursive:!0}),await Bs(Gc(i),{recursive:!0});let o="";try{o=await qc(s,"utf8")}catch(f){if(f.code!=="ENOENT")throw f}let a=Ms(o,{enabled:!0,ttlDays:t.ttlDays??V,byteBudget:t.byteBudget??H,heavyGitByteThreshold:t.heavyGitByteThreshold??J}),c=a!==o;c&&await js(s,a,"utf8");let l=!await Us(i),u=!1;if(l){let f=Dt(n,Jc);if(await Us(f))await Mc(f,i),u=!0;else{let{RspElisionStore:R}=await Promise.resolve().then(()=>(Pt(),On)),_=process.env.REDDB_BIN;try{await(await R.open({uri:`file://${i}`,ttlDays:t.ttlDays??V,byteBudget:t.byteBudget??H,allowResidentOpen:!0})).close()}finally{_===void 0?delete process.env.REDDB_BIN:process.env.REDDB_BIN=_}}}let d=Hc(a,Pn);return d!==a&&await js(s,d,"utf8"),{configPath:s,storePath:i,configChanged:c||d!==a,storeCreated:l,memoryStoreMigrated:u}}function Ms(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${An(t.ttlDays,V)}`,` byteBudget: ${An(t.byteBudget,H)}`,` heavyGitByteThreshold: ${An(t.heavyGitByteThreshold,J)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
27
+ `),s=qs(r,"rsp");if(s===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
28
28
  `)}
29
- `}let s=mn(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
29
+ `}let i=Dn(r,s,0);return`${[...r.slice(0,s),...n,...r.slice(i)].join(`
30
30
  `)}
31
- `}function Si(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(gn(r)&&yn(r)===0&&xi(r)===t)return n}return-1}function mn(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(gn(e[i])&&yn(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function yn(e){return(e.match(/^ */)?.[0]??"").length}function gn(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function xi(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function fn(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ic(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
32
- `),r=Si(n,"plugins");if(r===-1)return e;let i=mn(n,r,0),s=Ei(n,"memory",r+1,i,2);if(s===-1)return e;let o=mn(n,s,2),a=[...n],c=Ei(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
31
+ `}function qs(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(In(r)&&$n(r)===0&&Gs(r)===t)return n}return-1}function Dn(e,t,n){let r=e.length;for(let s=t+1;s<e.length;s++)if(In(e[s])&&$n(e[s])<=n){r=s;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function $n(e){return(e.match(/^ */)?.[0]??"").length}function In(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Gs(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function An(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Hc(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
32
+ `),r=qs(n,"plugins");if(r===-1)return e;let s=Dn(n,r,0),i=Cs(n,"memory",r+1,s,2);if(i===-1)return e;let o=Dn(n,i,2),a=[...n],c=Cs(a,"storePath",i+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
33
33
  `)}
34
- `}function Ei(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(gn(o)&&yn(o)===i&&xi(o)===t)return s}return-1}async function _i(e){try{return await xc(e,Sc.F_OK),!0}catch{return!1}}var pn,Pc,Oi=w(()=>{"use strict";D();pn=Ye,Pc=".red/memory/graph.rdb"});var $i={};v($i,{runRspMcpServer:()=>Nc});import{createInterface as Dc}from"node:readline";async function Nc(){let e=V(process.cwd(),process.env),t=Dc({input:process.stdin,crlfDelay:1/0});for await(let n of t){if(!n.trim())continue;let r;try{r=JSON.parse(n);let i=await Lc(r,e);Ai({jsonrpc:"2.0",id:r.id??null,result:i})}catch(i){Ai({jsonrpc:"2.0",id:typeof Pi(n)?.id>"u"?null:Pi(n)?.id,error:{code:-32e3,message:i instanceof Error?i.message:String(i)}})}}}async function Lc(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 elision store 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"]}}]}:{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:vi(t)}]};if(!t.enabled)return{content:[{type:"text",text:vi(t)}],isError:!0};let r=Bc(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.stats())}]};if(n?.name==="rsp_show"){let i=String(n.arguments?.handle??""),s=await r.get(i);return s?"status"in s?{content:[{type:"text",text:JSON.stringify(s)}],isError:!0}:{content:[{type:"text",text:s.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}}return{}}function Bc(e){return new ve(ne(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget})}function vi(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Ai(e){process.stdout.write(`${JSON.stringify(e)}
35
- `)}function Pi(e){try{return JSON.parse(e)}catch{return null}}var Ii=w(()=>{"use strict";D();ue()});var Sn={};v(Sn,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Je,RSP_TELEMETRY_INDEX_COLLECTION:()=>wt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>be,RSP_TELEMETRY_SPOOL:()=>Ci,appendTelemetryEvent:()=>Jc,parseTelemetryEvent:()=>_n,readTelemetryStats:()=>kn,takeTelemetrySpool:()=>En,telemetrySpoolPath:()=>Rn});import{appendFileSync as jc,mkdirSync as Cc}from"node:fs";import{mkdir as Uc,readFile as qc,rename as Mc,rm as Gc,writeFile as Fc}from"node:fs/promises";import{dirname as Bi,join as ji}from"node:path";function Rn(e){return ji(e,Ci)}async function Jc(e,t){try{let n=Rn(e);Cc(Bi(n),{recursive:!0}),jc(n,`${JSON.stringify(t)}
36
- `,{encoding:"utf8",mode:384})}catch{}}async function En(e){let t=Rn(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await Uc(Bi(t),{recursive:!0}),await Mc(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await Fc(t,"",{flag:"wx"}).catch(()=>{}),(await qc(n,"utf8").catch(()=>"")).split(/\r?\n/).filter(i=>i.trim()!=="")}finally{await Gc(n,{force:!0})}}function _n(e){try{let t=JSON.parse(e);return!Ui(t)||t.collection!==be&&t.collection!==Je?null:t}catch{return null}}async function kn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,i=n.getTime()-r*24*60*60*1e3,s=(await Di(e,be)).filter(y=>Ni(y)>=i),o=(await Di(e,Je)).filter(y=>Ni(y)>=i),a=0,c=0,l=0,u=0,d=new Map,f=new Map,E=[],R=0,k=0,m=0;for(let y of s){y.elided===!0&&a++;let S=Ge(y.raw_bytes),xe=Ge(y.emitted_bytes),Ss=Math.max(0,S-xe),kt=Math.max(0,Ge(y.tokens_raw)-Ge(y.tokens_emitted));c+=S,l+=xe,u+=kt;let St=hn(y).slice(0,10);St&&d.set(St,(d.get(St)??0)+kt);let xt=Fe(y.command)||"unknown",We=f.get(xt)??{command:xt,invocations:0,bytes_saved:0,tokens_saved:0};We.invocations++,We.bytes_saved+=Ss,We.tokens_saved+=kt,f.set(xt,We);let Ln=wn(y.wrapper_ms);Ln!=null&&E.push(Ln),R+=Ge(y.store_open_count);let Bn=wn(y.store_elapsed_ms);Bn!=null&&(k+=Bn,m++)}let h=new Map,g=null;for(let y of o){let S=Fe(y.reason)||"unknown";h.set(S,(h.get(S)??0)+1);let xe=hn(y);(!g||xe>g.timestamp)&&(g={timestamp:xe,reason:S,command:Fe(y.command)||"unknown"})}let b=s.length+o.length;return{window_days:r,empty:s.length===0&&o.length===0,savings:{invocations:s.length,elided:a,raw_bytes:c,emitted_bytes:l,bytes_saved:Math.max(0,c-l),tokens_saved:u,daily_tokens_saved:[...d.entries()].sort(([y],[S])=>y.localeCompare(S)).map(([y,S])=>({date:y,tokens_saved:S})),top_commands:[...f.values()].sort((y,S)=>S.bytes_saved-y.bytes_saved||S.tokens_saved-y.tokens_saved||y.command.localeCompare(S.command))},health:{degradations:o.length,degradation_rate:b===0?0:o.length/b,by_reason:[...h.entries()].sort((y,S)=>S[1]-y[1]||y[0].localeCompare(S[0])).map(([y,S])=>({reason:y,count:S})),most_recent:g},latency:{wrapper_ms_p50:Li(E,.5),wrapper_ms_p95:Li(E,.95),store_open_count_sum:R,store_elapsed_ms_sum:bn(k),store_elapsed_ms_avg:m===0?null:bn(k/m)}}}async function Di(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=>Vc(r.value)).filter(r=>Ui(r))}function Vc(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function Ni(e){let t=Date.parse(hn(e));return Number.isFinite(t)?t:0}function hn(e){return Fe(e.created_at)||Fe(e.ts)||""}function Fe(e){return typeof e=="string"?e:""}function Ge(e){return wn(e)??0}function wn(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Li(e,t){if(e.length===0)return null;let n=[...e].sort((i,s)=>i-s),r=Math.min(n.length-1,Math.max(0,Math.ceil(n.length*t)-1));return bn(n[r])}function bn(e){return Math.round(e*100)/100}function Ui(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ci,be,Je,wt,bt=w(()=>{"use strict";Ci=ji(".red","tmp","rsp-telemetry.spool.jsonl"),be="rsp_telemetry_invocations_v1",Je="rsp_telemetry_degradations_v1",wt="rsp_telemetry_index_v1"});var Ki={};v(Ki,{runResidentServer:()=>Zc});import{randomUUID as Vi}from"node:crypto";import{existsSync as Hc}from"node:fs";import{mkdir as Kc,rm as Wc}from"node:fs/promises";import{createServer as Yc}from"node:net";import{dirname as Hi,join as qi}from"node:path";import{fileURLToPath as zc,pathToFileURL as Qc}from"node:url";async function Zc(e){await Kc(Hi(e.socketPath),{recursive:!0});let t=process.hrtime.bigint(),n=await Me.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),r=Number(process.hrtime.bigint()-t)/1e6,i=1,s=new xn(n,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??ze,byteBudget:e.telemetryByteBudget??e.byteBudget??Qe});await s.drainAndSweep();let o=e.idleMs??3e4,a,c=Yc(u=>{l(),sl(u,async d=>{l();let f=await ol(n,d),E={id:d.id,ok:!0,value:f,storeOpenCount:i,storeElapsedMs:r};u.write(`${JSON.stringify(E)}
37
- `)})});function l(){a&&clearTimeout(a),a=setTimeout(()=>{s.drainAndSweep().finally(()=>c.close())},o),a.unref()}await new Promise((u,d)=>{c.once("error",d),c.listen(e.socketPath,()=>{c.off("error",d),u()})}),l(),await new Promise(u=>c.once("close",u)),i=0,a&&clearTimeout(a),await n.close(),await Wc(e.socketPath,{force:!0})}async function el(e){if(e.collection!==be)return e;let t=await Mi(e.raw_text,Fi(e.raw_bytes)),n=await Mi(e.emitted_text,Fi(e.emitted_bytes)),{raw_text:r,emitted_text:i,...s}=e;return{...s,tokens_raw:t.tokens,tokens_emitted:n.tokens,estimated:t.estimated||n.estimated}}async function Mi(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");return n<=Xc?{tokens:(await tl())("cl100k_base").encode(e).length,estimated:!1}:{tokens:Math.ceil(n/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function tl(){return Gi??=import(Qc(nl()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await Gi}function nl(){let e=Hi(zc(import.meta.url)),n=[qi(e,"..","node_modules","js-tiktoken","dist","index.js"),qi(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>Hc(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function Fi(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function rl(e){try{return JSON.parse(e)}catch{return e}}function il(e){return Ji(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>Ji(t)&&(t.collection===be||t.collection===Je)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function Ji(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function sl(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let i=n.indexOf(`
38
- `);if(i<0)return;let s=n.slice(0,i);e.pause(),(async()=>{let o;try{o=JSON.parse(s),await t(o)}catch(a){let l={id:o?.id??Vi(),ok:!1,error:a instanceof Error?a.message:String(a)};e.write(`${JSON.stringify(l)}
39
- `)}finally{e.end()}})()})}async function ol(e,t){if(t.op==="ping")return{pong:!0};if(t.op==="stats")return await e.stats();if(t.op==="telemetry-stats"){let n=e.redDb();if(!n)throw new Error("rsp telemetry stats require the shared RedDB store");return await kn(n,t.sinceDays)}if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return al(await e.get(t.handle));if(t.op==="memory")return await e.memory(t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}function al(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Xc,xn,Gi,Wi=w(()=>{"use strict";gt();bt();D();Xc=256*1024,xn=class{constructor(t,n){this.store=t;this.opts=n}running;async drainAndSweep(){this.running??=this.drainAndSweepOnce().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await En(this.opts.rootDir),i=[...(await this.readIndex(t)).records];for(let s of n){let o=_n(s);if(!o)continue;let a=await this.writeEvent(t,o);i.push(a)}await this.prune(t,{version:1,records:i})}async writeEvent(t,n){let r=new Date,i=typeof n.created_at=="string"?n.created_at:r.toISOString(),s=new Date(Date.parse(i)+this.opts.ttlDays*24*60*60*1e3).toISOString(),o=typeof n.id=="string"&&n.id.trim()!==""?n.id:Vi(),a={...await el(n),id:o,created_at:i,expires_at:s};return await t.kv(n.collection).put(o,a),{collection:n.collection,key:o,created_at:i,expires_at:s,bytes:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async readIndex(t){let n=await t.kv(wt).get("index:v1"),r=typeof n=="string"?rl(n):n;return il(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(wt).put("index:v1",n)}async prune(t,n){let r=Date.now(),i=[];for(let o of n.records)Date.parse(o.expires_at)<=r?await t.kv(o.collection).delete(o.key):i.push(o);let s=i.reduce((o,a)=>o+a.bytes,0);for(i.sort((o,a)=>o.created_at.localeCompare(a.created_at));s>this.opts.byteBudget&&i.length>0;){let o=i.shift();s-=o.bytes,await t.kv(o.collection).delete(o.key)}await this.writeIndex(t,{version:1,records:i})}}});function Z(e){let t=[],n;for(let r=0;r<e.length;r++){let i=e[r];if(i==="--query"){n=e[++r];continue}if(i.startsWith("--query=")){n=i.slice(8);continue}t.push(i)}return{argv:t,query:n?.trim()||void 0}}function Yi(e,t){if(!t)return!0;let n=Tn(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function $(e,t){return t?e.filter(n=>Yi(n,t)):[...e]}function Re(e,t){if(!t)return e;let r=e.split(`
40
- `).filter(i=>i&&Yi(i,t));return r.length>0?`${r.join(`
34
+ `}function Cs(e,t,n,r,s){for(let i=n;i<r;i++){let o=e[i];if(In(o)&&$n(o)===s&&Gs(o)===t)return i}return-1}async function Us(e){try{return await Uc(e,Cc.F_OK),!0}catch{return!1}}var Pn,Jc,Js=S(()=>{"use strict";C();Pn=ht,Jc=".red/memory/graph.rdb"});var Ws={};P(Ws,{runRspMcpServer:()=>Wc});import{createInterface as Kc}from"node:readline";async function Wc(){let e=z(process.cwd(),process.env),t=Kc({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 Yc(r,e);Hs({jsonrpc:"2.0",id:r.id??null,result:s})}catch(s){Hs({jsonrpc:"2.0",id:typeof Ks(n)?.id>"u"?null:Ks(n)?.id,error:{code:-32e3,message:s instanceof Error?s.message:String(s)}})}}}async function Yc(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 elision store 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"]}}]}:{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:Vs(t)}]};if(!t.enabled)return{content:[{type:"text",text:Vs(t)}],isError:!0};let r=zc(t);if(n?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await r.stats())}]};if(n?.name==="rsp_show"){let s=String(n.arguments?.handle??""),i=await r.get(s);return i?"status"in i?{content:[{type:"text",text:JSON.stringify(i)}],isError:!0}:{content:[{type:"text",text:i.original.toString("utf8")}]}:{content:[{type:"text",text:"not found"}],isError:!0}}}return{}}function zc(e){return new Ve(fe(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,telemetryTtlDays:e.telemetryTtlDays,telemetryByteBudget:e.telemetryByteBudget,telemetryDrainIntervalMs:e.telemetryDrainIntervalMs})}function Vs(e){return e.enabled?"rsp is enabled in this directory":"rsp is not enabled in this directory; run /red-setup"}function Hs(e){process.stdout.write(`${JSON.stringify(e)}
35
+ `)}function Ks(e){try{return JSON.parse(e)}catch{return null}}var Ys=S(()=>{"use strict";C();Oe()});var Un={};P(Un,{RSP_TELEMETRY_DEGRADATIONS_COLLECTION:()=>Le,RSP_TELEMETRY_INDEX_COLLECTION:()=>Nt,RSP_TELEMETRY_INVOCATIONS_COLLECTION:()=>ye,RSP_TELEMETRY_SPOOL:()=>ei,appendTelemetryEvent:()=>sl,parseTelemetryEvent:()=>Bn,readTelemetryGainsReport:()=>Cn,readTelemetryStats:()=>jn,takeTelemetrySpool:()=>Ln,telemetrySpoolPath:()=>Nn});import{appendFileSync as Qc,mkdirSync as Zc}from"node:fs";import{mkdir as Xc,readFile as el,rename as tl,rm as nl,writeFile as rl}from"node:fs/promises";import{dirname as Zs,join as Xs}from"node:path";function Nn(e){return Xs(e,ei)}async function sl(e,t){try{let n=Nn(e);Zc(Zs(n),{recursive:!0}),Qc(n,`${JSON.stringify(t)}
36
+ `,{encoding:"utf8",mode:384})}catch{}}async function Ln(e){let t=Nn(e),n=`${t}.${process.pid}.${Date.now()}.drain`;try{await Xc(Zs(t),{recursive:!0}),await tl(t,n)}catch(r){return r.code==="ENOENT"?[]:[]}try{return await rl(t,"",{flag:"wx"}).catch(()=>{}),(await el(n,"utf8").catch(()=>"")).split(/\r?\n/).filter(s=>s.trim()!=="")}finally{await nl(n,{force:!0})}}function Bn(e){try{let t=JSON.parse(e);return!ti(t)||t.collection!==ye&&t.collection!==Le?null:t}catch{return null}}async function jn(e,t,n=new Date){let r=Number.isFinite(t)&&t>0?t:30,s=n.getTime()-r*24*60*60*1e3,i=(await $t(e,ye)).filter(y=>tt(y)>=s),o=(await $t(e,Le)).filter(y=>tt(y)>=s),a=0,c=0,l=0,u=0,d=new Map,f=new Map,R=[],_=0,E=0,m=0;for(let y of i){y.elided===!0&&a++;let x=U(y.raw_bytes),G=U(y.emitted_bytes),at=Math.max(0,x-G),ae=Math.max(0,U(y.tokens_raw)-U(y.tokens_emitted));c+=x,l+=G,u+=ae;let ce=nt(y).slice(0,10);ce&&d.set(ce,(d.get(ce)??0)+ae);let p=ne(y.command)||"unknown",b=f.get(p)??{command:p,invocations:0,bytes_saved:0,tokens_saved:0};b.invocations++,b.bytes_saved+=at,b.tokens_saved+=ae,f.set(p,b);let we=It(y.wrapper_ms);we!=null&&R.push(we),_+=U(y.store_open_count);let be=It(y.store_elapsed_ms);be!=null&&(E+=be,m++)}let w=new Map,g=null;for(let y of o){let x=ne(y.reason)||"unknown";w.set(x,(w.get(x)??0)+1);let G=nt(y);(!g||G>g.timestamp)&&(g={timestamp:G,reason:x,command:ne(y.command)||"unknown"})}let k=i.length+o.length;return{window_days:r,empty:i.length===0&&o.length===0,savings:{invocations:i.length,elided:a,raw_bytes:c,emitted_bytes:l,bytes_saved:Math.max(0,c-l),tokens_saved:u,daily_tokens_saved:[...d.entries()].sort(([y],[x])=>y.localeCompare(x)).map(([y,x])=>({date:y,tokens_saved:x})),top_commands:[...f.values()].sort((y,x)=>x.bytes_saved-y.bytes_saved||x.tokens_saved-y.tokens_saved||y.command.localeCompare(x.command))},health:{degradations:o.length,degradation_rate:k===0?0:o.length/k,by_reason:[...w.entries()].sort((y,x)=>x[1]-y[1]||y[0].localeCompare(x[0])).map(([y,x])=>({reason:y,count:x})),most_recent:g},latency:{wrapper_ms_p50:Ie(R,.5),wrapper_ms_p95:Ie(R,.95),store_open_count_sum:_,store_elapsed_ms_sum:Ne(E),store_elapsed_ms_avg:m===0?null:Ne(E/m)}}}async function Cn(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 $t(e,ye)).filter(p=>tt(p)>=o),c=(await $t(e,Le)).filter(p=>tt(p)>=o),l=[...a,...c].map(tt).filter(p=>Number.isFinite(p)&&p>0),u=l.length===0?null:Math.min(...l),d=u==null?0:Math.max(1,Math.min(r,Math.ceil((n.getTime()-u)/dl()))),f=[],R=new Map,_=new Map,E=new Map,m=new Map,w=new Map,g=new Map,k=0,y=null,x=0,G=0;for(let p of a){let b=nt(p),we=b.slice(0,10),be=b.slice(0,16),Re=Qs(ne(p.command)),_e=Math.max(0,U(p.tokens_raw)-U(p.tokens_emitted)),Ut=Math.max(0,U(p.raw_bytes)-U(p.emitted_bytes)),Mt=It(p.wrapper_ms);if(Mt!=null){f.push(Mt);let Qn=R.get(Re)??[];Qn.push(Mt),R.set(Re,Qn)}we&&_.set(we,(_.get(we)??0)+1),be&&E.set(be,(E.get(be)??0)+1);let qt=ol(b);qt&&m.set(qt,(m.get(qt)??0)+1);let Gt=ll(b);Gt&&w.set(Gt,(w.get(Gt)??0)+_e);let ct=g.get(Re)??{command_family:Re,invocations:0,tokens_saved:0,bytes_saved:0};ct.invocations++,ct.tokens_saved+=_e,ct.bytes_saved+=Ut,g.set(Re,ct),p.elided===!0&&k++,(p.store_open_count!=null||p.store_elapsed_ms!=null)&&(x++,U(p.store_open_count)>0&&G++),_e>0&&(!y||_e>y.tokens_saved||_e===y.tokens_saved&&Ut>y.bytes_saved)&&(y={timestamp:b,command_family:Re,tokens_saved:_e,bytes_saved:Ut})}let at=c.map(p=>({timestamp:nt(p),command_family:Qs(ne(p.command)),reason:ne(p.reason)||"unknown"})).sort((p,b)=>p.timestamp.localeCompare(b.timestamp)),ae=new Map;for(let p of at)ae.set(p.reason,(ae.get(p.reason)??0)+1);let ce=[...E.entries()].sort((p,b)=>b[1]-p[1]||p[0].localeCompare(b[0]))[0];return{schema_version:"red.rsp.gains.v1",window:{requested_days:r,data_days:d,since:i,until:s,label:`window: ${r}d, data: ${d}d`,empty:a.length===0&&c.length===0,invocations:a.length,degradations:c.length},latency:{global:zs(f),by_command_family:[...R.entries()].sort((p,b)=>b[1].length-p[1].length||p[0].localeCompare(b[0])).map(([p,b])=>({command_family:p,count:b.length,...zs(b)}))},throughput:{requests_per_day:[..._.entries()].sort(([p],[b])=>p.localeCompare(b)).map(([p,b])=>({date:p,requests:b})),active_minute_avg:E.size===0?null:Ne([...E.values()].reduce((p,b)=>p+b,0)/E.size),peak_minute:ce?{minute:ce[0],requests:ce[1]}:null,hour_weekday_heatmap:al(m)},savings:{weekly_tokens_saved:ul(w),elision_rate:a.length===0?0:Ne(k/a.length),top_commands_by_tokens_saved:[...g.values()].sort((p,b)=>b.tokens_saved-p.tokens_saved||b.bytes_saved-p.bytes_saved||p.command_family.localeCompare(b.command_family)).slice(0,10),top_commands_by_invocation_count:[...g.values()].sort((p,b)=>b.invocations-p.invocations||b.tokens_saved-p.tokens_saved||p.command_family.localeCompare(b.command_family)).slice(0,10),single_biggest_elision:y},health:{degradation_timeline:at,degradations_by_reason:[...ae.entries()].sort((p,b)=>b[1]-p[1]||p[0].localeCompare(b[0])).map(([p,b])=>({reason:p,count:b})),cold_boots:x===0?null:G,warm_hits:x===0?null:Math.max(0,x-G)}}}async function $t(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=>il(r.value)).filter(r=>ti(r))}function il(e){if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}}function tt(e){let t=Date.parse(nt(e));return Number.isFinite(t)?t:0}function nt(e){return ne(e.created_at)||ne(e.ts)||""}function ne(e){return typeof e=="string"?e:""}function U(e){return It(e)??0}function It(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ie(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 Ne(n[r])}function zs(e){return{wrapper_ms_p50:Ie(e,.5),wrapper_ms_p90:Ie(e,.9),wrapper_ms_p95:Ie(e,.95),wrapper_ms_p99:Ie(e,.99)}}function Ne(e){return Math.round(e*100)/100}function Qs(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 ol(e){let t=new Date(e);return Number.isFinite(t.getTime())?`${cl(t.getUTCDay())}:${t.getUTCHours()}`:null}function al(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 cl(e){return["sun","mon","tue","wed","thu","fri","sat"][e]??"unknown"}function ll(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 ul(e){let t=null;return[...e.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>{let s=t==null||t===0?null:Ne((r-t)/t*100);return t=r,{week_start:n,tokens_saved:r,wow_delta_pct:s}})}function dl(){return 24*60*60*1e3}function ti(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var ei,ye,Le,Nt,Lt=S(()=>{"use strict";ei=Xs(".red","tmp","rsp-telemetry.spool.jsonl"),ye="rsp_telemetry_invocations_v1",Le="rsp_telemetry_degradations_v1",Nt="rsp_telemetry_index_v1"});var li={};P(li,{runResidentServer:()=>wl});import{randomUUID as ai}from"node:crypto";import{existsSync as fl}from"node:fs";import{mkdir as ml,rm as pl}from"node:fs/promises";import{createServer as yl}from"node:net";import{dirname as ci,join as ni}from"node:path";import{fileURLToPath as gl,pathToFileURL as hl}from"node:url";async function wl(e){await ml(ci(e.socketPath),{recursive:!0});let t=process.hrtime.bigint(),n=await et.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),r=Number(process.hrtime.bigint()-t)/1e6,s=1,i=new qn(n,{rootDir:e.rootDir??process.cwd(),ttlDays:e.telemetryTtlDays??wt,byteBudget:e.telemetryByteBudget??e.byteBudget??bt});await Mn(i);let o=e.idleMs??3e4,a,c=e.telemetryDrainIntervalMs??3e4,l=setInterval(()=>{Mn(i)},c);l.unref();let u=yl(f=>{d(),xl(f,async R=>{d();let _=await Tl(n,R),E={id:R.id,ok:!0,value:_,storeOpenCount:s,storeElapsedMs:r};f.write(`${JSON.stringify(E)}
37
+ `)})});function d(){a&&clearTimeout(a),a=setTimeout(()=>{u.close()},o),a.unref()}await new Promise((f,R)=>{u.once("error",R),u.listen(e.socketPath,()=>{u.off("error",R),f()})}),d(),await new Promise(f=>u.once("close",f)),s=0,a&&clearTimeout(a),clearInterval(l),await Mn(i),await n.close(),await pl(e.socketPath,{force:!0})}async function Mn(e){try{await e.drainAndSweep()}catch(t){process.stderr.write(`rsp resident: telemetry drain failed: ${t instanceof Error?t.message:String(t)}
38
+ `)}}async function Rl(e){if(e.collection!==ye)return e;let t=await ri(e.raw_text,ii(e.raw_bytes)),n=await ri(e.emitted_text,ii(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 ri(e,t){if(typeof e=="string"){let n=Buffer.byteLength(e,"utf8");return n<=bl?{tokens:(await _l())("cl100k_base").encode(e).length,estimated:!1}:{tokens:Math.ceil(n/4),estimated:!0}}return t!=null?{tokens:Math.ceil(t/4),estimated:!0}:{tokens:0,estimated:!1}}async function _l(){return si??=import(hl(El()).href).then(e=>{let t=e.getEncoding;if(!t)throw new Error("js-tiktoken getEncoding export not found");return t}),await si}function El(){let e=ci(gl(import.meta.url)),n=[ni(e,"..","node_modules","js-tiktoken","dist","index.js"),ni(e,"..","apps","rsp","node_modules","js-tiktoken","dist","index.js")].find(r=>fl(r));if(!n)throw new Error("js-tiktoken dependency not found");return n}function ii(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:void 0}function kl(e){try{return JSON.parse(e)}catch{return e}}function Sl(e){return oi(e)&&e.version===1&&Array.isArray(e.records)&&e.records.every(t=>oi(t)&&(t.collection===ye||t.collection===Le)&&typeof t.key=="string"&&typeof t.created_at=="string"&&typeof t.expires_at=="string"&&typeof t.bytes=="number")}function oi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function xl(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let s=n.indexOf(`
39
+ `);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 l={id:o?.id??ai(),ok:!1,error:a instanceof Error?a.message:String(a)};e.write(`${JSON.stringify(l)}
40
+ `)}finally{e.end()}})()})}async function Tl(e,t){if(t.op==="ping")return{pong:!0};if(t.op==="stats")return await e.stats();if(t.op==="telemetry-stats"){let n=e.redDb();if(!n)throw new Error("rsp telemetry stats require the shared RedDB store");return await jn(n,t.sinceDays)}if(t.op==="telemetry-gains"){let n=e.redDb();if(!n)throw new Error("rsp telemetry gains require the shared RedDB store");return await Cn(n,t.sinceDays)}if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return vl(await e.get(t.handle));if(t.op==="memory")return await e.memory(t.action,t.payload);throw new Error(`unsupported resident op: ${t.op??"unknown"}`)}function vl(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var bl,qn,si,ui=S(()=>{"use strict";Pt();Lt();C();bl=256*1024,qn=class{constructor(t,n){this.store=t;this.opts=n}running;async drainAndSweep(){this.running??=this.drainAndSweepOnce().finally(()=>{this.running=void 0}),await this.running}async drainAndSweepOnce(){let t=this.store.redDb();if(!t)return;let n=await Ln(this.opts.rootDir),s=[...(await this.readIndex(t)).records];for(let i of n){let o=Bn(i);if(!o)continue;let a=await this.writeEvent(t,o);s.push(a)}await this.prune(t,{version:1,records:s})}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:ai(),a={...await Rl(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:typeof n.bytes=="number"&&Number.isFinite(n.bytes)?Math.max(0,n.bytes):Buffer.byteLength(JSON.stringify(a),"utf8")}}async readIndex(t){let n=await t.kv(Nt).get("index:v1"),r=typeof n=="string"?kl(n):n;return Sl(r)?r:{version:1,records:[]}}async writeIndex(t,n){await t.kv(Nt).put("index:v1",n)}async prune(t,n){let r=Date.now(),s=[];for(let o of n.records)Date.parse(o.expires_at)<=r?await t.kv(o.collection).delete(o.key):s.push(o);let i=s.reduce((o,a)=>o+a.bytes,0);for(s.sort((o,a)=>o.created_at.localeCompare(a.created_at));i>this.opts.byteBudget&&s.length>0;){let o=s.shift();i-=o.bytes,await t.kv(o.collection).delete(o.key)}await this.writeIndex(t,{version:1,records:s})}}});function re(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 di(e,t){if(!t)return!0;let n=Gn(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function I(e,t){return t?e.filter(n=>di(n,t)):[...e]}function Be(e,t){if(!t)return e;let r=e.split(`
41
+ `).filter(s=>s&&di(s,t));return r.length>0?`${r.join(`
41
42
  `)}
42
- `:""}function X(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function Tn(e){return Array.isArray(e)?e.map(Tn).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Tn).join(" "):String(e??"")}var Rt=w(()=>{"use strict"});var es={};v(es,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>C,GIT_LOG_MACHINE_FIELDS:()=>zi,renderGitContract:()=>Qi,runGitWrapper:()=>ll});import{spawn as cl}from"node:child_process";async function ll(e,t){let n=Zi(e),r=Xi(n.argv),i=await pl(r,n.argv.slice(1));return Qi(e,i,t)}async function Qi(e,t,n){let r=Zi(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Re(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Xi(r.argv),s=ml(i,r.argv,t.stdout,r.query);if(s===`git empty
43
- `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=Rl(i,s);if(o)return{stdout:Buffer.from(`${o}
44
- `),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s,oneLine:!0};let a=O(s);if(ul(i,a,r.full,n))return{stdout:Buffer.from(a),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let c=xl(s);if(!c)return{stdout:Buffer.from(a),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s};let l=Buffer.byteLength(a),u=await n.store?.mint(Buffer.from(a),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!u)throw new Error("terse git output requires an elision store");let d=`\u2026 elided ${c.rowsElided} rows (+${l}) \u2014 rsp show ${u}
43
+ `:""}function se(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function Gn(e){return Array.isArray(e)?e.map(Gn).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Gn).join(" "):String(e??"")}var Bt=S(()=>{"use strict"});var gi={};P(gi,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>J,GIT_LOG_MACHINE_FIELDS:()=>fi,renderGitContract:()=>mi,runGitWrapper:()=>Al});import{spawn as Ol}from"node:child_process";async function Al(e,t){let n=pi(e),r=yi(n.argv),s=await Il(r,n.argv.slice(1));return mi(e,s,t)}async function mi(e,t,n){let r=pi(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Be(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let s=yi(r.argv),i=Nl(s,r.argv,t.stdout,r.query);if(i===`git empty
44
+ `)return{stdout:Buffer.from(i),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=Ml(s,i);if(o)return{stdout:Buffer.from(`${o}
45
+ `),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i,oneLine:!0};let a=O(i);if(Pl(s,a,r.full,n))return{stdout:Buffer.from(a),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let c=Vl(i);if(!c)return{stdout:Buffer.from(a),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:i};let l=Buffer.byteLength(a),u=await n.store?.mint(Buffer.from(a),{command:e.join(" "),loss:{level:"terse",bytes_elided:l}});if(!u)throw new Error("terse git output requires an elision store");let d=`\u2026 elided ${c.rowsElided} rows (+${l}) \u2014 rsp show ${u}
45
46
  `;return{stdout:Buffer.from(`${O(c.payload)}
46
- ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:c.payload,mintedHandle:u,bytesElided:l,rowsElided:c.rowsElided,rawOutput:Buffer.from(a)}}function Zi(e){let t=Z(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}return{argv:n,query:t.query,full:r}}function ul(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!dl(e)||r.level!=="lossless")return!0;let i=Sl(r.heavyGitByteThreshold,C);return Buffer.byteLength(t)<=i}function dl(e){return e==="diff"||e==="log"}function Xi(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function fl(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${zi.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n]}}async function pl(e,t){let n=cl("git",fl(e,t),{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function ml(e,t,n,r){switch(e){case"status":return yl(t,n,r);case"log":return gl(t,n,r);case"diff":return hl(t,n,r);case"commit":return Ve(wl(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Ve(bl(t,n),r,["rsp gh pr list --query <branch>"])}}function yl(e,t,n){let r="",i=[];for(let a of t.split("\0")){if(!a)continue;if(a.startsWith("# branch.head ")){r=a.slice(14);continue}if(!a.startsWith("1 "))continue;let c=a.split(" "),l=c[1]??"..",u=c.slice(8).join(" ");i.push({path:u,index:l[0]??".",worktree:l[1]??".",state:_l(l)})}if(i.length===0)return`git empty
47
- `;let s=$(i,n),o=kl(s,"state");return Ve({command:e.join(" "),branch:r,rows:s,summary:`${n?`${s.length}/${i.length}`:s.length} changes: ${o.added??0} added, ${o.modified??0} modified, ${o.deleted??0} deleted`},n,["rsp git diff --query <path>","rsp git log --query <subject>"])}function gl(e,t,n){let r=t.split("\0").filter(Boolean).map(s=>{let o=s.replace(/^\x1e/,"").split("");return{short:o[0]??"",author:o[1]??"",date:o[2]??"",subject:o[3]??""}}),i=$(r,n);return Ve({command:e.join(" "),commits:i,summary:`${n?`${i.length}/${r.length}`:i.length} commits`},n,["rsp git diff --query <path>","rsp gh pr list --query <branch>"])}function hl(e,t,n){let i=t.split("\0").filter(Boolean).map(a=>{let[c,l,u]=a.split(" ");return{path:u??"",added:c==="-"?null:Number(c??0),deleted:l==="-"?null:Number(l??0)}}),s=$(i,n),o=s.reduce((a,c)=>(a.added+=typeof c.added=="number"?c.added:0,a.deleted+=typeof c.deleted=="number"?c.deleted:0,a),{added:0,deleted:0});return Ve({command:e.join(" "),files:s,summary:`${n?`${s.length}/${i.length}`:s.length} files, +${o.added} -${o.deleted}`},n,["rsp git status --query <path>","rsp git log --query <subject>"])}function wl(e,t){let n=t.split(`
48
- `)[0]??"",r=/^\[([^ ]+) ([0-9a-f]+)\] (.+)$/.exec(n),i=/(\d+) files? changed/.exec(t),s=/(\d+) insertions?\(\+\)/.exec(t),o=/(\d+) deletions?\(-\)/.exec(t),a=r?.[1]??"",c=r?.[2]??"",l=Number(i?.[1]??0),u=Number(s?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:l,insertions:u,deletions:d,summary:`commit ${c} on ${a}: ${l} files, +${u} -${d}`}}function bl(e,t){let n=t.split(`
49
- `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",i=n.filter(c=>c.includes(" ")).map(c=>{let[l,u,d=""]=c.split(" "),[f,E]=(u??"").split(":");return{flag:l??"",from:f??"",to:E??"",summary:d}}),s=i.find(c=>c.flag!=="=")??i[0],o=s?.to.startsWith("refs/heads/")?s.to.slice(11):s?.to??"",a=s?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:i,summary:`pushed ${o} -> ${r} +${a} commits`}}function Ve(e,t,n){return t?X(e,n):e}function Rl(e,t){if(e==="commit"&&typeof t.commit=="string"&&t.commit.length>0)return String(t.summary??"");if(e==="push"){let n=t.refs;return(Array.isArray(n)?n:[]).filter(s=>El(s)&&s.flag!=="=").length===1?String(t.summary??""):null}return null}function El(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function _l(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function kl(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function Sl(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function xl(e){for(let t of["rows","commits","files","refs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var zi,ts=w(()=>{"use strict";De();D();Rt();D();zi=["%h","%an","%as","%s"]});var ps={};v(ps,{renderGhContract:()=>is,runGhWrapper:()=>Al});import{spawn as rs}from"node:child_process";async function Al(e,t){let n=ss(e),r=await $l(n);return is(e,r,t)}async function is(e,t,n){let r=Z(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Re(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=ss(e),s=Et(t.stdout),o=Dl(i,e,s);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=ql(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let R=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:i.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=R}let c=a?.target.truncated.handle||void 0,l=O(o);if(n.level!=="terse")return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let u=Ml(o);if(!u)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(l),f=await n.store?.mint(Buffer.from(l),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!f)throw new Error("terse gh output requires an elision store");let E=`\u2026 elided ${u.rowsElided} rows (+${d}) \u2014 rsp show ${f}
47
+ ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:c.payload,mintedHandle:u,bytesElided:l,rowsElided:c.rowsElided,rawOutput:Buffer.from(a)}}function pi(e){let t=re(e),n=[],r=!1;for(let s of t.argv){if(s==="--full"){r=!0;continue}n.push(s)}return{argv:n,query:t.query,full:r}}function Pl(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Dl(e)||r.level!=="lossless")return!0;let s=Jl(r.heavyGitByteThreshold,J);return Buffer.byteLength(t)<=s}function Dl(e){return e==="diff"||e==="log"}function yi(e){if(e[0]!=="git")throw new Error("expected rsp git <subcommand>");let t=e[1];if(t==="status"||t==="log"||t==="diff"||t==="commit"||t==="push")return t;throw new Error(`unsupported git subcommand: ${t??""}`)}function $l(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${fi.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n]}}async function Il(e,t){let n=Ol("git",$l(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 Nl(e,t,n,r){switch(e){case"status":return Ll(t,n,r);case"log":return Bl(t,n,r);case"diff":return jl(t,n,r);case"commit":return rt(Cl(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return rt(Ul(t,n),r,["rsp gh pr list --query <branch>"])}}function Ll(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(" "),l=c[1]??"..",u=c.slice(8).join(" ");s.push({path:u,index:l[0]??".",worktree:l[1]??".",state:Gl(l)})}if(s.length===0)return`git empty
48
+ `;let i=I(s,n),o=Fl(i,"state");return rt({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 Bl(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=I(r,n);return rt({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 jl(e,t,n){let s=t.split("\0").filter(Boolean).map(a=>{let[c,l,u]=a.split(" ");return{path:u??"",added:c==="-"?null:Number(c??0),deleted:l==="-"?null:Number(l??0)}}),i=I(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 rt({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 Cl(e,t){let n=t.split(`
49
+ `)[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]??"",l=Number(s?.[1]??0),u=Number(i?.[1]??0),d=Number(o?.[1]??0);return{command:e.join(" "),branch:a,commit:c,subject:r?.[3]??"",files_changed:l,insertions:u,deletions:d,summary:`commit ${c} on ${a}: ${l} files, +${u} -${d}`}}function Ul(e,t){let n=t.split(`
50
+ `).filter(Boolean),r=n.find(c=>c.startsWith("To "))?.slice(3)??"",s=n.filter(c=>c.includes(" ")).map(c=>{let[l,u,d=""]=c.split(" "),[f,R]=(u??"").split(":");return{flag:l??"",from:f??"",to:R??"",summary:d}}),i=s.find(c=>c.flag!=="=")??s[0],o=i?.to.startsWith("refs/heads/")?i.to.slice(11):i?.to??"",a=i?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:s,summary:`pushed ${o} -> ${r} +${a} commits`}}function rt(e,t,n){return t?se(e,n):e}function Ml(e,t){if(e==="commit"&&typeof t.commit=="string"&&t.commit.length>0)return String(t.summary??"");if(e==="push"){let n=t.refs;return(Array.isArray(n)?n:[]).filter(i=>ql(i)&&i.flag!=="=").length===1?String(t.summary??""):null}return null}function ql(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Gl(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Fl(e,t){let n={};for(let r of e){let s=String(r[t]??"");n[s]=(n[s]??0)+1}return n}function Jl(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Vl(e){for(let t of["rows","commits","files","refs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}var fi,hi=S(()=>{"use strict";Te();C();Bt();C();fi=["%h","%an","%as","%s"]});var Ai={};P(Ai,{renderGhContract:()=>Ri,runGhWrapper:()=>Yl});import{spawn as bi}from"node:child_process";async function Yl(e,t){let n=_i(e),r=await Ql(n);return Ri(e,r,t)}async function Ri(e,t,n){let r=re(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Be(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let s=_i(e),i=jt(t.stdout),o=Xl(s,e,i);if(typeof o=="string")return{stdout:Buffer.from(o),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=ou(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let _=await n.store.mint(Buffer.from(a.original),{command:e.join(" "),loss:{level:s.full?"brief":n.level,bytes_elided:a.bytes}});a.target.truncated.handle=_}let c=a?.target.truncated.handle||void 0,l=O(o);if(n.level!=="terse")return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let u=au(o);if(!u)return{stdout:Buffer.from(l),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:o,mintedHandle:c,bytesElided:a?.bytes};let d=Buffer.byteLength(l),f=await n.store?.mint(Buffer.from(l),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!f)throw new Error("terse gh output requires an elision store");let R=`\u2026 elided ${u.rowsElided} rows (+${d}) \u2014 rsp show ${f}
50
51
  `;return{stdout:Buffer.from(`${O(u.payload)}
51
- ${E}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:f,bytesElided:d,rowsElided:u.rowsElided,rawOutput:Buffer.from(l)}}function ss(e){let t=Z(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let i=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||i))throw new Error(`unsupported gh subcommand: ${r??""}`);let s=[],o=!1,a=!1;for(let l of t.argv.slice(3))l==="--full"?o=!0:l==="--wide"?a=!0:s.push(l);return{kind:n,action:i?"combined":r==="list"?"list":"view",target:i?r:void 0,full:o,wide:a,passthrough:s,query:t.query}}function Pl(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?Ol[t]:Tl[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function $l(e){if(e.action==="combined")return await Il(e);let t=rs("gh",Pl(e),{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}async function Il(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([On(["pr","view",t,"--json",n.join(",")]),On(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),On(["pr","view",t,"--comments","--json",r.join(",")])]),a=[i,s,o].find(c=>(c.status??0)!==0||c.signal);return a||{stdout:JSON.stringify({view:Et(i.stdout),checks:Et(s.stdout),comments:Et(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function On(e){let t=rs("gh",e,{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",i=>n.push(i)),t.stderr.on("data",i=>r.push(i)),await new Promise((i,s)=>{t.on("error",s),t.on("close",(o,a)=>{i({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}function Dl(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return jl(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=_e(n).map(o=>os(o,e.wide)),s=$(i,e.query);return Ee({...r,prs:s,summary:`${vn(s.length,i.length,e.query)} ${ns(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Ee({...r,pr:as(B(n),e),summary:`PR #${ae(B(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Nl(e,t,B(n));case"issue:list":{let i=_e(n).map(o=>cs(o,e.wide)),s=$(i,e.query);return Ee({...r,issues:s,summary:`${vn(s.length,i.length,e.query)} ${ns(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Ee({...r,issue:Cl(B(n),e),summary:`issue #${ae(B(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=_e(n).map(o=>ls(o,e.wide)),s=$(i,e.query);return Ee({...r,runs:s,summary:`${vn(s.length,i.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return Ee({...r,run:Ul(B(n),e),summary:`run ${ae(B(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Nl(e,t,n){let r=as(B(n.view),{...e,action:"view",wide:!0}),i=$(_e(n.checks).map(Ll),e.query),s=B(n.comments).comments,o=$(_e(s).map(Bl).slice(-3),e.query);return X({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${ae(B(n.view),"number")}: ${i.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function Ll(e){return{name:_(e,"name"),state:He(e),bucket:_(e,"bucket"),conclusion:_(e,"conclusion"),workflow:_(e,"workflow"),link:_(e,"link")}}function Bl(e){return{author:fs(e.author),body:_t(e,"body",An,!1),created:_(e,"createdAt")}}function jl(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
52
+ ${R}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:f,bytesElided:d,rowsElided:u.rowsElided,rawOutput:Buffer.from(l)}}function _i(e){let t=re(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let s=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||s))throw new Error(`unsupported gh subcommand: ${r??""}`);let i=[],o=!1,a=!1;for(let l of t.argv.slice(3))l==="--full"?o=!0:l==="--wide"?a=!0:i.push(l);return{kind:n,action:s?"combined":r==="list"?"list":"view",target:s?r:void 0,full:o,wide:a,passthrough:i,query:t.query}}function zl(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?Kl[t]:Hl[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function Ql(e){if(e.action==="combined")return await Zl(e);let t=bi("gh",zl(e),{stdio:["ignore","pipe","pipe"]}),n=[],r=[];return t.stdout.on("data",s=>n.push(s)),t.stderr.on("data",s=>r.push(s)),await new Promise((s,i)=>{t.on("error",i),t.on("close",(o,a)=>{s({stdout:Buffer.concat(n).toString("utf8"),stderr:Buffer.concat(r).toString("utf8"),status:o,signal:a})})})}async function Zl(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[s,i,o]=await Promise.all([Fn(["pr","view",t,"--json",n.join(",")]),Fn(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),Fn(["pr","view",t,"--comments","--json",r.join(",")])]),a=[s,i,o].find(c=>(c.status??0)!==0||c.signal);return a||{stdout:JSON.stringify({view:jt(s.stdout),checks:jt(i.stdout),comments:jt(o.stdout)}),stderr:[s.stderr,i.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function Fn(e){let t=bi("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 Xl(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return ru(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let s=Ce(n).map(o=>Ei(o,e.wide)),i=I(s,e.query);return je({...r,prs:i,summary:`${Jn(i.length,s.length,e.query)} ${wi(i,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return je({...r,pr:ki(M(n),e),summary:`PR #${ge(M(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return eu(e,t,M(n));case"issue:list":{let s=Ce(n).map(o=>Si(o,e.wide)),i=I(s,e.query);return je({...r,issues:i,summary:`${Jn(i.length,s.length,e.query)} ${wi(i,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return je({...r,issue:su(M(n),e),summary:`issue #${ge(M(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let s=Ce(n).map(o=>xi(o,e.wide)),i=I(s,e.query);return je({...r,runs:i,summary:`${Jn(i.length,s.length,e.query)} runs`},e,["rsp gh run view <id>","rsp gh run list --query <workflow-or-status>"])}case"run:view":return je({...r,run:iu(M(n),e),summary:`run ${ge(M(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function eu(e,t,n){let r=ki(M(n.view),{...e,action:"view",wide:!0}),s=I(Ce(n.checks).map(tu),e.query),i=M(n.comments).comments,o=I(Ce(i).map(nu).slice(-3),e.query);return se({command:t.join(" "),pr:r,checks:s,comments:o,summary:`PR #${ge(M(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 tu(e){return{name:T(e,"name"),state:st(e),bucket:T(e,"bucket"),conclusion:T(e,"conclusion"),workflow:T(e,"workflow"),link:T(e,"link")}}function nu(e){return{author:Oi(e.author),body:Ct(e,"body",Vn,!1),created:T(e,"createdAt")}}function ru(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
52
53
  `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
53
54
  `:`0 runs \u2014 try: rsp gh run list --limit 20
54
- `}function os(e,t){let n={number:ae(e,"number"),title:_(e,"title"),state:He(e),draft:!!e.isDraft};return t&&Object.assign(n,us(e)),n}function as(e,t){let n=os(e,t.wide);return n.body=_t(e,"body",An,t.full),t.wide&&(n.base=_(e,"baseRefName"),n.head=_(e,"headRefName")),n}function cs(e,t){let n={number:ae(e,"number"),title:_(e,"title"),state:He(e),labels:ds(e.labels)};return t&&Object.assign(n,us(e)),n}function Cl(e,t){let n=cs(e,t.wide);return n.body=_t(e,"body",An,t.full),n}function ls(e,t){let n={id:ae(e,"databaseId"),name:_(e,"name"),status:He(e),conclusion:_(e,"conclusion")};return t&&(n.event=_(e,"event"),n.branch=_(e,"headBranch"),n.workflow=_(e,"workflowName"),n.created=_(e,"createdAt")),n}function Ul(e,t){let n=ls(e,t.wide),r=_e(e.jobs).map(i=>({name:_(i,"name"),status:He(i),conclusion:_(i,"conclusion"),log:_t(i,"log",vl,t.full)}));return n.jobs=r,n}function _t(e,t,n,r){let i=_(e,t);if(r||Buffer.byteLength(i)<=n)return i;let s=i.slice(0,n),o={preview:s,truncated:{bytes:Buffer.byteLength(i),shown_bytes:Buffer.byteLength(s),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:i,enumerable:!1}),o}function ql(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(ke(n)){if(ke(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 Ml(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 ns(e,t){return e.every(n=>n.state===t)?t:"returned"}function vn(e,t,n){return n?`${e}/${t}`:String(e)}function Ee(e,t,n){return t.query?X(e,n):e}function He(e){return(_(e,"state")||_(e,"status")).toLowerCase()}function us(e){return{author:fs(e.author),labels:ds(e.labels),url:_(e,"url"),updated:_(e,"updatedAt")}}function ds(e){return Array.isArray(e)?e.map(t=>ke(t)?_(t,"name"):String(t)).filter(Boolean):[]}function fs(e){return ke(e)?_(e,"login"):""}function Et(e){return e.trim()?JSON.parse(e):null}function _e(e){return Array.isArray(e)?e.filter(ke):[]}function B(e){return ke(e)?e:{}}function _(e,t){let n=e[t];return typeof n=="string"?n:""}function ae(e,t){let n=e[t];return typeof n=="number"?n:0}function ke(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Tl,Ol,An,vl,ms=w(()=>{"use strict";De();Rt();Tl={"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"]},Ol={"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"]},An=160,vl=160});var ws={};v(ws,{renderTestContract:()=>ys,runTestWrapper:()=>Hl});import{spawn as Gl}from"node:child_process";async function Hl(e,t){let n=Z(e),r=await Ql(n.argv);return await ys(e,r,t)}async function ys(e,t,n){let r=Z(e),s=gs(r.argv)==="vitest"?Zl(t.stdout):Xl(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(Re(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=`${s.failed}/${s.total} failed \xB7 ${s.suites} suites \xB7 ${nu(s.durationSeconds)}`,c=$(s.failures,r.query);if(n.level==="terse")return await Kl(r.argv,t,{...s,failures:c},o,a,n,r.query);let l=[],u,d=0;for(let R of c){let k=await eu(R.excerpt,r.argv.join(" "),n.store);l.push({suite:R.suite,name:R.name,excerpt:k.text}),u??=k.handle,d+=k.bytesElided}let f={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};l.length>0&&(f.failures=l);let E=r.query?X(f,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):f;return{stdout:Buffer.from(O(E)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:E,mintedHandle:u,bytesElided:d>0?d:void 0,rowsElided:l.length>0?Math.max(0,s.total-l.length):void 0}}async function Kl(e,t,n,r,i,s,o){let a=Wl(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let l=o?X(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,u=O(l),d=Math.max(0,n.failures.length-a.length),f=a.some((b,y)=>b.excerpt!==n.failures[y].excerpt);if(d===0&&!f)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l};let E={exit_code:r,summary:i};n.failures.length>0&&(E.failures=n.failures.map(b=>({suite:b.suite,name:b.name,excerpt:b.excerpt})));let R=O(E),k=Buffer.byteLength(R),m=await s.store?.mint(Buffer.from(R),{command:e.join(" "),loss:{level:"terse",bytes_elided:k}});if(!m)throw new Error("terse test output requires an elision store");let g=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${k}) \u2014 rsp show ${m}`;return{stdout:Buffer.from(`${u}
55
- ${g}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l,mintedHandle:m,bytesElided:k,rowsElided:d,rawOutput:Buffer.from(R)}}function Wl(e){let t=[],n=Jl;for(let r of e.slice(0,Vl)){let i=Yl(r.excerpt,Math.min(Fl,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Yl(e,t){if(t<=0)return"";let n=e.split(`
55
+ `}function Ei(e,t){let n={number:ge(e,"number"),title:T(e,"title"),state:st(e),draft:!!e.isDraft};return t&&Object.assign(n,Ti(e)),n}function ki(e,t){let n=Ei(e,t.wide);return n.body=Ct(e,"body",Vn,t.full),t.wide&&(n.base=T(e,"baseRefName"),n.head=T(e,"headRefName")),n}function Si(e,t){let n={number:ge(e,"number"),title:T(e,"title"),state:st(e),labels:vi(e.labels)};return t&&Object.assign(n,Ti(e)),n}function su(e,t){let n=Si(e,t.wide);return n.body=Ct(e,"body",Vn,t.full),n}function xi(e,t){let n={id:ge(e,"databaseId"),name:T(e,"name"),status:st(e),conclusion:T(e,"conclusion")};return t&&(n.event=T(e,"event"),n.branch=T(e,"headBranch"),n.workflow=T(e,"workflowName"),n.created=T(e,"createdAt")),n}function iu(e,t){let n=xi(e,t.wide),r=Ce(e.jobs).map(s=>({name:T(s,"name"),status:st(s),conclusion:T(s,"conclusion"),log:Ct(s,"log",Wl,t.full)}));return n.jobs=r,n}function Ct(e,t,n,r){let s=T(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 ou(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(Ue(n)){if(Ue(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 au(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 wi(e,t){return e.every(n=>n.state===t)?t:"returned"}function Jn(e,t,n){return n?`${e}/${t}`:String(e)}function je(e,t,n){return t.query?se(e,n):e}function st(e){return(T(e,"state")||T(e,"status")).toLowerCase()}function Ti(e){return{author:Oi(e.author),labels:vi(e.labels),url:T(e,"url"),updated:T(e,"updatedAt")}}function vi(e){return Array.isArray(e)?e.map(t=>Ue(t)?T(t,"name"):String(t)).filter(Boolean):[]}function Oi(e){return Ue(e)?T(e,"login"):""}function jt(e){return e.trim()?JSON.parse(e):null}function Ce(e){return Array.isArray(e)?e.filter(Ue):[]}function M(e){return Ue(e)?e:{}}function T(e,t){let n=e[t];return typeof n=="string"?n:""}function ge(e,t){let n=e[t];return typeof n=="number"?n:0}function Ue(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Hl,Kl,Vn,Wl,Pi=S(()=>{"use strict";Te();Bt();Hl={"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"]},Kl={"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"]},Vn=160,Wl=160});var Ni={};P(Ni,{renderTestContract:()=>Di,runTestWrapper:()=>fu});import{spawn as cu}from"node:child_process";async function fu(e,t){let n=re(e),r=await hu(n.argv);return await Di(e,r,t)}async function Di(e,t,n){let r=re(e),i=$i(r.argv)==="vitest"?wu(t.stdout):bu(t.stdout),o=t.status;if(!i||(o??0)!==0&&i.failed===0)return{stdout:Buffer.from(Be(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let a=`${i.failed}/${i.total} failed \xB7 ${i.suites} suites \xB7 ${Eu(i.durationSeconds)}`,c=I(i.failures,r.query);if(n.level==="terse")return await mu(r.argv,t,{...i,failures:c},o,a,n,r.query);let l=[],u,d=0;for(let _ of c){let E=await Ru(_.excerpt,r.argv.join(" "),n.store);l.push({suite:_.suite,name:_.name,excerpt:E.text}),u??=E.handle,d+=E.bytesElided}let f={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${i.failures.length} failures matched`:a};l.length>0&&(f.failures=l);let R=r.query?se(f,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):f;return{stdout:Buffer.from(O(R)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:R,mintedHandle:u,bytesElided:d>0?d:void 0,rowsElided:l.length>0?Math.max(0,i.total-l.length):void 0}}async function mu(e,t,n,r,s,i,o){let a=pu(n.failures),c={exit_code:r,summary:o?`${s} \xB7 ${n.failures.length} failures matched`:s};a.length>0&&(c.failures=a);let l=o?se(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,u=O(l),d=Math.max(0,n.failures.length-a.length),f=a.some((k,y)=>k.excerpt!==n.failures[y].excerpt);if(d===0&&!f)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l};let R={exit_code:r,summary:s};n.failures.length>0&&(R.failures=n.failures.map(k=>({suite:k.suite,name:k.name,excerpt:k.excerpt})));let _=O(R),E=Buffer.byteLength(_),m=await i.store?.mint(Buffer.from(_),{command:e.join(" "),loss:{level:"terse",bytes_elided:E}});if(!m)throw new Error("terse test output requires an elision store");let g=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${E}) \u2014 rsp show ${m}`;return{stdout:Buffer.from(`${u}
56
+ ${g}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l,mintedHandle:m,bytesElided:E,rowsElided:d,rawOutput:Buffer.from(_)}}function pu(e){let t=[],n=uu;for(let r of e.slice(0,du)){let s=yu(r.excerpt,Math.min(lu,n));n=Math.max(0,n-Buffer.byteLength(s)),t.push({suite:r.suite,name:r.name,excerpt:s})}return t}function yu(e,t){if(t<=0)return"";let n=e.split(`
56
57
  `),r=n.length<=2?e:`${n[0]}
57
58
  \u2026
58
- ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function gs(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 zl(e){if(gs(e)==="vitest"){let i=e.slice(1);return{executable:"vitest",args:i.some(o=>o==="--reporter=json"||o==="--reporter"||o.startsWith("--reporter="))?i:["run","--reporter=json",...i]}}let n=e.slice(1);return{executable:"cargo",args:n.some(i=>i==="--message-format=json"||i.startsWith("--message-format="))?n:["test","--message-format=json",...n.slice(1)]}}async function Ql(e){let t=zl(e),n=Gl(t.executable,t.args,{stdio:["ignore","pipe","pipe"]}),r=[],i=[];return n.stdout.on("data",s=>r.push(s)),n.stderr.on("data",s=>i.push(s)),await new Promise((s,o)=>{n.on("error",o),n.on("close",(a,c)=>{s({stdout:Buffer.concat(r).toString("utf8"),stderr:Buffer.concat(i).toString("utf8"),status:a,signal:c})})})}function Zl(e){let t=hs(e);if(!ee(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=te(t.numTotalTests),s=te(t.numFailedTests),o=ru(te(t.startTime),te(t.endTime));for(let a of n){if(!ee(a))continue;let c=j(a.name)||j(a.file)||"",l=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let u of l)ee(u)&&u.status==="failed"&&r.push({suite:c,name:j(u.fullName)||j(u.title)||j(u.name),excerpt:tu(u.failureMessages)||j(u.failureMessage)})}return i||=n.reduce((a,c)=>!ee(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>ee(c)?a+te(c.perfStats&&ee(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function Xl(e){let t=e.split(`
59
- `).filter(Boolean).map(c=>hs(c)).filter(ee);if(t.length===0)return null;let n=[],r=0,i=0,s=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(s+=1,r+=te(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=te(c.failed),o+=te(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:j(c.name).split("::").slice(0,-1).join("::"),name:j(c.name),excerpt:j(c.stdout)});continue}if(c.reason==="compiler-message"&&ee(c.message)){let l=j(c.message.rendered);l&&a.push(l)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
60
- `)}),s||=1,r||=1,i||=1),i||=n.length,s||=1,r||=Math.max(i,n.length),{failed:i,total:r,suites:s,durationSeconds:o,failures:n}}async function eu(e,t,n){let r=Buffer.from(e);if(r.length<=Pn)return{text:e,bytesElided:0};if(!n)throw new Error("over-limit test failure excerpt requires an elision store");let i=await n.mint(r,{command:t,loss:{level:"brief",bytes_elided:r.length}}),s=r.subarray(0,Pn).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
61
- \u2026 elided ${o} bytes (+${r.length}) \u2014 rsp show ${i}`,handle:i,bytesElided:r.length}}function hs(e){try{return JSON.parse(e)}catch{return null}}function tu(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
62
- `):""}function nu(e){return`${Number(e.toFixed(1))}s`}function ru(e,t){return e>0&&t>e?(t-e)/1e3:0}function te(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function j(e){return typeof e=="string"?e:""}function ee(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Pn,Fl,Jl,Vl,bs=w(()=>{"use strict";De();Rt();Pn=320,Fl=160,Jl=Pn,Vl=3});import{existsSync as Nn,readdirSync as iu}from"node:fs";async function su(e=process.argv.slice(2)){let t=fu(e);if(t.command==="hook"&&t.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(or(),sr));return await m()}if(t.command==="hook"&&t.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(qr(),Ur));return await m()}if(t.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Oi(),Ti)),h=await m(process.cwd());return process.stdout.write(bu(h)),0}if(t.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Ii(),$i));return await m(),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(D(),Gn)),r=n(process.cwd(),process.env,t.storeUri),i=uu(t.command);if(!r.enabled)return i?await Se(In(),t.positional):(process.stdout.write(`${In()}
63
- `),0);if(t.command==="git"&&Rs(t.positional)&&await ou(process.cwd()))return await Es();let{resolveResidentPaths:s,ResidentRspElisionStore:o,ensureResidentServer:a}=await Promise.resolve().then(()=>(ue(),tt));if(t.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(Wi(),Ki)),h=ce(t.positional,"--socket")??s(process.cwd()).socketPath,g=n(process.cwd(),process.env,t.storeUri??ce(t.positional,"--store-uri"));return g.enabled?(await m({socketPath:h,storeUri:g.storeUri,ttlDays:F(t.positional,"--ttl-days")??g.ttlDays,byteBudget:F(t.positional,"--byte-budget")??g.byteBudget,telemetryTtlDays:F(t.positional,"--telemetry-ttl-days")??g.telemetryTtlDays,telemetryByteBudget:F(t.positional,"--telemetry-byte-budget")??g.telemetryByteBudget,idleMs:F(t.positional,"--idle-ms")}),0):(process.stdout.write(`${In()}
64
- `),0)}if(t.command==="warm-resident"){let m=s(process.cwd()),h=ce(t.positional,"--socket")??m.socketPath,g=ce(t.positional,"--wake-lock")??m.wakeLockPath,b=n(process.cwd(),process.env,t.storeUri??ce(t.positional,"--store-uri"));if(!b.enabled)return 0;let{warmResidentServer:y}=await Promise.resolve().then(()=>(ue(),tt));return await y({...m,socketPath:h,wakeLockPath:g},{storeUri:b.storeUri,ttlDays:F(t.positional,"--ttl-days")??b.ttlDays,byteBudget:F(t.positional,"--byte-budget")??b.byteBudget,telemetryTtlDays:F(t.positional,"--telemetry-ttl-days")??b.telemetryTtlDays,telemetryByteBudget:F(t.positional,"--telemetry-byte-budget")??b.telemetryByteBudget}),0}let{existsSync:c}=await import("node:fs"),{fileURLToPath:l}=await import("node:url"),u=s(process.cwd());if(!t.storeUri&&r.storeUri.startsWith("file://")&&!c(l(r.storeUri)))return i?await Se("store not provisioned",t.positional,void 0,u.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
65
- `),1);let d=()=>Promise.resolve(new o(u,{storeUri:r.storeUri,ttlDays:r.ttlDays,byteBudget:r.byteBudget,telemetryTtlDays:r.telemetryTtlDays,telemetryByteBudget:r.telemetryByteBudget})),f=()=>a(u,{storeUri:r.storeUri,ttlDays:r.ttlDays,byteBudget:r.byteBudget,telemetryTtlDays:r.telemetryTtlDays,telemetryByteBudget:r.telemetryByteBudget}),E=async()=>{let{RspElisionStore:m}=await Promise.resolve().then(()=>(gt(),dn));return await m.open({uri:r.storeUri,ttlDays:r.ttlDays,byteBudget:r.byteBudget})},R=()=>r.storeUri.endsWith("/red-skills.rdb")?d():E(),k;try{if(!t.command||t.command==="stats"){let m=await R();k=()=>m.close();let h=await m.stats(),g=cu(m)?await m.telemetryStats(_s(t.positional)):ks(_s(t.positional));return process.stdout.write(mu(h,g,pu(t.positional))),0}if(t.command==="git"){try{await J(f)}catch(y){return await Se("resident unavailable",t.positional,y,u.rootDir)}if(Rs(t.positional))return await Es();let{runGitWrapper:m}=await Promise.resolve().then(()=>(ts(),es)),h=new Ke(()=>J(d));k=()=>h.close();let g=process.hrtime.bigint(),b=await J(()=>m(t.positional,{level:t.level,store:h,heavyGitByteThreshold:r.heavyGitByteThreshold}));return await $n(t,b,g,h)}if(t.command==="gh"){try{await J(f)}catch(y){return await Se("resident unavailable",t.positional,y,u.rootDir)}let{runGhWrapper:m}=await Promise.resolve().then(()=>(ms(),ps)),h=new Ke(()=>J(d));k=()=>h.close();let g=process.hrtime.bigint(),b=await J(()=>m(t.positional,{level:t.level,store:h}));return await $n(t,b,g,h)}if(t.command==="vitest"||t.command==="cargo"){try{await J(f)}catch(y){return await Se("resident unavailable",t.positional,y,u.rootDir)}let{runTestWrapper:m}=await Promise.resolve().then(()=>(bs(),ws)),h=new Ke(()=>J(d));k=()=>h.close();let g=process.hrtime.bigint(),b=await J(()=>m(t.positional,{level:t.level,store:h}));return await $n(t,b,g,h)}if(t.command==="show"&&t.handle){let m=await R();k=()=>m.close();let h=await m.get(t.handle);return h&&"original"in h&&h.original?(process.stdout.write(h.original),0):h?.status==="expired"?(process.stdout.write(`expired ${h.expired_at} \u2014 re-run: ${h.command}
59
+ ${n[n.length-1]}`,s=Buffer.from(r);return s.length<=t?r:s.subarray(0,t).toString("utf8").replace(/�$/,"")}function $i(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 gu(e){if($i(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 hu(e){let t=gu(e),n=cu(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 wu(e){let t=Ii(e);if(!ie(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],s=oe(t.numTotalTests),i=oe(t.numFailedTests),o=ku(oe(t.startTime),oe(t.endTime));for(let a of n){if(!ie(a))continue;let c=q(a.name)||q(a.file)||"",l=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let u of l)ie(u)&&u.status==="failed"&&r.push({suite:c,name:q(u.fullName)||q(u.title)||q(u.name),excerpt:_u(u.failureMessages)||q(u.failureMessage)})}return s||=n.reduce((a,c)=>!ie(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),i||=r.length,o||=n.reduce((a,c)=>ie(c)?a+oe(c.perfStats&&ie(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:i,total:s,suites:n.length||1,durationSeconds:o,failures:r}}function bu(e){let t=e.split(`
60
+ `).filter(Boolean).map(c=>Ii(c)).filter(ie);if(t.length===0)return null;let n=[],r=0,s=0,i=0,o=0,a=[];for(let c of t){if(c.type==="suite"){c.event==="started"&&(i+=1,r+=oe(c.test_count)),(c.event==="failed"||c.event==="ok")&&(s+=oe(c.failed),o+=oe(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:q(c.name).split("::").slice(0,-1).join("::"),name:q(c.name),excerpt:q(c.stdout)});continue}if(c.reason==="compiler-message"&&ie(c.message)){let l=q(c.message.rendered);l&&a.push(l)}}return n.length===0&&a.length>0&&(n.push({suite:"cargo check",name:"compile-error",excerpt:a.join(`
61
+ `)}),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 Ru(e,t,n){let r=Buffer.from(e);if(r.length<=Hn)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,Hn).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(i);return{text:`${i}
62
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 rsp show ${s}`,handle:s,bytesElided:r.length}}function Ii(e){try{return JSON.parse(e)}catch{return null}}function _u(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
63
+ `):""}function Eu(e){return`${Number(e.toFixed(1))}s`}function ku(e,t){return e>0&&t>e?(t-e)/1e3:0}function oe(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function q(e){return typeof e=="string"?e:""}function ie(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Hn,lu,uu,du,Li=S(()=>{"use strict";Te();Bt();Hn=320,lu=160,uu=Hn,du=3});Te();import{appendFileSync as Bi,existsSync as zn,mkdirSync as Su,readdirSync as xu}from"node:fs";import{dirname as Tu,join as vu}from"node:path";async function Ou(e=process.argv.slice(2)){let t=ju(e);if(t.command==="hook"&&t.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:m}=await Promise.resolve().then(()=>(Fr(),Gr));return await m()}if(t.command==="hook"&&t.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:m}=await Promise.resolve().then(()=>(rs(),ns));return await m()}if(t.command==="setup"){let{provisionRspRepoStore:m}=await Promise.resolve().then(()=>(Js(),Fs)),w=await m(process.cwd());return process.stdout.write(Vu(w)),0}if(t.command==="mcp"){let{runRspMcpServer:m}=await Promise.resolve().then(()=>(Ys(),Ws));return await m(),0}let{resolveRspConfig:n}=await Promise.resolve().then(()=>(C(),xr)),r=n(process.cwd(),process.env,t.storeUri),s=Lu(t.command);if(!r.enabled)return s?await Me(Kn(),t.positional):(process.stdout.write(`${Kn()}
64
+ `),0);if(t.command==="git"&&ji(t.positional)&&await Au(process.cwd())){let m=process.hrtime.bigint();return await it(t,await Ci(),m)}let{resolveResidentPaths:i,ResidentRspElisionStore:o,ensureResidentServer:a}=await Promise.resolve().then(()=>(Oe(),kt));if(t.command==="server"){let{runResidentServer:m}=await Promise.resolve().then(()=>(ui(),li)),w=he(t.positional,"--socket")??i(process.cwd()).socketPath,g=n(process.cwd(),process.env,t.storeUri??he(t.positional,"--store-uri"));return g.enabled?(await m({socketPath:w,storeUri:g.storeUri,ttlDays:L(t.positional,"--ttl-days")??g.ttlDays,byteBudget:L(t.positional,"--byte-budget")??g.byteBudget,telemetryTtlDays:L(t.positional,"--telemetry-ttl-days")??g.telemetryTtlDays,telemetryByteBudget:L(t.positional,"--telemetry-byte-budget")??g.telemetryByteBudget,telemetryDrainIntervalMs:L(t.positional,"--telemetry-drain-interval-ms")??g.telemetryDrainIntervalMs,idleMs:L(t.positional,"--idle-ms")}),0):(process.stdout.write(`${Kn()}
65
+ `),0)}if(t.command==="warm-resident"){let m=i(process.cwd()),w=he(t.positional,"--socket")??m.socketPath,g=he(t.positional,"--wake-lock")??m.wakeLockPath,k=n(process.cwd(),process.env,t.storeUri??he(t.positional,"--store-uri"));if(!k.enabled)return 0;let{warmResidentServer:y}=await Promise.resolve().then(()=>(Oe(),kt));return await y({...m,socketPath:w,wakeLockPath:g},{storeUri:k.storeUri,ttlDays:L(t.positional,"--ttl-days")??k.ttlDays,byteBudget:L(t.positional,"--byte-budget")??k.byteBudget,telemetryTtlDays:L(t.positional,"--telemetry-ttl-days")??k.telemetryTtlDays,telemetryByteBudget:L(t.positional,"--telemetry-byte-budget")??k.telemetryByteBudget,telemetryDrainIntervalMs:L(t.positional,"--telemetry-drain-interval-ms")??k.telemetryDrainIntervalMs}),0}let{existsSync:c}=await import("node:fs"),{fileURLToPath:l}=await import("node:url"),u=i(process.cwd());if(!t.storeUri&&r.storeUri.startsWith("file://")&&!c(l(r.storeUri)))return s?await Me("store not provisioned",t.positional,void 0,u.rootDir):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
66
+ `),1);let d=()=>Promise.resolve(new o(u,{storeUri:r.storeUri,ttlDays:r.ttlDays,byteBudget:r.byteBudget,telemetryTtlDays:r.telemetryTtlDays,telemetryByteBudget:r.telemetryByteBudget,telemetryDrainIntervalMs:r.telemetryDrainIntervalMs})),f=()=>a(u,{storeUri:r.storeUri,ttlDays:r.ttlDays,byteBudget:r.byteBudget,telemetryTtlDays:r.telemetryTtlDays,telemetryByteBudget:r.telemetryByteBudget,telemetryDrainIntervalMs:r.telemetryDrainIntervalMs}),R=async()=>{let{RspElisionStore:m}=await Promise.resolve().then(()=>(Pt(),On));return await m.open({uri:r.storeUri,ttlDays:r.ttlDays,byteBudget:r.byteBudget})},_=()=>r.storeUri.endsWith("/red-skills.rdb")?d():R(),E;try{if(!t.command||t.command==="stats"){let m=await _();E=()=>m.close();let w=await m.stats(),g=Du(m)?await m.telemetryStats(Wn(t.positional,30)):Ui(Wn(t.positional,30));return process.stdout.write(Uu(w,g,Cu(t.positional))),0}if(t.command==="gains"){let m=await _();if(E=()=>m.close(),!$u(m))return process.stdout.write(`error: rsp gains requires the shared RedDB store
67
+ `),1;let w=await m.telemetryGains(Wn(t.positional,28));return process.stdout.write(Mu(w)),0}if(t.command==="git"){try{await W(f)}catch(y){return await Me("resident unavailable",t.positional,y,u.rootDir)}if(ji(t.positional)){let y=process.hrtime.bigint();return await it(t,await Ci(),y)}let{runGitWrapper:m}=await Promise.resolve().then(()=>(hi(),gi)),w=new ot(()=>W(d));E=()=>w.close();let g=process.hrtime.bigint(),k=await W(()=>m(t.positional,{level:t.level,store:w,heavyGitByteThreshold:r.heavyGitByteThreshold}));return await it(t,k,g,w)}if(t.command==="gh"){try{await W(f)}catch(y){return await Me("resident unavailable",t.positional,y,u.rootDir)}let{runGhWrapper:m}=await Promise.resolve().then(()=>(Pi(),Ai)),w=new ot(()=>W(d));E=()=>w.close();let g=process.hrtime.bigint(),k=await W(()=>m(t.positional,{level:t.level,store:w}));return await it(t,k,g,w)}if(t.command==="vitest"||t.command==="cargo"){try{await W(f)}catch(y){return await Me("resident unavailable",t.positional,y,u.rootDir)}let{runTestWrapper:m}=await Promise.resolve().then(()=>(Li(),Ni)),w=new ot(()=>W(d));E=()=>w.close();let g=process.hrtime.bigint(),k=await W(()=>m(t.positional,{level:t.level,store:w}));return await it(t,k,g,w)}if(t.command==="show"&&t.handle){let m=await _();E=()=>m.close();let w=await m.get(t.handle);return w&&"original"in w&&w.original?(process.stdout.write(w.original),0):w?.status==="expired"?(process.stdout.write(`expired ${w.expired_at} \u2014 re-run: ${w.command}
66
68
  `),1):(process.stdout.write(`expired unknown \u2014 re-run: ${t.handle}
67
69
  `),1)}return process.stdout.write(`error: usage rsp show el:<id>
68
- `),2}catch(m){if(i)return await Se("wrapper failed",t.positional,m,u.rootDir);throw m}finally{await k?.()}}function ce(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function F(e,t){let n=ce(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function Rs(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function ou(e){let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(ue(),tt));return Nn(t(e).socketPath)}async function Es(){if(au(process.cwd()))return process.stdout.write(`git empty
69
- `),0;let{spawnSync:e}=await import("node:child_process");if(e("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return process.stdout.write(`git empty
70
- `),0;let n=e("git",["status","--porcelain=v1"],{encoding:"buffer"});return(n.status??0)!==0?(process.stdout.write(n.stdout),process.stderr.write(n.stderr),n.status??1):(process.stdout.write(n.stdout.length===0?`git empty
71
- `:n.stdout),0)}function au(e){try{return!Nn(`${e}/.git`)||Nn(`${e}/.git/index`)?!1:iu(e).every(t=>t===".git")}catch{return!1}}function cu(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}var Ke=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){let n=await this.open(),r=await n.mint(...t);return this.metrics=n.lastResponseMetrics?.(),r}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}};async function $n(e,t,n,r){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let i=Number(process.hrtime.bigint()-n)/1e6;return await lu(e,t,i,r.lastResponseMetrics()),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}async function lu(e,t,n,r){let i=Buffer.concat([t.stdout,t.stderr]),s=Buffer.concat([t.rawOutput??t.stdout,t.stderr]),{appendTelemetryEvent:o,RSP_TELEMETRY_INVOCATIONS_COLLECTION:a}=await Promise.resolve().then(()=>(bt(),Sn));await o(process.cwd(),{collection:a,ts:new Date().toISOString(),command:e.positional.join(" "),wrapper:e.command,loss:e.level,elided:!!(t.mintedHandle||t.bytesElided),raw_bytes:s.length,emitted_bytes:i.length,raw_text:s.toString("utf8"),emitted_text:i.toString("utf8"),wrapper_ms:n,store_open_count:r?.storeOpenCount,store_elapsed_ms:r?.storeElapsedMs})}async function Se(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
72
- `);let i=await du(t);if(r){let{appendTelemetryEvent:s,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(bt(),Sn));await s(r,{collection:o,ts:new Date().toISOString(),command:t.join(" "),reason:e})}return i}function In(){return"rsp is not enabled in this directory; run /red-setup"}async function J(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function uu(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"}async function du(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(i=>{r.on("error",s=>{process.stderr.write(`${s instanceof Error?s.message:String(s)}
73
- `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function fu(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let i=e[r];i==="--store-uri"?t.storeUri=e[++r]:i==="--brief"?t.level="brief":i==="--terse"?t.level="terse":i==="--query"?t.query=e[++r]:i.startsWith("--query=")?t.query=i.slice(8):n.push(i)}return t.query&&n[0]!=="show"&&!n.some(r=>r==="--query"||r.startsWith("--query="))&&n.push("--query",t.query),t.command=n[0],t.handle=n[1],t.positional=n,t}function _s(e){let t=ce(e,"--since")??e.find(i=>i.startsWith("--since="))?.slice(8);if(!t)return 30;let n=/^(\d+)(d)?$/.exec(t);if(!n)return 30;let r=Number(n[1]);return Number.isFinite(r)&&r>0?r:30}function pu(e){return e.includes("--full")}function mu(e,t=ks(30),n=!1){let r=t.savings.top_commands.slice(0,n?10:3),i=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7);return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,"savings:",` window_days: ${t.window_days}`,` empty: ${t.empty}`,` invocations: ${t.savings.invocations}`,` elided: ${t.savings.elided}`,` raw_bytes: ${t.savings.raw_bytes}`,` emitted_bytes: ${t.savings.emitted_bytes}`,` bytes_saved: ${t.savings.bytes_saved}`,` tokens_saved: ${t.savings.tokens_saved}`," daily_tokens_saved:",...yu(i),...!n&&t.savings.daily_tokens_saved.length>i.length?[` elided_days: ${t.savings.daily_tokens_saved.length-i.length}`," hint: --full"]:[]," top_commands:",...gu(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${wu(t.health.degradation_rate)}`,` most_recent_degradation_at: ${t.health.most_recent?.timestamp??"none"}`,` most_recent_degradation_reason: ${t.health.most_recent?.reason??"none"}`," degradations_by_reason:",...hu(t.health.by_reason),"latency:",` wrapper_ms_p50: ${Dn(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Dn(t.latency.wrapper_ms_p95)}`,` store_open_count_sum: ${t.latency.store_open_count_sum}`,` store_elapsed_ms_sum: ${t.latency.store_elapsed_ms_sum}`,` store_elapsed_ms_avg: ${Dn(t.latency.store_elapsed_ms_avg)}`,""].join(`
74
- `)}function yu(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function gu(e){return e.length===0?[" empty: true"]:e.map(t=>` - command: ${t.command} invocations: ${t.invocations} bytes_saved: ${t.bytes_saved} tokens_saved: ${t.tokens_saved}`)}function hu(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function Dn(e){return e==null?"none":String(e)}function wu(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function ks(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,by_reason:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null}}}function bu(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
75
- `)}import.meta.url===`file://${process.argv[1]}`&&su().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
76
- `),process.exit(1)});export{su as main,bu as renderSetupResult,mu as renderStats};
70
+ `),2}catch(m){if(s)return await Me("wrapper failed",t.positional,m,u.rootDir);throw m}finally{await E?.()}}function he(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function L(e,t){let n=he(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function ji(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Au(e){let{resolveResidentPaths:t}=await Promise.resolve().then(()=>(Oe(),kt));return zn(t(e).socketPath)}async function Ci(){if(Pu(process.cwd()))return{stdout:Buffer.from(`git empty
71
+ `),stderr:Buffer.alloc(0),status:0,signal:null};let{spawnSync:e}=await import("node:child_process");if(e("git",["diff-index","--quiet","HEAD","--"],{stdio:"ignore"}).status===0)return{stdout:Buffer.from(`git empty
72
+ `),stderr:Buffer.alloc(0),status:0,signal:null};let n=e("git",["status","--porcelain=v1"],{encoding:"buffer"});if((n.status??0)!==0)return{stdout:n.stdout,stderr:n.stderr,status:n.status??1,signal:n.signal};let r=n.stdout.length===0?Buffer.from(`git empty
73
+ `):n.stdout;return{stdout:r,stderr:n.stderr,status:0,signal:n.signal,rawOutput:r}}function Pu(e){try{return!zn(`${e}/.git`)||zn(`${e}/.git/index`)?!1:xu(e).every(t=>t===".git")}catch{return!1}}function Du(e){return typeof e=="object"&&e!==null&&"telemetryStats"in e&&typeof e.telemetryStats=="function"}function $u(e){return typeof e=="object"&&e!==null&&"telemetryGains"in e&&typeof e.telemetryGains=="function"}var ot=class{constructor(t){this.openStore=t}store;metrics;async mint(...t){let n=await this.open(),r=await n.mint(...t);return this.metrics=n.lastResponseMetrics?.(),r}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}};async function it(e,t,n,r){process.stdout.write(t.stdout),process.stderr.write(t.stderr);let s=Number(process.hrtime.bigint()-n)/1e6;return r?await Iu(e,t,s,r.lastResponseMetrics()):Nu(e,t,s),t.signal?(process.kill(process.pid,t.signal),128):t.status??0}async function Iu(e,t,n,r){let s=Buffer.concat([t.stdout,t.stderr]),i=Buffer.concat([t.rawOutput??t.stdout,t.stderr]),{appendTelemetryEvent:o,RSP_TELEMETRY_INVOCATIONS_COLLECTION:a}=await Promise.resolve().then(()=>(Lt(),Un));await o(process.cwd(),{collection:a,ts:new Date().toISOString(),command:e.positional.join(" "),wrapper:e.command,loss:e.level,elided:!!(t.mintedHandle||t.bytesElided),raw_bytes:i.length,emitted_bytes:s.length,raw_text:i.toString("utf8"),emitted_text:s.toString("utf8"),wrapper_ms:n,store_open_count:r?.storeOpenCount,store_elapsed_ms:r?.storeElapsedMs})}function Nu(e,t,n){try{let r=Buffer.concat([t.stdout,t.stderr]),s=Buffer.concat([t.rawOutput??t.stdout,t.stderr]),i=vu(process.cwd(),".red","tmp","rsp-telemetry.spool.jsonl"),o=`${JSON.stringify({collection:"rsp_telemetry_invocations_v1",ts:new Date().toISOString(),command:e.positional.join(" "),wrapper:e.command,loss:e.level,elided:!!(t.mintedHandle||t.bytesElided),raw_bytes:s.length,emitted_bytes:r.length,wrapper_ms:n})}
74
+ `;try{Bi(i,o,{encoding:"utf8",mode:384})}catch(a){if(a.code!=="ENOENT")return;Su(Tu(i),{recursive:!0}),Bi(i,o,{encoding:"utf8",mode:384})}}catch{}}async function Me(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
75
+ `);let s=await Bu(t);if(r){let{appendTelemetryEvent:i,RSP_TELEMETRY_DEGRADATIONS_COLLECTION:o}=await Promise.resolve().then(()=>(Lt(),Un));await i(r,{collection:o,ts:new Date().toISOString(),command:t.join(" "),reason:e})}return s}function Kn(){return"rsp is not enabled in this directory; run /red-setup"}async function W(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function Lu(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"}async function Bu(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)}
76
+ `),s(127)}),r.on("close",(i,o)=>{if(o){process.kill(process.pid,o),s(128);return}s(i??0)})})}function ju(e){let t={level:"lossless",positional:[]},n=[];for(let r=0;r<e.length;r++){let s=e[r];s==="--store-uri"?t.storeUri=e[++r]:s==="--brief"?t.level="brief":s==="--terse"?t.level="terse":s==="--query"?t.query=e[++r]:s.startsWith("--query=")?t.query=s.slice(8):n.push(s)}return t.query&&n[0]!=="show"&&!n.some(r=>r==="--query"||r.startsWith("--query="))&&n.push("--query",t.query),t.command=n[0],t.handle=n[1],t.positional=n,t}function Wn(e,t){let n=he(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 Cu(e){return e.includes("--full")}function Uu(e,t=Ui(30),n=!1){let r=t.savings.top_commands.slice(0,n?10:3),s=n?t.savings.daily_tokens_saved:t.savings.daily_tokens_saved.slice(-7);return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,"savings:",` window_days: ${t.window_days}`,` empty: ${t.empty}`,` invocations: ${t.savings.invocations}`,` elided: ${t.savings.elided}`,` raw_bytes: ${t.savings.raw_bytes}`,` emitted_bytes: ${t.savings.emitted_bytes}`,` bytes_saved: ${t.savings.bytes_saved}`,` tokens_saved: ${t.savings.tokens_saved}`," daily_tokens_saved:",...qu(s),...!n&&t.savings.daily_tokens_saved.length>s.length?[` elided_days: ${t.savings.daily_tokens_saved.length-s.length}`," hint: --full"]:[]," top_commands:",...Gu(r),"health:",` degradations: ${t.health.degradations}`,` degradation_rate: ${Ju(t.health.degradation_rate)}`,` most_recent_degradation_at: ${t.health.most_recent?.timestamp??"none"}`,` most_recent_degradation_reason: ${t.health.most_recent?.reason??"none"}`," degradations_by_reason:",...Fu(t.health.by_reason),"latency:",` wrapper_ms_p50: ${Yn(t.latency.wrapper_ms_p50)}`,` wrapper_ms_p95: ${Yn(t.latency.wrapper_ms_p95)}`,` store_open_count_sum: ${t.latency.store_open_count_sum}`,` store_elapsed_ms_sum: ${t.latency.store_elapsed_ms_sum}`,` store_elapsed_ms_avg: ${Yn(t.latency.store_elapsed_ms_avg)}`,""].join(`
77
+ `)}function Mu(e){return`${O(e)}
78
+ `}function qu(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.date}: ${t.tokens_saved}`)}function Gu(e){return e.length===0?[" empty: true"]:e.map(t=>` - command: ${t.command} invocations: ${t.invocations} bytes_saved: ${t.bytes_saved} tokens_saved: ${t.tokens_saved}`)}function Fu(e){return e.length===0?[" empty: true"]:e.map(t=>` ${t.reason}: ${t.count}`)}function Yn(e){return e==null?"none":String(e)}function Ju(e){return e.toFixed(4).replace(/0+$/,"").replace(/\.$/,".0")}function Ui(e){return{window_days:e,empty:!0,savings:{invocations:0,elided:0,raw_bytes:0,emitted_bytes:0,bytes_saved:0,tokens_saved:0,daily_tokens_saved:[],top_commands:[]},health:{degradations:0,degradation_rate:0,by_reason:[],most_recent:null},latency:{wrapper_ms_p50:null,wrapper_ms_p95:null,store_open_count_sum:0,store_elapsed_ms_sum:0,store_elapsed_ms_avg:null}}}function Vu(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
79
+ `)}import.meta.url===`file://${process.argv[1]}`&&Ou().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
80
+ `),process.exit(1)});export{Ou as main,Vu as renderSetupResult,Uu as renderStats};