@reddb-io/red-skills 2.32.9 → 2.33.1

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,52 +1,72 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- import{spawn as zi}from"node:child_process";import{existsSync as Qi}from"node:fs";import{fileURLToPath as Yi}from"node:url";import{createHash as Zt}from"node:crypto";import{mkdir as Xt,readFile as Ue,rename as en,writeFile as tn}from"node:fs/promises";import{basename as nn,dirname as We,join as rn}from"node:path";import{fileURLToPath as sn}from"node:url";var Re="rsp_elisions_v1",q=7,H=64*1024*1024,ue=class e{constructor(t,n){this.opts=n;this.path=t}document;path;static async open(t){if(process.env.RSP_FAIL_IF_STORE_OPEN==="1")throw new Error("RSP_FAIL_IF_STORE_OPEN blocked store open");let n=pn(t.uri),r=await ln(n),i=new e(r,{uri:t.uri,ttlDays:Me(t.ttlDays,q),byteBudget:Me(t.byteBudget,H),now:t.now??(()=>new Date)});return i.document=await un(i.path),i}async close(){}async mint(t,n){let r=Buffer.from(t),i=this.opts.now(),s=i.toISOString(),o=new Date(i.getTime()+this.opts.ttlDays*24*60*60*1e3).toISOString(),a=on(r,n),c=Ee(a),l={collection:Re,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[ke(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(!xe(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[Ee(t)];if(!ze(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:Ee(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:Re,handle:r.handle,original:i,command:r.command,created_at:r.created_at,loss:r.loss}:null}async stats(){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[ke(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[ke(t)];return Qe(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await Ye(this.path,this.document)}};function on(e,t){return`el:${Zt("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 Ee(e){return`record:${e.slice(3)}`}function ke(e){return`expired:${e.slice(3)}`}function xe(e){return/^el:[a-f0-9]{12}$/.test(e)}function Me(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function ze(e){return P(e)?e.collection===Re&&typeof e.handle=="string"&&xe(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"&&cn(e.loss):!1}function an(e){return!P(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>P(t)&&typeof t.handle=="string"&&xe(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 Qe(e){return P(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function cn(e){return P(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function P(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function un(e){try{let t=await Ue(e,"utf8");if(t.trim()==="")return Ke();let n=JSON.parse(t);if(mn(n))return n}catch(t){if(t.code==="ENOENT"){let n=Ke();return await Ye(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function ln(e){try{let t=await Ue(e);return dn(t)?fn(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function dn(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function fn(e){return nn(e)==="red.rdb"?rn(We(e),"tmp","rsp-elisions.json"):`${e}.json`}async function Ye(e,t){await Xt(We(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await tn(n,`${JSON.stringify(t)}
4
- `,"utf8"),await en(n,e)}function Ke(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function mn(e){return P(e)&&e.version===1&&P(e.records)&&Object.values(e.records).every(ze)&&P(e.tombstones)&&Object.values(e.tombstones).every(Qe)&&an(e.index)}function pn(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return sn(e)}import{existsSync as yn,readFileSync as gn}from"node:fs";import{dirname as je,join as Ae,resolve as Ze}from"node:path";var J=8*1024;function M(e,t,n){let r=hn(e,Ae(".red","config.yaml")),i=r?je(je(r)):e,s=r?gn(r,"utf8"):"",o=Xe(s,"rsp.enabled")==="true",a=Oe(Se(s,"rsp.ttlDays"),q),c=Oe(Se(s,"rsp.byteBudget"),H),l=Oe(wn(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??Se(s,"rsp.heavyGitByteThreshold"),J),u=n??t.RSP_STORE_URI??`file://${Ae(Ze(i),".red","tmp","rsp-elisions.json")}`;return{enabled:o,storeUri:u,ttlDays:a,byteBudget:c,heavyGitByteThreshold:l}}function hn(e,t){let n=Ze(e);for(let r=0;r<32;r++){let i=Ae(n,t);if(yn(i))return i;let s=je(n);if(s===n)return null;n=s}return null}function Se(e,t){let n=Xe(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Xe(e,t){let n=t.split("."),r=[];for(let i of e.split(`
5
- `)){let s=i.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let a=s.indexOf(":");if(a<0)continue;let c=s.length-s.trimStart().length,l=s.slice(0,a).trim();if(!l)continue;let u=bn(s.slice(a+1));for(;r.length>0&&r[r.length-1].indent>=c;)r.pop();if(r.push({indent:c,key:l}),u!==""&&r.map(d=>d.key).join(".")===n.join("."))return u}}function bn(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Oe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function wn(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}import{spawn as hr}from"node:child_process";var En="null",de={comma:",",tab:" ",pipe:"|"},T=de.comma;function st(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 ot(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+=`
6
- `,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 ye(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 $e(e,t,n=0){let r=!1,i=n;for(;i<e.length;){if(e[i]==="\\"&&i+1<e.length&&r){i+=2;continue}if(e[i]==='"'){r=!r,i++;continue}if(e[i]===t&&!r)return i;i++}return-1}var x=class extends SyntaxError{constructor(e,t){let n=t?.line!==void 0?`Line ${t.line}: `:"";super(n+e,t?.cause!==void 0?{cause:t.cause}:void 0),this.name="ToonDecodeError",this.line=t?.line,this.source=t?.source}};function R(e,t){try{return t()}catch(n){throw n instanceof x?n:n instanceof Error?new x(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}var kn=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;function at(e){return e==="true"||e==="false"||e==="null"}function Rn(e){if(!e||!kn.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function fe(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let p=ye(r,0);if(p===-1||!r.slice(p+1).startsWith("["))return;let b=e.length-r.length+p+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 p=e.slice(s+1,c);if(p!==""){if(n){let D=p.trim();throw new SyntaxError(D===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${D}" 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 p=u.trim();throw new SyntaxError(p===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${p}" between bracket segment and colon`)}return}let d;if(i>0){let p=e.slice(0,i).trim();d=p.startsWith('"')?Te(p):p}let f=e.slice(o+1).trim(),g=e.slice(i+1,s),y;try{y=Sn(g,t)}catch(p){if(n)throw p;return}let{length:O,delimiter:k}=y,te;if(c!==-1&&c<o){let p=e.indexOf("}",c);if(p!==-1&&p<o){let b=e.slice(c+1,p),D=jn(b,k);if(D!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${et(k)}" but fields segment contains unquoted "${et(D)}"`);return}te=_e(b,k).map(Yt=>Te(Yt.trim()))}}return{header:{key:d,length:O,delimiter:k,fields:te},inlineValues:f||void 0}}var xn=/^(?:0|[1-9]\d*)$/;function Sn(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=de.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=de.pipe,n=n.slice(0,-1)),!xn.test(n))throw new SyntaxError(`Invalid array length: "${e}" (expected non-negative integer with no leading zeros)`);return{length:Number.parseInt(n,10),delimiter:r}}var On=[","," ","|"];function jn(e,t){for(let n of On)if(n!==t&&$e(e,n)!==-1)return n}function et(e){return e===" "?"\\t":e}function _e(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 ct(e){return e.map(t=>ge(t))}function ge(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return Te(t);if(at(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(Rn(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function Te(e){let t=e.trim();if(t.startsWith('"')){let n=ye(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 ot(t.slice(1,n))}return t}function An(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 Tn(e,t){let n=ye(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=ot(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 vn(e,t){let n=e[t]==='"';return{...n?Tn(e,t):An(e,t),isQuoted:n}}function ut(e){return e.trim().startsWith("[")&&$e(e,":")!==-1}function $n(e){return $e(e,":")!==-1}function _n(){return{lineNumber:0,blankLines:[]}}function Pn(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=tt(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=tt(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new x("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new x(`Indentation must be exact multiple of ${n}, but found ${s} spaces`,{line:i,source:e})}return{raw:e,indent:s,content:o,depth:a,lineNumber:i}}function*Ln(e,t,n,r){for(let i of e){let s=Pn(i,r,t,n);s!==void 0&&(yield s)}}function tt(e,t){return Math.floor(e/t)}function ne(e,t,n,r,i){if(r.strict&&e!==t)throw new x(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Bn(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new x(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function In(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Nn(e.content,n.delimiter))throw new x(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function lt(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new x(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Nn(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}var Cn=class{constructor(e,t){this.buffer=[],this.done=!1,this.generator=e,this.scanState=t}getBlankLines(){return this.scanState.blankLines}async peek(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=await this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}async next(){let e=await this.peek();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}async advance(){await this.next()}current(){return this.lastLine}async atEnd(){return await this.peek()===void 0}peekSync(){if(this.buffer.length>0)return this.buffer[0];if(this.done)return;let e=this.generator.next();if(e.done){this.done=!0;return}return this.buffer.push(e.value),e.value}nextSync(){let e=this.peekSync();return e!==void 0&&(this.buffer.shift(),this.lastLine=e),e}advanceSync(){this.nextSync()}atEndSync(){return this.peekSync()===void 0}};function*Dn(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=_n(),i=new Cn(Ln(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(ut(s.content)){let a=R(s,()=>fe(s.content,T,n.strict));if(a){i.advanceSync(),yield*me(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!rt(s)){yield{type:"primitive",value:R(s,()=>ge(s.content.trim()))};return}if(!rt(s)&&i.peekSync()?.depth===0)throw new x("Top-level document must start with a key-value or array-header line",{line:s.lineNumber,source:s.raw});let o=n.strict?new Set:void 0;for(yield{type:"startObject"},yield*K(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*K(a,i,0,n,o)}yield{type:"endObject"}}function nt(e,t,n){if(n){if(n.has(e))throw new x(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*K(e,t,n,r,i){let s=e.content,o=R(e,()=>fe(s,T,r.strict));if(o&&o.header.key!==void 0){nt(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*me(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=R(e,()=>vn(s,0)),l=s.indexOf(":",a.length),u=l>=0?s.slice(l+1).trim():"";if(nt(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*Jn(t,n+1,r),yield{type:"endObject"};return}yield{type:"startObject"},yield{type:"endObject"};return}if(u==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}yield{type:"primitive",value:R(e,()=>ge(u))}}function*Jn(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*K(s,e,r,n,i);else break}}function*me(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*Gn(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Fn(e,n,r,i,s),yield{type:"endArray"};return}yield*Vn(e,n,r,i,s),yield{type:"endArray"}}function*Gn(e,t,n,r){if(!t.trim()){ne(0,e.length,"inline array items",n,r);return}let i=R(r,()=>_e(t,e.delimiter)),s=R(r,()=>ct(i));ne(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Fn(e,t,n,r,i){let s=n+1,o=0,a,c,l=i;for(;!t.atEndSync()&&o<e.length;){let u=t.peekSync();if(!u||u.depth<s)break;if(u.depth===s){a===void 0&&(a=u.lineNumber),c=u.lineNumber,l=u,t.advanceSync();let d=R(u,()=>_e(u.content,e.delimiter));ne(d.length,e.fields.length,"tabular row values",r,u);let f=R(u,()=>ct(d));yield*Hn(e.fields,f),o++}else break}ne(o,e.length,"tabular rows",r,l),r.strict&&a!==void 0&&c!==void 0&&lt(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&In(t.peekSync(),s,e)}function*Vn(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*qn(t,s,r);let f=t.current();f&&(c=f.lineNumber,l=f),o++}else break}ne(o,e.length,"list array items",r,l),r.strict&&a!==void 0&&c!==void 0&&lt(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Bn(t.peekSync(),s,e.length)}function*qn(e,t,n){let r=e.nextSync();if(!r)throw new ReferenceError("Expected list item");let i;if(r.content==="-"){yield{type:"startObject"},yield{type:"endObject"};return}else if(r.content.startsWith("- "))i=r.content.slice(2);else throw new x('Expected list item to start with "- "',{line:r.lineNumber,source:r.raw});if(!i.trim()){yield{type:"startObject"},yield{type:"endObject"};return}if(i.trim()==="[]"){yield{type:"startArray",length:0},yield{type:"endArray"};return}let s={...r,content:i};if(ut(i)){let a=R(s,()=>fe(i,T,n.strict));if(a){yield*me(a.header,a.inlineValues,e,t,n,s);return}}let o=R(s,()=>fe(i,T,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*me(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*K(u,e,l,n,c);else break}yield{type:"endObject"};return}if($n(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*K(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*K(l,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:R(s,()=>ge(i))}}function rt(e){let t=e.content;if(t.startsWith('"')){let n=ye(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*Hn(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 _(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 _(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(_);if(e instanceof Set)return Array.from(e).map(_);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),_(n)]));if(Mn(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=_(e[n]));return t}return null}function G(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function L(e){return Array.isArray(e)}function h(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function re(e){return Object.keys(e).length===0}function Mn(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=>G(t))}function Kn(e){return e.length===0||e.every(t=>L(t))}function dt(e){return e.length===0||e.every(t=>h(t))}var Un=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,Wn=/^0\d+$/;function zn(e){return/^[A-Z_][\w.]*$/i.test(e)}function ft(e){return/^[A-Z_]\w*$/i.test(e)}function Qn(e,t=T){return!(!e||e!==e.trim()||at(e)||Yn(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function Yn(e){return Un.test(e)||Wn.test(e)}var mt=Symbol("quotedKey");function le(e,t){if(Array.isArray(e))return e.map(n=>le(n,t));if(h(e)){let n={},r=e[mt];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=>ft(l))){Zn(n,c,le(s,t),t);continue}}let a=le(s,t);if(i in n){let c=n[i];if(Le(c,a))Pe(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 Zn(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(h(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(Le(o,n))Pe(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 Pe(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(Le(s,i))Pe(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 Le(e,t){return h(e)&&h(t)}function Xn(e){let t={stack:[],root:void 0};for(let n of e)er(t,n);return tr(t)}function er(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,mt,{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 tr(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 nr(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!h(t))return;let{segments:a,tail:c,leafValue:l}=rr(e,t,o??r.flattenDepth);if(a.length<2||!a.every(f=>ft(f)))return;let u=ir(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 rr(e,t,n){let r=[e],i=t;for(;r.length<n&&h(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!h(i)||re(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function ir(e){return e.join(".")}function W(e,t){return e===null?En:typeof e=="boolean"||typeof e=="number"?String(e):sr(e,t)}function sr(e,t=T){return Qn(e,t)?e:`"${st(e)}"`}function z(e){return zn(e)?e:`"${st(e)}"`}function pt(e,t=T){return e.map(n=>W(n,t)).join(t)}function F(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=z(n)),s+=`[${e}${i!==T?i:""}]`,r){let o=r.map(a=>z(a));s+=`{${o.join(i)}}`}return s+=":",s}function*or(e,t,n){if(G(e)){let r=W(e,t.delimiter);r!==""&&(yield r);return}L(e)?yield*ve(void 0,e,n,t):h(e)&&(yield*U(e,n,t))}function*U(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*ar(c,l,t,n,o,r,i,a)}function*ar(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=nr(e,t,i,r,s,o,l);if(d){let{foldedKey:f,remainder:g,leafValue:y,segmentCount:O}=d,k=z(f);if(g===void 0){if(G(y)){yield w(n,`${k}: ${W(y,r.delimiter)}`,r.indent);return}else if(L(y)){yield*ve(f,y,n,r);return}else if(h(y)&&re(y)){yield w(n,`${k}:`,r.indent);return}}if(h(g)){yield w(n,`${k}:`,r.indent);let te=l-O,p=o?`${o}.${f}`:f;yield*U(g,n+1,r,s,p,te);return}}}let u=z(e);G(t)?yield w(n,`${u}: ${W(t,r.delimiter)}`,r.indent):L(t)?yield*ve(e,t,n,r):h(t)&&(yield w(n,`${u}:`,r.indent),re(t)||(yield*U(t,n+1,r,s,c,l)))}function*ve(e,t,n,r){if(t.length===0){yield w(n,e!=null?`${z(e)}: []`:"[]",r.indent);return}if(ie(t)){yield w(n,he(t,r.delimiter,e),r.indent);return}if(Kn(t)&&t.every(i=>ie(i))){yield*cr(e,t,n,r);return}if(dt(t)){let i=yt(t);i?yield*ur(e,t,i,n,r):yield*it(e,t,n,r);return}yield*it(e,t,n,r)}function*cr(e,t,n,r){yield w(n,F(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(ie(i)){let s=he(i,r.delimiter);yield A(n+1,s,r.indent)}}function he(e,t,n){let r=F(e.length,{key:n,delimiter:t}),i=pt(e,t);return e.length===0?r:`${r} ${i}`}function*ur(e,t,n,r,i){yield w(r,F(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*gt(t,n,r+1,i)}function yt(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&lr(e,n))return n}function lr(e,t){for(let n of e){if(Object.keys(n).length!==t.length)return!1;for(let r of t)if(!(r in n)||!G(n[r]))return!1}return!0}function*gt(e,t,n,r){for(let i of e)yield w(n,pt(t.map(s=>i[s]),r.delimiter),r.indent)}function*it(e,t,n,r){yield w(n,F(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*Be(i,n+1,r)}function*dr(e,t,n){if(re(e)){yield w(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(L(s)&&dt(s)){let c=yt(s);if(c){yield A(t,F(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*gt(s,c,t+2,n),o.length>0&&(yield*U(Object.fromEntries(o),t+1,n));return}}let a=z(i);if(G(s))yield A(t,`${a}: ${W(s,n.delimiter)}`,n.indent);else if(L(s))if(s.length===0)yield A(t,`${a}: []`,n.indent);else if(ie(s))yield A(t,`${a}${he(s,n.delimiter)}`,n.indent);else{yield A(t,`${a}${F(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*Be(c,t+2,n)}else h(s)&&(yield A(t,`${a}:`,n.indent),re(s)||(yield*U(s,t+2,n)));o.length>0&&(yield*U(Object.fromEntries(o),t+1,n))}function*Be(e,t,n){if(G(e))yield A(t,W(e,n.delimiter),n.indent);else if(L(e))if(ie(e))yield A(t,he(e,n.delimiter),n.indent);else{yield A(t,F(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*Be(r,t+1,n)}else h(e)&&(yield*dr(e,t,n))}function w(e,t,n){return" ".repeat(n*e)+t}function A(e,t,n){return w(e,"- "+t,n)}function fr(e,t){let n=t("",e,[]);return n===void 0?pe(e,t,[]):pe(_(n),t,[])}function pe(e,t,n){return h(e)?mr(e,t,n):L(e)?pr(e,t,n):e}function mr(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]=pe(_(a),t,o))}return r}function pr(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=_(a);r.push(pe(c,t,o))}return r}function E(e,t){return Array.from(ht(e,t)).join(`
7
- `)}function Ie(e,t){return bt(e.split(`
8
- `),t)}function ht(e,t){let n=_(e),r=yr(t);return or(r.replacer?fr(n,r.replacer):n,r,0)}function bt(e,t){let n=gr(t),r=Xn(Dn(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?le(r,n.strict):r}function yr(e){return{indent:e?.indent??2,delimiter:e?.delimiter??T,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function gr(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}function B(e){let t=[],n;for(let r=0;r<e.length;r++){let i=e[r];if(i==="--query"){n=e[++r];continue}if(i.startsWith("--query=")){n=i.slice(8);continue}t.push(i)}return{argv:t,query:n?.trim()||void 0}}function wt(e,t){if(!t)return!0;let n=Ne(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function S(e,t){return t?e.filter(n=>wt(n,t)):[...e]}function Q(e,t){if(!t)return e;let r=e.split(`
9
- `).filter(i=>i&&wt(i,t));return r.length>0?`${r.join(`
10
- `)}
11
- `:""}function I(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function Ne(e){return Array.isArray(e)?e.map(Ne).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Ne).join(" "):String(e??"")}var br=["%h","%an","%as","%s"];async function Et(e,t){let n=kt(e),r=Rt(n.argv),i=await xr(r,n.argv.slice(1));return wr(e,i,t)}async function wr(e,t,n){let r=kt(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Q(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=Rt(r.argv),s=Sr(i,r.argv,t.stdout,r.query);if(s===`git empty
12
- `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=$r(i,s);if(o)return{stdout:Buffer.from(`${o}
13
- `),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s,oneLine:!0};let a=E(s);if(Er(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=Ir(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}
14
- `;return{stdout:Buffer.from(`${E(c.payload)}
15
- ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:c.payload,mintedHandle:u,bytesElided:l,rowsElided:c.rowsElided}}function kt(e){let t=B(e),n=[],r=!1;for(let i of t.argv){if(i==="--full"){r=!0;continue}n.push(i)}return{argv:n,query:t.query,full:r}}function Er(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!kr(e)||r.level!=="lossless")return!0;let i=Br(r.heavyGitByteThreshold,J);return Buffer.byteLength(t)<=i}function kr(e){return e==="diff"||e==="log"}function Rt(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 Rr(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${br.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n]}}async function xr(e,t){let n=hr("git",Rr(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 Sr(e,t,n,r){switch(e){case"status":return Or(t,n,r);case"log":return jr(t,n,r);case"diff":return Ar(t,n,r);case"commit":return se(Tr(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return se(vr(t,n),r,["rsp gh pr list --query <branch>"])}}function Or(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:Pr(l)})}if(i.length===0)return`git empty
16
- `;let s=S(i,n),o=Lr(s,"state");return se({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 jr(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=S(r,n);return se({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 Ar(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=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 se({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 Tr(e,t){let n=t.split(`
17
- `)[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 vr(e,t){let n=t.split(`
18
- `).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,g]=(u??"").split(":");return{flag:l??"",from:f??"",to:g??"",summary:d}}),s=i.find(c=>c.flag!=="=")??i[0],o=s?.to.startsWith("refs/heads/")?s.to.slice(11):s?.to??"",a=s?.summary.includes("..")?1:0;return{command:e.join(" "),remote:r,refs:i,summary:`pushed ${o} -> ${r} +${a} commits`}}function se(e,t,n){return t?I(e,n):e}function $r(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=>_r(s)&&s.flag!=="=").length===1?String(t.summary??""):null}return null}function _r(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pr(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Lr(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function Br(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ir(e){for(let t of["rows","commits","files","refs"]){let n=e[t];if(Array.isArray(n)&&n.length>1)return{payload:{...e,[t]:n.slice(0,1)},rowsElided:n.length-1}}return null}import{spawn as St}from"node:child_process";var Nr={"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"]},Cr={"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"]},Je=160,Dr=160;async function Ot(e,t){let n=jt(e),r=await Fr(n);return Jr(e,r,t)}async function Jr(e,t,n){let r=B(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(Q(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=jt(e),s=be(t.stdout),o=qr(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=Qr(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let y=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=y}let c=a?.target.truncated.handle||void 0,l=E(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=Yr(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 g=`\u2026 elided ${u.rowsElided} rows (+${d}) \u2014 rsp show ${f}
19
- `;return{stdout:Buffer.from(`${E(u.payload)}
20
- ${g}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:f,bytesElided:d,rowsElided:u.rowsElided}}function jt(e){let t=B(e);if(t.argv[0]!=="gh")throw new Error("expected rsp gh <surface> <subcommand>");let n=t.argv[1],r=t.argv[2];if(!(n==="pr"||n==="issue"||n==="run"))throw new Error(`unsupported gh surface: ${n??""}`);let i=n==="pr"&&r&&r!=="list"&&r!=="view";if(!(r==="list"||r==="view"||i))throw new Error(`unsupported gh subcommand: ${r??""}`);let s=[],o=!1,a=!1;for(let l of t.argv.slice(3))l==="--full"?o=!0:l==="--wide"?a=!0:s.push(l);return{kind:n,action:i?"combined":r==="list"?"list":"view",target:i?r:void 0,full:o,wide:a,passthrough:s,query:t.query}}function Gr(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?Cr[t]:Nr[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function Fr(e){if(e.action==="combined")return await Vr(e);let t=St("gh",Gr(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 Vr(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([Ce(["pr","view",t,"--json",n.join(",")]),Ce(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),Ce(["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:be(i.stdout),checks:be(s.stdout),comments:be(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function Ce(e){let t=St("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 qr(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return Ur(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=Z(n).map(o=>At(o,e.wide)),s=S(i,e.query);return Y({...r,prs:s,summary:`${De(s.length,i.length,e.query)} ${xt(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return Y({...r,pr:Tt(v(n),e),summary:`PR #${V(v(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Hr(e,t,v(n));case"issue:list":{let i=Z(n).map(o=>vt(o,e.wide)),s=S(i,e.query);return Y({...r,issues:s,summary:`${De(s.length,i.length,e.query)} ${xt(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return Y({...r,issue:Wr(v(n),e),summary:`issue #${V(v(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=Z(n).map(o=>$t(o,e.wide)),s=S(i,e.query);return Y({...r,runs:s,summary:`${De(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 Y({...r,run:zr(v(n),e),summary:`run ${V(v(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Hr(e,t,n){let r=Tt(v(n.view),{...e,action:"view",wide:!0}),i=S(Z(n.checks).map(Mr),e.query),s=v(n.comments).comments,o=S(Z(s).map(Kr).slice(-3),e.query);return I({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${V(v(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 Mr(e){return{name:m(e,"name"),state:oe(e),bucket:m(e,"bucket"),conclusion:m(e,"conclusion"),workflow:m(e,"workflow"),link:m(e,"link")}}function Kr(e){return{author:Lt(e.author),body:we(e,"body",Je,!1),created:m(e,"createdAt")}}function Ur(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
21
- `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
22
- `:`0 runs \u2014 try: rsp gh run list --limit 20
23
- `}function At(e,t){let n={number:V(e,"number"),title:m(e,"title"),state:oe(e),draft:!!e.isDraft};return t&&Object.assign(n,_t(e)),n}function Tt(e,t){let n=At(e,t.wide);return n.body=we(e,"body",Je,t.full),t.wide&&(n.base=m(e,"baseRefName"),n.head=m(e,"headRefName")),n}function vt(e,t){let n={number:V(e,"number"),title:m(e,"title"),state:oe(e),labels:Pt(e.labels)};return t&&Object.assign(n,_t(e)),n}function Wr(e,t){let n=vt(e,t.wide);return n.body=we(e,"body",Je,t.full),n}function $t(e,t){let n={id:V(e,"databaseId"),name:m(e,"name"),status:oe(e),conclusion:m(e,"conclusion")};return t&&(n.event=m(e,"event"),n.branch=m(e,"headBranch"),n.workflow=m(e,"workflowName"),n.created=m(e,"createdAt")),n}function zr(e,t){let n=$t(e,t.wide),r=Z(e.jobs).map(i=>({name:m(i,"name"),status:oe(i),conclusion:m(i,"conclusion"),log:we(i,"log",Dr,t.full)}));return n.jobs=r,n}function we(e,t,n,r){let i=m(e,t);if(r||Buffer.byteLength(i)<=n)return i;let s=i.slice(0,n),o={preview:s,truncated:{bytes:Buffer.byteLength(i),shown_bytes:Buffer.byteLength(s),hint:"--full",handle:""}};return Object.defineProperty(o,"__rsp_original",{value:i,enumerable:!1}),o}function Qr(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(X(n)){if(X(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 Yr(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 xt(e,t){return e.every(n=>n.state===t)?t:"returned"}function De(e,t,n){return n?`${e}/${t}`:String(e)}function Y(e,t,n){return t.query?I(e,n):e}function oe(e){return(m(e,"state")||m(e,"status")).toLowerCase()}function _t(e){return{author:Lt(e.author),labels:Pt(e.labels),url:m(e,"url"),updated:m(e,"updatedAt")}}function Pt(e){return Array.isArray(e)?e.map(t=>X(t)?m(t,"name"):String(t)).filter(Boolean):[]}function Lt(e){return X(e)?m(e,"login"):""}function be(e){return e.trim()?JSON.parse(e):null}function Z(e){return Array.isArray(e)?e.filter(X):[]}function v(e){return X(e)?e:{}}function m(e,t){let n=e[t];return typeof n=="string"?n:""}function V(e,t){let n=e[t];return typeof n=="number"?n:0}function X(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{readFileSync as Bt}from"node:fs";var 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"]}],Zr=Xr(It);function Xr(e){let t=new Map;for(let n of e)t.set(ae(n.command),["rsp",...n.wrapper]);return t}function ei(e){let t=si(e);if(!t)return{kind:"passthrough"};if(t.length>0&&Ct(t[0]))return{kind:"passthrough"};let n=Zr.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 ti(e,t){let n=oi(e),r=j(n,["cwd"])||j(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??ri)(r))return{kind:"passthrough",reason:"disabled"};let s=ii(n);return s?(t.rewrite??ei)(s):{kind:"passthrough",reason:"missing-command"}}function ni(e){return e.kind==="rewrite"?{stdout:`${e.command}
24
- `,status:0}:{stdout:"",status:1}}async function Nt(e){let t=e?Bt(e,"utf8"):Bt(0,"utf8"),n=await ti(t,{cwd:process.cwd()}),r=ni(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function ri(e){return M(e,process.env).enabled}function ii(e){return j(e,["tool_input","command"])||j(e,["tool_input","cmd"])||j(e,["tool_input","args","command"])||j(e,["input","command"])||j(e,["input","cmd"])||j(e,["arguments","command"])||j(e,["arguments","cmd"])||j(e,["command"])||j(e,["cmd"])}function si(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("=")&&Ct(r))?null:n}function Ct(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function ae(e){return e.join("\0")}function oi(e){try{let t=JSON.parse(e);return Dt(t)?t:{}}catch{return{}}}function j(e,t){let n=e;for(let r of t){if(!Dt(n))return"";n=n[r]}return typeof n=="string"?n:""}function Dt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{readFileSync as Jt}from"node:fs";var ai={id:"ansi",apply:hi},ci={id:"cr-progress",apply:e=>e.split(`
3
+ var bi=Object.defineProperty;var Ri=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var $=(e,t)=>{for(var n in t)bi(e,n,{get:t[n],enumerable:!0})};var Xt={};$(Xt,{DEFAULT_RSP_BYTE_BUDGET:()=>D,DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>L,DEFAULT_RSP_STORE_PATH:()=>Pe,DEFAULT_RSP_TTL_DAYS:()=>j,resolveRspConfig:()=>z});import{existsSync as Ei,readFileSync as Si}from"node:fs";import{dirname as Ze,join as Xe,resolve as Yt}from"node:path";function z(e,t,n){let r=ki(e,Xe(".red","config.yaml")),i=r?Ze(Ze(r)):e,s=r?Si(r,"utf8"):"",o=Zt(s,"rsp.enabled")==="true",a=Ye(Qe(s,"rsp.ttlDays"),j),c=Ye(Qe(s,"rsp.byteBudget"),D),l=Ye(Oi(t.RSP_HEAVY_GIT_BYTE_THRESHOLD)??Qe(s,"rsp.heavyGitByteThreshold"),L),u=n??t.RSP_STORE_URI??`file://${Xe(Yt(i),Pe)}`;return{enabled:o,storeUri:u,ttlDays:a,byteBudget:c,heavyGitByteThreshold:l}}function ki(e,t){let n=Yt(e);for(let r=0;r<32;r++){let i=Xe(n,t);if(Ei(i))return i;let s=Ze(n);if(s===n)return null;n=s}return null}function Qe(e,t){let n=Zt(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)?r:void 0}function Zt(e,t){let n=t.split("."),r=[];for(let i of e.split(`
4
+ `)){let s=i.replace(/\r$/,""),o=s.trim();if(!o||o.startsWith("#"))continue;let a=s.indexOf(":");if(a<0)continue;let c=s.length-s.trimStart().length,l=s.slice(0,a).trim();if(!l)continue;let u=xi(s.slice(a+1));for(;r.length>0&&r[r.length-1].indent>=c;)r.pop();if(r.push({indent:c,key:l}),u!==""&&r.map(d=>d.key).join(".")===n.join("."))return u}}function xi(e){let t=e.indexOf(" #");return(t>=0?e.slice(0,t):e).trim()}function Ye(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Oi(e){if(e==null||e.trim()==="")return;let t=Number(e);return Number.isFinite(t)?t:void 0}var L,Pe,j,D,B=g(()=>{"use strict";L=8*1024,Pe=".red/tmp/red-skills.rdb",j=7,D=64*1024*1024});var cn={};$(cn,{RSP_WRAPPER_CAPABILITIES:()=>et,formatHookDecision:()=>sn,hookDecisionFromClaudePreExecJson:()=>rn,rewriteCommand:()=>nn,rewriteTableFromCapabilities:()=>tn,runClaudePreExecHook:()=>Ti});import{readFileSync as en}from"node:fs";function tn(e){let t=new Map;for(let n of e)t.set(me(n.command),["rsp",...n.wrapper]);return t}function nn(e){let t=Pi(e);if(!t)return{kind:"passthrough"};if(t.length>0&&on(t[0]))return{kind:"passthrough"};let n=Ai.get(me(t));if(!n)return{kind:"passthrough"};let r=et.find(i=>me(i.command)===me(t));return{kind:"rewrite",command:n.join(" "),capabilityId:r?.id??me(t)}}async function rn(e,t){let n=Ii(e),r=_(n,["cwd"])||_(n,["tool_input","cwd"])||t.cwd;if(!await(t.isEnabled??$i)(r))return{kind:"passthrough",reason:"disabled"};let s=_i(n);return s?(t.rewrite??nn)(s):{kind:"passthrough",reason:"missing-command"}}function sn(e){return e.kind==="rewrite"?{stdout:`${e.command}
5
+ `,status:0}:{stdout:"",status:1}}async function Ti(e){let t=e?en(e,"utf8"):en(0,"utf8"),n=await rn(t,{cwd:process.cwd()}),r=sn(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function $i(e){return z(e,process.env).enabled}function _i(e){return _(e,["tool_input","command"])||_(e,["tool_input","cmd"])||_(e,["tool_input","args","command"])||_(e,["input","command"])||_(e,["input","cmd"])||_(e,["arguments","command"])||_(e,["arguments","cmd"])||_(e,["command"])||_(e,["cmd"])}function Pi(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("=")&&on(r))?null:n}function on(e){return/^[A-Za-z_][A-Za-z0-9_]*=.*/.test(e)}function me(e){return e.join("\0")}function Ii(e){try{let t=JSON.parse(e);return an(t)?t:{}}catch{return{}}}function _(e,t){let n=e;for(let r of t){if(!an(n))return"";n=n[r]}return typeof n=="string"?n:""}function an(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var et,Ai,ln=g(()=>{"use strict";B();et=[{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"]}],Ai=tn(et)});function yn(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 hn(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+=`
6
+ `,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 De(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 rt(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 O(e,t){try{return t()}catch(n){throw n instanceof A?n:n instanceof Error?new A(n.message,{line:e.lineNumber,source:e.raw,cause:n}):n}}function gn(e){return e==="true"||e==="false"||e==="null"}function Li(e){if(!e||!vi.test(e))return!1;let t=Number(e);return!Number.isNaN(t)&&Number.isFinite(t)}function ve(e,t,n=!1){let r=e.trimStart(),i=-1;if(r.startsWith('"')){let R=De(r,0);if(R===-1||!r.slice(R+1).startsWith("["))return;let S=e.length-r.length+R+1;i=e.indexOf("[",S)}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 R=e.slice(s+1,c);if(R!==""){if(n){let W=R.trim();throw new SyntaxError(W===""?"Unexpected whitespace between bracket and fields segment":`Unexpected content "${W}" between bracket and fields segment`)}return}let S=e.indexOf("}",c);S!==-1&&(a=S+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 R=u.trim();throw new SyntaxError(R===""?"Unexpected whitespace between bracket segment and colon":`Unexpected content "${R}" between bracket segment and colon`)}return}let d;if(i>0){let R=e.slice(0,i).trim();d=R.startsWith('"')?tt(R):R}let m=e.slice(o+1).trim(),w=e.slice(i+1,s),p;try{p=Di(w,t)}catch(R){if(n)throw R;return}let{length:y,delimiter:h}=p,pe;if(c!==-1&&c<o){let R=e.indexOf("}",c);if(R!==-1&&R<o){let S=e.slice(c+1,R),W=Ui(S,h);if(W!==void 0){if(n)throw new SyntaxError(`Header delimiter mismatch: bracket declares "${un(h)}" but fields segment contains unquoted "${un(W)}"`);return}pe=it(S,h).map(wi=>tt(wi.trim()))}}return{header:{key:d,length:y,delimiter:h,fields:pe},inlineValues:m||void 0}}function Di(e,t){let n=e,r=t;if(n.endsWith(" ")?(r=Ne.tab,n=n.slice(0,-1)):n.endsWith("|")&&(r=Ne.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 Ui(e,t){for(let n of Bi)if(n!==t&&rt(e,n)!==-1)return n}function un(e){return e===" "?"\\t":e}function it(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 wn(e){return e.map(t=>Be(t))}function Be(e){let t=e.trim();if(!t)return"";if(t.startsWith('"'))return tt(t);if(gn(t)){if(t==="true")return!0;if(t==="false")return!1;if(t==="null")return null}if(Li(t)){let n=Number.parseFloat(t);return Object.is(n,-0)?0:n}return t}function tt(e){let t=e.trim();if(t.startsWith('"')){let n=De(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 hn(t.slice(1,n))}return t}function Ci(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 qi(e,t){let n=De(e,t);if(n===-1)throw new SyntaxError("Unterminated quoted key");let r=hn(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 Ji(e,t){let n=e[t]==='"';return{...n?qi(e,t):Ci(e,t),isQuoted:n}}function bn(e){return e.trim().startsWith("[")&&rt(e,":")!==-1}function Gi(e){return rt(e,":")!==-1}function Fi(){return{lineNumber:0,blankLines:[]}}function Mi(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=dn(s,n);t.blankLines.push({lineNumber:i,indent:s,depth:c});return}let a=dn(s,n);if(r){let c=0;for(;c<e.length&&(e[c]===" "||e[c]===" ");)c++;if(e.slice(0,c).includes(" "))throw new A("Tabs are not allowed in indentation in strict mode",{line:i,source:e});if(s>0&&s%n!==0)throw new A(`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*Vi(e,t,n,r){for(let i of e){let s=Mi(i,r,t,n);s!==void 0&&(yield s)}}function dn(e,t){return Math.floor(e/t)}function ye(e,t,n,r,i){if(r.strict&&e!==t)throw new A(`Expected ${t} ${n}, but got ${e}`,{line:i.lineNumber,source:i.raw})}function Hi(e,t,n){if(e?.depth===t&&e.content.startsWith("- "))throw new A(`Expected ${n} list array items, but found more`,{line:e.lineNumber,source:e.raw})}function Ki(e,t,n){if(e?.depth===t&&!e.content.startsWith("- ")&&Wi(e.content,n.delimiter))throw new A(`Expected ${n.length} tabular rows, but found more`,{line:e.lineNumber,source:e.raw})}function Rn(e,t,n,r,i){if(!r)return;let s=n.find(o=>o.lineNumber>e&&o.lineNumber<t);if(s)throw new A(`Blank lines inside ${i} are not allowed in strict mode`,{line:s.lineNumber})}function Wi(e,t){let n=e.indexOf(":"),r=e.indexOf(t);return n===-1||r!==-1&&r<n}function*Qi(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=Fi(),i=new zi(Vi(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(bn(s.content)){let a=O(s,()=>ve(s.content,I,n.strict));if(a){i.advanceSync(),yield*Le(a.header,a.inlineValues,i,0,n,s);return}}if(i.advanceSync(),i.atEndSync()&&!pn(s)){yield{type:"primitive",value:O(s,()=>Be(s.content.trim()))};return}if(!pn(s)&&i.peekSync()?.depth===0)throw new A("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*ee(s,i,0,n,o);!i.atEndSync();){let a=i.peekSync();if(!a||a.depth!==0)break;i.advanceSync(),yield*ee(a,i,0,n,o)}yield{type:"endObject"}}function fn(e,t,n){if(n){if(n.has(e))throw new A(`Duplicate sibling key "${e}"`,{line:t.lineNumber,source:t.raw});n.add(e)}}function*ee(e,t,n,r,i){let s=e.content,o=O(e,()=>ve(s,I,r.strict));if(o&&o.header.key!==void 0){fn(o.header.key,e,i),yield{type:"key",key:o.header.key},yield*Le(o.header,o.inlineValues,t,n,r,e);return}let{key:a,isQuoted:c}=O(e,()=>Ji(s,0)),l=s.indexOf(":",a.length),u=l>=0?s.slice(l+1).trim():"";if(fn(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*Yi(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:O(e,()=>Be(u))}}function*Yi(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*ee(s,e,r,n,i);else break}}function*Le(e,t,n,r,i,s){if(yield{type:"startArray",length:e.length},t){yield*Zi(e,t,i,s),yield{type:"endArray"};return}if(e.fields&&e.fields.length>0){yield*Xi(e,n,r,i,s),yield{type:"endArray"};return}yield*es(e,n,r,i,s),yield{type:"endArray"}}function*Zi(e,t,n,r){if(!t.trim()){ye(0,e.length,"inline array items",n,r);return}let i=O(r,()=>it(t,e.delimiter)),s=O(r,()=>wn(i));ye(s.length,e.length,"inline array items",n,r);for(let o of s)yield{type:"primitive",value:o}}function*Xi(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=O(u,()=>it(u.content,e.delimiter));ye(d.length,e.fields.length,"tabular row values",r,u);let m=O(u,()=>wn(d));yield*ns(e.fields,m),o++}else break}ye(o,e.length,"tabular rows",r,l),r.strict&&a!==void 0&&c!==void 0&&Rn(a,c,t.getBlankLines(),r.strict,"tabular array"),r.strict&&Ki(t.peekSync(),s,e)}function*es(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*ts(t,s,r);let m=t.current();m&&(c=m.lineNumber,l=m),o++}else break}ye(o,e.length,"list array items",r,l),r.strict&&a!==void 0&&c!==void 0&&Rn(a,c,t.getBlankLines(),r.strict,"list array"),r.strict&&Hi(t.peekSync(),s,e.length)}function*ts(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 A('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(bn(i)){let a=O(s,()=>ve(i,I,n.strict));if(a){yield*Le(a.header,a.inlineValues,e,t,n,s);return}}let o=O(s,()=>ve(i,I,n.strict));if(o&&o.header.key!==void 0&&o.header.fields!==void 0){let a=o.header,c=n.strict?new Set([a.key]):void 0;yield{type:"startObject"},yield{type:"key",key:a.key},yield*Le(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*ee(u,e,l,n,c);else break}yield{type:"endObject"};return}if(Gi(i)){let a=n.strict?new Set:void 0;yield{type:"startObject"},yield*ee(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*ee(l,e,c,n,a);else break}yield{type:"endObject"};return}yield{type:"primitive",value:O(s,()=>Be(i))}}function pn(e){let t=e.content;if(t.startsWith('"')){let n=De(t,0);return n===-1?!1:t.slice(n+1).includes(":")}else return t.includes(":")}function*ns(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 U(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 U(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(U);if(e instanceof Set)return Array.from(e).map(U);if(e instanceof Map)return Object.fromEntries(Array.from(e,([t,n])=>[String(t),U(n)]));if(rs(e)){let t={};for(let n in e)Object.hasOwn(e,n)&&(t[n]=U(e[n]));return t}return null}function Q(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function q(e){return Array.isArray(e)}function E(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function he(e){return Object.keys(e).length===0}function rs(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype}function ge(e){return e.length===0||e.every(t=>Q(t))}function is(e){return e.length===0||e.every(t=>q(t))}function En(e){return e.length===0||e.every(t=>E(t))}function as(e){return/^[A-Z_][\w.]*$/i.test(e)}function Sn(e){return/^[A-Z_]\w*$/i.test(e)}function cs(e,t=I){return!(!e||e!==e.trim()||gn(e)||ls(e)||e.includes(":")||e.includes('"')||e.includes("\\")||/[[\]{}]/.test(e)||/[\u0000-\u001F]/.test(e)||e.includes(t)||e.startsWith("-"))}function ls(e){return ss.test(e)||os.test(e)}function Ie(e,t){if(Array.isArray(e))return e.map(n=>Ie(n,t));if(E(e)){let n={},r=e[kn];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=>Sn(l))){us(n,c,Ie(s,t),t);continue}}let a=Ie(s,t);if(i in n){let c=n[i];if(ot(c,a))st(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 us(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(E(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(ot(o,n))st(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 st(e,t,n){for(let[r,i]of Object.entries(t)){let s=e[r];if(s===void 0)e[r]=i;else if(ot(s,i))st(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 ot(e,t){return E(e)&&E(t)}function ds(e){let t={stack:[],root:void 0};for(let n of e)fs(t,n);return ps(t)}function fs(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,kn,{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 ps(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 ms(e,t,n,r,i,s,o){if(r.keyFolding!=="safe"||!E(t))return;let{segments:a,tail:c,leafValue:l}=ys(e,t,o??r.flattenDepth);if(a.length<2||!a.every(m=>Sn(m)))return;let u=hs(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 ys(e,t,n){let r=[e],i=t;for(;r.length<n&&E(i);){let s=Object.keys(i);if(s.length!==1)break;let o=s[0],a=i[o];r.push(o),i=a}return!E(i)||he(i)?{segments:r,tail:void 0,leafValue:i}:{segments:r,tail:i,leafValue:i}}function hs(e){return e.join(".")}function ne(e,t){return e===null?Ni:typeof e=="boolean"||typeof e=="number"?String(e):gs(e,t)}function gs(e,t=I){return cs(e,t)?e:`"${yn(e)}"`}function re(e){return as(e)?e:`"${yn(e)}"`}function xn(e,t=I){return e.map(n=>ne(n,t)).join(t)}function Y(e,t){let n=t?.key,r=t?.fields,i=t?.delimiter??",",s="";if(n!=null&&(s+=re(n)),s+=`[${e}${i!==I?i:""}]`,r){let o=r.map(a=>re(a));s+=`{${o.join(i)}}`}return s+=":",s}function*ws(e,t,n){if(Q(e)){let r=ne(e,t.delimiter);r!==""&&(yield r);return}q(e)?yield*nt(void 0,e,n,t):E(e)&&(yield*te(e,n,t))}function*te(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*bs(c,l,t,n,o,r,i,a)}function*bs(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=ms(e,t,i,r,s,o,l);if(d){let{foldedKey:m,remainder:w,leafValue:p,segmentCount:y}=d,h=re(m);if(w===void 0){if(Q(p)){yield k(n,`${h}: ${ne(p,r.delimiter)}`,r.indent);return}else if(q(p)){yield*nt(m,p,n,r);return}else if(E(p)&&he(p)){yield k(n,`${h}:`,r.indent);return}}if(E(w)){yield k(n,`${h}:`,r.indent);let pe=l-y,R=o?`${o}.${m}`:m;yield*te(w,n+1,r,s,R,pe);return}}}let u=re(e);Q(t)?yield k(n,`${u}: ${ne(t,r.delimiter)}`,r.indent):q(t)?yield*nt(e,t,n,r):E(t)&&(yield k(n,`${u}:`,r.indent),he(t)||(yield*te(t,n+1,r,s,c,l)))}function*nt(e,t,n,r){if(t.length===0){yield k(n,e!=null?`${re(e)}: []`:"[]",r.indent);return}if(ge(t)){yield k(n,Ue(t,r.delimiter,e),r.indent);return}if(is(t)&&t.every(i=>ge(i))){yield*Rs(e,t,n,r);return}if(En(t)){let i=On(t);i?yield*Es(e,t,i,n,r):yield*mn(e,t,n,r);return}yield*mn(e,t,n,r)}function*Rs(e,t,n,r){yield k(n,Y(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)if(ge(i)){let s=Ue(i,r.delimiter);yield P(n+1,s,r.indent)}}function Ue(e,t,n){let r=Y(e.length,{key:n,delimiter:t}),i=xn(e,t);return e.length===0?r:`${r} ${i}`}function*Es(e,t,n,r,i){yield k(r,Y(t.length,{key:e,fields:n,delimiter:i.delimiter}),i.indent),yield*An(t,n,r+1,i)}function On(e){if(e.length===0)return;let t=e[0],n=Object.keys(t);if(n.length!==0&&Ss(e,n))return n}function Ss(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)||!Q(n[r]))return!1}return!0}function*An(e,t,n,r){for(let i of e)yield k(n,xn(t.map(s=>i[s]),r.delimiter),r.indent)}function*mn(e,t,n,r){yield k(n,Y(t.length,{key:e,delimiter:r.delimiter}),r.indent);for(let i of t)yield*at(i,n+1,r)}function*ks(e,t,n){if(he(e)){yield k(t,"-",n.indent);return}let r=Object.entries(e),[i,s]=r[0],o=r.slice(1);if(q(s)&&En(s)){let c=On(s);if(c){yield P(t,Y(s.length,{key:i,fields:c,delimiter:n.delimiter}),n.indent),yield*An(s,c,t+2,n),o.length>0&&(yield*te(Object.fromEntries(o),t+1,n));return}}let a=re(i);if(Q(s))yield P(t,`${a}: ${ne(s,n.delimiter)}`,n.indent);else if(q(s))if(s.length===0)yield P(t,`${a}: []`,n.indent);else if(ge(s))yield P(t,`${a}${Ue(s,n.delimiter)}`,n.indent);else{yield P(t,`${a}${Y(s.length,{delimiter:n.delimiter})}`,n.indent);for(let c of s)yield*at(c,t+2,n)}else E(s)&&(yield P(t,`${a}:`,n.indent),he(s)||(yield*te(s,t+2,n)));o.length>0&&(yield*te(Object.fromEntries(o),t+1,n))}function*at(e,t,n){if(Q(e))yield P(t,ne(e,n.delimiter),n.indent);else if(q(e))if(ge(e))yield P(t,Ue(e,n.delimiter),n.indent);else{yield P(t,Y(e.length,{delimiter:n.delimiter}),n.indent);for(let r of e)yield*at(r,t+1,n)}else E(e)&&(yield*ks(e,t,n))}function k(e,t,n){return" ".repeat(n*e)+t}function P(e,t,n){return k(e,"- "+t,n)}function xs(e,t){let n=t("",e,[]);return n===void 0?je(e,t,[]):je(U(n),t,[])}function je(e,t,n){return E(e)?Os(e,t,n):q(e)?As(e,t,n):e}function Os(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]=je(U(a),t,o))}return r}function As(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=U(a);r.push(je(c,t,o))}return r}function x(e,t){return Array.from(Tn(e,t)).join(`
7
+ `)}function ct(e,t){return $n(e.split(`
8
+ `),t)}function Tn(e,t){let n=U(e),r=Ts(t);return ws(r.replacer?xs(n,r.replacer):n,r,0)}function $n(e,t){let n=$s(t),r=ds(Qi(e,{indent:n.indent,strict:n.strict}));return n.expandPaths==="safe"?Ie(r,n.strict):r}function Ts(e){return{indent:e?.indent??2,delimiter:e?.delimiter??I,keyFolding:e?.keyFolding??"off",flattenDepth:e?.flattenDepth??Number.POSITIVE_INFINITY,replacer:e?.replacer}}function $s(e){return{indent:e?.indent??2,strict:e?.strict??!0,expandPaths:e?.expandPaths??"off"}}var Ni,Ne,I,A,vi,ji,Bi,zi,ss,os,kn,_n=g(()=>{Ni="null",Ne={comma:",",tab:" ",pipe:"|"},I=Ne.comma;A=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}};vi=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:e[+-]?\d+)?$/i;ji=/^(?:0|[1-9]\d*)$/;Bi=[","," ","|"];zi=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}};ss=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,os=/^0\d+$/;kn=Symbol("quotedKey")});var we=g(()=>{"use strict";_n()});var Gn={};$(Gn,{NORMALIZATION_ALLOWLIST:()=>Un,NORMALIZE_ANSI:()=>Nn,NORMALIZE_BLANK_LINES:()=>jn,NORMALIZE_CR_PROGRESS:()=>vn,NORMALIZE_JSON_TOON:()=>Bn,NORMALIZE_TRAILING_WHITESPACE:()=>Ln,formatNormalizeDecision:()=>Jn,hookDecisionFromClaudePostExecJson:()=>qn,normalizeOutput:()=>Cn,runClaudePostExecHook:()=>_s,transcodeJsonToToon:()=>Dn});import{readFileSync as Pn}from"node:fs";function Dn(e,t){let n=t?.encode??x,r=t?.decode??ct,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 lt(s,a)?o:e}function Cn(e){let t=e;for(let n of Un)t=n.apply(t);return t}async function qn(e,t){let n=Ns(e),r=vs(n,["cwd"])||t.cwd;if(!await(t.isEnabled??Is)(r))return{kind:"passthrough",reason:"disabled"};let s=Ls(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??Cn)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function Jn(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function _s(e){let t=e?Pn(e,"utf8"):Pn(0,"utf8"),n=await qn(t,{cwd:process.cwd()}),r=Jn(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function Ps(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&&In(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&In(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function In(e){return e>=32&&e<=63}function Is(e){return z(e,process.env).enabled}function Ns(e){try{let t=JSON.parse(e);return ut(t)?t:{}}catch{return{}}}function vs(e,t){let n=e;for(let r of t){if(!ut(n))return"";n=n[r]}return typeof n=="string"?n:""}function Ls(e,t){let n=e[t];return ut(n)?n:null}function ut(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function lt(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)=>lt(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)&&lt(n[o],r[o]))}var Nn,vn,Ln,jn,Bn,Un,Fn=g(()=>{"use strict";we();B();Nn={id:"ansi",apply:Ps},vn={id:"cr-progress",apply:e=>e.split(`
25
9
  `).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(`
26
- `)},ui={id:"trailing-whitespace",apply:e=>e.split(`
10
+ `)},Ln={id:"trailing-whitespace",apply:e=>e.split(`
27
11
  `).map(t=>t.replace(/[ \t]+$/,"")).join(`
28
- `)},li={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
12
+ `)},jn={id:"blank-lines",apply:e=>e.replace(/\n{3,}/g,`
13
+
14
+ `)};Bn={id:"json-to-toon",apply:e=>Dn(e)},Un=[Nn,vn,Ln,jn,Bn]});async function Mn(e,t){return js?Us(e,t):Ds?qs(e,t):Bs(e,t)}async function Bs(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 Us(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:Cs(n.stdout),kill(){n.kill()},wait(){return n.exited}}}async function*Cs(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 qs(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:Js(r.stdout),kill(){try{r.kill("SIGTERM")}catch{}},async wait(){return(await r.status).code??0}}}async function*Js(e){let t=e.getReader();try{for(;;){let{value:n,done:r}=await t.read();if(r)return;yield n}}finally{t.releaseLock()}}var js,Ds,Vn=g(()=>{js=typeof globalThis.Bun<"u"&&typeof globalThis.Bun.spawn=="function",Ds=typeof globalThis.Deno<"u"&&typeof globalThis.Deno.Command=="function"});import{existsSync as Gs}from"node:fs";import{join as Fs}from"node:path";function Hn(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=Fs(n,"bin",t);if(Gs(s))return s;throw new Error(`reddb: binary "${t}" not found.
15
+ expected at: ${s}
16
+ override: set ${r}=/path/to/${t}
17
+ fix: re-run \`pnpm install\` (the postinstall script downloads it),
18
+ or check the postinstall log for a download error.`)}var Kn=g(()=>{});import{fileURLToPath as Ms}from"node:url";import{dirname as Vs,resolve as Hs,join as Xc}from"node:path";function zs(){return typeof process<"u"&&process.platform==="win32"?"red.exe":"red"}function Wn(){let e=process.env?.REDDB_BINARY_PATH;return typeof e=="string"&&e!==""&&!process.env?.REDDB_BIN?e:Hn({name:zs(),packageRoot:Ws,envVar:"REDDB_BIN"})}var Ks,Ws,zn=g(()=>{Kn();Ks=Vs(Ms(import.meta.url)),Ws=Hs(Ks,"..")});var Qs,Ys,f,Ce,J=g(()=>{Qs=new TextEncoder,Ys=new TextDecoder("utf-8"),f=class extends Error{constructor(t,n,r){super(n),this.name="RedDBError",this.code=t,this.data=r??null}},Ce=class{constructor(t){this.child=t,this.nextId=1,this.pending=new Map,this.closed=!1,this.closeReason=null,this.readerPromise=this.#t()}call(t,n={}){if(this.closed)return Promise.reject(new f("CLIENT_CLOSED",`client is closed: ${this.closeReason??"unknown"}`));let r=this.nextId++,i=JSON.stringify({jsonrpc:"2.0",id:r,method:t,params:n});return new Promise((s,o)=>{this.pending.set(r,{resolve:s,reject:o}),this.child.stdin.write(Qs.encode(i+`
19
+ `)).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(Ys.decode(o)),i=s+1}i>0&&(t=t.subarray(i))}}catch(n){this.#e(`stdout reader error: ${n.message}`);return}this.#e("server stdout closed")}#n(t){if(!t.trim())return;let n;try{n=JSON.parse(t)}catch(s){this.#e(`malformed server response: ${s.message}`);return}let r=n.id;if(r==null)return;let i=this.pending.get(r);i&&(this.pending.delete(r),n.error?i.reject(new f(n.error.code??"UNKNOWN",n.error.message??"unknown error",n.error.data)):i.resolve(n.result))}#e(t){if(this.closed)return;this.closed=!0,this.closeReason=t;let n=new f("CLIENT_CLOSED",t);for(let{reject:r}of this.pending.values())r(n);this.pending.clear()}}});function ft(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:/"?Zs(e):Xs(e)}function Zs(e){let t=e;e==="red:"||e==="red:/"||e==="red://"?t="red://embedded.local":e.startsWith("red:///")?t=`red://embedded.local${e.slice(6)}`:(e==="red://memory"||e==="red://memory/"||e==="red://:memory"||e==="red://:memory:")&&(t="red://embedded.local");let n;try{n=new URL(t)}catch(u){throw new f("UNPARSEABLE_URI",`failed to parse '${e}': ${u.message}`)}let r=n.searchParams,i=(r.get("proto")||"").toLowerCase(),s=n.pathname&&n.pathname!=="/"?n.pathname:"";if(n.hostname==="embedded.local")return s?{kind:"embedded",path:s,params:r,originalUri:e}:{kind:"embedded",params:r,originalUri:e};let o=eo(i),a=n.port?Number(n.port):dt(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 Xs(e){if(e==="memory://"||e==="memory:")return{kind:"embedded",originalUri:e};if(e.startsWith("file://")){let t=e.slice(7);if(!t)throw new TypeError(`invalid file:// URI: missing path in '${e}'`);return{kind:"embedded",path:t,originalUri:e}}if(e.startsWith("grpc://")||e.startsWith("grpcs://")||e.startsWith("reds://")){let t=e.split("://",1)[0],n;try{n=new URL("https://"+e.slice(`${t}://`.length))}catch(s){throw new f("UNPARSEABLE_URI",`failed to parse '${e}': ${s.message}`)}if(!n.hostname)throw new TypeError(`invalid ${t}:// URI: missing host in '${e}'`);let r=t==="reds"?"reds":t==="grpcs"?"grpcs":"grpc",i=n.searchParams;return{kind:r,host:n.hostname,port:n.port?Number(n.port):dt(r),username:n.username?decodeURIComponent(n.username):void 0,password:n.password?decodeURIComponent(n.password):void 0,token:i.get("token")??void 0,apiKey:i.get("apiKey")??i.get("api_key")??void 0,loginUrl:i.get("loginUrl")??i.get("login_url")??void 0,params:i,originalUri:e}}if(e.startsWith("http://")||e.startsWith("https://")){let t;try{t=new URL(e)}catch(n){throw new f("UNPARSEABLE_URI",`failed to parse '${e}': ${n.message}`)}return{kind:t.protocol==="https:"?"https":"http",host:t.hostname,port:t.port?Number(t.port):dt(t.protocol==="https:"?"https":"http"),path:t.pathname!=="/"?t.pathname:void 0,username:t.username?decodeURIComponent(t.username):void 0,password:t.password?decodeURIComponent(t.password):void 0,token:t.searchParams.get("token")??void 0,apiKey:t.searchParams.get("apiKey")??void 0,params:t.searchParams,originalUri:e}}throw new f("UNSUPPORTED_SCHEME",`unsupported URI: '${e}'. Use 'red://...' or one of memory://, file://, grpc://, http(s)://`)}function eo(e){switch(e){case"":case"red":return"red";case"reds":return"reds";case"grpc":return"grpc";case"grpcs":return"grpcs";case"http":return"http";case"https":return"https";case"pg":case"postgres":case"postgresql":return"pg";default:throw new f("UNSUPPORTED_PROTO",`unknown proto='${e}'. Supported: red | reds | grpc | grpcs | http | https | pg`)}}function dt(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 pt=g(()=>{J()});function no(e){if(typeof e=="string"){let t=new TextEncoder().encode(e);return Qn(t)}if(e instanceof Uint8Array||typeof Buffer<"u"&&Buffer.isBuffer(e))return Qn(e);throw new TypeError("cache value must be a string, Uint8Array, or Buffer")}function Qn(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 ro(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 to,be,mt=g(()=>{J();to=new Set(["embedded"]),be=class{constructor(t,n){this._client=t,this._transport=n??null}_guard(t){if(this._transport&&to.has(this._transport))throw new f("UNSUPPORTED_TRANSPORT",`cache.${t} is not available on '${this._transport}' transport; use @reddb-io/client for remote cache endpoints.`)}async get(t,n){this._guard("get");let r=await this._client.call("cache.get",{namespace:t,key:n});return r==null||r.value==null?null:ro(r.value)}async put(t,n,r,i={}){this._guard("put");let s=no(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 yt(e,t){return`${ht(e)}.${io(t)}`}function ht(e){let t=String(e),n=t.match(/[^A-Za-z0-9_]/);if(n)throw new f("INVALID_KV_KEY",`invalid KV key "${t}": character "${n[0]}" is not supported`);return t}function io(e){let t=String(e);return/^[A-Za-z0-9_]+$/.test(t)?t:`'${t.replace(/'/g,"''")}'`}function so(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 Yn(e){return`'${String(e).replace(/'/g,"''")}'`}var ie,gt=g(()=>{J();ie=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(Yn).join(", ")}]`:"",o=r.expireMs!=null?` EXPIRE ${Number(r.expireMs)} ms`:"";return this.client.call("query",{sql:`KV PUT ${yt(i,t)} = ${so(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 ${yt(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 ${yt(r,t)}`}),s=i.affected??i.affected_rows??0;return{affected:s,deleted:s>0}}async list(t={}){let n=t.collection??this.collection,r=t.limit==null?100:Number(t.limit);if(!Number.isInteger(r)||r<=0)throw new f("INVALID_ARGUMENT","kv.list limit must be a positive integer");let i=t.prefix==null?"":String(t.prefix),o=(await this.client.call("query",{sql:`SELECT key, value FROM ${ht(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(Yn).join(", ")}] FROM ${ht(r)}`});return i.affected??i.affected_rows??i.rows?.[0]?.invalidated??0}async*watch(t,n={}){if(!this.client.baseUrl)throw new f("UNSUPPORTED_TRANSPORT","kv.watch requires the HTTP transport");let r=n.collection??this.collection,i=new URLSearchParams;n.sinceLsn!=null&&i.set("since_lsn",String(n.sinceLsn)),n.limit!=null&&i.set("limit",String(n.limit));let s=i.toString()?`?${i}`:"",o=`${this.client.baseUrl}/collections/${encodeURIComponent(r)}/kv/${encodeURIComponent(String(t))}/watch${s}`,a=await fetch(o,this.client.attachAuth({method:"GET"}));if(!a.ok)throw new f("HTTP_ERROR",`kv.watch failed with HTTP ${a.status}`);let c=await a.text();for(let l of c.split(`
29
20
 
30
- `)};function di(e,t){let n=t?.encode??E,r=t?.decode??Ie,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 Ge(s,a)?o:e}var fi={id:"json-to-toon",apply:e=>di(e)},mi=[ai,ci,ui,li,fi];function pi(e){let t=e;for(let n of mi)t=n.apply(t);return t}async function yi(e,t){let n=wi(e),r=Ei(n,["cwd"])||t.cwd;if(!await(t.isEnabled??bi)(r))return{kind:"passthrough",reason:"disabled"};let s=ki(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??pi)(o);return c===o?{kind:"passthrough",reason:"no-change"}:{kind:"normalized",output:c}}function gi(e){return e.kind==="normalized"?{stdout:JSON.stringify({tool_response:{output:e.output}}),status:0}:{stdout:"",status:0}}async function Ft(e){let t=e?Jt(e,"utf8"):Jt(0,"utf8"),n=await yi(t,{cwd:process.cwd()}),r=gi(n);return r.stdout&&process.stdout.write(r.stdout),r.status}function hi(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&&Gt(e.charCodeAt(n));)n++;n<e.length&&n++;continue}n+=i>=32?2:1;continue}if(r===155){for(n++;n<e.length&&Gt(e.charCodeAt(n));)n++;n<e.length&&n++;continue}t+=e[n++]}return t}function Gt(e){return e>=32&&e<=63}function bi(e){return M(e,process.env).enabled}function wi(e){try{let t=JSON.parse(e);return Fe(t)?t:{}}catch{return{}}}function Ei(e,t){let n=e;for(let r of t){if(!Fe(n))return"";n=n[r]}return typeof n=="string"?n:""}function ki(e,t){let n=e[t];return Fe(n)?n:null}function Fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ge(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)=>Ge(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)&&Ge(n[o],r[o]))}import{constants as Ri}from"node:fs";import{access as xi,mkdir as Vt,readFile as Si,writeFile as qt}from"node:fs/promises";import{dirname as Oi,join as Ve,resolve as ji}from"node:path";var Ai=".red/tmp/rsp-elisions.json";async function Ht(e,t={}){let n=ji(e),r=Ve(n,".red"),i=Ve(r,"config.yaml"),s=Ve(n,Ai);await Vt(r,{recursive:!0}),await Vt(Oi(s),{recursive:!0});let o="";try{o=await Si(i,"utf8")}catch(u){if(u.code!=="ENOENT")throw u}let a=Ti(o,{enabled:!0,ttlDays:t.ttlDays??q,byteBudget:t.byteBudget??H,heavyGitByteThreshold:t.heavyGitByteThreshold??J}),c=a!==o;c&&await qt(i,a,"utf8");let l=!await Pi(s);return l&&await qt(s,"","utf8"),{configPath:i,storePath:s,configChanged:c,storeCreated:l,memoryStoreMigrated:!1}}function Ti(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${qe(t.ttlDays,q)}`,` byteBudget: ${qe(t.byteBudget,H)}`,` heavyGitByteThreshold: ${qe(t.heavyGitByteThreshold,J)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
31
- `),i=vi(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
21
+ `)){let u=l.split(`
22
+ `).find(d=>d.startsWith("data: "));u&&(yield JSON.parse(u.slice(6)))}}watchPrefix(t,n={}){return this.watch(`${t}.*`,n)}}});function oo(e,t,n){let{waitMs:r,group:i=null,count:s=null}=n??{};if(!Number.isInteger(r)||r<0)throw new f("INVALID_QUEUE_WAIT","queue readWait requires an explicit non-negative integer waitMs (no infinite wait)");let o=C(e),a=C(t),c=i!=null?` GROUP ${C(i)}`:"",l=s!=null?bt(s):"";return`QUEUE READ ${o}${c} CONSUMER ${a}${l} WAIT ${r}ms`}function C(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new f("INVALID_QUEUE_NAME",`invalid queue name "${t}": expected an SQL identifier`);return t}function bt(e){if(e==null)return"";if(!Number.isInteger(e)||e<0)throw new f("INVALID_QUEUE_COUNT","queue count must be a non-negative integer");return` COUNT ${e}`}function ao(e){if(!Number.isInteger(e))throw new f("INVALID_QUEUE_PRIORITY","queue priority must be an integer");return String(e)}function co(e){if(e.key!=null&&(e.delay!=null||e.at!=null))throw new f("INVALID_ARGUMENT","QUEUE PUSH KEY cannot be combined with DELAY / AVAILABLE AT");let t="";return e.priority!=null&&(t+=` PRIORITY ${ao(e.priority)}`),e.key!=null&&(t+=` KEY ${Rt(e.key)}`),e.dedup!=null&&(t+=` DEDUP ${Rt(e.dedup)}`),e.delay!=null&&(t+=` DELAY ${e.delay}`),e.at!=null&&(t+=` AVAILABLE AT ${e.at}`),t}function lo(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":typeof e=="string"?Rt(e):JSON.stringify(e)}function Rt(e){return`'${String(e).replace(/'/g,"''")}'`}function wt(e){return Array.isArray(e?.rows)?e.rows.map(t=>t.payload):[]}var Re,Et=g(()=>{J();Re=class{constructor(t){this.client=t}create(t){return this.client.call("query",{sql:`CREATE QUEUE IF NOT EXISTS ${C(t)}`})}push(t,n,r={}){let i=co(r);return this.client.call("query",{sql:`QUEUE PUSH ${C(t)} ${lo(n)}${i}`})}async pop(t,n){let r=await this.client.call("query",{sql:`QUEUE POP ${C(t)}${bt(n)}`});return wt(r)}async peek(t,n){let r=await this.client.call("query",{sql:`QUEUE PEEK ${C(t)}${bt(n)}`});return wt(r)}async len(t){let n=await this.client.call("query",{sql:`QUEUE LEN ${C(t)}`});return Number(n?.rows?.[0]?.len??0)}purge(t){return this.client.call("query",{sql:`QUEUE PURGE ${C(t)}`})}async readWait(t,n,r={}){let i=oo(t,n,r),s=await this.client.call("query",{sql:i});return wt(s)}}});function Zn(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new f("INVALID_ARGUMENT",`${t} must be an object`)}function uo(e){if(e==null)return 100;if(!Number.isInteger(e)||e<=0)throw new f("INVALID_ARGUMENT","limit must be a positive integer");return e}function qe(e){return String(e).split(".").map(Xn).join(".")}function Xn(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new f("INVALID_ARGUMENT",`invalid SQL identifier "${t}"`);return t}function fo(e){return er(JSON.stringify(e))}function po(e){return JSON.stringify(e)}function mo(e){return e==null?"NULL":typeof e=="number"||typeof e=="boolean"?String(e):typeof e=="object"?fo(e):er(e)}function er(e){return`'${String(e).replace(/'/g,"''")}'`}var Ee,St=g(()=>{J();Ee=class{constructor(t){this.db=t}async insert(t,n){Zn(n,"documents.insert document"),await this.ensureCollection(t);let r=await this.db.query(`INSERT INTO ${qe(t)} DOCUMENT VALUES (${po(n)}) RETURNING *`),i=r.rows?.[0];if(!i||i.rid==null)throw new f("INVALID_RESPONSE","documents.insert expected one returned item with rid");return{affected:r.affected??1,rid:i.rid,item:i}}async get(t,n){let r=await this.db.get(t,n);if(!r.entity)throw new f("NOT_FOUND",`document ${String(n)} was not found`);return r.entity}async list(t,n={}){let r=uo(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 ${qe(t)}${s} ORDER BY ${i} LIMIT ${r}`)).rows??[]}}async patch(t,n,r){Zn(r,"documents.patch patch");let i=Object.entries(r);if(i.length===0)throw new f("INVALID_ARGUMENT","documents.patch patch must be a non-empty object");for(let[c]of i)if(c.includes("/"))throw new f("INVALID_ARGUMENT","documents.patch currently accepts top-level document fields");let s=i.map(([c,l])=>`${Xn(c)} = ${mo(l)}`).join(", "),a=(await this.db.query(`UPDATE ${qe(t)} SET ${s} WHERE rid = $1 RETURNING *`,n)).rows?.[0];if(!a)throw new f("NOT_FOUND",`document ${String(n)} was not found`);return a}async delete(t,n){let i=(await this.db.delete(t,n)).affected??0;return{affected:i,deleted:i>0}}async ensureCollection(t){try{await this.db.query(`CREATE DOCUMENT ${qe(t)}`)}catch(n){if(!String(n?.message??"").includes("already exists"))throw n}}}});function yo(e,t){if(t.secretRef){let{collection:n,key:r}=t.secretRef;return`SECRET_REF(vault, ${G(n)}.${G(r)})`}return go(e)}function ho(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 G(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 go(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):tr(e)}function tr(e){return`'${String(e).replace(/'/g,"''")}'`}var Se,kt=g(()=>{Se=class{constructor(t,n="red.config"){this.client=t,this.collection=n}put(t,n,r={}){ho(r,"config");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(tr).join(", ")}]`:"";return this.client.call("query",{sql:`PUT CONFIG ${G(i)} ${G(t)} = ${yo(n,r)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`GET CONFIG ${G(r)} ${G(t)}`})}resolve(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`RESOLVE CONFIG ${G(r)} ${G(t)}`})}}});function wo(e,t){for(let n of["ttl","ttlMs","ttl_ms","expireMs","expire_ms","expiresAt"])if(e[n]!=null)throw new TypeError(`${t} does not support TTL or expiration options`)}function se(e){let t=String(e);if(!/^[A-Za-z0-9_.]+$/.test(t))throw new TypeError("keyed collection and key names must use letters, numbers, underscores, or dots");return t}function bo(e){return typeof e=="number"||typeof e=="boolean"?String(e):e==null?"NULL":Array.isArray(e)||typeof e=="object"?JSON.stringify(e):nr(e)}function nr(e){return`'${String(e).replace(/'/g,"''")}'`}var ke,xt=g(()=>{ke=class{constructor(t,n="red.vault"){this.client=t,this.collection=n}put(t,n,r={}){wo(r,"vault");let i=r.collection??this.collection,s=Array.isArray(r.tags)&&r.tags.length>0?` TAGS [${r.tags.map(nr).join(", ")}]`:"";return this.client.call("query",{sql:`VAULT PUT ${se(i)}.${se(t)} = ${bo(n)}${s}`})}get(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`VAULT GET ${se(r)}.${se(t)}`})}unseal(t,n={}){let r=n.collection??this.collection;return this.client.call("query",{sql:`UNSEAL VAULT ${se(r)}.${se(t)}`})}}});async function ir(e){return((await e.query("SHOW COLLECTIONS")).rows??[]).map(Ro)}async function sr(e,t){return((await e.query(`SHOW COLLECTIONS WHERE name = ${So(t)}`)).rows??[]).some(r=>r.name===String(t))}function Ro(e){return{...e,name:String(e.name),model:String(e.model),capabilities:Array.isArray(e.capabilities)?e.capabilities:[]}}function rr(e){return String(e).split(".").map(Eo).join(".")}function Eo(e){let t=String(e);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(t))throw new f("INVALID_IDENTIFIER",`invalid SQL identifier "${t}"`);return t}function So(e){return`'${String(e).replace(/'/g,"''")}'`}var xe,Ot=g(()=>{J();xe=class e{constructor(t,n,r=null,i=[],s=[]){this.db=t,this.collection=n,this.columns=r,this.whereClauses=i,this.params=s}select(...t){let n=t.length===1&&Array.isArray(t[0])?t[0]:t,r=n.length===1&&n[0]==="*"?null:n;return new e(this.db,this.collection,r!=null&&r.length>0?r:null,this.whereClauses,this.params)}where(t,...n){if(typeof t!="string"||t.trim().length===0)throw new f("INVALID_QUERY_BUILDER","where() requires a non-empty SQL condition");let r=n.length===1&&Array.isArray(n[0])?n[0]:n;return new e(this.db,this.collection,this.columns,[...this.whereClauses,t.trim()],[...this.params,...r])}async run(){let t=this.columns==null?"*":this.columns.map(rr).join(", "),n=this.whereClauses.length>0?` WHERE ${this.whereClauses.map(o=>`(${o})`).join(" AND ")}`:"",r=`SELECT ${t} FROM ${rr(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 lr(e,t={}){let n=ft(e);if(No(n),n.kind==="embedded"){let r=Io(n,t.auth);if(r.token||r.username)throw new f("AUTH_NOT_APPLICABLE","auth is only meaningful for remote connections; embedded modes inherit caller privileges.");let i=Po(n),s=t.binary??Wn(),o=await Mn(s,i),a=new Ce(o);return await a.call("version",{}),new Tt(a,{transport:"embedded"})}}function ar(e){return Oo(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:To(e)}:typeof e=="number"&&!Number.isFinite(e)?Number.isNaN(e)?{$float:"NaN"}:{$float:e>0?"Infinity":"-Infinity"}:typeof e=="string"&&_o(e)?{$uuid:e}:e}function Oo(e){if(e!=null&&!(typeof e=="boolean"||typeof e=="number"||typeof e=="string")){if(e instanceof Date){if(Number.isNaN(e.getTime()))throw new f("UNSUPPORTED_PARAM","cannot encode invalid Date query parameter");return}if(!(e instanceof Uint8Array||e instanceof Float32Array||e instanceof Float64Array||typeof Buffer<"u"&&e instanceof Buffer)){if(Array.isArray(e)){if(e.every(t=>typeof t=="number"))return;throw new f("UNSUPPORTED_PARAM","array query parameters must contain only numbers")}if(!(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype))throw new f("UNSUPPORTED_PARAM",`cannot encode query parameter of type ${typeof e}`)}}}function Ao(e){return e.length===0?null:e.length===1&&Array.isArray(e[0])?e[0].map(ar):e.map(ar)}function To(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 $o(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 _o(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}function Je(e){if(Array.isArray(e))return e.map(Je);if(e&&typeof e=="object"){if(Object.keys(e).length===1){if(typeof e.$bytes=="string")return $o(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]=Je(i);return n}return e}function Po(e){return e.path?["rpc","--stdio","--path",e.path]:["rpc","--stdio"]}function Io(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 No(e){if(e.kind!=="embedded")throw new f("EMBEDDED_ONLY",ko)}function $t(){return new f(or,`${or}: nested transactions are not supported on one connection`)}function ur(e,t){if(e&&typeof e=="object")try{e.rollbackError=t}catch{}}function vo(e,t){if(!e||typeof e!="object"||e.rid==null&&e.id==null)throw new f("ENGINE_TOO_OLD",`${t}() requires RedDB engine >= ${cr} with insert id support`);return e.rid==null&&(e.rid=e.id),e.id==null&&(e.id=e.rid),e}function Lo(e,t){if(!e||typeof e!="object"||!Array.isArray(e.rids)&&!Array.isArray(e.ids))throw new f("ENGINE_TOO_OLD",`bulkInsert() requires RedDB engine >= ${cr} with bulk insert id support`);if(Array.isArray(e.rids)||(e.rids=e.ids),Array.isArray(e.ids)||(e.ids=e.rids),e.rids.length!==t)throw new f("INVALID_RESPONSE",`bulkInsert() expected ${t} rids, got ${e.rids.length}`);return e}var ko,xo,cr,or,Ge,At,Tt,dr=g(()=>{Vn();zn();J();pt();mt();gt();Et();St();kt();xt();Ot();mt();gt();Et();St();kt();xt();Ot();pt();ko="remote URIs are not supported in @reddb-io/sdk; install @reddb-io/client for grpc/http/red transports",xo="1.0",cr="1.0.9",or="NESTED_TX_NOT_SUPPORTED";Ge=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 $t()}},At=class{constructor(t){this.db=t,this.active=!1}async begin(){if(this.db.inTransaction)throw $t();this.db.inTransaction=!0,this.active=!0;try{return await this.db.query("BEGIN")}catch(t){throw this.db.inTransaction=!1,this.active=!1,t}}async commit(){if(!this.active)throw new f("INVALID_ARGUMENT","tx.commit() called without an open transaction");try{return await this.db.query("COMMIT")}finally{this.active=!1,this.db.inTransaction=!1}}async rollback(){if(!this.active)throw new f("INVALID_ARGUMENT","tx.rollback() called without an open transaction");try{return await this.db.query("ROLLBACK")}finally{this.active=!1,this.db.inTransaction=!1}}async run(t){if(typeof t!="function")throw new TypeError("tx.run(callback) requires a function");if(this.db.inTransaction)throw new f("INVALID_ARGUMENT","nested tx.run() is not supported; issue savepoints via tx.query() instead");await this.begin();try{let n=await t(new Ge(this.db));return await this.commit(),n}catch(n){if(this.active)try{await this.rollback()}catch(r){ur(n,r)}throw n}}},Tt=class{constructor(t,n={}){this.client=t,this.transport=n.transport??null,this.helperSpecVersion=xo,this.cache=new be(t,this.transport),this.queue=new Re(t),this.queues=this.queue,this.documents=new Ee(this);let r=new ie(t);this.kv=Object.assign((i="kv_default")=>new ie(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 Se(t,i),this.vault=(i="red.vault")=>new ke(t,i),this.inTransaction=!1}query(t,...n){if(typeof t!="string"||t.trim().length===0)return Promise.reject(new f("INVALID_ARGUMENT","query() requires a non-empty SQL string"));let r=Ao(n);return r==null?this.client.call("query",{sql:t}).then(Je):this.client.call("query",{sql:t,params:r}).then(Je)}execute(t,...n){return this.query(t,...n)}async insert(t,n){let r=await this.client.call("insert",{collection:t,payload:n});return vo(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 Lo(r,n.length)}tx(){return new At(this)}async transaction(t){if(this.inTransaction)throw $t();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 Ge(this));return await this.query("COMMIT"),r}catch(r){if(n)try{await this.query("ROLLBACK")}catch(i){ur(r,i)}throw r}finally{this.inTransaction=!1}}exists(t){return sr(this,t)}list(){return ir(this)}from(t){return new xe(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 Nt={};$(Nt,{DEFAULT_RSP_BYTE_BUDGET:()=>D,DEFAULT_RSP_TTL_DAYS:()=>j,RSP_ELISION_COLLECTION:()=>Z,RspElisionStore:()=>Oe});import{createHash as jo}from"node:crypto";import{existsSync as Do}from"node:fs";import{mkdir as Bo,readFile as hr,readdir as Uo,rename as Co,writeFile as qo}from"node:fs/promises";import{basename as gr,dirname as wr,join as _t}from"node:path";import{fileURLToPath as Jo}from"node:url";function fr(e,t){return`el:${jo("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 oe(e){return`record:${e.slice(3)}`}function ae(e){return`expired:${e.slice(3)}`}function pr(){return"index:v1"}function Fe(e){return/^el:[a-f0-9]{12}$/.test(e)}function mr(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Pt(e){return F(e)?e.collection===Z&&typeof e.handle=="string"&&Fe(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"&&Go(e.loss):!1}function br(e){return!F(e)||e.version!==1||!Array.isArray(e.records)?!1:e.records.every(t=>F(t)&&typeof t.handle=="string"&&Fe(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 It(e){return F(e)&&e.status==="expired"&&typeof e.expired_at=="string"&&typeof e.command=="string"}function Go(e){return F(e)&&typeof e.level=="string"&&typeof e.bytes_elided=="number"}function F(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Fo(e){try{let t=await hr(e,"utf8");if(t.trim()==="")return yr();let n=JSON.parse(t);if(zo(n))return n}catch(t){if(t.code==="ENOENT"){let n=yr();return await Rr(e,n),n}throw t}throw new Error("rsp elision store is unreadable")}async function Mo(e){try{let t=await hr(e);return Vo(t)?Ho(e):e}catch(t){if(t.code==="ENOENT")return e;throw t}}function Vo(e){return e.subarray(0,8).toString("ascii")==="RDBSBLK1"}function Ho(e){return gr(e)==="red.rdb"?_t(wr(e),"tmp","rsp-elisions.json"):`${e}.json`}function Ko(e){return gr(e)==="red-skills.rdb"}async function Wo(){if(process.env.REDDB_BIN||!process.env.RED_SKILLS_CACHE_DIR)return;let e=_t(process.env.RED_SKILLS_CACHE_DIR,"reddb"),t;try{t=await Uo(e)}catch{return}t.sort().reverse();for(let n of t){let r=_t(e,n,process.platform==="win32"?"red.exe":"red");if(Do(r)){process.env.REDDB_BIN=r;return}}}async function Rr(e,t){await Bo(wr(e),{recursive:!0});let n=`${e}.${process.pid}.tmp`;await qo(n,`${JSON.stringify(t)}
23
+ `,"utf8"),await Co(n,e)}function yr(){return{version:1,records:{},tombstones:{},index:{version:1,records:[]}}}function zo(e){return F(e)&&e.version===1&&F(e.records)&&Object.values(e.records).every(Pt)&&F(e.tombstones)&&Object.values(e.tombstones).every(It)&&br(e.index)}function Qo(e){if(!e.startsWith("file://"))throw new Error("rsp elision store requires a file:// URI");return Jo(e)}var Z,Oe,Me=g(()=>{"use strict";dr();B();Z="rsp_elisions_v1",Oe=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=Qo(t.uri),r=await Mo(n),i=new e(r,{uri:t.uri,ttlDays:mr(t.ttlDays,j),byteBudget:mr(t.byteBudget,D),now:t.now??(()=>new Date)});return Ko(r)?(await Wo(),i.db=await lr(`file://${r}`),await i.ensureRedDbStore()):i.document=await Fo(i.path),i}async close(){await this.db?.close()}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=fr(r,n),c=oe(a),l={collection:Z,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[ae(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(!Fe(t))return null;let n=this.tombstone(t);if(n)return n;let r=this.document.records[oe(t)];if(!Pt(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:oe(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:Z,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[ae(t.handle)]={status:"expired",expired_at:n,command:t.command}}tombstone(t){let n=this.document.tombstones[ae(t)];return It(n)?n:null}readOriginal(t){return t.original?Buffer.from(t.original,"base64"):null}async flush(){await Rr(this.path,this.document)}kv(){if(!this.db)throw new Error("rsp RedDB store is not open");return this.db.kv(Z)}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=fr(r,n),c=oe(a),l={collection:Z,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(ae(a)),await this.kv().put(c,l);let d=(await this.readRedDbIndex()).records.filter(m=>m.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}),a}async getRedDb(t){if(!Fe(t))return null;let n=await this.kv().get(ae(t));if(It(n))return n;let r=await this.kv().get(oe(t));if(!Pt(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:oe(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:Z,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(t==="recall")return{status:"resident",action:t,payload:n};if(t==="ingest")return{status:"resident",action:t,payload:n};throw new Error(`unsupported memory action: ${t}`)}async readRedDbIndex(){let t=await this.kv().get(pr());return br(t)?t:{version:1,records:[]}}async writeRedDbIndex(t){await this.kv().put(pr(),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(ae(t.handle),{status:"expired",expired_at:n,command:t.command})}}});var $r={};$($r,{REPO_STORE_PATH:()=>Lt,mergeRspBlock:()=>Or,provisionRspRepoStore:()=>ia});import{constants as Yo}from"node:fs";import{access as Zo,copyFile as Xo,mkdir as Er,readFile as ea,writeFile as Sr}from"node:fs/promises";import{dirname as ta,join as Ve,resolve as na}from"node:path";async function ia(e,t={}){let n=na(e),r=Ve(n,".red"),i=Ve(r,"config.yaml"),s=Ve(n,Lt);await Er(r,{recursive:!0}),await Er(ta(s),{recursive:!0});let o="";try{o=await ea(i,"utf8")}catch(m){if(m.code!=="ENOENT")throw m}let a=Or(o,{enabled:!0,ttlDays:t.ttlDays??j,byteBudget:t.byteBudget??D,heavyGitByteThreshold:t.heavyGitByteThreshold??L}),c=a!==o;c&&await Sr(i,a,"utf8");let l=!await xr(s),u=!1;if(l){let m=Ve(n,ra);if(await xr(m))await Xo(m,s),u=!0;else{let{RspElisionStore:w}=await Promise.resolve().then(()=>(Me(),Nt));await(await w.open({uri:`file://${s}`,ttlDays:t.ttlDays??j,byteBudget:t.byteBudget??D,allowResidentOpen:!0})).close()}}let d=sa(a,Lt);return d!==a&&await Sr(i,d,"utf8"),{configPath:i,storePath:s,configChanged:c||d!==a,storeCreated:l,memoryStoreMigrated:u}}function Or(e,t){let n=["rsp:",` enabled: ${t.enabled?"true":"false"}`,` ttlDays: ${vt(t.ttlDays,j)}`,` byteBudget: ${vt(t.byteBudget,D)}`,` heavyGitByteThreshold: ${vt(t.heavyGitByteThreshold,L)}`],r=e===""?[]:e.replace(/\n+$/,"").split(`
24
+ `),i=Ar(r,"rsp");if(i===-1){let a=[...r];return a.length>0&&a[a.length-1].trim()!==""&&a.push(""),a.push(...n),`${a.join(`
32
25
  `)}
33
- `}let s=$i(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
26
+ `}let s=jt(r,i,0);return`${[...r.slice(0,i),...n,...r.slice(s)].join(`
34
27
  `)}
35
- `}function vi(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Kt(r)&&Mt(r)===0&&_i(r)===t)return n}return-1}function $i(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(Kt(e[i])&&Mt(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Mt(e){return(e.match(/^ */)?.[0]??"").length}function Kt(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function _i(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function qe(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}async function Pi(e){try{return await xi(e,Ri.F_OK),!0}catch{return!1}}import{spawn as Li}from"node:child_process";var He=320,Bi=160,Ii=He,Ni=3;async function Ut(e,t){let n=B(e),r=await Vi(n.argv);return await Ci(e,r,t)}async function Ci(e,t,n){let r=B(e),s=Wt(r.argv)==="vitest"?qi(t.stdout):Hi(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(Q(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 ${Ui(s.durationSeconds)}`,c=S(s.failures,r.query);if(n.level==="terse")return await Di(r.argv,t,{...s,failures:c},o,a,n,r.query);let l=[],u,d=0;for(let y of c){let O=await Mi(y.excerpt,r.argv.join(" "),n.store);l.push({suite:y.suite,name:y.name,excerpt:O.text}),u??=O.handle,d+=O.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 g=r.query?I(f,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):f;return{stdout:Buffer.from(E(g)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:g,mintedHandle:u,bytesElided:d>0?d:void 0,rowsElided:l.length>0?Math.max(0,s.total-l.length):void 0}}async function Di(e,t,n,r,i,s,o){let a=Ji(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?I(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,u=E(l),d=Math.max(0,n.failures.length-a.length),f=a.some((b,D)=>b.excerpt!==n.failures[D].excerpt);if(d===0&&!f)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l};let g={exit_code:r,summary:i};n.failures.length>0&&(g.failures=n.failures.map(b=>({suite:b.suite,name:b.name,excerpt:b.excerpt})));let y=E(g),O=Buffer.byteLength(y),k=await s.store?.mint(Buffer.from(y),{command:e.join(" "),loss:{level:"terse",bytes_elided:O}});if(!k)throw new Error("terse test output requires an elision store");let p=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${O}) \u2014 rsp show ${k}`;return{stdout:Buffer.from(`${u}
36
- ${p}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l,mintedHandle:k,bytesElided:O,rowsElided:d}}function Ji(e){let t=[],n=Ii;for(let r of e.slice(0,Ni)){let i=Gi(r.excerpt,Math.min(Bi,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function Gi(e,t){if(t<=0)return"";let n=e.split(`
28
+ `}function Ar(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(Bt(r)&&Dt(r)===0&&Tr(r)===t)return n}return-1}function jt(e,t,n){let r=e.length;for(let i=t+1;i<e.length;i++)if(Bt(e[i])&&Dt(e[i])<=n){r=i;break}for(;r-1>t&&e[r-1].trim()==="";)r--;return r}function Dt(e){return(e.match(/^ */)?.[0]??"").length}function Bt(e){let t=e.trim();return t!==""&&!t.startsWith("#")}function Tr(e){return e.replace(/^ */,"").replace(/:.*$/,"").trim()}function vt(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function sa(e,t){let n=e===""?[]:e.replace(/\n+$/,"").split(`
29
+ `),r=Ar(n,"plugins");if(r===-1)return e;let i=jt(n,r,0),s=kr(n,"memory",r+1,i,2);if(s===-1)return e;let o=jt(n,s,2),a=[...n],c=kr(a,"storePath",s+1,o,4);return c!==-1?a[c]=` storePath: ${t}`:a.splice(o,0,` storePath: ${t}`),`${a.join(`
30
+ `)}
31
+ `}function kr(e,t,n,r,i){for(let s=n;s<r;s++){let o=e[s];if(Bt(o)&&Dt(o)===i&&Tr(o)===t)return s}return-1}async function xr(e){try{return await Zo(e,Yo.F_OK),!0}catch{return!1}}var Lt,ra,_r=g(()=>{"use strict";B();Lt=Pe,ra=".red/memory/graph.rdb"});import{createConnection as oa}from"node:net";async function Ut(e,t){let n=e.timeoutMs??1e3;return await new Promise((r,i)=>{let s=oa(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)}
32
+ `)}),s.on("data",u=>{a+=u.toString("utf8");let d=a.indexOf(`
33
+ `);if(d<0)return;let m=a.slice(0,d);l(()=>{try{r(JSON.parse(m))}catch(w){i(w)}}),s.end()}),s.on("error",u=>l(()=>i(u))),s.on("close",()=>{o||l(()=>i(new Error("resident rsp server closed without response")))})})}var Pr=g(()=>{"use strict"});var Br={};$(Br,{ResidentRspElisionStore:()=>Ae,ensureResidentServer:()=>Dr,resolveResidentPaths:()=>Ft});import{randomUUID as Lr}from"node:crypto";import{spawn as aa}from"node:child_process";import{constants as Ct}from"node:fs";import{readFileSync as ca}from"node:fs";import{mkdir as jr,open as la,rm as ua}from"node:fs/promises";import{dirname as Jt,join as He,resolve as Gt}from"node:path";import{fileURLToPath as da}from"node:url";function Ft(e){let t=ma(e)??Gt(e);return{rootDir:t,socketPath:He(t,".red","tmp","rsp.sock"),lockPath:He(t,".red","tmp","rsp.lock")}}async function Dr(e,t){if(await jr(Jt(e.socketPath),{recursive:!0}),await qt(e.socketPath))return;let n=await fa(e.lockPath);if(n)try{if(await qt(e.socketPath))return;pa(e,t),await Ir(e.socketPath);return}finally{await n.close(),await ua(e.lockPath,{force:!0})}await Ir(e.socketPath)}async function qt(e){try{return(await Ut({socketPath:e,timeoutMs:200},{id:Lr(),op:"ping"})).ok}catch{return!1}}async function Ir(e){let t=Date.now()+15e3,n;for(;Date.now()<t;){if(await qt(e))return;await new Promise(r=>setTimeout(r,50))}throw n instanceof Error?n:new Error("resident rsp server did not start")}async function fa(e){await jr(Jt(e),{recursive:!0});try{return await la(e,Ct.O_CREAT|Ct.O_EXCL|Ct.O_RDWR)}catch(t){if(t.code!=="EEXIST")throw t;return null}}function pa(e,t){let n=process.argv[1]?Gt(process.argv[1]):da(import.meta.url);aa(process.execPath,[...process.execArgv,n,"server","--socket",e.socketPath,"--store-uri",t.storeUri,"--ttl-days",String(t.ttlDays),"--byte-budget",String(t.byteBudget)],{cwd:e.rootDir,detached:!0,stdio:"ignore",env:{...process.env,RSP_RESIDENT_SERVER:"1"}}).unref()}function ma(e){let t=Gt(e);for(let n=0;n<32;n++){try{if(Nr(He(t,".red","config.yaml"))!=null||Nr(He(t,".git","HEAD"))!=null)return t}catch{}let r=Jt(t);if(r===t)return null;t=r}return null}function Nr(e){try{return ca(e,"utf8")}catch{return null}}function vr(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Ae,Mt=g(()=>{"use strict";Pr();Ae=class{constructor(t,n){this.paths=t;this.config=n}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?vr(n)&&n.status==="expired"?n:!vr(n)||typeof n.original!="string"?null:{...n,original:Buffer.from(n.original,"base64")}:null}async stats(){return await this.request({op:"stats"})}async memory(t,n){return await this.request({op:"memory",action:t,payload:n})}async close(){}async request(t){await Dr(this.paths,this.config);let n=await Ut(this.paths,{...t,id:Lr()});if(!n.ok)throw new Error(n.error);return n.value}}});var qr={};$(qr,{runRspMcpServer:()=>ha});import{createInterface as ya}from"node:readline";async function ha(){let e=ya({input:process.stdin,crlfDelay:1/0});for await(let t of e){if(!t.trim())continue;let n;try{n=JSON.parse(t);let r=await ga(n);Ur({jsonrpc:"2.0",id:n.id??null,result:r})}catch(r){Ur({jsonrpc:"2.0",id:typeof Cr(t)?.id>"u"?null:Cr(t)?.id,error:{code:-32e3,message:r instanceof Error?r.message:String(r)}})}}}async function ga(e){if(e.method==="initialize")return{protocolVersion:"2024-11-05",capabilities:{tools:{}},serverInfo:{name:"rsp",version:"0.1.0"}};if(e.method==="tools/list")return{tools:[{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"]}}]};if(e.method==="tools/call"){let t=e.params,n=wa();if(t?.name==="rsp_stats")return{content:[{type:"text",text:JSON.stringify(await n.stats())}]};if(t?.name==="rsp_show"){let r=String(t.arguments?.handle??""),i=await n.get(r);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 wa(){let e=z(process.cwd(),process.env);return new Ae(Ft(process.cwd()),{storeUri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget})}function Ur(e){process.stdout.write(`${JSON.stringify(e)}
34
+ `)}function Cr(e){try{return JSON.parse(e)}catch{return null}}var Jr=g(()=>{"use strict";B();Mt()});var Fr={};$(Fr,{runResidentServer:()=>ka});import{randomUUID as ba}from"node:crypto";import{mkdir as Ra,rm as Gr}from"node:fs/promises";import{createServer as Ea}from"node:net";import{dirname as Sa}from"node:path";async function ka(e){await Ra(Sa(e.socketPath),{recursive:!0}),await Gr(e.socketPath,{force:!0});let t=process.hrtime.bigint(),n=await Oe.open({uri:e.storeUri,ttlDays:e.ttlDays,byteBudget:e.byteBudget,allowResidentOpen:!0}),r=Number(process.hrtime.bigint()-t)/1e6,i=1,s=e.idleMs??3e4,o,a=Ea(l=>{c(),xa(l,async u=>{c();let d=await Oa(n,u),m={id:u.id,ok:!0,value:d,storeOpenCount:i,storeElapsedMs:r};l.write(`${JSON.stringify(m)}
35
+ `)})});function c(){o&&clearTimeout(o),o=setTimeout(()=>a.close(),s),o.unref()}await new Promise((l,u)=>{a.once("error",u),a.listen(e.socketPath,()=>{a.off("error",u),l()})}),c(),await new Promise(l=>a.once("close",l)),i=0,o&&clearTimeout(o),await n.close(),await Gr(e.socketPath,{force:!0})}function xa(e,t){let n="";e.setEncoding("utf8"),e.on("data",r=>{n+=r;let i=n.indexOf(`
36
+ `);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??ba(),ok:!1,error:a instanceof Error?a.message:String(a)};e.write(`${JSON.stringify(l)}
37
+ `)}finally{e.end()}})()})}async function Oa(e,t){if(t.op==="ping")return{pong:!0};if(t.op==="stats")return await e.stats();if(t.op==="mint")return{handle:await e.mint(Buffer.from(t.original,"base64"),t.meta)};if(t.op==="get")return Aa(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 Aa(e){return e?"status"in e?e:{...e,original:e.original.toString("base64"),original_encoding:"base64"}:null}var Mr=g(()=>{"use strict";Me()});function M(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 Vr(e,t){if(!t)return!0;let n=Vt(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(r=>n.includes(r))}function T(e,t){return t?e.filter(n=>Vr(n,t)):[...e]}function ce(e,t){if(!t)return e;let r=e.split(`
38
+ `).filter(i=>i&&Vr(i,t));return r.length>0?`${r.join(`
39
+ `)}
40
+ `:""}function V(e,t){let n=t.filter(Boolean);return n.length===0?e:{...e,help:n}}function Vt(e){return Array.isArray(e)?e.map(Vt).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(Vt).join(" "):String(e??"")}var Ke=g(()=>{"use strict"});var Qr={};$(Qr,{DEFAULT_RSP_HEAVY_GIT_BYTE_THRESHOLD:()=>L,GIT_LOG_MACHINE_FIELDS:()=>Hr,renderGitContract:()=>Kr,runGitWrapper:()=>$a});import{spawn as Ta}from"node:child_process";async function $a(e,t){let n=Wr(e),r=zr(n.argv),i=await Na(r,n.argv.slice(1));return Kr(e,i,t)}async function Kr(e,t,n){let r=Wr(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(ce(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=zr(r.argv),s=va(i,r.argv,t.stdout,r.query);if(s===`git empty
41
+ `)return{stdout:Buffer.from(s),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let o=Ca(i,s);if(o)return{stdout:Buffer.from(`${o}
42
+ `),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:s,oneLine:!0};let a=x(s);if(_a(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=Ma(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
+ `;return{stdout:Buffer.from(`${x(c.payload)}
44
+ ${d}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:c.payload,mintedHandle:u,bytesElided:l,rowsElided:c.rowsElided}}function Wr(e){let t=M(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 _a(e,t,n,r){if(r.level==="terse")return!1;if(n||r.level==="full"||!Pa(e)||r.level!=="lossless")return!0;let i=Fa(r.heavyGitByteThreshold,L);return Buffer.byteLength(t)<=i}function Pa(e){return e==="diff"||e==="log"}function zr(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 Ia(e,t){let n=t.slice(1);switch(e){case"status":return["status","--porcelain=v2","-z","-b",...n];case"log":return["log",`--format=%x1e${Hr.join("%x1f")}`,"-z",...n];case"diff":return["diff","--numstat","-z",...n];case"commit":return["commit",...n];case"push":return["push","--porcelain",...n]}}async function Na(e,t){let n=Ta("git",Ia(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 va(e,t,n,r){switch(e){case"status":return La(t,n,r);case"log":return ja(t,n,r);case"diff":return Da(t,n,r);case"commit":return Te(Ba(t,n),r,["rsp git status --query <path-or-state>"]);case"push":return Te(Ua(t,n),r,["rsp gh pr list --query <branch>"])}}function La(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:Ja(l)})}if(i.length===0)return`git empty
45
+ `;let s=T(i,n),o=Ga(s,"state");return Te({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 ja(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=T(r,n);return Te({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 Da(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=T(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 Te({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 Ba(e,t){let n=t.split(`
46
+ `)[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 Ua(e,t){let n=t.split(`
47
+ `).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(" "),[m,w]=(u??"").split(":");return{flag:l??"",from:m??"",to:w??"",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 Te(e,t,n){return t?V(e,n):e}function Ca(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=>qa(s)&&s.flag!=="=").length===1?String(t.summary??""):null}return null}function qa(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ja(e){return e.includes("A")?"added":e.includes("D")?"deleted":e.includes("R")?"renamed":e.includes("M")?"modified":"changed"}function Ga(e,t){let n={};for(let r of e){let i=String(r[t]??"");n[i]=(n[i]??0)+1}return n}function Fa(e,t){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:t}function Ma(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 Hr,Yr=g(()=>{"use strict";we();B();Ke();B();Hr=["%h","%an","%as","%s"]});var li={};$(li,{renderGhContract:()=>ei,runGhWrapper:()=>Wa});import{spawn as Xr}from"node:child_process";async function Wa(e,t){let n=ti(e),r=await Qa(n);return ei(e,r,t)}async function ei(e,t,n){let r=M(e);if((t.status??0)!==0||t.signal)return{stdout:Buffer.from(ce(t.stdout,r.query)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal};let i=ti(e),s=We(t.stdout),o=Za(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=sc(o);if(a){if(!n.store)throw new Error("truncated gh output requires an elision store");let p=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=p}let c=a?.target.truncated.handle||void 0,l=x(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=oc(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),m=await n.store?.mint(Buffer.from(l),{command:e.join(" "),loss:{level:"terse",bytes_elided:d}});if(!m)throw new Error("terse gh output requires an elision store");let w=`\u2026 elided ${u.rowsElided} rows (+${d}) \u2014 rsp show ${m}
48
+ `;return{stdout:Buffer.from(`${x(u.payload)}
49
+ ${w}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:u.payload,mintedHandle:m,bytesElided:d,rowsElided:u.rowsElided}}function ti(e){let t=M(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 za(e){if(e.action==="combined")throw new Error("combined gh command uses multiple machine calls");let t=`${e.kind}:${e.action}`,n=e.wide?Ha[t]:Va[t];return[e.kind,e.action,...e.passthrough,"--json",n.join(",")]}async function Qa(e){if(e.action==="combined")return await Ya(e);let t=Xr("gh",za(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 Ya(e){let t=e.target??"",n=["number","title","state","body","author","labels","url","baseRefName","headRefName"],r=["comments"],[i,s,o]=await Promise.all([Ht(["pr","view",t,"--json",n.join(",")]),Ht(["pr","checks",t,"--json","name,state,bucket,conclusion,link,startedAt,completedAt,workflow"]),Ht(["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:We(i.stdout),checks:We(s.stdout),comments:We(o.stdout)}),stderr:[i.stderr,s.stderr,o.stderr].filter(Boolean).join(""),status:0,signal:null}}async function Ht(e){let t=Xr("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 Za(e,t,n){if(e.action==="list"&&Array.isArray(n)&&n.length===0)return nc(e.kind);let r={command:t.join(" ")};switch(`${e.kind}:${e.action}`){case"pr:list":{let i=ue(n).map(o=>ni(o,e.wide)),s=T(i,e.query);return le({...r,prs:s,summary:`${Kt(s.length,i.length,e.query)} ${Zr(s,"open")} PRs`},e,["rsp gh pr <number>","rsp gh pr list --query <title-or-label>"])}case"pr:view":return le({...r,pr:ri(N(n),e),summary:`PR #${X(N(n),"number")}`},e,["rsp gh pr <number>","rsp gh pr view <number> --full"]);case"pr:combined":return Xa(e,t,N(n));case"issue:list":{let i=ue(n).map(o=>ii(o,e.wide)),s=T(i,e.query);return le({...r,issues:s,summary:`${Kt(s.length,i.length,e.query)} ${Zr(s,"open")} issues`},e,["rsp gh issue view <number>","rsp gh issue list --query <label-or-title>"])}case"issue:view":return le({...r,issue:rc(N(n),e),summary:`issue #${X(N(n),"number")}`},e,["rsp gh issue view <number> --full"]);case"run:list":{let i=ue(n).map(o=>si(o,e.wide)),s=T(i,e.query);return le({...r,runs:s,summary:`${Kt(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 le({...r,run:ic(N(n),e),summary:`run ${X(N(n),"databaseId")}`},e,["rsp gh run view <id> --full"])}throw new Error(`unsupported gh command: ${e.kind} ${e.action}`)}function Xa(e,t,n){let r=ri(N(n.view),{...e,action:"view",wide:!0}),i=T(ue(n.checks).map(ec),e.query),s=N(n.comments).comments,o=T(ue(s).map(tc).slice(-3),e.query);return V({command:t.join(" "),pr:r,checks:i,comments:o,summary:`PR #${X(N(n.view),"number")}: ${i.length} checks, ${o.length} comments`},["rsp gh pr view <number> --full","rsp gh pr <number> --query <check-or-comment>","rsp gh run view <id>"])}function ec(e){return{name:b(e,"name"),state:$e(e),bucket:b(e,"bucket"),conclusion:b(e,"conclusion"),workflow:b(e,"workflow"),link:b(e,"link")}}function tc(e){return{author:ci(e.author),body:ze(e,"body",Wt,!1),created:b(e,"createdAt")}}function nc(e){return e==="pr"?`0 open PRs \u2014 try: rsp gh issue list
50
+ `:e==="issue"?`0 open issues \u2014 try: rsp gh issue list --state all
51
+ `:`0 runs \u2014 try: rsp gh run list --limit 20
52
+ `}function ni(e,t){let n={number:X(e,"number"),title:b(e,"title"),state:$e(e),draft:!!e.isDraft};return t&&Object.assign(n,oi(e)),n}function ri(e,t){let n=ni(e,t.wide);return n.body=ze(e,"body",Wt,t.full),t.wide&&(n.base=b(e,"baseRefName"),n.head=b(e,"headRefName")),n}function ii(e,t){let n={number:X(e,"number"),title:b(e,"title"),state:$e(e),labels:ai(e.labels)};return t&&Object.assign(n,oi(e)),n}function rc(e,t){let n=ii(e,t.wide);return n.body=ze(e,"body",Wt,t.full),n}function si(e,t){let n={id:X(e,"databaseId"),name:b(e,"name"),status:$e(e),conclusion:b(e,"conclusion")};return t&&(n.event=b(e,"event"),n.branch=b(e,"headBranch"),n.workflow=b(e,"workflowName"),n.created=b(e,"createdAt")),n}function ic(e,t){let n=si(e,t.wide),r=ue(e.jobs).map(i=>({name:b(i,"name"),status:$e(i),conclusion:b(i,"conclusion"),log:ze(i,"log",Ka,t.full)}));return n.jobs=r,n}function ze(e,t,n,r){let i=b(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 sc(e){let t=[e];for(;t.length>0;){let n=t.pop();if(Array.isArray(n))t.push(...n);else if(de(n)){if(de(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 oc(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 Zr(e,t){return e.every(n=>n.state===t)?t:"returned"}function Kt(e,t,n){return n?`${e}/${t}`:String(e)}function le(e,t,n){return t.query?V(e,n):e}function $e(e){return(b(e,"state")||b(e,"status")).toLowerCase()}function oi(e){return{author:ci(e.author),labels:ai(e.labels),url:b(e,"url"),updated:b(e,"updatedAt")}}function ai(e){return Array.isArray(e)?e.map(t=>de(t)?b(t,"name"):String(t)).filter(Boolean):[]}function ci(e){return de(e)?b(e,"login"):""}function We(e){return e.trim()?JSON.parse(e):null}function ue(e){return Array.isArray(e)?e.filter(de):[]}function N(e){return de(e)?e:{}}function b(e,t){let n=e[t];return typeof n=="string"?n:""}function X(e,t){let n=e[t];return typeof n=="number"?n:0}function de(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Va,Ha,Wt,Ka,ui=g(()=>{"use strict";we();Ke();Va={"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"]},Ha={"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"]},Wt=160,Ka=160});var mi={};$(mi,{renderTestContract:()=>di,runTestWrapper:()=>dc});import{spawn as ac}from"node:child_process";async function dc(e,t){let n=M(e),r=await hc(n.argv);return await di(e,r,t)}async function di(e,t,n){let r=M(e),s=fi(r.argv)==="vitest"?gc(t.stdout):wc(t.stdout),o=t.status;if(!s||(o??0)!==0&&s.failed===0)return{stdout:Buffer.from(ce(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 ${Ec(s.durationSeconds)}`,c=T(s.failures,r.query);if(n.level==="terse")return await fc(r.argv,t,{...s,failures:c},o,a,n,r.query);let l=[],u,d=0;for(let p of c){let y=await bc(p.excerpt,r.argv.join(" "),n.store);l.push({suite:p.suite,name:p.name,excerpt:y.text}),u??=y.handle,d+=y.bytesElided}let m={exit_code:o,summary:r.query?`${a} \xB7 ${c.length}/${s.failures.length} failures matched`:a};l.length>0&&(m.failures=l);let w=r.query?V(m,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):m;return{stdout:Buffer.from(x(w)),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:w,mintedHandle:u,bytesElided:d>0?d:void 0,rowsElided:l.length>0?Math.max(0,s.total-l.length):void 0}}async function fc(e,t,n,r,i,s,o){let a=pc(n.failures),c={exit_code:r,summary:o?`${i} \xB7 ${n.failures.length} failures matched`:i};a.length>0&&(c.failures=a);let l=o?V(c,["rsp show <handle>","rsp vitest --query <suite-or-test>"]):c,u=x(l),d=Math.max(0,n.failures.length-a.length),m=a.some((S,W)=>S.excerpt!==n.failures[W].excerpt);if(d===0&&!m)return{stdout:Buffer.from(u),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l};let w={exit_code:r,summary:i};n.failures.length>0&&(w.failures=n.failures.map(S=>({suite:S.suite,name:S.name,excerpt:S.excerpt})));let p=x(w),y=Buffer.byteLength(p),h=await s.store?.mint(Buffer.from(p),{command:e.join(" "),loss:{level:"terse",bytes_elided:y}});if(!h)throw new Error("terse test output requires an elision store");let R=`\u2026 elided ${d>0?`${d} failures`:"full detail"} (+${y}) \u2014 rsp show ${h}`;return{stdout:Buffer.from(`${u}
53
+ ${R}`),stderr:Buffer.from(t.stderr),status:t.status,signal:t.signal,payload:l,mintedHandle:h,bytesElided:y,rowsElided:d}}function pc(e){let t=[],n=lc;for(let r of e.slice(0,uc)){let i=mc(r.excerpt,Math.min(cc,n));n=Math.max(0,n-Buffer.byteLength(i)),t.push({suite:r.suite,name:r.name,excerpt:i})}return t}function mc(e,t){if(t<=0)return"";let n=e.split(`
37
54
  `),r=n.length<=2?e:`${n[0]}
38
55
  \u2026
39
- ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function Wt(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 Fi(e){if(Wt(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 Vi(e){let t=Fi(e),n=Li(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 qi(e){let t=zt(e);if(!N(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=C(t.numTotalTests),s=C(t.numFailedTests),o=Wi(C(t.startTime),C(t.endTime));for(let a of n){if(!N(a))continue;let c=$(a.name)||$(a.file)||"",l=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let u of l)N(u)&&u.status==="failed"&&r.push({suite:c,name:$(u.fullName)||$(u.title)||$(u.name),excerpt:Ki(u.failureMessages)||$(u.failureMessage)})}return i||=n.reduce((a,c)=>!N(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>N(c)?a+C(c.perfStats&&N(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function Hi(e){let t=e.split(`
40
- `).filter(Boolean).map(c=>zt(c)).filter(N);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+=C(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=C(c.failed),o+=C(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:$(c.name).split("::").slice(0,-1).join("::"),name:$(c.name),excerpt:$(c.stdout)});continue}if(c.reason==="compiler-message"&&N(c.message)){let l=$(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(`
41
- `)}),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 Mi(e,t,n){let r=Buffer.from(e);if(r.length<=He)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,He).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
42
- \u2026 elided ${o} bytes (+${r.length}) \u2014 rsp show ${i}`,handle:i,bytesElided:r.length}}function zt(e){try{return JSON.parse(e)}catch{return null}}function Ki(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
43
- `):""}function Ui(e){return`${Number(e.toFixed(1))}s`}function Wi(e,t){return e>0&&t>e?(t-e)/1e3:0}function C(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function $(e){return typeof e=="string"?e:""}function N(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}async function Zi(e=process.argv.slice(2)){let t=ts(e);if(t.command==="hook"&&t.positional[1]==="claude-pre-exec")return await Nt();if(t.command==="hook"&&t.positional[1]==="claude-post-exec")return await Ft();if(t.command==="setup"){let o=await Ht(process.cwd());return process.stdout.write(rs(o)),0}let n=M(process.cwd(),process.env,t.storeUri),r=Xi(t.command);if(!t.storeUri&&n.storeUri.startsWith("file://")&&!Qi(Yi(n.storeUri)))return r?await Qt("store not provisioned",t.positional):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
44
- `),1);let i=()=>ue.open({uri:n.storeUri,ttlDays:n.ttlDays,byteBudget:n.byteBudget}),s;try{if(!t.command){let o=await i();s=()=>o.close();let a=await o.stats();return process.stdout.write(ns(a)),0}if(t.command==="git"){let o=new ce(()=>ee(i));s=()=>o.close();let a=await ee(()=>Et(t.positional,{level:t.level,store:o,heavyGitByteThreshold:n.heavyGitByteThreshold}));return process.stdout.write(a.stdout),process.stderr.write(a.stderr),a.signal?(process.kill(process.pid,a.signal),128):a.status??0}if(t.command==="gh"){let o=new ce(()=>ee(i));s=()=>o.close();let a=await ee(()=>Ot(t.positional,{level:t.level,store:o}));return process.stdout.write(a.stdout),process.stderr.write(a.stderr),a.signal?(process.kill(process.pid,a.signal),128):a.status??0}if(t.command==="vitest"||t.command==="cargo"){let o=new ce(()=>ee(i));s=()=>o.close();let a=await ee(()=>Ut(t.positional,{level:t.level,store:o}));return process.stdout.write(a.stdout),process.stderr.write(a.stderr),a.signal?(process.kill(process.pid,a.signal),128):a.status??0}if(t.command==="show"&&t.handle){let o=await i();s=()=>o.close();let a=await o.get(t.handle);return a&&"original"in a&&a.original?(process.stdout.write(a.original),0):a?.status==="expired"?(process.stdout.write(`expired ${a.expired_at} \u2014 re-run: ${a.command}
56
+ ${n[n.length-1]}`,i=Buffer.from(r);return i.length<=t?r:i.subarray(0,t).toString("utf8").replace(/�$/,"")}function fi(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 yc(e){if(fi(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 hc(e){let t=yc(e),n=ac(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 gc(e){let t=pi(e);if(!H(t))return null;let n=Array.isArray(t.testResults)?t.testResults:[],r=[],i=K(t.numTotalTests),s=K(t.numFailedTests),o=Sc(K(t.startTime),K(t.endTime));for(let a of n){if(!H(a))continue;let c=v(a.name)||v(a.file)||"",l=Array.isArray(a.assertionResults)?a.assertionResults:[];for(let u of l)H(u)&&u.status==="failed"&&r.push({suite:c,name:v(u.fullName)||v(u.title)||v(u.name),excerpt:Rc(u.failureMessages)||v(u.failureMessage)})}return i||=n.reduce((a,c)=>!H(c)||!Array.isArray(c.assertionResults)?a:a+c.assertionResults.length,0),s||=r.length,o||=n.reduce((a,c)=>H(c)?a+K(c.perfStats&&H(c.perfStats)?c.perfStats.runtime:c.duration)/1e3:a,0),{failed:s,total:i,suites:n.length||1,durationSeconds:o,failures:r}}function wc(e){let t=e.split(`
57
+ `).filter(Boolean).map(c=>pi(c)).filter(H);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+=K(c.test_count)),(c.event==="failed"||c.event==="ok")&&(i+=K(c.failed),o+=K(c.exec_time));continue}if(c.type==="test"&&c.event==="failed"){n.push({suite:v(c.name).split("::").slice(0,-1).join("::"),name:v(c.name),excerpt:v(c.stdout)});continue}if(c.reason==="compiler-message"&&H(c.message)){let l=v(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(`
58
+ `)}),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 bc(e,t,n){let r=Buffer.from(e);if(r.length<=zt)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,zt).toString("utf8").replace(/\uFFFD$/,""),o=r.length-Buffer.byteLength(s);return{text:`${s}
59
+ \u2026 elided ${o} bytes (+${r.length}) \u2014 rsp show ${i}`,handle:i,bytesElided:r.length}}function pi(e){try{return JSON.parse(e)}catch{return null}}function Rc(e){return Array.isArray(e)?e.map(t=>String(t)).filter(Boolean).join(`
60
+ `):""}function Ec(e){return`${Number(e.toFixed(1))}s`}function Sc(e,t){return e>0&&t>e?(t-e)/1e3:0}function K(e){return typeof e=="number"&&Number.isFinite(e)?e:0}function v(e){return typeof e=="string"?e:""}function H(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var zt,cc,lc,uc,yi=g(()=>{"use strict";we();Ke();zt=320,cc=160,lc=zt,uc=3});async function kc(e=process.argv.slice(2)){let t=_c(e);if(t.command==="hook"&&t.positional[1]==="claude-pre-exec"){let{runClaudePreExecHook:p}=await Promise.resolve().then(()=>(ln(),cn));return await p()}if(t.command==="hook"&&t.positional[1]==="claude-post-exec"){let{runClaudePostExecHook:p}=await Promise.resolve().then(()=>(Fn(),Gn));return await p()}if(t.command==="setup"){let{provisionRspRepoStore:p}=await Promise.resolve().then(()=>(_r(),$r)),y=await p(process.cwd());return process.stdout.write(Ic(y)),0}if(t.command==="mcp"){let{runRspMcpServer:p}=await Promise.resolve().then(()=>(Jr(),qr));return await p(),0}if(t.command==="git"&&xc(t.positional))return await Oc();let{resolveResidentPaths:n,ResidentRspElisionStore:r}=await Promise.resolve().then(()=>(Mt(),Br));if(t.command==="server"){let{runResidentServer:p}=await Promise.resolve().then(()=>(Mr(),Fr)),y=Qt(t.positional,"--socket")??n(process.cwd()).socketPath,h=t.storeUri??Qt(t.positional,"--store-uri");if(!h)throw new Error("rsp server requires --store-uri");return await p({socketPath:y,storeUri:h,ttlDays:hi(t.positional,"--ttl-days")??7,byteBudget:hi(t.positional,"--byte-budget")??64*1024*1024}),0}let{resolveRspConfig:i}=await Promise.resolve().then(()=>(B(),Xt)),{existsSync:s}=await import("node:fs"),{fileURLToPath:o}=await import("node:url"),a=i(process.cwd(),process.env,t.storeUri),c=n(process.cwd()),l=Tc(t.command);if(!t.storeUri&&a.storeUri.startsWith("file://")&&!s(o(a.storeUri)))return l?await gi("store not provisioned",t.positional):(process.stdout.write(`error: rsp repo store is not provisioned - run /red-setup
61
+ `),1);let u=()=>Promise.resolve(new r(c,{storeUri:a.storeUri,ttlDays:a.ttlDays,byteBudget:a.byteBudget})),d=async()=>{let{RspElisionStore:p}=await Promise.resolve().then(()=>(Me(),Nt));return await p.open({uri:a.storeUri,ttlDays:a.ttlDays,byteBudget:a.byteBudget})},m=()=>a.storeUri.endsWith("/red-skills.rdb")?u():d(),w;try{if(!t.command){let p=await m();w=()=>p.close();let y=await p.stats();return process.stdout.write(Pc(y)),0}if(t.command==="git"){let{runGitWrapper:p}=await Promise.resolve().then(()=>(Yr(),Qr)),y=new _e(()=>fe(u));w=()=>y.close();let h=await fe(()=>p(t.positional,{level:t.level,store:y,heavyGitByteThreshold:a.heavyGitByteThreshold}));return process.stdout.write(h.stdout),process.stderr.write(h.stderr),h.signal?(process.kill(process.pid,h.signal),128):h.status??0}if(t.command==="gh"){let{runGhWrapper:p}=await Promise.resolve().then(()=>(ui(),li)),y=new _e(()=>fe(u));w=()=>y.close();let h=await fe(()=>p(t.positional,{level:t.level,store:y}));return process.stdout.write(h.stdout),process.stderr.write(h.stderr),h.signal?(process.kill(process.pid,h.signal),128):h.status??0}if(t.command==="vitest"||t.command==="cargo"){let{runTestWrapper:p}=await Promise.resolve().then(()=>(yi(),mi)),y=new _e(()=>fe(u));w=()=>y.close();let h=await fe(()=>p(t.positional,{level:t.level,store:y}));return process.stdout.write(h.stdout),process.stderr.write(h.stderr),h.signal?(process.kill(process.pid,h.signal),128):h.status??0}if(t.command==="show"&&t.handle){let p=await m();w=()=>p.close();let y=await p.get(t.handle);return y&&"original"in y&&y.original?(process.stdout.write(y.original),0):y?.status==="expired"?(process.stdout.write(`expired ${y.expired_at} \u2014 re-run: ${y.command}
45
62
  `),1):(process.stdout.write(`expired unknown \u2014 re-run: ${t.handle}
46
63
  `),1)}return process.stdout.write(`error: usage rsp show el:<id>
47
- `),2}catch(o){if(r)return await Qt("wrapper failed",t.positional,o);throw o}finally{await s?.()}}var ce=class{constructor(t){this.openStore=t}store;async mint(...t){return await(await this.open()).mint(...t)}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}};async function Qt(e,t,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);return process.stderr.write(`rsp: ${e}, passing through
48
- `),await es(t)}async function ee(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function Xi(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"}async function es(e){let t=e[0];if(!t)return 2;let n=zi(t,e.slice(1),{stdio:"inherit"});return await new Promise(r=>{n.on("error",i=>{process.stderr.write(`${i instanceof Error?i.message:String(i)}
49
- `),r(127)}),n.on("close",(i,s)=>{if(s){process.kill(process.pid,s),r(128);return}r(i??0)})})}function ts(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 ns(e){return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,""].join(`
50
- `)}function rs(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
51
- `)}import.meta.url===`file://${process.argv[1]}`&&Zi().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
52
- `),process.exit(1)});export{Zi as main,rs as renderSetupResult,ns as renderStats};
64
+ `),2}catch(p){if(l)return await gi("wrapper failed",t.positional,p);throw p}finally{await w?.()}}function Qt(e,t){let n=e.indexOf(t);return n>=0?e[n+1]:void 0}function hi(e,t){let n=Qt(e,t);if(n==null)return;let r=Number(n);return Number.isFinite(r)&&r>0?r:void 0}function xc(e){return e.length===2&&e[0]==="git"&&e[1]==="status"}async function Oc(){if(Ac(process.cwd()))return process.stdout.write(`git empty
65
+ `),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
66
+ `),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
67
+ `:n.stdout),0)}function Ac(e){try{let{existsSync:t,readdirSync:n}=Ri("node:fs");return!t(`${e}/.git`)||t(`${e}/.git/index`)?!1:n(e).every(r=>r===".git")}catch{return!1}}var _e=class{constructor(t){this.openStore=t}store;async mint(...t){return await(await this.open()).mint(...t)}async close(){if(!this.store)return;let t;try{t=await this.store}catch{return}await t.close()}open(){return this.store??=this.openStore(),this.store}};async function gi(e,t,n){if(process.env.RSP_DEBUG==="1")throw n instanceof Error?n:new Error(e);return process.stderr.write(`rsp: ${e}, passing through
68
+ `),await $c(t)}async function fe(e){let t=process.stderr.write;process.stderr.write=()=>!0;try{return await e()}finally{process.stderr.write=t}}function Tc(e){return e==="git"||e==="gh"||e==="vitest"||e==="cargo"}async function $c(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)}
69
+ `),i(127)}),r.on("close",(s,o)=>{if(o){process.kill(process.pid,o),i(128);return}i(s??0)})})}function _c(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 Pc(e){return[`records: ${e.records}`,`bytes: ${e.bytes}`,`oldest: ${e.oldest??"none"}`,`budget: ${e.budget}`,""].join(`
70
+ `)}function Ic(e){return[`config: ${e.configChanged?"updated":"unchanged"}`,`store: ${e.storeCreated?"created":"existing"}`,""].join(`
71
+ `)}import.meta.url===`file://${process.argv[1]}`&&kc().then(e=>process.exit(e),e=>{process.stdout.write(`error: ${e instanceof Error?e.message:String(e)}
72
+ `),process.exit(1)});export{kc as main,Ic as renderSetupResult,Pc as renderStats};