@reddb-io/red-skills 3.6.2 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6605,7 +6605,7 @@ Usage:
6605
6605
  ${n} archive --candidate <json> [--root <dir>] [--archive-dir <rel>]
6606
6606
  ${n} restore <name> [--root <dir>] [--archive-dir <rel>]`}function d9(n){return dRn(typeof n.root=="string"?n.root:process.cwd())}function rpt(n){return typeof n["archive-dir"]=="string"?n["archive-dir"]:void 0}async function VK(n){let r=await xs(n);return r?r.mode!=="graph"?{ok:!1,message:`curate: skill telemetry needs graph mode (this project is "${r.mode}") \u2014 run \`${p_e}\``}:Ku(r)?{ok:!0}:{ok:!1,message:`curate: skill telemetry is not enabled here \u2014 run \`${p_e}\``}:{ok:!1,message:`curate: memory is not initialized here \u2014 run \`${p_e}\``}}function mRn(){let n=oRn(GRn(import.meta.url));return n.includes("dist/curate-skill")||n.endsWith("dist/curate-skill")?Ipt(n,"..","cli.js"):Ipt(n,"..","cli.ts")}async function uRn(n,r){let i=["curate","skills","--json"];r!==void 0&&i.push("--stale-days",String(r));let d=mRn(),h=d.endsWith(".ts")?npt(process.execPath,["--import","tsx",d,...i,"--root",n],{encoding:"utf8"}):npt(process.execPath,[d,...i,"--root",n],{encoding:"utf8"}),V=h.status??1;if(V!==0)throw new Error(`memory curate skills exited ${V}`);return $bt(h.stdout??"")}function bRn(n){return typeof n.flags["stale-days"]=="string"?Number(n.flags["stale-days"]):void 0}async function apt(n,r){return(r.loadCuratorReport??uRn)(d9(n.flags),bRn(n))}async function pRn(n){let r=d9(n.flags),i=await VK(r);return i.ok?(console.log("curate: skill telemetry is enabled \u2014 ready to curate"),0):(console.error(i.message),2)}async function ZRn(n,r){let i=d9(n.flags),d=await VK(i);if(!d.ok)return console.error(d.message),2;let m;try{m=await apt(n,r)}catch(_){return console.error(`curate: ${_.message}`),1}let{candidates:h,byCategory:V,filtered:v}=u_e(m);return console.log(JSON.stringify({candidates:h,byCategory:V,filtered:v,totals:{totalSkills:m.totalSkills,curatableSkills:m.curatableSkills,readOnlySkills:m.readOnlySkills}},null,2)),0}async function hRn(n,r){let i=d9(n.flags),d=await VK(i);if(!d.ok)return console.error(d.message),2;let m;try{m=await apt(n,r)}catch(_){return console.error(`curate: ${_.message}`),1}let{byCategory:h}=u_e(m);if(b_e(h)===0)return console.error("curate: no candidates \u2014 no issue filed"),0;let V=typeof n.flags.label=="string"?n.flags.label:void 0,v=await tpt({byCategory:h,totals:{totalSkills:m.totalSkills,curatableSkills:m.curatableSkills,readOnlySkills:m.readOnlySkills},generatedAt:m.generatedAt},{cwd:i,label:V});return console.log(`curate: filed background issue \u2014 ${v.output||v.title}`),0}async function WRn(n){let r=d9(n.flags),i=await VK(r);if(!i.ok)return console.error(i.message),2;let d=n.flags.candidate;if(typeof d!="string")return console.error("curate archive: --candidate <json> is required"),2;let m;try{m=JSON.parse(d)}catch(V){return console.error(`curate archive: invalid --candidate JSON: ${V.message}`),2}let h=await Pbt(m,{rootDir:r,archiveDir:rpt(n.flags)});return h.ok?(console.log(`curate: archived "${h.receipt.name}" \u2192 ${h.receipt.archiveRoot} (${h.receipt.files.length} file(s), manifest at ${h.receipt.manifestPath})`),0):(console.error(`curate archive: refused \u2014 ${h.rejection.reason}: ${h.rejection.detail}`),3)}async function NRn(n){let r=d9(n.flags),i=await VK(r);if(!i.ok)return console.error(i.message),2;let d=n.positional[0];if(!d)return console.error("curate restore: skill name is required"),2;let m=await qbt(d,{rootDir:r,archiveDir:rpt(n.flags)});return console.log(`curate: restored "${m.name}" \u2192 ${m.restoredRoot} (${m.files.length} file(s) hash-verified)`),0}async function Z_e(n,r={}){switch(n.command){case"check":return pRn(n);case"list":return ZRn(n,r);case"background":return hRn(n,r);case"archive":return WRn(n);case"restore":return NRn(n);case void 0:case"--help":case"-h":return console.log(lpt(r.usageCommand)),0;default:return console.error(`unknown curate subcommand: ${n.command}
6607
6607
 
6608
- ${lpt(r.usageCommand)}`),2}}function h_e(n){let r={app:n,version:YRn(G9("__RED_BUILD_VERSION__",()=>"3.6.2")??"0.0.0-dev"),gitSha:G9("__RED_BUILD_GIT_SHA__",()=>"4a05257f346bc0c1025d1696e9f180f9185f5fe3")??"unknown",buildTime:G9("__RED_BUILD_TIME__",()=>"2026-08-05T08:36:37Z")??"unknown",bundleAsset:G9("__RED_BUNDLE_ASSET__",()=>"memory.bundle.min.mjs")??"unknown"},i=G9("__REDDB_SDK_VERSION__",()=>"1.23.1"),d=G9("__REDDB_BINARY_TAG__",()=>"v1.23.1");return i&&(r.reddbSdkVersion=i),d&&(r.reddbBinaryTag=d),r}function YRn(n){return n.startsWith("v")?n.slice(1):n}function W_e(n){return`${n.app} ${n.version} ${n.gitSha}`}function G9(n,r){try{let i=r();return typeof i=="string"&&i.length>0?i:void 0}catch{return process.env[n.replace(/^__|__$/g,"")]}}async function Gpt(n){let{store:r}=await gr(n);try{let i=await r.stats();console.log(`memory: ${i.nodes} node(s), ${i.edges} edge(s)`)}finally{await r.close()}}async function mpt(n){let r=n.positional[0];if(r!=="status"&&r!=="status-viewer"&&r!=="maintain"&&r!=="search")throw new Error("vector needs an action \u2014 supported: memory vector status|status-viewer|maintain|search");let i=process.env.RED_MEMORY_VECTOR_PROVIDER;n.flags.local===!0&&(process.env.RED_MEMORY_VECTOR_PROVIDER="local");let{store:d}=await gr(n);try{if(r==="search"){let h=n.positional.slice(1).join(" ").trim();if(!h)throw new Error("nothing to search \u2014 pass a query: memory vector search <query>");let V=await R5(d,h,{limit:la(n.flags,"limit")});if(n.flags.json===!0){console.log(JSON.stringify(V,null,2));return}if(V.status==="unavailable"){let v=V.error?` \u2014 ${V.error}`:"";console.log(`memory: vector search unavailable${v}`);return}console.log(`memory: vector search ${V.hits.length}/${V.limit} hit(s) for "${h}"`);for(let v of V.hits){let _=v.source?` source=${v.source}`:"";console.log(` ${v.score.toFixed(3)} memory_nodes:${v.rid} (${v.node_type}) ${v.title}${_}`),v.excerpt&&console.log(` ${v.excerpt}`)}return}if(r==="status-viewer"){let h=Wr(n.flags),V=Vl(n.flags,"out")??qa(h,".red/memory/vector-status-viewer.html"),v=mK(await d.vectorStatus());await hs(Ps(V),{recursive:!0}),await Xi(V,v.html,"utf8"),console.log(`memory: vector status viewer written ${V}`),console.log(` status: ${v.report.overall}`),console.log(` contract: ${v.contract.consumes}`);return}let m=r==="maintain"?await d.maintainVectorProjection({strict:n.flags.strict===!0}):await d.vectorStatus();if(n.flags.json===!0){console.log(JSON.stringify(m,null,2));return}console.log(`memory: vector projection ${m.overall} \u2014 ${m.ready}/${m.total} ready`),m.stale>0&&console.log(` stale: ${m.stale}`),m.unavailable>0&&console.log(` unavailable: ${m.unavailable}`),m.failed>0&&console.log(` failed: ${m.failed}`);for(let h of m.nodes.filter(V=>V.status!=="ready")){let V=h.error?` \u2014 ${h.error}`:"";console.log(` ${h.rid} (${h.node_type}) ${h.label}: ${h.status}${V}`)}for(let h of m.docs.filter(V=>V.status!=="ready")){let V=h.error?` \u2014 ${h.error}`:"";console.log(` doc:${h.rid} ${h.path}: ${h.status}${V}`)}}finally{await d.close(),n.flags.local===!0&&(i==null?delete process.env.RED_MEMORY_VECTOR_PROVIDER:process.env.RED_MEMORY_VECTOR_PROVIDER=i)}}async function upt(n){let{store:r}=await gr(n);try{let i=la(n.flags,"stale-days")??90,d=await hy(r,{staleDays:i});if(d.stale.length===0){console.log(`memory: healthy \u2014 0 of ${d.totalNodes} node(s) stale (unaccessed ${i}+ days, never recalled)`);return}console.log(`memory: ${d.stale.length} of ${d.totalNodes} node(s) stale (unaccessed ${i}+ days, never recalled):`);for(let V of d.stale)console.log(` ${V.rid} (${V.node_type}) ${V.title} \u2014 ${V.ageDays}d idle`);if(n.flags.prune!==!0){console.log(`
6608
+ ${lpt(r.usageCommand)}`),2}}function h_e(n){let r={app:n,version:YRn(G9("__RED_BUILD_VERSION__",()=>"3.7.0")??"0.0.0-dev"),gitSha:G9("__RED_BUILD_GIT_SHA__",()=>"35ac6399d581ac10216fca2d50b356bfc60f449b")??"unknown",buildTime:G9("__RED_BUILD_TIME__",()=>"2026-08-05T17:00:59Z")??"unknown",bundleAsset:G9("__RED_BUNDLE_ASSET__",()=>"memory.bundle.min.mjs")??"unknown"},i=G9("__REDDB_SDK_VERSION__",()=>"1.23.1"),d=G9("__REDDB_BINARY_TAG__",()=>"v1.23.1");return i&&(r.reddbSdkVersion=i),d&&(r.reddbBinaryTag=d),r}function YRn(n){return n.startsWith("v")?n.slice(1):n}function W_e(n){return`${n.app} ${n.version} ${n.gitSha}`}function G9(n,r){try{let i=r();return typeof i=="string"&&i.length>0?i:void 0}catch{return process.env[n.replace(/^__|__$/g,"")]}}async function Gpt(n){let{store:r}=await gr(n);try{let i=await r.stats();console.log(`memory: ${i.nodes} node(s), ${i.edges} edge(s)`)}finally{await r.close()}}async function mpt(n){let r=n.positional[0];if(r!=="status"&&r!=="status-viewer"&&r!=="maintain"&&r!=="search")throw new Error("vector needs an action \u2014 supported: memory vector status|status-viewer|maintain|search");let i=process.env.RED_MEMORY_VECTOR_PROVIDER;n.flags.local===!0&&(process.env.RED_MEMORY_VECTOR_PROVIDER="local");let{store:d}=await gr(n);try{if(r==="search"){let h=n.positional.slice(1).join(" ").trim();if(!h)throw new Error("nothing to search \u2014 pass a query: memory vector search <query>");let V=await R5(d,h,{limit:la(n.flags,"limit")});if(n.flags.json===!0){console.log(JSON.stringify(V,null,2));return}if(V.status==="unavailable"){let v=V.error?` \u2014 ${V.error}`:"";console.log(`memory: vector search unavailable${v}`);return}console.log(`memory: vector search ${V.hits.length}/${V.limit} hit(s) for "${h}"`);for(let v of V.hits){let _=v.source?` source=${v.source}`:"";console.log(` ${v.score.toFixed(3)} memory_nodes:${v.rid} (${v.node_type}) ${v.title}${_}`),v.excerpt&&console.log(` ${v.excerpt}`)}return}if(r==="status-viewer"){let h=Wr(n.flags),V=Vl(n.flags,"out")??qa(h,".red/memory/vector-status-viewer.html"),v=mK(await d.vectorStatus());await hs(Ps(V),{recursive:!0}),await Xi(V,v.html,"utf8"),console.log(`memory: vector status viewer written ${V}`),console.log(` status: ${v.report.overall}`),console.log(` contract: ${v.contract.consumes}`);return}let m=r==="maintain"?await d.maintainVectorProjection({strict:n.flags.strict===!0}):await d.vectorStatus();if(n.flags.json===!0){console.log(JSON.stringify(m,null,2));return}console.log(`memory: vector projection ${m.overall} \u2014 ${m.ready}/${m.total} ready`),m.stale>0&&console.log(` stale: ${m.stale}`),m.unavailable>0&&console.log(` unavailable: ${m.unavailable}`),m.failed>0&&console.log(` failed: ${m.failed}`);for(let h of m.nodes.filter(V=>V.status!=="ready")){let V=h.error?` \u2014 ${h.error}`:"";console.log(` ${h.rid} (${h.node_type}) ${h.label}: ${h.status}${V}`)}for(let h of m.docs.filter(V=>V.status!=="ready")){let V=h.error?` \u2014 ${h.error}`:"";console.log(` doc:${h.rid} ${h.path}: ${h.status}${V}`)}}finally{await d.close(),n.flags.local===!0&&(i==null?delete process.env.RED_MEMORY_VECTOR_PROVIDER:process.env.RED_MEMORY_VECTOR_PROVIDER=i)}}async function upt(n){let{store:r}=await gr(n);try{let i=la(n.flags,"stale-days")??90,d=await hy(r,{staleDays:i});if(d.stale.length===0){console.log(`memory: healthy \u2014 0 of ${d.totalNodes} node(s) stale (unaccessed ${i}+ days, never recalled)`);return}console.log(`memory: ${d.stale.length} of ${d.totalNodes} node(s) stale (unaccessed ${i}+ days, never recalled):`);for(let V of d.stale)console.log(` ${V.rid} (${V.node_type}) ${V.title} \u2014 ${V.ageDays}d idle`);if(n.flags.prune!==!0){console.log(`
6609
6609
  Re-run with --prune to delete these (asks for confirmation first).`);return}let m=n.flags.yes===!0;if(!m){if(!process.stdin.isTTY){console.log(`
6610
6610
  refusing to prune without confirmation \u2014 re-run with --yes in a non-interactive shell`);return}let V=ise({input:process.stdin,output:process.stdout}),v=(await V.question(`
6611
6611
  Delete ${d.stale.length} stale node(s)? Type "yes" to confirm: `)).trim();V.close(),m=v==="yes"}if(!m){console.log("memory: aborted \u2014 nothing deleted");return}let{pruned:h}=await Xfe(r,d.stale);console.log(`memory: pruned ${h} stale node(s)`)}finally{await r.close()}}async function bpt(n){let r=Wr(n.flags),i=n.positional[0]??".red/memory/export",d=Lm(i)?i:za(r,i),m=n.flags.communities===!0,h=n.flags.interop===!0,{store:V}=await gr(n);try{let v=await dQ(V,d,{communities:m,interop:h});console.log(`memory: exported ${v.nodes} node(s), ${v.edges} edge(s)`),m&&console.log(" communities: coloured via native Louvain"),console.log(` graph: ${v.htmlPath}`),console.log(` json: ${v.jsonPath}`),console.log(` audit: ${v.auditPath}`),v.interop&&(console.log(` nodes: ${v.interop.nodesJsonlPath}`),console.log(` edges: ${v.interop.edgesJsonlPath}`),console.log(` graphml:${v.interop.graphmlPath}`),console.log(` cypher: ${v.interop.cypherPath}`))}finally{await V.close()}}async function ppt(n){let r=n.positional.join(" ").trim();if(!r)throw new Error("nothing to search \u2014 pass a query: memory global-search <query>");let i=typeof n.flags.limit=="string"?Number(n.flags.limit):void 0,{store:d,config:m}=await gr(n);try{let h=await tF("memory.global-search",{store:d,providerConfig:m.provider},{query:r,limit:i,cache:n.flags["no-cache"]===!0?"off":"read-only"});if(n.flags.json===!0){console.log(JSON.stringify(h,null,2));return}console.log(`memory: ${h.total_hits} global-search hit(s) for "${h.query}"`),console.log(` source: ${h.generated_from.operation_id}`),console.log(` graph hash: ${h.generated_from.graph_hash}`),console.log(` provider: ${h.generated_from.provider.status}${h.generated_from.provider.error?` (${h.generated_from.provider.error})`:""}`);for(let V of h.evidence)console.log(` ${V.community_id}: score ${V.score}, ${V.size} node(s)`),console.log(` matched: ${V.matched_terms.join(", ")}`),console.log(` top label: ${V.top_label}`),console.log(` top type: ${V.top_node_type}`),V.narrative_summary&&console.log(` summary: ${V.narrative_summary}`)}finally{await d.close()}}async function yRn(n,r){let i=Vl(n.flags,"from");if(i){let m=Lm(i)?i:za(r,i),h=JSON.parse(await Bb(m,"utf8")),V=h.contract??h,v=Zfe(V);if(!v.valid)throw new Error(`architecture-overview: ${m} is not a valid graph contract \u2014 ${v.errors.join("; ")}`);return V}let{store:d}=await gr(n);try{let[m,h,V]=await Promise.all([d.listNodes(),d.listEdges(),d.communities()]);return AX({nodes:m,edges:h.map(qX),communities:V})}finally{await d.close()}}async function Zpt(n){let r=Wr(n.flags),i=await yRn(n,r),d=qXe(i);if(n.flags.json===!0){console.log(JSON.stringify(d,null,2));return}if(n.flags.stdout===!0){process.stdout.write(d.markdown);return}let m=Vl(n.flags,"out")??".red/memory/architecture-overview.md",h=Lm(m)?m:za(r,m);await hs(Ps(h),{recursive:!0}),await Xi(h,d.markdown,"utf8"),console.log(`memory: architecture overview written ${h}`),console.log(` contract: ${d.generated_from.contract_version}`),console.log(` ${d.totals.nodes} node(s), ${d.layers.length} layer(s), ${d.communities.length} community(ies)`)}async function _5(){if(process.stdin.isTTY)return"";let n=[];for await(let r of process.stdin)n.push(r);return Buffer.concat(n).toString("utf8")}var RRn=["SessionStart","PostToolUse","Stop","PreCompact"];async function hpt(n){let r=n.positional[0],i=n.flags.runner==="codex"?"codex":"claude";if(!r||!RRn.includes(r)){process.stdout.write("{}");return}try{let d=await _5(),m=d.trim()?JSON.parse(d):{},h=Wr(n.flags)!==process.cwd()?Wr(n.flags):typeof m.cwd=="string"?m.cwd:process.cwd(),V=await I1e(i,r,m);try{r==="SessionStart"?await vy(h,V.sessionId?{id:V.sessionId}:{}):await rN(h)||(V.sessionId?await vy(h,{id:V.sessionId}):await VHe(h))}catch{}let v=await vHe(V,h);process.stdout.write(l1e(i,r,v))}catch{process.stdout.write("{}")}}var vRn=["post-commit","post-checkout"];async function Wpt(n){switch(n.positional[0]){case"refresh":return FRn(n);case"install-hooks":return XRn(n);case"uninstall-hooks":return wRn(n);default:throw new Error("vcs needs a subcommand \u2014 memory vcs refresh|install-hooks|uninstall-hooks")}}async function FRn(n){let r=Wr(n.flags),i=Vl(n.flags,"event"),d=n.flags.json===!0;if(!i||!vRn.includes(i)){d&&console.log(JSON.stringify({noop:!0,reason:"unknown vcs event"}));return}try{let m=await FHe(r,{event:i,prevHead:Vl(n.flags,"prev"),newHead:Vl(n.flags,"new"),flag:Vl(n.flags,"flag"),export:n.flags["no-export"]!==!0});if(d){console.log(JSON.stringify(m,null,2));return}if(m.noop){console.log(`memory: ${i} \u2014 no-op (${m.reason})`);return}let h=m.refresh;console.log(`memory: ${i} refreshed ${h?.files??0} changed file(s) \u2014 ${h?.added??0} added, ${h?.updated??0} updated, ${h?.stale??0} stale`),m.exported&&console.log(` exported ${m.exported.nodes} node(s) \u2192 ${m.exported.jsonPath}`)}catch(m){let h=`error: ${m instanceof Error?m.message:String(m)}`;console.log(d?JSON.stringify({noop:!0,reason:h}):`memory: ${i} \u2014 no-op (${h})`)}}async function Npt(n){try{let{stdout:r}=await wy("git",["-C",n,"rev-parse","--git-path","hooks"],{encoding:"utf8"}),i=r.trim();return i?Lm(i)?i:za(n,i):za(n,".git/hooks")}catch{return za(n,".git/hooks")}}function fRn(){let n=process.env.CLAUDE_PLUGIN_ROOT??process.env.CODEX_PLUGIN_ROOT,r=opt(new URL("../cli.ts",import.meta.url)),i=[n?qa(n,"scripts","bootstrap.mjs"):void 0,qa(Ps(Ps(r)),"scripts","bootstrap.mjs")];for(let d of i)if(d&&gK(d))return d}async function XRn(n){let r=Wr(n.flags),i=await xs(r);if(!i){console.log("memory: not initialized here \u2014 run `memory init --mode graph` before installing git hooks");return}if(i.mode!=="graph"){console.log(`memory: git hooks need graph mode \u2014 this project is "${i.mode}". Re-run \`memory init --mode graph\` first`);return}let d=await Npt(r),m=await XHe({hooksDir:d,bootstrapPath:fRn(),force:n.flags.force===!0});if(n.flags.json===!0){console.log(JSON.stringify({hooksDir:d,...m},null,2));return}m.installed.length>0&&console.log(`memory: installed ${m.installed.join(", ")} into ${d}`);for(let h of m.backedUp)console.log(` backed up existing hook \u2192 ${h}`);for(let h of m.skipped)console.log(` skipped ${h.hook}: ${h.reason}`)}async function wRn(n){let r=Wr(n.flags),i=await Npt(r),d=await wHe(i);if(n.flags.json===!0){console.log(JSON.stringify({hooksDir:i,...d},null,2));return}d.removed.length>0?console.log(`memory: removed ${d.removed.join(", ")} from ${i}`):console.log(`memory: no managed hooks found in ${i}`);for(let m of d.restored)console.log(` restored backed-up hook \u2192 ${m}`);for(let m of d.skipped)console.log(` ${m.reason}`)}async function Ypt(n){let r=n.positional[0];if(r==="learn")return HRn(n);if(r!=="record")throw new Error("unknown worker command \u2014 expected: memory worker record|learn");let i=await _5();if(!i.trim())throw new Error("worker record needs a JSON payload on stdin");let d=JSON.parse(i),{store:m}=await gr(n);try{let h=await I_e(m,d);console.log(`memory: recorded worker ${d.repository}#${d.issueNumber}/${d.attemptNumber} (rid ${h.workerRid})`)}finally{await m.close()}}async function HRn(n){let r=n.positional[1];if(r==="apply")return QRn(n);if(r!=null)throw new Error("memory worker learn supports: apply");let i=Wr(n.flags),d=n.flags.json===!0,m=n.flags["write-proposal"]===!0,{store:h}=await gr(n);try{let V=await l_e(h),v=m?await r_e(i,V):null,_=V.proposals.length===0?"no-candidates":m?"proposal-written":"proposal-ready";if(d){console.log(JSON.stringify({state:_,proposalFile:v,...V},null,2));return}console.log(`memory: worker learning - ${_}`);for(let M of V.proposals)console.log(` [${M.kind}] ${M.title}`),console.log(` evidence: ${M.evidenceSummary}`);for(let M of V.rejected)console.log(` ${M.action}: ${M.kind} - ${M.reason}`);v&&console.log(` proposal: ${v}`),console.log(`
@@ -30,7 +30,7 @@ ${r.searched.map(t=>` ${t}`).join(`
30
30
  `}function xs(e,r){return r.map(te).join(e)}function Uh(e){if(!Array.isArray(e)||e.length===0)throw M(0,"TOONL header requires fields");return e.map(r=>{let t;try{[t]=Se(String(r),0)}catch(n){throw Kr(n)}if(t==="")throw M(0,"TOONL header requires fields");return t})}function id(e,r){return e!==null&&e.length===r.length&&e.every((t,n)=>t===r[n])}function ad(e){if(e!==void 0&&(!Number.isInteger(e)||e<=0))throw M(0,"TOONL continuation cadence must be positive")}function Bh(e,r,t){return e.continuationEveryRows!==void 0&&r>=e.continuationEveryRows||e.continuationEveryBytes!==void 0&&t>=e.continuationEveryBytes}function ld(e){if(e===null||typeof e!="object"||Array.isArray(e))throw M(0,"TOONL output requires object rows");let r=Object.keys(e);if(r.length===0)throw M(0,"TOONL output requires object rows");if(r.some(t=>!Ge(e[t])))throw M(0,"TOONL rows must be flat objects");return r}function Hh(e){return JSON.stringify([...e].sort())}function dd(e,r){let t=Hh(e),n=r.get(t);return n!==void 0?n:(r.set(t,e),e)}function ge({delimiter:e=V,trailer:r=!0,continuationEveryRows:t,continuationEveryBytes:n}={}){Wh(e),ad(t),ad(n);let o=null,s="",i=new Map,a=0,l=0,d=0,c=new Map,u=!1,m={continuationEveryRows:t,continuationEveryBytes:n},f=()=>o===null||!r?"":`[=${a}]
31
31
  `,h=()=>Bh(m,l,d)?(l=0,d=0,od(e,s,!0)):"",v=y=>{md(y,0);let S=c.get(y);if(S===void 0){if(c.size>=ud)throw M(0,"too many tagged lanes");S={fields:null,fieldsByShape:new Map},c.set(y,S)}return S};return{push(y){if(u)throw M(0,"TOONL encoder is closed");let S=dd(ld(y),i),G="";(o===null||o.length!==S.length||o.some((Q,ee)=>Q!==S[ee]))&&(G+=f(),o=S,s=xs(e,o),a=0,l=0,d=0,G+=od(e,s));let H=o.map(Q=>ae(y[Q],e));G+=h();let L=`${H.join(e)}
32
32
  `;return G+=L,a+=1,l+=1,d+=L.length,G},declareLane(y,S){if(u)throw M(0,"TOONL encoder is closed");let G=Uh(S),H=xs(V,G),L=v(y);return id(L.fields,G)?"":(L.fields=G,sd(y,H))},pushTagged(y,S){if(u)throw M(0,"TOONL encoder is closed");let G=v(y),H=dd(ld(S),G.fieldsByShape),L=xs(V,H),Q=H.map(le=>ae(S[le],V)),ee="";return id(G.fields,H)||(G.fields=H,ee+=sd(y,L)),`${ee}${y}:${Q.join(V)}
33
- `},end(){return u?"":(u=!0,f())}}}function Ps(e){let r={app:e,version:qh(Xr("__RED_BUILD_VERSION__",()=>"3.6.2")??"0.0.0-dev"),gitSha:Xr("__RED_BUILD_GIT_SHA__",()=>"4a05257f346bc0c1025d1696e9f180f9185f5fe3")??"unknown",buildTime:Xr("__RED_BUILD_TIME__",()=>"2026-08-05T08:36:37Z")??"unknown",bundleAsset:Xr("__RED_BUNDLE_ASSET__",()=>"redskilled.bundle.min.mjs")??"unknown"},t=Xr("__REDDB_SDK_VERSION__",()=>""),n=Xr("__REDDB_BINARY_TAG__",()=>"");return t&&(r.reddbSdkVersion=t),n&&(r.reddbBinaryTag=n),r}function qh(e){return e.startsWith("v")?e.slice(1):e}function gd(e){return`${e.app} ${e.version} ${e.gitSha}`}function Xr(e,r){try{let t=r();return typeof t=="string"&&t.length>0?t:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var fd={"=":"data",":=":{to:"data",typed:!0},":":"meta"},Vh=/^[a-z][a-z0-9+.-]*:\/\//i;function Kh(e,r){return typeof r=="string"?{separator:e,to:r,typed:!1,prefix:!1}:{separator:e,to:r.to,typed:r.typed??!1,prefix:r.prefix??!1}}function Jh(e=fd){return Object.entries(e).map(([r,t])=>Kh(r,t)).sort((r,t)=>t.separator.length-r.separator.length)}function zh(e){return/^-\d+(\.\d+)?$/.test(e)}function Nt(e){return!(!e||e.startsWith("-")&&!zh(e))}function Yn(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;let r=Number(e);return!Number.isNaN(r)&&Number.isFinite(r)&&e.trim()!==""?r:e}function hd(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}"))try{return JSON.parse(e)}catch{}let r=Number(e);return!Number.isNaN(r)&&Number.isFinite(r)&&e.trim()!==""?r:e.includes(",")?e.split(",").map(t=>hd(t.trim())):e}function wr(e,r){switch(r){case"boolean":return Qh(e);case"number":return Yh(e);case"array":return e.split(",").map(t=>Yn(t.trim()));case"string":default:return e}}function Qh(e){let r=e.toLowerCase().trim();return r==="true"||r==="yes"||r==="1"||r==="on"}function Yh(e){if(e.trim()==="")throw new TypeError(`Cannot convert "${e}" to number`);let r=Number(e);if(Number.isNaN(r))throw new TypeError(`Cannot convert "${e}" to number`);return r}function rr(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function Xh(e,r={}){return e.map(t=>{let n=r[t.type];return n?n(t.value):t.value}).join("")}function F(e,r){return{type:e,value:r}}function Zh(e){let r=[],t=ry(e);if(r.push(F("section-header","Usage:"),F("text"," "),F("usage-text",t),F("newline",`
33
+ `},end(){return u?"":(u=!0,f())}}}function Ps(e){let r={app:e,version:qh(Xr("__RED_BUILD_VERSION__",()=>"3.7.0")??"0.0.0-dev"),gitSha:Xr("__RED_BUILD_GIT_SHA__",()=>"35ac6399d581ac10216fca2d50b356bfc60f449b")??"unknown",buildTime:Xr("__RED_BUILD_TIME__",()=>"2026-08-05T17:00:59Z")??"unknown",bundleAsset:Xr("__RED_BUNDLE_ASSET__",()=>"redskilled.bundle.min.mjs")??"unknown"},t=Xr("__REDDB_SDK_VERSION__",()=>""),n=Xr("__REDDB_BINARY_TAG__",()=>"");return t&&(r.reddbSdkVersion=t),n&&(r.reddbBinaryTag=n),r}function qh(e){return e.startsWith("v")?e.slice(1):e}function gd(e){return`${e.app} ${e.version} ${e.gitSha}`}function Xr(e,r){try{let t=r();return typeof t=="string"&&t.length>0?t:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var fd={"=":"data",":=":{to:"data",typed:!0},":":"meta"},Vh=/^[a-z][a-z0-9+.-]*:\/\//i;function Kh(e,r){return typeof r=="string"?{separator:e,to:r,typed:!1,prefix:!1}:{separator:e,to:r.to,typed:r.typed??!1,prefix:r.prefix??!1}}function Jh(e=fd){return Object.entries(e).map(([r,t])=>Kh(r,t)).sort((r,t)=>t.separator.length-r.separator.length)}function zh(e){return/^-\d+(\.\d+)?$/.test(e)}function Nt(e){return!(!e||e.startsWith("-")&&!zh(e))}function Yn(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;let r=Number(e);return!Number.isNaN(r)&&Number.isFinite(r)&&e.trim()!==""?r:e}function hd(e){if(e==="true")return!0;if(e==="false")return!1;if(e==="null")return null;if(e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}"))try{return JSON.parse(e)}catch{}let r=Number(e);return!Number.isNaN(r)&&Number.isFinite(r)&&e.trim()!==""?r:e.includes(",")?e.split(",").map(t=>hd(t.trim())):e}function wr(e,r){switch(r){case"boolean":return Qh(e);case"number":return Yh(e);case"array":return e.split(",").map(t=>Yn(t.trim()));case"string":default:return e}}function Qh(e){let r=e.toLowerCase().trim();return r==="true"||r==="yes"||r==="1"||r==="on"}function Yh(e){if(e.trim()==="")throw new TypeError(`Cannot convert "${e}" to number`);let r=Number(e);if(Number.isNaN(r))throw new TypeError(`Cannot convert "${e}" to number`);return r}function rr(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function Xh(e,r={}){return e.map(t=>{let n=r[t.type];return n?n(t.value):t.value}).join("")}function F(e,r){return{type:e,value:r}}function Zh(e){let r=[],t=ry(e);if(r.push(F("section-header","Usage:"),F("text"," "),F("usage-text",t),F("newline",`
34
34
  `),F("newline",`
35
35
  `)),e.positional&&e.positional.length>0){r.push(F("section-header","Arguments:"),F("newline",`
36
36
  `));for(let n of e.positional)if(n.description){let o=n.variadic?`${n.name}...`:n.name;r.push(F("indent"," "),F("positional-name",`<${o}>`)),n.required||r.push(F("positional-optional"," (optional)")),r.push(F("newline",`
@@ -37,7 +37,7 @@ var NR=Object.create;var Oa=Object.defineProperty;var FR=Object.getOwnPropertyDe
37
37
  `;return E+=C,a+=1,c+=1,u+=C.length,E},declareLane(b,h){if(d)throw B(0,"TOONL encoder is closed");let E=yS(h),T=tc(Q,E),C=R(b);return im(C.fields,E)?"":(C.fields=E,om(b,T))},pushTagged(b,h){if(d)throw B(0,"TOONL encoder is closed");let E=R(b),T=um(cm(h),E.fieldsByShape),C=tc(Q,T),G=T.map(q=>Ee(h[q],Q)),F="";return im(E.fields,T)||(E.fields=T,F+=om(b,C)),`${F}${b}:${G.join(Q)}
38
38
  `},end(){return d?"":(d=!0,g())}}}var lm,dm,pm,PF,IF,fm=y(()=>{St();Jn();yr();lm=[Q,"|"," "],dm=8,pm=/^[A-Za-z0-9_-]+$/,PF=new TextEncoder,IF=new TextDecoder});var J=y(()=>{vp();St();Jn();Jn();rm();fm()});function ES(e){return e==="no-op"?0:e==="usage"?2:1}function V(e){return Buffer.from(`${$(rc(e))}
39
39
  `)}function rc(e){let t={command:e.command,category:e.category,exit_code:e.exitCode??ES(e.category),error:e.error,help:[e.help]};return e.validFlags&&e.validFlags.length>0&&(t.valid_flags=[...e.validFlags]),e.diagnostics&&(t.diagnostics=RS(e.diagnostics,3)),t}function Ye(e,t,r){let s=([r,t].find(i=>i.trim())??"").trim(),o=s.toLowerCase();return/\bgh\b/.test(e)&&Sp(s)?{command:e,category:"transient",error:Vn(s)||"GitHub API rate limit exceeded",help:kp,diagnostics:s}:/\bgh\b/.test(e)&&(o.includes("gh_token")||o.includes("not logged in")||o.includes("authentication"))?{command:e,category:"real-error",error:Vn(s)||"GitHub authentication failed",help:"gh auth login",diagnostics:s}:o.includes("not a git repository")?{command:e,category:"real-error",error:Vn(s)||"not a git repository",help:"git status",diagnostics:s}:o.includes("repository not found")||o.includes("could not resolve host")?{command:e,category:"real-error",error:Vn(s)||"repository is unavailable",help:e.startsWith("gh ")?"gh repo view":"git remote -v",diagnostics:s}:{command:e,category:"real-error",error:Vn(s)||"command failed",help:`${e} --help`,diagnostics:s}}function gm(e,t,r,n){return V({command:e,category:"usage",error:`unknown flag: ${t}`,help:n,validFlags:r})}function Vn(e){return e.split(/\r?\n/,1)[0]?.trim()??""}function RS(e,t){return e.split(/\r?\n/).slice(0,t).join(`
40
- `).trim()}var ct=y(()=>{"use strict";Tp();J()});function yo(e){let t={app:e,version:GS(Qr("__RED_BUILD_VERSION__",()=>"3.6.2")??"0.0.0-dev"),gitSha:Qr("__RED_BUILD_GIT_SHA__",()=>"4a05257f346bc0c1025d1696e9f180f9185f5fe3")??"unknown",buildTime:Qr("__RED_BUILD_TIME__",()=>"2026-08-05T08:36:37Z")??"unknown",bundleAsset:Qr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=Qr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=Qr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function GS(e){return e.startsWith("v")?e.slice(1):e}function Sm(e){return`${e.app} ${e.version} ${e.gitSha}`}function Qr(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var sc=y(()=>{});import{isAbsolute as LS,join as xt,resolve as oc}from"node:path";function NS(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function vm(e){return xt(NS(e),Tm)}function xm(e){return xt(vm(e),"state")}function Cm(e){return xt(vm(e),"tmp")}function X(e){return xt(xm(e),"rsp")}function FS(e){return xt(xm(e),"red-skills.rdb")}function MS(e){return xt(Cm(e),"red-skills.rdb")}function Pm(e,t){let r=FS(e);if(t(r))return r;let n=MS(e);if(t(n))throw jS();return r}function jS(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}function Im(e){return xt(Cm(e),"waits")}function Gm(e){let t=e.overrideEnvVars??ic;for(let n of t){let s=e.env[n];if(s)return LS(s)?s:oc(e.startDir,s)}let r=oc(e.startDir);for(;;){if(e.exists(xt(r,Tm)))return r;let n=xt(r,".."),s=oc(n);if(s===r)break;r=s}return e.startDir}var Tm,DS,$S,ic,Om,Am,Ge=y(()=>{Tm=".red",DS="MEMORY_ROOT",$S="RED_BRAIN_ROOT",ic=[DS,$S];Om=".red/state/red-skills.rdb";Am=".red/tmp/red-skills.rdb"});function ne(e){return $(e,{keyedMapCollapse:!0})}var BS,US,fM,Ct=y(()=>{J();Ge();BS=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],US=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.toonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.toonl",toonPath:".red/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],fM=[...BS,...US]});function Kn(e){let{values:t,rest:r}=fr(e,{query:Lm.query},Dm);return{argv:r,query:t.query?.trim()||void 0}}function $m(e){let{values:t,rest:r}=fr(e,Lm,Dm);return{argv:r,query:t.query?.trim()||void 0,full:t.full===!0}}function HS(e,t){if(!t)return!0;let r=ac(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function Re(e,t){return t?e.filter(r=>HS(r,t)):[...e]}function Ot(e,t){return cc(e,t,{includeLegacyHelp:!0})}function cc(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function ac(e){return Array.isArray(e)?e.map(ac).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(ac).join(" "):String(e??"")}var Lm,Dm,zn=y(()=>{"use strict";La();Lm={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},Dm={stopAtSeparator:!1}});var To={};K(To,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>bo,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>wo,DEFAULT_RSP_OVERHEAD_CEILING:()=>At,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>Eo,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Ro,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>_o,RSP_OVERHEAD_FAMILIES:()=>YS,RSP_OVERHEAD_LEDGER_FILE:()=>Mm,RSP_OVERHEAD_SCHEMA_VERSION:()=>jm,classifyOverheadSample:()=>dc,noteChildProcessMs:()=>Um,noteSelfStateBytesRead:()=>Qn,overheadCounters:()=>hc,overheadFamilyDisabled:()=>QS,overheadHealth:()=>Jt,overheadLedgerPath:()=>pc,overheadMsOf:()=>Bm,overheadTelemetryFields:()=>ko,readOverheadLedger:()=>Yn,readSelfStateFile:()=>So,readSelfStateFileSync:()=>eT,recordOverheadSample:()=>mc,resetOverheadCounters:()=>ZS,resetOverheadLedger:()=>XS,startChildProcessTimer:()=>Le});import{existsSync as qS,mkdirSync as WS,readFileSync as Nm,renameSync as JS,writeFileSync as VS}from"node:fs";import{readFile as KS}from"node:fs/promises";import{dirname as zS,join as Fm}from"node:path";function Bm(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,lc(t)):0}function dc(e,t=At){let r=Bm(e),n=[];return r>t.maxOverheadMs&&n.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&n.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&n.push("overhead-exceeds-savings"),{overhead_ms:r,breached:n.length>0,reasons:n}}function ko(e,t=At){let r=dc(e,t);return{wrapper_ms:lc(e.wrapperMs),overhead_ms:r.overhead_ms,child_ms:lc(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:r.breached,overhead_breach_reasons:r.reasons.join(",")}}function pc(e){return Fm(X(e),Mm)}function Yn(e){try{let t=Nm(pc(e),"utf8"),r=sT(t);if(oT(r))return r}catch{}return{version:1,families:{}}}function mc(e,t,r=At,n=Date.now()){let s=Yn(e),o=dc(t,r),i=s.families[t.family]??nT(t.family,n),a=yc(i,n)?Hm(i):i,c=o.breached?a.consecutive_breaches+1:0,u={...a,family:t.family,invocations:a.invocations+1,breaches:a.breaches+(o.breached?1:0),consecutive_breaches:c,breached:o.breached,reasons:o.reasons,last_overhead_ms:o.overhead_ms,last_self_state_bytes_read:Math.max(0,Math.trunc(t.selfStateBytesRead)),last_bytes_saved:Math.max(0,Math.trunc(t.bytesSaved)),updated_at:new Date(n).toISOString()};return o.breached?c>=r.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(n).toISOString(),u.disabled_until=new Date(n+r.cooldownMs).toISOString(),u.disabled_reason=tT(t.family,c,o,r)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,qm(e,s),u}function QS(e,t,r=Date.now()){let n=Yn(e).families[t];return!n?.disabled||yc(n,r)?null:n}function XS(e,t){let r=Yn(e);return t?delete r.families[t]:r.families={},qm(e,r),r}function Jt(e,t=At,r=Date.now()){let n=Object.values(Yn(e).families).map(a=>yc(a,r)?Hm(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=n.filter(a=>a.disabled),o=n.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:jm,verdict:i,summary:rT(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:n}}function Qn(e){Number.isFinite(e)&&e>0&&(fc+=e)}function Um(e){Number.isFinite(e)&&e>0&&(gc+=e)}function hc(){return{selfStateBytesRead:fc,childMs:gc}}function ZS(){fc=0,gc=0}function Le(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,Um(Number(process.hrtime.bigint()-e)/1e6))}}async function So(e){let t=await KS(e,"utf8");return Qn(Buffer.byteLength(t)),t}function eT(e){let t=Nm(e,"utf8");return Qn(Buffer.byteLength(t)),t}function tT(e,t,r,n){let s=r.reasons.map(o=>o==="wall-clock-ceiling"?`added ${r.overhead_ms}ms > ${n.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${n.maxSelfStateBytes}B`:"self-state read exceeded bytes saved").join("; ");return`rsp ${e} exceeded its overhead ceiling on ${t} consecutive invocations (${s}); wrapper self-disabled, commands pass through raw`}function rT(e,t,r){if(e==="green")return"every wrapper family is inside its overhead ceiling";let n=[];return t.length>0&&n.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),r.length>0&&n.push(`breaching: ${r.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),n.join("; ")}function yc(e,t){if(!e.disabled||!e.disabled_until)return!1;let r=Date.parse(e.disabled_until);return Number.isFinite(r)&&r<=t}function Hm(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function nT(e,t){return{family:e,invocations:0,breaches:0,consecutive_breaches:0,breached:!1,reasons:[],disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,last_overhead_ms:0,last_self_state_bytes_read:0,last_bytes_saved:0,updated_at:new Date(t).toISOString()}}function qm(e,t){try{let r=pc(e);if(!qS(Fm(e,".red")))return;WS(zS(r),{recursive:!0});let n=`${r}.${process.pid}.tmp`;VS(n,`${$(t)}
40
+ `).trim()}var ct=y(()=>{"use strict";Tp();J()});function yo(e){let t={app:e,version:GS(Qr("__RED_BUILD_VERSION__",()=>"3.7.0")??"0.0.0-dev"),gitSha:Qr("__RED_BUILD_GIT_SHA__",()=>"35ac6399d581ac10216fca2d50b356bfc60f449b")??"unknown",buildTime:Qr("__RED_BUILD_TIME__",()=>"2026-08-05T17:00:59Z")??"unknown",bundleAsset:Qr("__RED_BUNDLE_ASSET__",()=>"rsp.bundle.min.mjs")??"unknown"},r=Qr("__REDDB_SDK_VERSION__",()=>"1.23.1"),n=Qr("__REDDB_BINARY_TAG__",()=>"v1.23.1");return r&&(t.reddbSdkVersion=r),n&&(t.reddbBinaryTag=n),t}function GS(e){return e.startsWith("v")?e.slice(1):e}function Sm(e){return`${e.app} ${e.version} ${e.gitSha}`}function Qr(e,t){try{let r=t();return typeof r=="string"&&r.length>0?r:void 0}catch{return process.env[e.replace(/^__|__$/g,"")]}}var sc=y(()=>{});import{isAbsolute as LS,join as xt,resolve as oc}from"node:path";function NS(e){if(!e)throw new Error("root is required");return e.replace(/\/$/,"")}function vm(e){return xt(NS(e),Tm)}function xm(e){return xt(vm(e),"state")}function Cm(e){return xt(vm(e),"tmp")}function X(e){return xt(xm(e),"rsp")}function FS(e){return xt(xm(e),"red-skills.rdb")}function MS(e){return xt(Cm(e),"red-skills.rdb")}function Pm(e,t){let r=FS(e);if(t(r))return r;let n=MS(e);if(t(n))throw jS();return r}function jS(){return new Error("Legacy shared store found at .red/tmp/red-skills.rdb. Run `rsp setup` to migrate it to .red/state/red-skills.rdb before using rsp, memory, or brain.")}function Im(e){return xt(Cm(e),"waits")}function Gm(e){let t=e.overrideEnvVars??ic;for(let n of t){let s=e.env[n];if(s)return LS(s)?s:oc(e.startDir,s)}let r=oc(e.startDir);for(;;){if(e.exists(xt(r,Tm)))return r;let n=xt(r,".."),s=oc(n);if(s===r)break;r=s}return e.startDir}var Tm,DS,$S,ic,Om,Am,Ge=y(()=>{Tm=".red",DS="MEMORY_ROOT",$S="RED_BRAIN_ROOT",ic=[DS,$S];Om=".red/state/red-skills.rdb";Am=".red/tmp/red-skills.rdb"});function ne(e){return $(e,{keyedMapCollapse:!0})}var BS,US,fM,Ct=y(()=>{J();Ge();BS=[{id:"memory.config",plugin:"memory",legacyPath:".red/memory/config.json",toonPath:".red/memory/config.toon",kind:"toon"}],US=[{id:"dev.afk-history",plugin:"dev",legacyPath:".red/state/afk-history.jsonl",toonPath:".red/state/castle/history.toonl",kind:"toonl"},{id:"dev.agent-log",plugin:"dev",legacyPath:".red/tmp/agent.log.toonl",toonPath:".red/tmp/agent.log.toonl",kind:"toonl"},{id:"dev.supervisor-firehose",plugin:"dev",legacyPath:".red/tmp/afk-supervisor.log.toonl",toonPath:".red/tmp/supervisors/default/supervisor.log.toonl",kind:"toonl",migration:"sniff-read"},{id:"dev.code-understanding-bench-runs",plugin:"dev",legacyPath:".red/tmp/bench/code-understanding/runs.jsonl",toonPath:".red/tmp/bench/code-understanding/runs.toonl",kind:"toonl"},{id:"dev.attempt-state",plugin:"dev",legacyPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",toonPath:".red/tmp/{workers,go-workers,scout-workers}/*/*/afk.state.toon",kind:"toon"},{id:"dev.statusline-count-cache",plugin:"dev",legacyPath:".red/tmp/statusline-cache.json",toonPath:".red/state/statusline/statusline-cache.toon",kind:"toon"},{id:"dev.statusline-repo-cache",plugin:"dev",legacyPath:".red/tmp/statusline-repo-cache.json",toonPath:".red/state/statusline/statusline-repo-cache.toon",kind:"toon"},{id:"dev.rsp-resident-registry",plugin:"dev",legacyPath:".red/state/rsp/rsp-resident.pid.json",toonPath:".red/state/rsp/rsp-resident.pid.json",kind:"toon"},{id:"dev.rsp-status-summary",plugin:"dev",legacyPath:".red/state/rsp/rsp-status-summary.json",toonPath:".red/state/rsp/rsp-status-summary.json",kind:"toon"},{id:"dev.rsp-wait-registry",plugin:"dev",legacyPath:".red/tmp/waits/*.json",toonPath:".red/tmp/waits/*.json",kind:"toon"}],fM=[...BS,...US]});function Kn(e){let{values:t,rest:r}=fr(e,{query:Lm.query},Dm);return{argv:r,query:t.query?.trim()||void 0}}function $m(e){let{values:t,rest:r}=fr(e,Lm,Dm);return{argv:r,query:t.query?.trim()||void 0,full:t.full===!0}}function HS(e,t){if(!t)return!0;let r=ac(e).toLowerCase();return t.toLowerCase().split(/\s+/).filter(Boolean).every(n=>r.includes(n))}function Re(e,t){return t?e.filter(r=>HS(r,t)):[...e]}function Ot(e,t){return cc(e,t,{includeLegacyHelp:!0})}function cc(e,t,r={}){let n=t.filter(Boolean);return n.length===0?e:{...e,...r.includeLegacyHelp?{help:n}:{},next_steps:n}}function ac(e){return Array.isArray(e)?e.map(ac).join(" "):typeof e=="object"&&e!==null?Object.values(e).map(ac).join(" "):String(e??"")}var Lm,Dm,zn=y(()=>{"use strict";La();Lm={query:{kind:"value",coerce:e=>e},full:{kind:"boolean"}},Dm={stopAtSeparator:!1}});var To={};K(To,{DEFAULT_RSP_MAX_OVERHEAD_MS:()=>bo,DEFAULT_RSP_MAX_SELF_STATE_BYTES:()=>wo,DEFAULT_RSP_OVERHEAD_CEILING:()=>At,DEFAULT_RSP_OVERHEAD_CONSECUTIVE_BREACHES:()=>Eo,DEFAULT_RSP_OVERHEAD_COOLDOWN_MS:()=>Ro,DEFAULT_RSP_OVERHEAD_NET_LOSS_FLOOR_BYTES:()=>_o,RSP_OVERHEAD_FAMILIES:()=>YS,RSP_OVERHEAD_LEDGER_FILE:()=>Mm,RSP_OVERHEAD_SCHEMA_VERSION:()=>jm,classifyOverheadSample:()=>dc,noteChildProcessMs:()=>Um,noteSelfStateBytesRead:()=>Qn,overheadCounters:()=>hc,overheadFamilyDisabled:()=>QS,overheadHealth:()=>Jt,overheadLedgerPath:()=>pc,overheadMsOf:()=>Bm,overheadTelemetryFields:()=>ko,readOverheadLedger:()=>Yn,readSelfStateFile:()=>So,readSelfStateFileSync:()=>eT,recordOverheadSample:()=>mc,resetOverheadCounters:()=>ZS,resetOverheadLedger:()=>XS,startChildProcessTimer:()=>Le});import{existsSync as qS,mkdirSync as WS,readFileSync as Nm,renameSync as JS,writeFileSync as VS}from"node:fs";import{readFile as KS}from"node:fs/promises";import{dirname as zS,join as Fm}from"node:path";function Bm(e){let t=e.wrapperMs-e.childMs;return Number.isFinite(t)?Math.max(0,lc(t)):0}function dc(e,t=At){let r=Bm(e),n=[];return r>t.maxOverheadMs&&n.push("wall-clock-ceiling"),e.selfStateBytesRead>t.maxSelfStateBytes&&n.push("self-state-byte-ceiling"),e.selfStateBytesRead>t.netLossFloorBytes&&e.selfStateBytesRead>e.bytesSaved&&n.push("overhead-exceeds-savings"),{overhead_ms:r,breached:n.length>0,reasons:n}}function ko(e,t=At){let r=dc(e,t);return{wrapper_ms:lc(e.wrapperMs),overhead_ms:r.overhead_ms,child_ms:lc(Math.max(0,e.childMs)),self_state_bytes_read:Math.max(0,Math.trunc(e.selfStateBytesRead)),bytes_saved:Math.max(0,Math.trunc(e.bytesSaved)),overhead_breached:r.breached,overhead_breach_reasons:r.reasons.join(",")}}function pc(e){return Fm(X(e),Mm)}function Yn(e){try{let t=Nm(pc(e),"utf8"),r=sT(t);if(oT(r))return r}catch{}return{version:1,families:{}}}function mc(e,t,r=At,n=Date.now()){let s=Yn(e),o=dc(t,r),i=s.families[t.family]??nT(t.family,n),a=yc(i,n)?Hm(i):i,c=o.breached?a.consecutive_breaches+1:0,u={...a,family:t.family,invocations:a.invocations+1,breaches:a.breaches+(o.breached?1:0),consecutive_breaches:c,breached:o.breached,reasons:o.reasons,last_overhead_ms:o.overhead_ms,last_self_state_bytes_read:Math.max(0,Math.trunc(t.selfStateBytesRead)),last_bytes_saved:Math.max(0,Math.trunc(t.bytesSaved)),updated_at:new Date(n).toISOString()};return o.breached?c>=r.consecutiveBreaches&&(u.disabled=!0,u.disabled_at=new Date(n).toISOString(),u.disabled_until=new Date(n+r.cooldownMs).toISOString(),u.disabled_reason=tT(t.family,c,o,r)):(u.disabled=!1,u.disabled_at=null,u.disabled_until=null,u.disabled_reason=null),s.families[t.family]=u,qm(e,s),u}function QS(e,t,r=Date.now()){let n=Yn(e).families[t];return!n?.disabled||yc(n,r)?null:n}function XS(e,t){let r=Yn(e);return t?delete r.families[t]:r.families={},qm(e,r),r}function Jt(e,t=At,r=Date.now()){let n=Object.values(Yn(e).families).map(a=>yc(a,r)?Hm(a):a).sort((a,c)=>a.family.localeCompare(c.family)),s=n.filter(a=>a.disabled),o=n.filter(a=>a.consecutive_breaches>0),i=s.length>0||o.length>0?"red":"green";return{schema_version:jm,verdict:i,summary:rT(i,s,o),ceiling:t,breaching_families:o,disabled_families:s,families:n}}function Qn(e){Number.isFinite(e)&&e>0&&(fc+=e)}function Um(e){Number.isFinite(e)&&e>0&&(gc+=e)}function hc(){return{selfStateBytesRead:fc,childMs:gc}}function ZS(){fc=0,gc=0}function Le(){let e=process.hrtime.bigint(),t=!1;return()=>{t||(t=!0,Um(Number(process.hrtime.bigint()-e)/1e6))}}async function So(e){let t=await KS(e,"utf8");return Qn(Buffer.byteLength(t)),t}function eT(e){let t=Nm(e,"utf8");return Qn(Buffer.byteLength(t)),t}function tT(e,t,r,n){let s=r.reasons.map(o=>o==="wall-clock-ceiling"?`added ${r.overhead_ms}ms > ${n.maxOverheadMs}ms`:o==="self-state-byte-ceiling"?`self-state read > ${n.maxSelfStateBytes}B`:"self-state read exceeded bytes saved").join("; ");return`rsp ${e} exceeded its overhead ceiling on ${t} consecutive invocations (${s}); wrapper self-disabled, commands pass through raw`}function rT(e,t,r){if(e==="green")return"every wrapper family is inside its overhead ceiling";let n=[];return t.length>0&&n.push(`self-disabled: ${t.map(s=>`${s.family} (${s.reasons.join(",")||"ceiling"})`).join(", ")}`),r.length>0&&n.push(`breaching: ${r.map(s=>`${s.family} x${s.consecutive_breaches}`).join(", ")}`),n.join("; ")}function yc(e,t){if(!e.disabled||!e.disabled_until)return!1;let r=Date.parse(e.disabled_until);return Number.isFinite(r)&&r<=t}function Hm(e){return{...e,disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,consecutive_breaches:0,breached:!1,reasons:[]}}function nT(e,t){return{family:e,invocations:0,breaches:0,consecutive_breaches:0,breached:!1,reasons:[],disabled:!1,disabled_at:null,disabled_until:null,disabled_reason:null,last_overhead_ms:0,last_self_state_bytes_read:0,last_bytes_saved:0,updated_at:new Date(t).toISOString()}}function qm(e,t){try{let r=pc(e);if(!qS(Fm(e,".red")))return;WS(zS(r),{recursive:!0});let n=`${r}.${process.pid}.tmp`;VS(n,`${$(t)}
41
41
  `,{encoding:"utf8",mode:384}),JS(n,r)}catch{}}function sT(e){try{return JSON.parse(e)}catch{return H(e)}}function oT(e){return!uc(e)||e.version!==1||!uc(e.families)?!1:Object.values(e.families).every(iT)}function iT(e){return uc(e)&&typeof e.family=="string"&&typeof e.consecutive_breaches=="number"&&typeof e.disabled=="boolean"}function uc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function lc(e){return Number.isFinite(e)?Math.round(e*1e3)/1e3:0}var Mm,jm,bo,wo,_o,Eo,Ro,YS,At,fc,gc,ae=y(()=>{"use strict";Ge();J();Mm="overhead-budget.toon",jm="red.rsp.overhead.v1",bo=250,wo=1024*1024,_o=64*1024,Eo=3,Ro=6*60*60*1e3,YS=["git","gh","gh-api-json","vitest","cargo","cat","exec","proxy"],At={maxOverheadMs:bo,maxSelfStateBytes:wo,netLossFloorBytes:_o,consecutiveBreaches:Eo,cooldownMs:Ro};fc=0,gc=0});function Vm(e){return e.trimStart().startsWith("{")?"json":"toon"}function wc(e){let t=0;for(;e[t]===`
42
42
  `||e[t]==="\r";)t+=1;let r=e.slice(t);if(r==="")return null;let n=Vm(r);if(n==="json"){let o=r.indexOf(`
43
43
  `);return o<0?null:{frame:r.slice(0,o),dialect:n,rest:r.slice(o+1)}}let s=r.indexOf(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reddb-io/red-skills",
3
- "version": "3.6.2",
3
+ "version": "3.7.0",
4
4
  "description": "RedSkills plugin runtime bundles (dev, code-nav, memory, brain) distributed over npm — the v2 client transport (ADR 0091). Carries the platform-independent JS bundles inside the tarball plus thin bin shims; no postinstall download.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",