@kodax-ai/kodax 0.7.67 → 0.7.69

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.
Files changed (102) hide show
  1. package/CHANGELOG.md +209 -3
  2. package/README.md +61 -9
  3. package/README_CN.md +58 -9
  4. package/config-templates/config.example.jsonc +26 -0
  5. package/config-templates/integrations/a2a.example.jsonc +54 -0
  6. package/config-templates/integrations/extensions.example.jsonc +7 -0
  7. package/config-templates/integrations/mcp.example.jsonc +16 -0
  8. package/dist/chunks/agent-DQRXT6M7.js +2 -0
  9. package/dist/chunks/argument-completer-RSK6CCGP.js +2 -0
  10. package/dist/chunks/chunk-4WIODYOH.js +329 -0
  11. package/dist/chunks/chunk-AWMTNUDS.js +37 -0
  12. package/dist/chunks/chunk-F7C7J6IM.js +7 -0
  13. package/dist/chunks/chunk-I4TPQEJN.js +5 -0
  14. package/dist/chunks/chunk-M7TCFYTO.js +107 -0
  15. package/dist/chunks/chunk-NGHQIGVW.js +46 -0
  16. package/dist/chunks/chunk-NGJURAY5.js +306 -0
  17. package/dist/chunks/{chunk-KBBGDRER.js → chunk-PA76WUBL.js} +2 -2
  18. package/dist/chunks/chunk-PQ3XUSY2.js +357 -0
  19. package/dist/chunks/chunk-UJEMSPM5.js +78 -0
  20. package/dist/chunks/{chunk-DEICMTHO.js → chunk-URC6ZI6P.js} +1 -1
  21. package/dist/chunks/{chunk-EN3O2C43.js → chunk-VAZ25MDX.js} +122 -122
  22. package/dist/chunks/chunk-VYKFM3TB.js +751 -0
  23. package/dist/chunks/chunk-WW2O2DEP.js +2 -0
  24. package/dist/chunks/chunk-Y4WOTWUC.js +2 -0
  25. package/dist/chunks/chunk-Z4PPLJF2.js +60 -0
  26. package/dist/chunks/chunk-ZG4DMYBS.js +422 -0
  27. package/dist/chunks/compaction-config-ABLL6UH3.js +2 -0
  28. package/dist/chunks/{construction-bootstrap-GLEHQ2KB.js → construction-bootstrap-GH6RW6ST.js} +1 -1
  29. package/dist/chunks/dist-DRBKYVHF.js +2 -0
  30. package/dist/chunks/dist-RWL2RBO4.js +2 -0
  31. package/dist/chunks/host-7SAB4WEC.js +2 -0
  32. package/dist/chunks/run-manager-XMDKTONJ.js +2 -0
  33. package/dist/chunks/utils-QYE5Y73D.js +2 -0
  34. package/dist/index.d.ts +19 -19
  35. package/dist/index.js +6 -6
  36. package/dist/kodax_cli.js +1497 -1209
  37. package/dist/runtime-worker.js +1371 -1107
  38. package/dist/sdk-a2a.d.ts +397 -0
  39. package/dist/sdk-a2a.js +9 -0
  40. package/dist/sdk-agent.d.ts +172 -33
  41. package/dist/sdk-agent.js +1 -1
  42. package/dist/sdk-coding.d.ts +126 -51
  43. package/dist/sdk-coding.js +1 -1
  44. package/dist/sdk-experimental-memory.d.ts +618 -0
  45. package/dist/sdk-experimental-memory.js +2 -0
  46. package/dist/sdk-llm.d.ts +16 -9
  47. package/dist/sdk-llm.js +1 -1
  48. package/dist/sdk-mcp.d.ts +1 -1
  49. package/dist/sdk-mcp.js +1 -1
  50. package/dist/sdk-media.d.ts +1 -1
  51. package/dist/sdk-media.js +1 -1
  52. package/dist/sdk-repl.d.ts +35 -101
  53. package/dist/sdk-repl.js +2 -2
  54. package/dist/sdk-runtime.d.ts +744 -21
  55. package/dist/sdk-runtime.js +1 -1
  56. package/dist/sdk-session.d.ts +7 -7
  57. package/dist/sdk-session.js +1 -1
  58. package/dist/sdk-skills.js +1 -1
  59. package/dist/semantic-worker.js +100 -12
  60. package/dist/types-chunks/{base.d-DalIRhbb.d.ts → base.d-CYjtB68X.d.ts} +1 -1
  61. package/dist/types-chunks/{bash-prefix-extractor.d-D57Gt6n8.d.ts → bash-prefix-extractor.d-BkIA8Wto.d.ts} +89 -18
  62. package/dist/types-chunks/{capability-learning.d-BQB0M70w.d.ts → capability-learning.d-WtsyRv3O.d.ts} +1 -1
  63. package/dist/types-chunks/{capsule.d-BZmqu_HL.d.ts → capsule.d-xJvfh4YR.d.ts} +5 -5
  64. package/dist/types-chunks/{commands.d-Cg26ud-Y.d.ts → commands.d-DkPfcQWG.d.ts} +4 -4
  65. package/dist/types-chunks/{cost-tracker.d-CBLk1fiD.d.ts → cost-tracker.d-BeaenODW.d.ts} +4 -1
  66. package/dist/types-chunks/{guardrail.d-Ds7JHxR1.d.ts → guardrail.d-6ZDbNbHO.d.ts} +1 -1
  67. package/dist/types-chunks/{guardrail.d-vSaBe64I.d.ts → guardrail.d-R7AiGfrI.d.ts} +4 -4
  68. package/dist/types-chunks/integration-config.d-ojG4swOP.d.ts +95 -0
  69. package/dist/types-chunks/{manager.d-Zum9cGHU.d.ts → manager.d-CoEuPRAo.d.ts} +4 -1
  70. package/dist/types-chunks/{public-api.d-CPBMPDiU.d.ts → public-api.d-7G4--RZE.d.ts} +6 -7
  71. package/dist/types-chunks/{resolver.d-CGkfRULj.d.ts → resolver.d-CIVoGc97.d.ts} +2 -2
  72. package/dist/types-chunks/{run-manager.d-lnwnfyNC.d.ts → run-manager.d-BaXtkryp.d.ts} +1 -1
  73. package/dist/types-chunks/{sdk-session-ByoMLoUS.d.ts → sdk-session-BQccrODn.d.ts} +6 -4
  74. package/dist/types-chunks/{types.d-DG9B4SMm.d.ts → types.d-BtC4yLYO.d.ts} +170 -13
  75. package/dist/types-chunks/{types.d-DYv3a1ka.d.ts → types.d-C9YHEAmA.d.ts} +38 -7
  76. package/dist/types-chunks/{types.d-DU9lLkmE.d.ts → types.d-CJR7t6iW.d.ts} +2 -2
  77. package/dist/types-chunks/{types.d-Bp4Lm1jv.d.ts → types.d-TTvpAGWf.d.ts} +11 -1
  78. package/dist/types-chunks/{utils.d-DMI-9GTR.d.ts → utils.d-BbB5jzi1.d.ts} +15 -7
  79. package/docs/SDK_EMBEDDER_GUIDE.md +732 -14
  80. package/package.json +14 -2
  81. package/dist/chunks/agent-E4V5SLX6.js +0 -2
  82. package/dist/chunks/argument-completer-N6RT5KYT.js +0 -2
  83. package/dist/chunks/chunk-AKMXJSGM.js +0 -56
  84. package/dist/chunks/chunk-CW32NQFO.js +0 -2
  85. package/dist/chunks/chunk-D6QVXQNI.js +0 -1
  86. package/dist/chunks/chunk-NVDK375I.js +0 -729
  87. package/dist/chunks/chunk-O7N22GJ3.js +0 -31
  88. package/dist/chunks/chunk-PZTG2C33.js +0 -7
  89. package/dist/chunks/chunk-QI6SQ2UQ.js +0 -306
  90. package/dist/chunks/chunk-QJJKMNZF.js +0 -2
  91. package/dist/chunks/chunk-RS2GAABJ.js +0 -328
  92. package/dist/chunks/chunk-W2XMNYLK.js +0 -15
  93. package/dist/chunks/chunk-WCSSXBHR.js +0 -419
  94. package/dist/chunks/chunk-YH5BTUQO.js +0 -343
  95. package/dist/chunks/chunk-YRBNXFHY.js +0 -2
  96. package/dist/chunks/compaction-config-56NO42ZI.js +0 -2
  97. package/dist/chunks/dist-4PXB7U22.js +0 -2
  98. package/dist/chunks/dist-4UIRSSFS.js +0 -2
  99. package/dist/chunks/host-DMREFNSO.js +0 -2
  100. package/dist/chunks/paste-C33GZQV5.js +0 -2
  101. package/dist/chunks/run-manager-P5XMSGZ7.js +0 -2
  102. package/dist/chunks/utils-JENPFKAE.js +0 -2
@@ -1,8 +1,8 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{B as Ho,H as be,M as ss,O as is,P as as,Q as ls,j as Qr,l as He,m as Bn,n as es,o as os,p as ns,q as Gn,t as Fo,v as ts,x as qn,y as Kn,z as rs}from"./chunk-AKMXJSGM.js";import{a as cs}from"./chunk-CW32NQFO.js";import{Aa as Vr,Ba as Yr,Ha as Jr,Ja as Zr}from"./chunk-WCSSXBHR.js";import{i as No}from"./chunk-DEICMTHO.js";import{A as Ur,D as Se,J as Fe,m as Oo,n as Do,o as je,q as io,r as Uo,s as Wr,t as Nr,v as Or,w as jn,x as Dr,y as ao}from"./chunk-KBBGDRER.js";import{h as Lr,ia as Hr,ja as Br}from"./chunk-RS2GAABJ.js";import{$ as Wo,$c as qr,Ic as Fr,Kc as re,Qb as Fn,Rb as jo,Ub as jr,Zc as Gr,ad as Kr,dd as Hn,w as Mr,xd as zr,zd as Xr}from"./chunk-YH5BTUQO.js";import{Ja as Nn,Ka as We,La as Ne,s as Wn,z as hr}from"./chunk-O7N22GJ3.js";import{Ab as vr,Bb as $r,Dd as Ue,Ea as yr,Ed as Ir,Fa as kr,Fb as Sr,Ga as Dn,Qb as br,Rb as xr,Sb as Ar,Td as Pr,Wd as Un,dc as $e,de as Lo,ec as De,jc as Rr,k as On,lc as _o,n as q,nc as Mo,oc as Er,pc as Cr,ue as _r,ya as Oe,yc as Tr,za as H}from"./chunk-NVDK375I.js";import{a,b as Ln,d as Sa}from"./chunk-ONUPGMER.js";var ys=Ln((Cf,hs)=>{"use strict";hs.exports=a(function(o){return o.map(function(n){return n===""?"''":n&&typeof n=="object"?n.op.replace(/(.)/g,"\\$1"):/["\s\\]/.test(n)&&!/'/.test(n)?"'"+n.replace(/(['])/g,"\\$1")+"'":/["'\s]/.test(n)?'"'+n.replace(/(["\\$`!])/g,"\\$1")+'"':String(n).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g,"$1\\$2")}).join(" ")},"quote")});var As=Ln((If,xs)=>{"use strict";var bs="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",ks=new RegExp("^"+bs+"$"),vs="|&;()<> \\t",Aa='"((\\\\"|[^"])*?)"',Ra="'((\\\\'|[^'])*?)'",Ea=/^#$/,$s="'",Ss='"',zn="$",xe="",Ca=4294967296;for(Xn=0;Xn<4;Xn++)xe+=(Ca*Math.random()).toString(16);var Xn,Ta=new RegExp("^"+xe);function Ia(e,o){for(var n=o.lastIndex,t=[],r;r=o.exec(e);)t.push(r),o.lastIndex===r.index&&(o.lastIndex+=1);return o.lastIndex=n,t}a(Ia,"matchAll");function Pa(e,o,n){var t=typeof e=="function"?e(n):e[n];return typeof t>"u"&&n!=""?t="":typeof t>"u"&&(t="$"),typeof t=="object"?o+xe+JSON.stringify(t)+xe:o+t}a(Pa,"getVar");function _a(e,o,n){n||(n={});var t=n.escape||"\\",r="(\\"+t+`['"`+vs+`]|[^\\s'"`+vs+"])+",i=new RegExp(["("+bs+")","("+r+"|"+Aa+"|"+Ra+")+"].join("|"),"g"),l=Ia(e,i);if(l.length===0)return[];o||(o={});var c=!1;return l.map(function(d){var u=d[0];if(!u||c)return;if(ks.test(u))return{op:u};var f=!1,m=!1,y="",v=!1,k;function $(){k+=1;var I,M,V=u.charAt(k);if(V==="{"){if(k+=1,u.charAt(k)==="}")throw new Error("Bad substitution: "+u.slice(k-2,k+1));if(I=u.indexOf("}",k),I<0)throw new Error("Bad substitution: "+u.slice(k));M=u.slice(k,I),k=I}else if(/[*@#?$!_-]/.test(V))M=V,k+=1;else{var Y=u.slice(k);I=Y.match(/[^\w\d_]/),I?(M=Y.slice(0,I.index),k+=I.index-1):(M=Y,k=u.length)}return Pa(o,"",M)}for(a($,"parseEnvVar"),k=0;k<u.length;k++){var g=u.charAt(k);if(v=v||!f&&(g==="*"||g==="?"),m)y+=g,m=!1;else if(f)g===f?f=!1:f==$s?y+=g:g===t?(k+=1,g=u.charAt(k),g===Ss||g===t||g===zn?y+=g:y+=t+g):g===zn?y+=$():y+=g;else if(g===Ss||g===$s)f=g;else{if(ks.test(g))return{op:u};if(Ea.test(g)){c=!0;var b={comment:e.slice(d.index+k+1)};return y.length?[y,b]:[b]}else g===t?m=!0:g===zn?y+=$():y+=g}}return v?{op:"glob",pattern:y}:y}).reduce(function(d,u){return typeof u>"u"?d:d.concat(u)},[])}a(_a,"parseInternal");xs.exports=a(function(o,n,t){var r=_a(o,n,t);return typeof n!="function"?r:r.reduce(function(i,l){if(typeof l=="object")return i.concat(l);var c=l.split(RegExp("("+xe+".*?"+xe+")","g"));return c.length===1?i.concat(c[0]):i.concat(c.filter(Boolean).map(function(d){return Ta.test(d)?JSON.parse(d.split(xe)[1]):d}))},[])},"parse")});var Rs=Ln(Vn=>{"use strict";Vn.quote=ys();Vn.parse=As()});import*as En from"fs";import*as To from"path";import*as bn from"fs";import Sn from"path";import s from"chalk";var Bo=["plan","accept-edits","auto","auto-in-project"];function $f(e){return e==="auto"||e==="auto-in-project"}a($f,"isAutoMode");function ba(e){switch(e){case"plan":return"Plan";case"accept-edits":return"Edits";case"auto":case"auto-in-project":return"Auto"}}a(ba,"permissionModeDisplayName");var xa='[deprecated] permissionMode "auto-in-project" is now an alias for "auto" (FEATURE_092, v0.7.33). The alias will be removed in v0.7.38 \u2014 please update ~/.kodax/config.json to use "auto".';function Sf(e=o=>{q({source:"repl:permission",level:"warn",message:o})}){let o=!1;return()=>{o||(o=!0,e(xa))}}a(Sf,"createAutoInProjectDeprecationEmitter");var ds=zr(),lo=new Set(ds.filter(e=>e.sideEffect==="mutates-fs"&&e.requiredParams.includes("path")).map(e=>e.name)),us=new Set(ds.filter(e=>e.sideEffect!=="readonly").map(e=>e.name)),fs=new Set(["npm install","npm i","npm uninstall","npm remove","npm update","npm ci","yarn add","yarn remove","yarn upgrade","pnpm add","pnpm remove","pnpm update","git clean","git reset","git checkout","git switch","git merge","git rebase","git cherry-pick","git revert","git commit","git push","git pull","rm","mv","cp","mkdir","rmdir","touch","chmod","chown","del","erase","rd","copy","move","ren","curl","wget","dd","tar","kill","pkill","killall"]),ms=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","where","grep","find","awk","sed","head","tail","less","more","wc","findstr","fc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","git tag","git stash list","git describe","git config --get","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);function ps(e){switch(e){case"plan":return new Set(["bash","write","edit","undo"]);case"accept-edits":return new Set(["bash"]);case"auto":case"auto-in-project":return new Set}}a(ps,"computeConfirmTools");function gs(e){return e!==void 0&&Bo.includes(e)}a(gs,"isPermissionMode");function co(e,o){return gs(e)?e:o}a(co,"normalizePermissionMode");async function ws(e){let o=e.resolve(e.provider),n=[];for(let t of e.efforts){if(e.signal?.aborted)break;let r=!1;try{await o.stream([{role:"user",content:"ping"}],[],"",{effort:t},{modelOverride:e.model,maxOutputTokensOverride:1,onReasoningEffortRejected:a(()=>{r=!0},"onReasoningEffortRejected"),onTextDelta:a(()=>{},"onTextDelta")},e.signal)}catch(i){n.push({effort:t,status:"error",error:i instanceof Error?i.message:String(i)});continue}r?(kr(e.provider,e.model,t,"probed",e.now()),n.push({effort:t,status:"rejected"})):n.push({effort:t,status:"accepted"})}return n}a(ws,"probeProviderReasoningEfforts");import Vo from"fs";import Fs from"path";import Go from"fs";import W from"path";import fo from"os";var Ts=Sa(Rs(),1);var Es=new Set(["/dev/null","nul","NUL"]);function Yn(e){return Es.has(e)||Es.has(e.toLowerCase())}a(Yn,"isNullDevice");function uo(e){let o=e.trim();if(!o)return{statements:[],unparseable:!1};if(o.includes("`"))return{statements:[],unparseable:!0};let n;try{n=(0,Ts.parse)(o)}catch{return{statements:[],unparseable:!0}}let t=[],r=[],i=[],l=[],c=null,d=!1,u=a(()=>{(i.length>0||l.length>0)&&(r.push({argv:i,redirections:l}),i=[],l=[])},"flushStage"),f=a(m=>{u(),r.length>0&&(t.push({precedingOp:c,stages:r}),r=[]),c=m},"flushStatement");for(let m=0;m<n.length;m+=1){let y=n[m];if(typeof y=="string"){i.push(y);continue}if("op"in y){let v=y.op;if(v==="&&"||v==="||"||v===";"){f(v);continue}if(v==="|"){u();continue}if(v==="&"){let k=n[m+1];if(k!==void 0&&typeof k!="string"&&"op"in k&&(k.op===">"||k.op===">>")){let $=n[m+2];if(typeof $!="string"){d=!0,m+=1;continue}l.push(Cs(`&${k.op}`,$)),m+=2;continue}d=!0;continue}if(La(v)){let k=null,$=i[i.length-1];$!==void 0&&/^[0-9]+$/.test($)&&(k=$,i.pop());let g=n[m+1];if(typeof g!="string"){d=!0;continue}l.push(Cs(k?`${k}${v}`:v,g)),m+=1;continue}if(v==="glob"){let k=y.pattern;typeof k=="string"?i.push(k):d=!0;continue}d=!0;continue}if("comment"in y)break;d=!0}return f(null),{statements:t,unparseable:d}}a(uo,"parseBashCommand");var Ma=new Set([">",">>","<","<<","<<<","&>","&>>"]),Is=/^([0-9]+|&)(>>?|<<?)$/;function La(e){return Ma.has(e)||Is.test(e)}a(La,"isRedirectionOp");function Cs(e,o){let n=null,t=e,r=Is.exec(e);return r&&(n=r[1],t=r[2]),{op:e,fd:n,append:t===">>"||e==="&>>",input:t==="<"||t==="<<"||e==="<<<",target:o}}a(Cs,"parseRedirection");var Wa=W.join(".agent","plan_mode_doc.md"),qo=new Map,Ko=null;function Na(e){if(!e||!e.trim())return!1;let o=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of ms)if(o===n||o.startsWith(n+" ")){if(n==="sed"&&o.split(/\s+/).some(i=>i.startsWith("-i")||i==="--in-place"))return!1;if(n==="awk"){let r=o.split(/\s+/);if(r.includes("-f")||r.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc","ruby","perl"].includes(n)){let r=o.split(/\s+/).slice(1);if(r.length>0&&!r.every(i=>/^(-v|--version|-h|--help)$/.test(i)))return!1}return!0}return!1}a(Na,"isSingleBashReadCommand");var Oa=/^[a-zA-Z0-9]+$/;function Da(e){let o=e.trim();if(!o.endsWith("--help")||o.includes('"')||o.includes("'"))return!1;let n=!1;for(let t of o.split(/\s+/))if(t.startsWith("-"))if(t==="--help")n=!0;else return!1;else if(!Oa.test(t))return!1;return n}a(Da,"isHelpCommand");function Zn(e){if(!e||!e.trim())return!1;if(Da(e))return!0;let o=e.trim().replace(/\\\r?\n/g," "),n=uo(o);if(n.unparseable||n.statements.length===0)return!1;let t=n.statements.length>1||(n.statements[0]?.stages.length??0)>1;for(let r of n.statements){if(r.precedingOp!==null&&r.precedingOp!=="&&")return!1;for(let i of r.stages){for(let c of i.redirections)if(c.input||!Yn(c.target))return!1;let l=i.argv.join(" ");if(l&&!(t&&i.argv[0]?.toLowerCase()==="cd"&&i.argv.length>=2)&&!Na(l))return!1}}return!0}a(Zn,"isBashReadCommand");function Ua(e){let o=e.trim();return o?Zn(o)?null:"[Blocked] Direct !command execution only supports safe read-only commands. Use the bash tool for commands that write files, invoke shells, or require confirmation.":"[Shell: No command provided]"}a(Ua,"getDirectShellBypassBlockReason");var _s=new Set(["remove-item","set-content","add-content","out-file","new-item","copy-item","move-item","rename-item","ni"]);function Qn(e){if(!e||!e.trim())return!1;let o=uo(e);if(o.unparseable)return!1;for(let n of o.statements)for(let t of n.stages){let r=t.argv.map(i=>i.toLowerCase());if(r.length>0){let i=r[0],l=r.length>=2?`${r[0]} ${r[1]}`:null;for(let c of fs)if(c===i||l!==null&&c===l)return!0}for(let i of r)if(_s.has(i))return!0;for(let i of t.redirections)if(!i.input&&!Yn(i.target))return!0}return!1}a(Qn,"isBashWriteCommand");function et(e){let o=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\((.+)\)$/);return o?{tool:o[1].toLowerCase(),pattern:o[2]}:{tool:e.toLowerCase(),pattern:null}}a(et,"parseAllowedToolPattern");function ja(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e.startsWith(n)}return e===o}a(ja,"matchesBashPatternLegacy");function Fa(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e===n}return e===o}a(Fa,"matchesBashPatternByExtractedPrefix");async function ot(e,o,n,t,r){if(e.toLowerCase()!=="bash")return!1;let i=o.command??"",l=[];for(let c of n){let d=et(c);if(d.tool==="bash"){if(d.pattern===null)return!0;l.push({pattern:d.pattern})}}if(l.length===0)return!1;if(t){let c;try{c=await t.extract(i,r)}catch{return!1}if(c.kind!=="prefix")return!1;for(let{pattern:d}of l)if(d&&Fa(c.value,d))return!0;return!1}for(let{pattern:c}of l)if(c&&ja(i,c))return!0;return!1}a(ot,"isToolCallAllowed");function nt(e,o,n){if(e.toLowerCase()!=="bash")return"";let t=o.command??"",r=t.split(" ");return r.length>1?`Bash(${r.slice(0,2).join(" ")}:*)`:`Bash(${t})`}a(nt,"generateSavePattern");function mo(e,o){try{let n=W.resolve(e),t=W.resolve(o),r=Oe(),i=W.join(t,".kodax");return Be(n,i)||Be(n,r)?!0:!(Be(n,t)||Ws().some(c=>Be(n,c)))}catch{return!1}}a(mo,"isAlwaysConfirmPath");function Ps(e){return!e||e.startsWith("-")?!1:/^\.\.?[/\\]/.test(e)||e.startsWith("~/")||e.startsWith("~\\")||/^[a-zA-Z]:[/\\]/.test(e)?!0:e.startsWith("/")&&e.length>1?!(process.platform==="win32"&&Ha.test(e)):!!(e.startsWith(".")&&/[/\\]/.test(e))}a(Ps,"looksLikePath");var Ha=/^\/[A-Za-z][A-Za-z0-9]*(?::[A-Za-z0-9]+)?$/;function Ba(e){let o=[],n=/["']([^"']+)["']/g,t;for(;(t=n.exec(e))!==null;)o.push(t[1]);let r=/(?:^|\s)(\.\.?\/[^\s]+|\.\.?\\[^\s]+|[a-zA-Z]:\\[^\s]+|~\/[^\s]+|\.[^\s]*[/\\][^\s]*)/g;for(;(t=r.exec(e))!==null;)o.push(t[1]);return o}a(Ba,"legacyRegexPathScan");function Xo(e){let o=new Set,n=uo(e);if(!n.unparseable)for(let t of n.statements)for(let r of t.stages){for(let i of r.argv)Ps(i)&&o.add(i);for(let i of r.redirections)Ps(i.target)&&o.add(i.target)}for(let t of Ba(e))o.add(t);return Array.from(o)}a(Xo,"extractPathsFromCommand");function Ga(e,o){let n=Xo(e);for(let t of n)if(mo(t,o))return!0;return!1}a(Ga,"isCommandOnProtectedPath");function zo(e){let o=W.normalize(e);return process.platform==="win32"?o.toLowerCase():o}a(zo,"normalizePathForComparison");function qa(e,o){return zo(e)===zo(o)}a(qa,"pathsEqual");function Be(e,o){let n=zo(e),t=zo(o);return n===t||n.startsWith(t+W.sep)}a(Be,"isPathInsideDirectory");function tt(e,o){try{let n=W.resolve(o),t=W.resolve(n,Ls(Ms(e)));return Be(t,n)}catch{return!1}}a(tt,"isPathInsideProject");function Ka(e){let o=e.match(/[A-Za-z]:[\\/][^\s;|&<>(){}'"]+|\/[^\s;|&<>(){}'"]+/g);return o?o.filter(n=>!/^(?:\/dev\/|\/proc\/)/i.test(n)):[]}a(Ka,"collectAbsolutePathCandidates");function rt(e){let o=W.resolve(e),n=qo.get(o);if(n)return n;if(Go.existsSync(o)){let c=Go.realpathSync.native(o);return qo.set(o,c),c}let t=[],r=o;for(;!Go.existsSync(r);){let c=W.dirname(r);if(c===r)return qo.set(o,o),o;t.unshift(W.basename(r)),r=c}let i=Go.realpathSync.native(r),l=W.join(i,...t);return qo.set(o,l),l}a(rt,"resolveExistingPathPrefix");function Ms(e){return e==="~"?fo.homedir():e.startsWith(`~${W.sep}`)||e.startsWith("~/")||e.startsWith("~\\")?W.join(fo.homedir(),e.slice(2)):e}a(Ms,"expandHomeDirectory");function Ls(e){let o=fo.tmpdir(),n=[[/^%temp%/i,o],[/^%tmp%/i,o],[/^\$env:temp\b/i,o],[/^\$env:tmp\b/i,o],[/^\$tmpdir\b/i,o],[/^\$temp\b/i,o],[/^\$tmp\b/i,o]];for(let[t,r]of n)if(t.test(e))return e.replace(t,r);return e}a(Ls,"expandSystemTempAlias");function za(e,o){let n=W.resolve(o??process.cwd()),t=Ls(Ms(e)),r=W.isAbsolute(t)?W.resolve(t):W.resolve(n,t);return rt(r)}a(za,"resolvePermissionPath");function Ws(){if(Ko)return Ko;let e=new Set,o=[fo.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR].filter(n=>typeof n=="string"&&n.trim().length>0);for(let n of o)try{e.add(rt(n))}catch{}return Ko=Array.from(e),Ko}a(Ws,"getSystemTempDirectories");function st(e){let o=rt(e??process.cwd());return{projectPlanDoc:W.join(o,Wa),systemTempDirs:Ws()}}a(st,"getPlanModeAllowedWritablePaths");function Jn(e,o){let n=za(e,o),{projectPlanDoc:t,systemTempDirs:r}=st(o);return qa(n,t)?!0:r.some(i=>Be(n,i))}a(Jn,"isPlanModeAllowedPath");function Xa(e){let{projectPlanDoc:o,systemTempDirs:n}=st(e),t=n[0]??fo.tmpdir();return`${o} or the system temp directory (${t})`}a(Xa,"formatPlanModeAllowedLocations");var Va=new Set(["-a","--append","-i","--ignore-interrupts"]);function Ya(e){let o=[];for(let n=1;n<e.argv.length;n+=1){let t=e.argv[n];Va.has(t)||t.startsWith("-")||o.push(t)}return o}a(Ya,"collectTeeTargets");function Ja(e){let o=[],n=1,t=!1;for(;n<e.argv.length;){let r=e.argv[n],i=r.toLowerCase();if(i==="-path"||i==="-literalpath"||i==="-destination"){let l=e.argv[n+1];if(l!==void 0&&!l.startsWith("-")){o.push(l),n+=2;continue}}!r.startsWith("-")&&!t&&(o.push(r),t=!0),n+=1}return o}a(Ja,"collectPowerShellWriteTargets");function Ge(e){let o=new Set,n=a(r=>{let i=r?.trim();i&&o.add(i)},"pushTarget");for(let r of Xo(e))n(r);let t=uo(e);if(t.unparseable)return Array.from(o);for(let r of t.statements)for(let i of r.stages){for(let c of i.redirections)c.input||n(c.target);let l=i.argv[0]?.toLowerCase();if(l){if(l==="tee")for(let c of Ya(i))n(c);else if(_s.has(l))for(let c of Ja(i))n(c)}}return Array.from(o)}a(Ge,"collectBashWriteTargets");function Ns(e,o){if(!Qn(e))return{dangerous:!1};let n=new Set([...Ge(e),...Ka(e)]);for(let t of n)if(!tt(t,o))return{dangerous:!0,reason:`Command may modify file outside project: ${t}`};return{dangerous:!1}}a(Ns,"getBashOutsideProjectWriteRisk");function Os(e,o,n){let t=Xa(n);if(Xr(e))return null;if(lo.has(e)){let r=typeof o.path=="string"?o.path:"";return r?Jn(r,n)?null:`[Blocked] Plan mode only allows file modifications in ${t}. Requested path: ${r}`:`[Blocked] Tool '${e}' is not allowed in plan mode unless it targets ${t}.`}if(e==="bash"){let r=o.command??"";if(!Qn(r))return null;let i=Ge(r);if(i.length===0)return`[Blocked] Plan mode only allows bash write operations when every target is either ${t}. Could not determine a safe target from: ${r.slice(0,80)}${r.length>80?"...":""}`;let l=i.find(c=>!Jn(c,n));return l?`[Blocked] Plan mode only allows bash write operations in ${t}. Blocked target: ${l}`:null}return`[Blocked] Tool '${e}' has side effects and is not permitted in plan mode. Switch to accept-edits or auto mode to use it, or work within ${t}.`}a(Os,"getPlanModeBlockReason");import me from"node:path";import Za from"node:os";function qe(e,o){try{let n=me.resolve(e),t=me.resolve(o);return n===t?!0:n.startsWith(t+me.sep)}catch{return!1}}a(qe,"isPathUnder");function Qa(){try{return Oe()}catch{return}}a(Qa,"safeGetAgentConfigHome");function Ds(e,o){let n=Qa();if(n&&qe(e,n))return"user-kodax";let t=me.join(me.resolve(o),".kodax");if(qe(e,t))return"project-kodax"}a(Ds,"resolveProtectedZone");function el(){let e=new Set;try{e.add(Za.tmpdir())}catch{}for(let o of["TEMP","TMP","TMPDIR"]){let n=process.env[o];n&&n.length>0&&e.add(n)}return Array.from(e)}a(el,"getSystemTempDirs");var ol=new Set(["bash"]),nl={toolNames:ol,collect(e,o){let n=typeof e.input.command=="string"?e.input.command:"";if(!n||!o)return[];let t=[],r=new Set,i=new Set,l=el(),c=me.resolve(o);for(let d of Xo(n)){let u;try{u=me.resolve(o,d)}catch{continue}let f=Ds(u,o);if(f){r.has(u)||(r.add(u),t.push({kind:"protected_path",path:d,zone:f}));continue}if(mo(d,o)){let m=l.some(v=>qe(u,v)),y=qe(u,c);!m&&!y&&!i.has(u)&&(i.add(u),t.push({kind:"outside_project",path:d}))}}for(let d of Ge(n)){let u;try{u=me.resolve(o,d)}catch{continue}Ds(u,o)||qe(u,c)||l.some(y=>qe(u,y))||t.push({kind:"shell_redirect_outside",target:d})}return t}};var Yo=H("config.json");function Hs(){return Fs.join(process.cwd(),".kodax","config.local.json")}a(Hs,"getProjectConfigFile");function gm(e=process.env){let n=po(Yo).autoMode??{},t=e.KODAX_AUTO_MODE_ENGINE?.trim(),r=t==="llm"||t==="rules"?t:void 0,i=n.engine==="llm"||n.engine==="rules"?n.engine:void 0,l=r??i??"llm",c=js(n.classifierModel),d=js(e.KODAX_AUTO_MODE_CLASSIFIER_MODEL),u=e.KODAX_AUTO_MODE_TIMEOUT_MS?.trim(),f=u!==void 0?Number(u):NaN,m=Number.isFinite(f)&&f>0?Math.floor(f):void 0,y=typeof n.timeoutMs=="number"&&n.timeoutMs>0?Math.floor(n.timeoutMs):void 0,v=Us(e.KODAX_AUTO_SPECULATIVE_WINDOW_MS?.trim()),k=typeof n.speculativeWindowMs=="number"?Us(String(n.speculativeWindowMs)):void 0;return{engine:l,classifierModel:c,classifierModelEnv:d,timeoutMs:m??y,speculativeWindowMs:v??k}}a(gm,"loadAutoModeSettings");function Us(e){if(e===void 0||e==="")return;let o=Number(e);if(Number.isFinite(o))return o<0?0:Math.floor(o)}a(Us,"parseSpeculativeWindow");function js(e){if(typeof e!="string")return;let o=e.trim();return o.length===0?void 0:o}a(js,"nonEmptyString");function po(e){try{if(Vo.existsSync(e))return JSON.parse(Vo.readFileSync(e,"utf-8"))}catch{}return{}}a(po,"readJsonFile");function Bs(e,o){Vo.mkdirSync(Fs.dirname(e),{recursive:!0}),Vo.writeFileSync(e,JSON.stringify(o,null,2))}a(Bs,"writeJsonFile");function it(e){let o=po(Yo);Bs(Yo,{...o,permissionMode:e})}a(it,"savePermissionModeUser");function wm(){let e=po(Yo),o=po(Hs()),n=e.alwaysAllowTools??[],t=o.alwaysAllowTools??[];return[...new Set([...n,...t])]}a(wm,"loadAlwaysAllowTools");function hm(e,o,n=!1){let t=nt(e,o,n);if(!t)return;let r=Hs(),i=po(r),l=i.alwaysAllowTools??[];l.includes(t)||Bs(r,{...i,alwaysAllowTools:[...l,t]})}a(hm,"saveAlwaysAllowToolPattern");var at=["ama","amaw","sa"];function Gs(e){let o=at.indexOf(e);return at[(o+1)%at.length]??"ama"}a(Gs,"nextAgentMode");var pe=class{static{a(this,"CommandRegistry")}commands=new Map;aliases=new Map;register(o){let n=o.name.toLowerCase();if(this.commands.has(n))throw new Error(`Command "${o.name}" is already registered`);if(this.aliases.has(n)){let r=this.aliases.get(n);throw new Error(`Command "${o.name}" conflicts with existing alias for "${r}"`)}let t=new Set;for(let r of o.aliases??[]){let i=r.toLowerCase();if(i!==n){if(t.has(i))throw new Error(`Alias "${r}" is duplicated within command "${o.name}"`);if(this.commands.has(i))throw new Error(`Alias "${r}" conflicts with existing command "${i}"`);if(this.aliases.has(i)){let l=this.aliases.get(i);throw new Error(`Alias "${r}" is already registered for "${l}"`)}t.add(i)}}if(this.commands.set(n,{...o,source:o.source??"builtin"}),o.aliases)for(let r of o.aliases){let i=r.toLowerCase();i!==n&&this.aliases.set(i,n)}}unregister(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;if(!this.commands.has(t))return!1;let r=this.commands.get(t);if(r?.aliases)for(let i of r.aliases)this.aliases.delete(i.toLowerCase());return this.commands.delete(t),!0}get(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;return this.commands.get(t)}has(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;return this.commands.has(t)}getAll(o){let n=new Map;for(let[t,r]of this.commands)o&&r.source!==o||n.has(t)||n.set(t,{name:r.name,aliases:r.aliases,description:r.description,source:r.source??"builtin",usage:r.usage,priority:r.priority,location:r.location,path:r.path,userInvocable:r.userInvocable,disableModelInvocation:r.disableModelInvocation,allowedTools:r.allowedTools,context:r.context,agent:r.agent,argumentHint:r.argumentHint,model:r.model});return Array.from(n.values()).sort((t,r)=>t.name.localeCompare(r.name))}getBySource(o){return this.getAll(o)}getNames(){return Array.from(this.commands.keys()).sort()}clear(){this.commands.clear(),this.aliases.clear()}get size(){return this.commands.size}get aliasCount(){return this.aliases.size}},tl=new pe;import K from"chalk";import{Buffer as Xs}from"node:buffer";import{spawn as rl}from"node:child_process";import qs from"node:process";var Ae="\x1B",sl="\x07",lt=`${Ae}\\`;function Ks(e,o){return e.SSH_CONNECTION?!1:o==="win32"||o==="darwin"||o==="linux"}a(Ks,"shouldPreferNativeClipboard");function il(e,o){let n=Xs.from(e,"utf8").toString("base64"),t=o.TERM==="xterm-kitty"?lt:sl,r=`${Ae}]52;c;${n}${t}`;return o.TMUX?`${Ae}Ptmux;${r.replaceAll(Ae,`${Ae}${Ae}`)}${lt}`:o.STY?`${Ae}P${r}${lt}`:r}a(il,"buildOscSequence");async function Jo(e,o,n){return new Promise((t,r)=>{let i=rl(e,o,{stdio:["pipe","ignore","pipe"],windowsHide:!0}),l="";i.on("error",r),i.stderr?.on("data",c=>{l+=c.toString()}),i.on("close",c=>{if(c===0){t(!0);return}r(new Error(l.trim()||`${e} exited with code ${c??"unknown"}`))}),i.stdin?.write(n),i.stdin?.end()})}a(Jo,"execClipboardCommand");function al(e){let o="$stream = [Console]::OpenStandardInput(); $buffer = New-Object byte[] 8192; $memory = New-Object System.IO.MemoryStream; while (($read = $stream.Read($buffer, 0, $buffer.Length)) -gt 0) { $memory.Write($buffer, 0, $read) }; $text = [System.Text.Encoding]::UTF8.GetString($memory.ToArray()); Set-Clipboard -Value $text",n=Xs.from(e,"utf8");return[["powershell",["-NoProfile","-NonInteractive","-Command",o],n],["pwsh",["-NoProfile","-NonInteractive","-Command",o],n],["cmd",["/c","chcp 65001 >nul & clip"],n]]}a(al,"buildWindowsClipboardCandidates");async function zs(e,o,n){if(o.SSH_CONNECTION)return!1;switch(n){case"win32":{let t=al(e);for(let[r,i,l]of t)try{if(await Jo(r,i,l))return!0}catch{}return!1}case"darwin":return Jo("pbcopy",[],e);case"linux":{let t=[["wl-copy",[]],["xclip",["-selection","clipboard"]],["xsel",["--clipboard","--input"]]];for(let[r,i]of t)try{if(await Jo(r,i,e))return!0}catch{}return!1}default:return!1}}a(zs,"tryNativeClipboard");async function ll(e,o){if(!o.TMUX)return!1;let n=o.LC_TERMINAL==="iTerm2"?["load-buffer","-"]:["load-buffer","-w","-"];try{return await Jo("tmux",n,e)}catch{return!1}}a(ll,"tryTmuxClipboard");async function Vs(e,o={}){let n=o.env??qs.env,t=o.platform??qs.platform,r=e.trimEnd(),i=il(r,n);if(!r)throw new Error("Nothing to copy.");if(Ks(n,t))try{if(await zs(r,n,t))return{path:"native"}}catch{}if(await ll(r,n))return{path:"tmux-buffer"};if(o.terminalWrite?.(i))return{path:"osc52"};if(!Ks(n,t))try{if(await zs(r,n,t))return{path:"native"}}catch{}throw new Error("Unable to access any clipboard path.")}a(Vs,"copyTextToClipboard");var ct;(function(e){e.Idle="idle",e.Responding="responding",e.WaitingForConfirmation="waiting_for_confirmation"})(ct||(ct={}));var G;(function(e){e.Scheduled="scheduled",e.Validating="validating",e.AwaitingApproval="awaiting_approval",e.Executing="executing",e.Success="success",e.Error="error",e.Cancelled="cancelled"})(G||(G={}));var Tm={[G.Scheduled]:"\u25CB",[G.Validating]:"\u25CC",[G.AwaitingApproval]:"?",[G.Executing]:"\u25CB",[G.Success]:"\u2713",[G.Error]:"\u2717",[G.Cancelled]:"-"},Ys;(function(e){e[e.Low=-100]="Low",e[e.Normal=0]="Normal",e[e.High=100]="High",e[e.Critical=200]="Critical"})(Ys||(Ys={}));var Im={streamingState:ct.Idle,currentResponse:"",history:[],pendingToolCalls:[],sessionId:"",provider:"",model:"",isLoading:!1};var cl="[redacted]",Js="[truncated]";function se(e,o=2e3){return e.length>o?`${e.slice(0,o-3)}...`:e}a(se,"truncateToolReplayText");function dl(e){let o=e.toLowerCase().replace(/[\s_-]/g,"");return o.includes("token")||o.includes("password")||o.includes("secret")||o.includes("apikey")||o.includes("accesstoken")||o==="authorization"||o==="cookie"||o==="setcookie"}a(dl,"isSensitiveToolInputKey");function Zs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(Zs,"isRecord");function dt(e,o=0,n=new WeakSet){if(e===null||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="string")return se(e);if(o>=6)return Js;if(typeof e=="object"&&e!==null){if(n.has(e))return Js;if(n.add(e),Array.isArray(e))return e.slice(0,50).map(r=>dt(r,o+1,n));if(!Zs(e))return se(String(e));let t={};for(let[r,i]of Object.entries(e).slice(0,50))t[r]=dl(r)?cl:dt(i,o+1,n);return t}return se(String(e))}a(dt,"sanitizeToolJsonValue");function Qs(e){if(!e)return;let o=dt(e);return Zs(o)?o:void 0}a(Qs,"sanitizeToolInput");function ei(e){if(e!==void 0){if(typeof e=="string")return se(e);try{return se(JSON.stringify(e))}catch{return se(String(e))}}}a(ei,"stringifyToolReplayValue");function Nm(e){return e.type==="tool_summary"||e.type==="task_completed"?{type:"event",text:e.text,icon:"tool"}:e.type==="tool_group"?{type:"tool_group",tools:e.tools.map(yl)}:e}a(Nm,"seedToHistoryItem");var ul="[Thinking]",fl="[/Thinking]",ml="Untitled Session",oi=50,pl=60,ti="...",ri=["[Managed Task]","[Managed Task Protocol Retry]","Assigned native agent identity:","Tool policy:","Blocked tools:","Allowed shell patterns:","Dependency handoff artifacts:","Dependency summary preview:","Preferred agent:","Read structured bundle first:","Read human summary next:"],si=[/(?:^|\n)You are the [^\n]+ role for a managed KodaX task\./,/(?:^|\n)Primary task:/,/(?:^|\n)Work intent:/,/(?:^|\n)Complexity:/,/(?:^|\n)Risk:/,/(?:^|\n)Harness:/,/(?:^|\n)Brainstorm required:/],gl=/(^|\r?\n)\[Thinking\]\r?\n([\s\S]*?)\r?\n\[\/Thinking\](?=\r?\n|$)/g,wl="Session ended before the tool completed.";function hl(e){switch(e){case"success":return G.Success;case"error":return G.Error;case"cancelled":return G.Cancelled;case"awaiting_approval":return G.AwaitingApproval;default:return e}}a(hl,"toolCallSeedToHistoryToolStatus");function yl(e){return{id:e.id,name:e.name,status:hl(e.status),...e.input!==void 0?{input:e.input}:{},...e.preview!==void 0?{preview:e.preview}:{},...e.output!==void 0?{output:e.output}:{},...e.error!==void 0?{error:e.error}:{},startTime:e.startTime??Date.now(),...e.endTime!==void 0?{endTime:e.endTime}:{}}}a(yl,"toolCallSeedToHistoryToolCall");function kl(e){let o=-1;for(let n of ri){let t=e.indexOf(n);t>=0&&(o===-1||t<o)&&(o=t)}for(let n of si){let t=n.exec(e);t&&t.index>=0&&(o===-1||t.index<o)&&(o=t.index)}return o}a(kl,"findControlPlaneCutIndex");function vl(e){return ri.some(o=>e.includes(o))||si.some(o=>o.test(e))}a(vl,"hasControlPlaneSignal");function ii(e){let o=[];for(let n of e)n&&typeof n=="object"&&"type"in n&&n.type==="text"&&"text"in n&&o.push(String(n.text));return o}a(ii,"collectTextBlocks");function Qo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(Qo,"isRecord");function $l(e){if(typeof e=="string")return se(e);if(e===void 0)return"";try{return ei(e)??""}catch{return se(String(e))}}a($l,"toolResultContentToString");function Sl(e){let o=$l(e.content),n=o.trimStart(),t=e.is_error===!0||n.startsWith("[Tool Error]")||n.startsWith("[Error]"),r=n.startsWith("[Cancelled]")||n.startsWith("[Blocked]");return t?{status:"error",error:o}:r?{status:"cancelled",error:o}:{status:"success",output:o}}a(Sl,"inferToolResultSeed");function bl(e){let o=new Map;if(!e||e.role!=="user"||!Array.isArray(e.content))return o;for(let n of e.content)!Qo(n)||n.type!=="tool_result"||typeof n.tool_use_id!="string"||o.set(n.tool_use_id,Sl(n));return o}a(bl,"collectToolResultSeeds");function xl(e,o){if(e.type!=="tool_use"||typeof e.id!="string"||typeof e.name!="string")return;let n=o.get(e.id)??{status:"cancelled",error:wl};return{id:e.id,name:e.name,status:n.status,...e.input!==void 0?{input:Qs(Qo(e.input)?e.input:{})??{}}:{},...n.output!==void 0?{output:n.output}:{},...n.error!==void 0?{error:n.error}:{}}}a(xl,"buildToolCallSeed");function Al(e){return typeof e=="string"?e:Array.isArray(e)?ii(e).join(`
2
+ import{$ as is,A as ns,B as Gn,E as Ho,G as ts,I as qn,J as Kn,K as rs,M as Bo,U as be,Z as ss,aa as as,ba as ls,u as Qr,w as He,x as Bn,y as es,z as os}from"./chunk-M7TCFYTO.js";import{a as cs}from"./chunk-WW2O2DEP.js";import{Ba as Vr,Ca as Yr,Ia as Jr,Ka as Zr}from"./chunk-ZG4DMYBS.js";import{i as No}from"./chunk-URC6ZI6P.js";import{A as Ur,D as Se,J as Fe,m as Do,n as Uo,o as je,q as io,r as jo,s as Wr,t as Or,v as Nr,w as jn,x as Dr,y as ao}from"./chunk-PA76WUBL.js";import{h as Lr,xa as Hr,ya as Br}from"./chunk-4WIODYOH.js";import{B as Mr,Eb as Fn,Fb as Fo,Ib as jr,Pc as Gr,Rc as qr,Sc as Kr,Vc as Hn,ma as Oo,nd as zr,pd as Xr,wc as Fr,yc as re}from"./chunk-PQ3XUSY2.js";import{C as hr,Ma as Nn,Na as We,Oa as Oe,v as On}from"./chunk-UJEMSPM5.js";import{Ed as _r,Fa as yr,Fb as Cr,Ga as kr,Ha as Dn,Nc as Ue,Oc as Ir,bd as Pr,ed as Un,k as _o,nd as Wo}from"./chunk-VYKFM3TB.js";import{F as br,G as xr,H as Ar,U as $e,V as De,_ as Rr,aa as Mo,b as q,ca as Lo,da as Er,e as Ne,ea as Tr,f as H,o as vr,p as $r,u as Sr}from"./chunk-AWMTNUDS.js";import{a,b as Wn,d as Sa}from"./chunk-ONUPGMER.js";var ys=Wn((Tf,hs)=>{"use strict";hs.exports=a(function(o){return o.map(function(n){return n===""?"''":n&&typeof n=="object"?n.op.replace(/(.)/g,"\\$1"):/["\s\\]/.test(n)&&!/'/.test(n)?"'"+n.replace(/(['])/g,"\\$1")+"'":/["'\s]/.test(n)?'"'+n.replace(/(["\\$`!])/g,"\\$1")+'"':String(n).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g,"$1\\$2")}).join(" ")},"quote")});var As=Wn((If,xs)=>{"use strict";var bs="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",ks=new RegExp("^"+bs+"$"),vs="|&;()<> \\t",Aa='"((\\\\"|[^"])*?)"',Ra="'((\\\\'|[^'])*?)'",Ea=/^#$/,$s="'",Ss='"',zn="$",xe="",Ta=4294967296;for(Xn=0;Xn<4;Xn++)xe+=(Ta*Math.random()).toString(16);var Xn,Ca=new RegExp("^"+xe);function Ia(e,o){for(var n=o.lastIndex,t=[],r;r=o.exec(e);)t.push(r),o.lastIndex===r.index&&(o.lastIndex+=1);return o.lastIndex=n,t}a(Ia,"matchAll");function Pa(e,o,n){var t=typeof e=="function"?e(n):e[n];return typeof t>"u"&&n!=""?t="":typeof t>"u"&&(t="$"),typeof t=="object"?o+xe+JSON.stringify(t)+xe:o+t}a(Pa,"getVar");function _a(e,o,n){n||(n={});var t=n.escape||"\\",r="(\\"+t+`['"`+vs+`]|[^\\s'"`+vs+"])+",i=new RegExp(["("+bs+")","("+r+"|"+Aa+"|"+Ra+")+"].join("|"),"g"),l=Ia(e,i);if(l.length===0)return[];o||(o={});var c=!1;return l.map(function(d){var u=d[0];if(!u||c)return;if(ks.test(u))return{op:u};var f=!1,m=!1,y="",v=!1,k;function $(){k+=1;var I,M,V=u.charAt(k);if(V==="{"){if(k+=1,u.charAt(k)==="}")throw new Error("Bad substitution: "+u.slice(k-2,k+1));if(I=u.indexOf("}",k),I<0)throw new Error("Bad substitution: "+u.slice(k));M=u.slice(k,I),k=I}else if(/[*@#?$!_-]/.test(V))M=V,k+=1;else{var Y=u.slice(k);I=Y.match(/[^\w\d_]/),I?(M=Y.slice(0,I.index),k+=I.index-1):(M=Y,k=u.length)}return Pa(o,"",M)}for(a($,"parseEnvVar"),k=0;k<u.length;k++){var g=u.charAt(k);if(v=v||!f&&(g==="*"||g==="?"),m)y+=g,m=!1;else if(f)g===f?f=!1:f==$s?y+=g:g===t?(k+=1,g=u.charAt(k),g===Ss||g===t||g===zn?y+=g:y+=t+g):g===zn?y+=$():y+=g;else if(g===Ss||g===$s)f=g;else{if(ks.test(g))return{op:u};if(Ea.test(g)){c=!0;var b={comment:e.slice(d.index+k+1)};return y.length?[y,b]:[b]}else g===t?m=!0:g===zn?y+=$():y+=g}}return v?{op:"glob",pattern:y}:y}).reduce(function(d,u){return typeof u>"u"?d:d.concat(u)},[])}a(_a,"parseInternal");xs.exports=a(function(o,n,t){var r=_a(o,n,t);return typeof n!="function"?r:r.reduce(function(i,l){if(typeof l=="object")return i.concat(l);var c=l.split(RegExp("("+xe+".*?"+xe+")","g"));return c.length===1?i.concat(c[0]):i.concat(c.filter(Boolean).map(function(d){return Ca.test(d)?JSON.parse(d.split(xe)[1]):d}))},[])},"parse")});var Rs=Wn(Vn=>{"use strict";Vn.quote=ys();Vn.parse=As()});import*as Tn from"fs";import*as Co from"path";import*as xn from"fs";import bn from"path";import s from"chalk";var Go=["plan","accept-edits","auto","auto-in-project"];function $f(e){return e==="auto"||e==="auto-in-project"}a($f,"isAutoMode");function ba(e){switch(e){case"plan":return"Plan";case"accept-edits":return"Edits";case"auto":case"auto-in-project":return"Auto"}}a(ba,"permissionModeDisplayName");var xa='[deprecated] permissionMode "auto-in-project" is now an alias for "auto" (FEATURE_092, v0.7.33). The alias will be removed in v0.7.38 \u2014 please update ~/.kodax/config.json to use "auto".';function Sf(e=o=>{q({source:"repl:permission",level:"warn",message:o})}){let o=!1;return()=>{o||(o=!0,e(xa))}}a(Sf,"createAutoInProjectDeprecationEmitter");var ds=zr(),lo=new Set(ds.filter(e=>e.sideEffect==="mutates-fs"&&e.requiredParams.includes("path")).map(e=>e.name)),us=new Set(ds.filter(e=>e.sideEffect!=="readonly").map(e=>e.name)),fs=new Set(["npm install","npm i","npm uninstall","npm remove","npm update","npm ci","yarn add","yarn remove","yarn upgrade","pnpm add","pnpm remove","pnpm update","git clean","git reset","git checkout","git switch","git merge","git rebase","git cherry-pick","git revert","git commit","git push","git pull","rm","mv","cp","mkdir","rmdir","touch","chmod","chown","del","erase","rd","copy","move","ren","curl","wget","dd","tar","kill","pkill","killall"]),ms=new Set(["ls","cat","pwd","echo","whoami","date","which","whereis","tree","dir","type","get-childitem","get-content","select-string","get-location","where","grep","find","awk","sed","head","tail","less","more","wc","findstr","fc","git status","git diff","git log","git show","git branch","git remote","git ls-files","git rev-parse","git grep","git tag","git stash list","git describe","git config --get","node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc"]);function ps(e){switch(e){case"plan":return new Set(["bash","write","edit","undo"]);case"accept-edits":return new Set(["bash"]);case"auto":case"auto-in-project":return new Set}}a(ps,"computeConfirmTools");function gs(e){return e!==void 0&&Go.includes(e)}a(gs,"isPermissionMode");function co(e,o){return gs(e)?e:o}a(co,"normalizePermissionMode");async function ws(e){let o=e.resolve(e.provider),n=[];for(let t of e.efforts){if(e.signal?.aborted)break;let r=!1;try{await o.stream([{role:"user",content:"ping"}],[],"",{effort:t},{modelOverride:e.model,maxOutputTokensOverride:1,onReasoningEffortRejected:a(()=>{r=!0},"onReasoningEffortRejected"),onTextDelta:a(()=>{},"onTextDelta")},e.signal)}catch(i){n.push({effort:t,status:"error",error:i instanceof Error?i.message:String(i)});continue}r?(kr(e.provider,e.model,t,"probed",e.now()),n.push({effort:t,status:"rejected"})):n.push({effort:t,status:"accepted"})}return n}a(ws,"probeProviderReasoningEfforts");import Yo from"fs";import Fs from"path";import qo from"fs";import W from"path";import fo from"os";var Cs=Sa(Rs(),1);var Es=new Set(["/dev/null","nul","NUL"]);function Yn(e){return Es.has(e)||Es.has(e.toLowerCase())}a(Yn,"isNullDevice");function uo(e){let o=e.trim();if(!o)return{statements:[],unparseable:!1};if(o.includes("`"))return{statements:[],unparseable:!0};let n;try{n=(0,Cs.parse)(o)}catch{return{statements:[],unparseable:!0}}let t=[],r=[],i=[],l=[],c=null,d=!1,u=a(()=>{(i.length>0||l.length>0)&&(r.push({argv:i,redirections:l}),i=[],l=[])},"flushStage"),f=a(m=>{u(),r.length>0&&(t.push({precedingOp:c,stages:r}),r=[]),c=m},"flushStatement");for(let m=0;m<n.length;m+=1){let y=n[m];if(typeof y=="string"){i.push(y);continue}if("op"in y){let v=y.op;if(v==="&&"||v==="||"||v===";"){f(v);continue}if(v==="|"){u();continue}if(v==="&"){let k=n[m+1];if(k!==void 0&&typeof k!="string"&&"op"in k&&(k.op===">"||k.op===">>")){let $=n[m+2];if(typeof $!="string"){d=!0,m+=1;continue}l.push(Ts(`&${k.op}`,$)),m+=2;continue}d=!0;continue}if(La(v)){let k=null,$=i[i.length-1];$!==void 0&&/^[0-9]+$/.test($)&&(k=$,i.pop());let g=n[m+1];if(typeof g!="string"){d=!0;continue}l.push(Ts(k?`${k}${v}`:v,g)),m+=1;continue}if(v==="glob"){let k=y.pattern;typeof k=="string"?i.push(k):d=!0;continue}d=!0;continue}if("comment"in y)break;d=!0}return f(null),{statements:t,unparseable:d}}a(uo,"parseBashCommand");var Ma=new Set([">",">>","<","<<","<<<","&>","&>>"]),Is=/^([0-9]+|&)(>>?|<<?)$/;function La(e){return Ma.has(e)||Is.test(e)}a(La,"isRedirectionOp");function Ts(e,o){let n=null,t=e,r=Is.exec(e);return r&&(n=r[1],t=r[2]),{op:e,fd:n,append:t===">>"||e==="&>>",input:t==="<"||t==="<<"||e==="<<<",target:o}}a(Ts,"parseRedirection");var Wa=W.join(".agent","plan_mode_doc.md"),Ko=new Map,zo=null;function Oa(e){if(!e||!e.trim())return!1;let o=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of ms)if(o===n||o.startsWith(n+" ")){if(n==="sed"&&o.split(/\s+/).some(i=>i.startsWith("-i")||i==="--in-place"))return!1;if(n==="awk"){let r=o.split(/\s+/);if(r.includes("-f")||r.includes("--file"))return!1}if(["node","npm","yarn","pnpm","tsc","python","pip","go","cargo","rustc","ruby","perl"].includes(n)){let r=o.split(/\s+/).slice(1);if(r.length>0&&!r.every(i=>/^(-v|--version|-h|--help)$/.test(i)))return!1}return!0}return!1}a(Oa,"isSingleBashReadCommand");var Na=/^[a-zA-Z0-9]+$/;function Da(e){let o=e.trim();if(!o.endsWith("--help")||o.includes('"')||o.includes("'"))return!1;let n=!1;for(let t of o.split(/\s+/))if(t.startsWith("-"))if(t==="--help")n=!0;else return!1;else if(!Na.test(t))return!1;return n}a(Da,"isHelpCommand");function Zn(e){if(!e||!e.trim())return!1;if(Da(e))return!0;let o=e.trim().replace(/\\\r?\n/g," "),n=uo(o);if(n.unparseable||n.statements.length===0)return!1;let t=n.statements.length>1||(n.statements[0]?.stages.length??0)>1;for(let r of n.statements){if(r.precedingOp!==null&&r.precedingOp!=="&&")return!1;for(let i of r.stages){for(let c of i.redirections)if(c.input||!Yn(c.target))return!1;let l=i.argv.join(" ");if(l&&!(t&&i.argv[0]?.toLowerCase()==="cd"&&i.argv.length>=2)&&!Oa(l))return!1}}return!0}a(Zn,"isBashReadCommand");function Ua(e){let o=e.trim();return o?Zn(o)?null:"[Blocked] Direct !command execution only supports safe read-only commands. Use the bash tool for commands that write files, invoke shells, or require confirmation.":"[Shell: No command provided]"}a(Ua,"getDirectShellBypassBlockReason");var _s=new Set(["remove-item","set-content","add-content","out-file","new-item","copy-item","move-item","rename-item","ni"]);function Qn(e){if(!e||!e.trim())return!1;let o=uo(e);if(o.unparseable)return!1;for(let n of o.statements)for(let t of n.stages){let r=t.argv.map(i=>i.toLowerCase());if(r.length>0){let i=r[0],l=r.length>=2?`${r[0]} ${r[1]}`:null;for(let c of fs)if(c===i||l!==null&&c===l)return!0}for(let i of r)if(_s.has(i))return!0;for(let i of t.redirections)if(!i.input&&!Yn(i.target))return!0}return!1}a(Qn,"isBashWriteCommand");function et(e){let o=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\((.+)\)$/);return o?{tool:o[1].toLowerCase(),pattern:o[2]}:{tool:e.toLowerCase(),pattern:null}}a(et,"parseAllowedToolPattern");function ja(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e.startsWith(n)}return e===o}a(ja,"matchesBashPatternLegacy");function Fa(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e===n}return e===o}a(Fa,"matchesBashPatternByExtractedPrefix");async function ot(e,o,n,t,r){if(e.toLowerCase()!=="bash")return!1;let i=o.command??"",l=[];for(let c of n){let d=et(c);if(d.tool==="bash"){if(d.pattern===null)return!0;l.push({pattern:d.pattern})}}if(l.length===0)return!1;if(t){let c;try{c=await t.extract(i,r)}catch{return!1}if(c.kind!=="prefix")return!1;for(let{pattern:d}of l)if(d&&Fa(c.value,d))return!0;return!1}for(let{pattern:c}of l)if(c&&ja(i,c))return!0;return!1}a(ot,"isToolCallAllowed");function nt(e,o,n){if(e.toLowerCase()!=="bash")return"";let t=o.command??"",r=t.split(" ");return r.length>1?`Bash(${r.slice(0,2).join(" ")}:*)`:`Bash(${t})`}a(nt,"generateSavePattern");function mo(e,o){try{let n=W.resolve(e),t=W.resolve(o),r=Ne(),i=W.join(t,".kodax");return Be(n,i)||Be(n,r)?!0:!(Be(n,t)||Ws().some(c=>Be(n,c)))}catch{return!1}}a(mo,"isAlwaysConfirmPath");function Ps(e){return!e||e.startsWith("-")?!1:/^\.\.?[/\\]/.test(e)||e.startsWith("~/")||e.startsWith("~\\")||/^[a-zA-Z]:[/\\]/.test(e)?!0:e.startsWith("/")&&e.length>1?!(process.platform==="win32"&&Ha.test(e)):!!(e.startsWith(".")&&/[/\\]/.test(e))}a(Ps,"looksLikePath");var Ha=/^\/[A-Za-z][A-Za-z0-9]*(?::[A-Za-z0-9]+)?$/;function Ba(e){let o=[],n=/["']([^"']+)["']/g,t;for(;(t=n.exec(e))!==null;)o.push(t[1]);let r=/(?:^|\s)(\.\.?\/[^\s]+|\.\.?\\[^\s]+|[a-zA-Z]:\\[^\s]+|~\/[^\s]+|\.[^\s]*[/\\][^\s]*)/g;for(;(t=r.exec(e))!==null;)o.push(t[1]);return o}a(Ba,"legacyRegexPathScan");function Vo(e){let o=new Set,n=uo(e);if(!n.unparseable)for(let t of n.statements)for(let r of t.stages){for(let i of r.argv)Ps(i)&&o.add(i);for(let i of r.redirections)Ps(i.target)&&o.add(i.target)}for(let t of Ba(e))o.add(t);return Array.from(o)}a(Vo,"extractPathsFromCommand");function Ga(e,o){let n=Vo(e);for(let t of n)if(mo(t,o))return!0;return!1}a(Ga,"isCommandOnProtectedPath");function Xo(e){let o=W.normalize(e);return process.platform==="win32"?o.toLowerCase():o}a(Xo,"normalizePathForComparison");function qa(e,o){return Xo(e)===Xo(o)}a(qa,"pathsEqual");function Be(e,o){let n=Xo(e),t=Xo(o);return n===t||n.startsWith(t+W.sep)}a(Be,"isPathInsideDirectory");function tt(e,o){try{let n=W.resolve(o),t=W.resolve(n,Ls(Ms(e)));return Be(t,n)}catch{return!1}}a(tt,"isPathInsideProject");function Ka(e){let o=e.match(/[A-Za-z]:[\\/][^\s;|&<>(){}'"]+|\/[^\s;|&<>(){}'"]+/g);return o?o.filter(n=>!/^(?:\/dev\/|\/proc\/)/i.test(n)):[]}a(Ka,"collectAbsolutePathCandidates");function rt(e){let o=W.resolve(e),n=Ko.get(o);if(n)return n;if(qo.existsSync(o)){let c=qo.realpathSync.native(o);return Ko.set(o,c),c}let t=[],r=o;for(;!qo.existsSync(r);){let c=W.dirname(r);if(c===r)return Ko.set(o,o),o;t.unshift(W.basename(r)),r=c}let i=qo.realpathSync.native(r),l=W.join(i,...t);return Ko.set(o,l),l}a(rt,"resolveExistingPathPrefix");function Ms(e){return e==="~"?fo.homedir():e.startsWith(`~${W.sep}`)||e.startsWith("~/")||e.startsWith("~\\")?W.join(fo.homedir(),e.slice(2)):e}a(Ms,"expandHomeDirectory");function Ls(e){let o=fo.tmpdir(),n=[[/^%temp%/i,o],[/^%tmp%/i,o],[/^\$env:temp\b/i,o],[/^\$env:tmp\b/i,o],[/^\$tmpdir\b/i,o],[/^\$temp\b/i,o],[/^\$tmp\b/i,o]];for(let[t,r]of n)if(t.test(e))return e.replace(t,r);return e}a(Ls,"expandSystemTempAlias");function za(e,o){let n=W.resolve(o??process.cwd()),t=Ls(Ms(e)),r=W.isAbsolute(t)?W.resolve(t):W.resolve(n,t);return rt(r)}a(za,"resolvePermissionPath");function Ws(){if(zo)return zo;let e=new Set,o=[fo.tmpdir(),process.env.TEMP,process.env.TMP,process.env.TMPDIR].filter(n=>typeof n=="string"&&n.trim().length>0);for(let n of o)try{e.add(rt(n))}catch{}return zo=Array.from(e),zo}a(Ws,"getSystemTempDirectories");function st(e){let o=rt(e??process.cwd());return{projectPlanDoc:W.join(o,Wa),systemTempDirs:Ws()}}a(st,"getPlanModeAllowedWritablePaths");function Jn(e,o){let n=za(e,o),{projectPlanDoc:t,systemTempDirs:r}=st(o);return qa(n,t)?!0:r.some(i=>Be(n,i))}a(Jn,"isPlanModeAllowedPath");function Xa(e){let{projectPlanDoc:o,systemTempDirs:n}=st(e),t=n[0]??fo.tmpdir();return`${o} or the system temp directory (${t})`}a(Xa,"formatPlanModeAllowedLocations");var Va=new Set(["-a","--append","-i","--ignore-interrupts"]);function Ya(e){let o=[];for(let n=1;n<e.argv.length;n+=1){let t=e.argv[n];Va.has(t)||t.startsWith("-")||o.push(t)}return o}a(Ya,"collectTeeTargets");function Ja(e){let o=[],n=1,t=!1;for(;n<e.argv.length;){let r=e.argv[n],i=r.toLowerCase();if(i==="-path"||i==="-literalpath"||i==="-destination"){let l=e.argv[n+1];if(l!==void 0&&!l.startsWith("-")){o.push(l),n+=2;continue}}!r.startsWith("-")&&!t&&(o.push(r),t=!0),n+=1}return o}a(Ja,"collectPowerShellWriteTargets");function Ge(e){let o=new Set,n=a(r=>{let i=r?.trim();i&&o.add(i)},"pushTarget");for(let r of Vo(e))n(r);let t=uo(e);if(t.unparseable)return Array.from(o);for(let r of t.statements)for(let i of r.stages){for(let c of i.redirections)c.input||n(c.target);let l=i.argv[0]?.toLowerCase();if(l){if(l==="tee")for(let c of Ya(i))n(c);else if(_s.has(l))for(let c of Ja(i))n(c)}}return Array.from(o)}a(Ge,"collectBashWriteTargets");function Os(e,o){if(!Qn(e))return{dangerous:!1};let n=new Set([...Ge(e),...Ka(e)]);for(let t of n)if(!tt(t,o))return{dangerous:!0,reason:`Command may modify file outside project: ${t}`};return{dangerous:!1}}a(Os,"getBashOutsideProjectWriteRisk");function Ns(e,o,n){let t=Xa(n);if(Xr(e))return null;if(lo.has(e)){let r=typeof o.path=="string"?o.path:"";return r?Jn(r,n)?null:`[Blocked] Plan mode only allows file modifications in ${t}. Requested path: ${r}`:`[Blocked] Tool '${e}' is not allowed in plan mode unless it targets ${t}.`}if(e==="bash"){let r=o.command??"";if(!Qn(r))return null;let i=Ge(r);if(i.length===0)return`[Blocked] Plan mode only allows bash write operations when every target is either ${t}. Could not determine a safe target from: ${r.slice(0,80)}${r.length>80?"...":""}`;let l=i.find(c=>!Jn(c,n));return l?`[Blocked] Plan mode only allows bash write operations in ${t}. Blocked target: ${l}`:null}return`[Blocked] Tool '${e}' has side effects and is not permitted in plan mode. Switch to accept-edits or auto mode to use it, or work within ${t}.`}a(Ns,"getPlanModeBlockReason");import me from"node:path";import Za from"node:os";function qe(e,o){try{let n=me.resolve(e),t=me.resolve(o);return n===t?!0:n.startsWith(t+me.sep)}catch{return!1}}a(qe,"isPathUnder");function Qa(){try{return Ne()}catch{return}}a(Qa,"safeGetAgentConfigHome");function Ds(e,o){let n=Qa();if(n&&qe(e,n))return"user-kodax";let t=me.join(me.resolve(o),".kodax");if(qe(e,t))return"project-kodax"}a(Ds,"resolveProtectedZone");function el(){let e=new Set;try{e.add(Za.tmpdir())}catch{}for(let o of["TEMP","TMP","TMPDIR"]){let n=process.env[o];n&&n.length>0&&e.add(n)}return Array.from(e)}a(el,"getSystemTempDirs");var ol=new Set(["bash"]),nl={toolNames:ol,collect(e,o){let n=typeof e.input.command=="string"?e.input.command:"";if(!n||!o)return[];let t=[],r=new Set,i=new Set,l=el(),c=me.resolve(o);for(let d of Vo(n)){let u;try{u=me.resolve(o,d)}catch{continue}let f=Ds(u,o);if(f){r.has(u)||(r.add(u),t.push({kind:"protected_path",path:d,zone:f}));continue}if(mo(d,o)){let m=l.some(v=>qe(u,v)),y=qe(u,c);!m&&!y&&!i.has(u)&&(i.add(u),t.push({kind:"outside_project",path:d}))}}for(let d of Ge(n)){let u;try{u=me.resolve(o,d)}catch{continue}Ds(u,o)||qe(u,c)||l.some(y=>qe(u,y))||t.push({kind:"shell_redirect_outside",target:d})}return t}};var Jo=H("config.json");function Hs(){return Fs.join(process.cwd(),".kodax","config.local.json")}a(Hs,"getProjectConfigFile");function gm(e=process.env){let n=po(Jo).autoMode??{},t=e.KODAX_AUTO_MODE_ENGINE?.trim(),r=t==="llm"||t==="rules"?t:void 0,i=n.engine==="llm"||n.engine==="rules"?n.engine:void 0,l=r??i??"llm",c=js(n.classifierModel),d=js(e.KODAX_AUTO_MODE_CLASSIFIER_MODEL),u=e.KODAX_AUTO_MODE_TIMEOUT_MS?.trim(),f=u!==void 0?Number(u):NaN,m=Number.isFinite(f)&&f>0?Math.floor(f):void 0,y=typeof n.timeoutMs=="number"&&n.timeoutMs>0?Math.floor(n.timeoutMs):void 0,v=Us(e.KODAX_AUTO_SPECULATIVE_WINDOW_MS?.trim()),k=typeof n.speculativeWindowMs=="number"?Us(String(n.speculativeWindowMs)):void 0;return{engine:l,classifierModel:c,classifierModelEnv:d,timeoutMs:m??y,speculativeWindowMs:v??k}}a(gm,"loadAutoModeSettings");function Us(e){if(e===void 0||e==="")return;let o=Number(e);if(Number.isFinite(o))return o<0?0:Math.floor(o)}a(Us,"parseSpeculativeWindow");function js(e){if(typeof e!="string")return;let o=e.trim();return o.length===0?void 0:o}a(js,"nonEmptyString");function po(e){try{if(Yo.existsSync(e))return JSON.parse(Yo.readFileSync(e,"utf-8"))}catch{}return{}}a(po,"readJsonFile");function Bs(e,o){Yo.mkdirSync(Fs.dirname(e),{recursive:!0}),Yo.writeFileSync(e,JSON.stringify(o,null,2))}a(Bs,"writeJsonFile");function it(e){let o=po(Jo);Bs(Jo,{...o,permissionMode:e})}a(it,"savePermissionModeUser");function wm(){let e=po(Jo),o=po(Hs()),n=e.alwaysAllowTools??[],t=o.alwaysAllowTools??[];return[...new Set([...n,...t])]}a(wm,"loadAlwaysAllowTools");function hm(e,o,n=!1){let t=nt(e,o,n);if(!t)return;let r=Hs(),i=po(r),l=i.alwaysAllowTools??[];l.includes(t)||Bs(r,{...i,alwaysAllowTools:[...l,t]})}a(hm,"saveAlwaysAllowToolPattern");var at=["ama","amaw","sa"];function Gs(e){let o=at.indexOf(e);return at[(o+1)%at.length]??"ama"}a(Gs,"nextAgentMode");var pe=class{static{a(this,"CommandRegistry")}commands=new Map;aliases=new Map;register(o){let n=o.name.toLowerCase();if(this.commands.has(n))throw new Error(`Command "${o.name}" is already registered`);if(this.aliases.has(n)){let r=this.aliases.get(n);throw new Error(`Command "${o.name}" conflicts with existing alias for "${r}"`)}let t=new Set;for(let r of o.aliases??[]){let i=r.toLowerCase();if(i!==n){if(t.has(i))throw new Error(`Alias "${r}" is duplicated within command "${o.name}"`);if(this.commands.has(i))throw new Error(`Alias "${r}" conflicts with existing command "${i}"`);if(this.aliases.has(i)){let l=this.aliases.get(i);throw new Error(`Alias "${r}" is already registered for "${l}"`)}t.add(i)}}if(this.commands.set(n,{...o,source:o.source??"builtin"}),o.aliases)for(let r of o.aliases){let i=r.toLowerCase();i!==n&&this.aliases.set(i,n)}}unregister(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;if(!this.commands.has(t))return!1;let r=this.commands.get(t);if(r?.aliases)for(let i of r.aliases)this.aliases.delete(i.toLowerCase());return this.commands.delete(t),!0}get(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;return this.commands.get(t)}has(o){let n=o.toLowerCase(),t=this.aliases.get(n)??n;return this.commands.has(t)}getAll(o){let n=new Map;for(let[t,r]of this.commands)o&&r.source!==o||n.has(t)||n.set(t,{name:r.name,aliases:r.aliases,description:r.description,source:r.source??"builtin",usage:r.usage,priority:r.priority,location:r.location,path:r.path,userInvocable:r.userInvocable,disableModelInvocation:r.disableModelInvocation,allowedTools:r.allowedTools,context:r.context,agent:r.agent,argumentHint:r.argumentHint,model:r.model});return Array.from(n.values()).sort((t,r)=>t.name.localeCompare(r.name))}getBySource(o){return this.getAll(o)}getNames(){return Array.from(this.commands.keys()).sort()}clear(){this.commands.clear(),this.aliases.clear()}get size(){return this.commands.size}get aliasCount(){return this.aliases.size}},tl=new pe;import K from"chalk";import{Buffer as Xs}from"node:buffer";import{spawn as rl}from"node:child_process";import qs from"node:process";var Ae="\x1B",sl="\x07",lt=`${Ae}\\`;function Ks(e,o){return e.SSH_CONNECTION?!1:o==="win32"||o==="darwin"||o==="linux"}a(Ks,"shouldPreferNativeClipboard");function il(e,o){let n=Xs.from(e,"utf8").toString("base64"),t=o.TERM==="xterm-kitty"?lt:sl,r=`${Ae}]52;c;${n}${t}`;return o.TMUX?`${Ae}Ptmux;${r.replaceAll(Ae,`${Ae}${Ae}`)}${lt}`:o.STY?`${Ae}P${r}${lt}`:r}a(il,"buildOscSequence");async function Zo(e,o,n){return new Promise((t,r)=>{let i=rl(e,o,{stdio:["pipe","ignore","pipe"],windowsHide:!0}),l="";i.on("error",r),i.stderr?.on("data",c=>{l+=c.toString()}),i.on("close",c=>{if(c===0){t(!0);return}r(new Error(l.trim()||`${e} exited with code ${c??"unknown"}`))}),i.stdin?.write(n),i.stdin?.end()})}a(Zo,"execClipboardCommand");function al(e){let o="$stream = [Console]::OpenStandardInput(); $buffer = New-Object byte[] 8192; $memory = New-Object System.IO.MemoryStream; while (($read = $stream.Read($buffer, 0, $buffer.Length)) -gt 0) { $memory.Write($buffer, 0, $read) }; $text = [System.Text.Encoding]::UTF8.GetString($memory.ToArray()); Set-Clipboard -Value $text",n=Xs.from(e,"utf8");return[["powershell",["-NoProfile","-NonInteractive","-Command",o],n],["pwsh",["-NoProfile","-NonInteractive","-Command",o],n],["cmd",["/c","chcp 65001 >nul & clip"],n]]}a(al,"buildWindowsClipboardCandidates");async function zs(e,o,n){if(o.SSH_CONNECTION)return!1;switch(n){case"win32":{let t=al(e);for(let[r,i,l]of t)try{if(await Zo(r,i,l))return!0}catch{}return!1}case"darwin":return Zo("pbcopy",[],e);case"linux":{let t=[["wl-copy",[]],["xclip",["-selection","clipboard"]],["xsel",["--clipboard","--input"]]];for(let[r,i]of t)try{if(await Zo(r,i,e))return!0}catch{}return!1}default:return!1}}a(zs,"tryNativeClipboard");async function ll(e,o){if(!o.TMUX)return!1;let n=o.LC_TERMINAL==="iTerm2"?["load-buffer","-"]:["load-buffer","-w","-"];try{return await Zo("tmux",n,e)}catch{return!1}}a(ll,"tryTmuxClipboard");async function Vs(e,o={}){let n=o.env??qs.env,t=o.platform??qs.platform,r=e.trimEnd(),i=il(r,n);if(!r)throw new Error("Nothing to copy.");if(Ks(n,t))try{if(await zs(r,n,t))return{path:"native"}}catch{}if(await ll(r,n))return{path:"tmux-buffer"};if(o.terminalWrite?.(i))return{path:"osc52"};if(!Ks(n,t))try{if(await zs(r,n,t))return{path:"native"}}catch{}throw new Error("Unable to access any clipboard path.")}a(Vs,"copyTextToClipboard");var ct;(function(e){e.Idle="idle",e.Responding="responding",e.WaitingForConfirmation="waiting_for_confirmation"})(ct||(ct={}));var G;(function(e){e.Scheduled="scheduled",e.Validating="validating",e.AwaitingApproval="awaiting_approval",e.Executing="executing",e.Success="success",e.Error="error",e.Cancelled="cancelled"})(G||(G={}));var Cm={[G.Scheduled]:"\u25CB",[G.Validating]:"\u25CC",[G.AwaitingApproval]:"?",[G.Executing]:"\u25CB",[G.Success]:"\u2713",[G.Error]:"\u2717",[G.Cancelled]:"-"},Ys;(function(e){e[e.Low=-100]="Low",e[e.Normal=0]="Normal",e[e.High=100]="High",e[e.Critical=200]="Critical"})(Ys||(Ys={}));var Im={streamingState:ct.Idle,currentResponse:"",history:[],pendingToolCalls:[],sessionId:"",provider:"",model:"",isLoading:!1};var cl="[redacted]",Js="[truncated]";function se(e,o=2e3){return e.length>o?`${e.slice(0,o-3)}...`:e}a(se,"truncateToolReplayText");function dl(e){let o=e.toLowerCase().replace(/[\s_-]/g,"");return o.includes("token")||o.includes("password")||o.includes("secret")||o.includes("apikey")||o.includes("accesstoken")||o==="authorization"||o==="cookie"||o==="setcookie"}a(dl,"isSensitiveToolInputKey");function Zs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(Zs,"isRecord");function dt(e,o=0,n=new WeakSet){if(e===null||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="string")return se(e);if(o>=6)return Js;if(typeof e=="object"&&e!==null){if(n.has(e))return Js;if(n.add(e),Array.isArray(e))return e.slice(0,50).map(r=>dt(r,o+1,n));if(!Zs(e))return se(String(e));let t={};for(let[r,i]of Object.entries(e).slice(0,50))t[r]=dl(r)?cl:dt(i,o+1,n);return t}return se(String(e))}a(dt,"sanitizeToolJsonValue");function Qs(e){if(!e)return;let o=dt(e);return Zs(o)?o:void 0}a(Qs,"sanitizeToolInput");function ei(e){if(e!==void 0){if(typeof e=="string")return se(e);try{return se(JSON.stringify(e))}catch{return se(String(e))}}}a(ei,"stringifyToolReplayValue");function Om(e){return e.type==="tool_summary"||e.type==="task_completed"?{type:"event",text:e.text,icon:"tool"}:e.type==="tool_group"?{type:"tool_group",tools:e.tools.map(yl)}:e}a(Om,"seedToHistoryItem");var ul="[Thinking]",fl="[/Thinking]",ml="Untitled Session",oi=50,pl=60,ti="...",ri=["[Managed Task]","[Managed Task Protocol Retry]","Assigned native agent identity:","Tool policy:","Blocked tools:","Allowed shell patterns:","Dependency handoff artifacts:","Dependency summary preview:","Preferred agent:","Read structured bundle first:","Read human summary next:"],si=[/(?:^|\n)You are the [^\n]+ role for a managed KodaX task\./,/(?:^|\n)Primary task:/,/(?:^|\n)Work intent:/,/(?:^|\n)Complexity:/,/(?:^|\n)Risk:/,/(?:^|\n)Harness:/,/(?:^|\n)Brainstorm required:/],gl=/(^|\r?\n)\[Thinking\]\r?\n([\s\S]*?)\r?\n\[\/Thinking\](?=\r?\n|$)/g,wl="Session ended before the tool completed.";function hl(e){switch(e){case"success":return G.Success;case"error":return G.Error;case"cancelled":return G.Cancelled;case"awaiting_approval":return G.AwaitingApproval;default:return e}}a(hl,"toolCallSeedToHistoryToolStatus");function yl(e){return{id:e.id,name:e.name,status:hl(e.status),...e.input!==void 0?{input:e.input}:{},...e.preview!==void 0?{preview:e.preview}:{},...e.output!==void 0?{output:e.output}:{},...e.error!==void 0?{error:e.error}:{},startTime:e.startTime??Date.now(),...e.endTime!==void 0?{endTime:e.endTime}:{}}}a(yl,"toolCallSeedToHistoryToolCall");function kl(e){let o=-1;for(let n of ri){let t=e.indexOf(n);t>=0&&(o===-1||t<o)&&(o=t)}for(let n of si){let t=n.exec(e);t&&t.index>=0&&(o===-1||t.index<o)&&(o=t.index)}return o}a(kl,"findControlPlaneCutIndex");function vl(e){return ri.some(o=>e.includes(o))||si.some(o=>o.test(e))}a(vl,"hasControlPlaneSignal");function ii(e){let o=[];for(let n of e)n&&typeof n=="object"&&"type"in n&&n.type==="text"&&"text"in n&&o.push(String(n.text));return o}a(ii,"collectTextBlocks");function en(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(en,"isRecord");function $l(e){if(typeof e=="string")return se(e);if(e===void 0)return"";try{return ei(e)??""}catch{return se(String(e))}}a($l,"toolResultContentToString");function Sl(e){let o=$l(e.content),n=o.trimStart(),t=e.is_error===!0||n.startsWith("[Tool Error]")||n.startsWith("[Error]"),r=n.startsWith("[Cancelled]")||n.startsWith("[Blocked]");return t?{status:"error",error:o}:r?{status:"cancelled",error:o}:{status:"success",output:o}}a(Sl,"inferToolResultSeed");function bl(e){let o=new Map;if(!e||e.role!=="user"||!Array.isArray(e.content))return o;for(let n of e.content)!en(n)||n.type!=="tool_result"||typeof n.tool_use_id!="string"||o.set(n.tool_use_id,Sl(n));return o}a(bl,"collectToolResultSeeds");function xl(e,o){if(e.type!=="tool_use"||typeof e.id!="string"||typeof e.name!="string")return;let n=o.get(e.id)??{status:"cancelled",error:wl};return{id:e.id,name:e.name,status:n.status,...e.input!==void 0?{input:Qs(en(e.input)?e.input:{})??{}}:{},...n.output!==void 0?{output:n.output}:{},...n.error!==void 0?{error:n.error}:{}}}a(xl,"buildToolCallSeed");function Al(e){return typeof e=="string"?e:Array.isArray(e)?ii(e).join(`
3
3
  `):""}a(Al,"extractAssistantTextOnly");function wo(e,o,n){n.trim().length!==0&&e.push({type:o,text:n})}a(wo,"pushSeed");function ni(e){return e.replace(/^\n+/,"").replace(/\n+$/,"")}a(ni,"stripLegacyTagBoundaryNewlines");function Rl(e){let o=e.name,n=e.input;if(!n)return`\u26A1 ${o}`;let t=o==="bash"?go(String(n.command??"")):o==="read"||o==="write"||o==="edit"?go(String(n.file_path??n.path??"")):o==="grep"||o==="glob"?go(String(n.pattern??"")):o==="web_search"||o==="web_fetch"?go(String(n.query??n.url??"")):void 0;return t?`\u26A1 ${o}(${t})`:`\u26A1 ${o}`}a(Rl,"formatToolUseSummary");function go(e,o=60){let n=e.replace(/\s+/g," ").trim();return n.length>o?`${n.slice(0,o)}...`:n}a(go,"truncateToolHint");function El(e){if(!e.includes(ul)||!e.includes(fl))return e.trim().length>0?[{type:"assistant",text:e}]:[];let o=[],n=0;for(let t of e.matchAll(gl)){let r=t.index??-1,i=t[1]??"",l=t[2]??"";if(r<0)continue;let c=r+i.length;wo(o,"assistant",ni(e.slice(n,c))),wo(o,"thinking",l),n=r+t[0].length}return wo(o,"assistant",ni(e.slice(n))),o.length===0?e.trim().length>0?[{type:"assistant",text:e}]:[]:o}a(El,"parseLegacyAssistantContent");function ai(e,o){if(typeof e=="string")return El(e);if(!Array.isArray(e))return[];let n=[],t=[],r=[],i=a(()=>{t.length!==0&&(wo(n,"assistant",t.join(`
4
- `)),t.length=0)},"flushAssistantBuffer"),l=a(()=>{r.length!==0&&(n.push({type:"tool_group",tools:[...r]}),r.length=0)},"flushToolBuffer");for(let c of e)if(!(!Qo(c)||typeof c.type!="string"))switch(c.type){case"text":l(),"text"in c&&t.push(String(c.text));break;case"thinking":i(),l(),"thinking"in c&&wo(n,"thinking",String(c.thinking));break;case"tool_use":if(i(),o){let d=xl(c,o);d&&r.push(d)}else if(typeof c.name=="string"){let d=Rl({name:c.name,...Qo(c.input)?{input:c.input}:{}});d&&n.push({type:"tool_summary",text:d})}break;case"tool_result":case"redacted_thinking":break;default:break}return l(),i(),n}a(ai,"extractAssistantHistorySeeds");var Cl=["You are the Scout role","You are the Generator role","You are the Planner role","You are the Evaluator role"],Tl=/\r?\n?\`\`\`kodax[\w-]*[\s\S]*?\`\`\`\s*/g;function Il(e){return Cl.some(o=>e.includes(o))}a(Il,"isManagedWorkerPrompt");function li(e){return e.replace(Tl,"").trim()}a(li,"stripManagedProtocolBlocks");function Pl(e){switch(e.role){case"assistant":return ai(e.content).flatMap(n=>{if(n.type!=="assistant")return[n];let t=li(n.text);return t.length>0&&t.trim()!=="..."?[{...n,text:t}]:[]});case"user":{if(e._source==="sidecar-verifier"){let n=Zo(e.content).trim();return n?[{type:"sidecar",text:n,verdict:"revise"}]:[]}if(e._source==="task-completed"){let n=Zo(e.content).trim();return n?[{type:"task_completed",text:n}]:[]}if(e._synthetic)return[];let o=Zo(e.content);return o.trim().length===0||Il(o)?[]:[{type:"user",text:o}]}case"system":return[];default:return[]}}a(Pl,"extractHistorySeedsFromMessage");function Om(e){let o=[];for(let n=0;n<e.length;n+=1){let t=e[n];if(t){if(t.role==="assistant"){let r=bl(e[n+1]),i=ai(t.content,r);o.push(...i.map(l=>l.type==="assistant"?{...l,text:li(l.text)}:l).filter(l=>l.type!=="assistant"||l.text.length>0&&l.text.trim()!=="..."));continue}o.push(...Pl(t))}}return o}a(Om,"extractHistorySeedsFromMessages");function Zo(e){return typeof e=="string"?e:Array.isArray(e)?ii(e).join(`
5
- `):""}a(Zo,"extractTextContent");function _l(e){let o=e.replace(/\s+/g," ").trim();return o?o.length>oi?`${o.slice(0,oi)}${ti}`:o:ml}a(_l,"formatSessionTitle");function Ml(e){if(e.role!=="user")return!1;let o=e.content;return!Array.isArray(o)||o.length===0?!1:o.every(n=>!!n&&typeof n=="object"&&"type"in n&&n.type==="tool_result")}a(Ml,"isPureToolResultUserMessage");function ut(e){for(let o=e.length-1;o>=0;o--){let n=e[o];if(n){if(n.role==="assistant"){let t=Al(n.content);return t&&t.trim()!=="..."?t:""}if(!Ml(n))return""}}return""}a(ut,"extractLastAssistantText");function Dm(e,o,n,t){let r=[ut(e),o.trim(),n?.trim()??"",t?.trim()??""];for(let i of r){let l=ci(i);if(l)return l}return""}a(Dm,"resolveCompletedAssistantText");function ci(e){let o=e.trim();if(!o||o==="...")return"";let n=kl(o);return n===0?"":(n>0?o.slice(0,n):o).trim()}a(ci,"sanitizeUserFacingAssistantText");function Um(e){let o=e.trim();return o.length>0&&ci(o).length===0&&vl(o)}a(Um,"isControlPlaneOnlyAssistantText");function jm(e){let o=e.find(t=>t.role==="user"),n=o?Zo(o.content):"";return _l(n)}a(jm,"extractTitle");function Fm(e,o=pl){let n=e.replace(/\n/g," "),t=n.length>o?ti:"";return n.slice(0,o)+t}a(Fm,"formatMessagePreview");var ft={name:"copy",description:"Copy last assistant message to clipboard",usage:"/copy",handler:a(async(e,o)=>{let n=ut(o.messages);if(!n){console.log(K.yellow(`
4
+ `)),t.length=0)},"flushAssistantBuffer"),l=a(()=>{r.length!==0&&(n.push({type:"tool_group",tools:[...r]}),r.length=0)},"flushToolBuffer");for(let c of e)if(!(!en(c)||typeof c.type!="string"))switch(c.type){case"text":l(),"text"in c&&t.push(String(c.text));break;case"thinking":i(),l(),"thinking"in c&&wo(n,"thinking",String(c.thinking));break;case"tool_use":if(i(),o){let d=xl(c,o);d&&r.push(d)}else if(typeof c.name=="string"){let d=Rl({name:c.name,...en(c.input)?{input:c.input}:{}});d&&n.push({type:"tool_summary",text:d})}break;case"tool_result":case"redacted_thinking":break;default:break}return l(),i(),n}a(ai,"extractAssistantHistorySeeds");var Tl=["You are the Scout role","You are the Generator role","You are the Planner role","You are the Evaluator role"],Cl=/\r?\n?\`\`\`kodax[\w-]*[\s\S]*?\`\`\`\s*/g;function Il(e){return Tl.some(o=>e.includes(o))}a(Il,"isManagedWorkerPrompt");function li(e){return e.replace(Cl,"").trim()}a(li,"stripManagedProtocolBlocks");function Pl(e){switch(e.role){case"assistant":return ai(e.content).flatMap(n=>{if(n.type!=="assistant")return[n];let t=li(n.text);return t.length>0&&t.trim()!=="..."?[{...n,text:t}]:[]});case"user":{if(e._source==="sidecar-verifier"){let n=Qo(e.content).trim();return n?[{type:"sidecar",text:n,verdict:"revise"}]:[]}if(e._source==="task-completed"){let n=Qo(e.content).trim();return n?[{type:"task_completed",text:n}]:[]}if(e._synthetic)return[];let o=Qo(e.content);return o.trim().length===0||Il(o)?[]:[{type:"user",text:o}]}case"system":return[];default:return[]}}a(Pl,"extractHistorySeedsFromMessage");function Nm(e){let o=[];for(let n=0;n<e.length;n+=1){let t=e[n];if(t){if(t.role==="assistant"){let r=bl(e[n+1]),i=ai(t.content,r);o.push(...i.map(l=>l.type==="assistant"?{...l,text:li(l.text)}:l).filter(l=>l.type!=="assistant"||l.text.length>0&&l.text.trim()!=="..."));continue}o.push(...Pl(t))}}return o}a(Nm,"extractHistorySeedsFromMessages");function Qo(e){return typeof e=="string"?e:Array.isArray(e)?ii(e).join(`
5
+ `):""}a(Qo,"extractTextContent");function _l(e){let o=e.replace(/\s+/g," ").trim();return o?o.length>oi?`${o.slice(0,oi)}${ti}`:o:ml}a(_l,"formatSessionTitle");function Ml(e){if(e.role!=="user")return!1;let o=e.content;return!Array.isArray(o)||o.length===0?!1:o.every(n=>!!n&&typeof n=="object"&&"type"in n&&n.type==="tool_result")}a(Ml,"isPureToolResultUserMessage");function ut(e){for(let o=e.length-1;o>=0;o--){let n=e[o];if(n){if(n.role==="assistant"){let t=Al(n.content);return t&&t.trim()!=="..."?t:""}if(!Ml(n))return""}}return""}a(ut,"extractLastAssistantText");function Dm(e,o,n,t){let r=[ut(e),o.trim(),n?.trim()??"",t?.trim()??""];for(let i of r){let l=ci(i);if(l)return l}return""}a(Dm,"resolveCompletedAssistantText");function ci(e){let o=e.trim();if(!o||o==="...")return"";let n=kl(o);return n===0?"":(n>0?o.slice(0,n):o).trim()}a(ci,"sanitizeUserFacingAssistantText");function Um(e){let o=e.trim();return o.length>0&&ci(o).length===0&&vl(o)}a(Um,"isControlPlaneOnlyAssistantText");function jm(e){let o=e.find(t=>t.role==="user"),n=o?Qo(o.content):"";return _l(n)}a(jm,"extractTitle");function Fm(e,o=pl){let n=e.replace(/\n/g," "),t=n.length>o?ti:"";return n.slice(0,o)+t}a(Fm,"formatMessagePreview");var ft={name:"copy",description:"Copy last assistant message to clipboard",usage:"/copy",handler:a(async(e,o)=>{let n=ut(o.messages);if(!n){console.log(K.yellow(`
6
6
  No assistant message found to copy.`)),console.log(K.dim("The assistant needs to respond first before you can copy its message."));return}try{await Vs(n);let t=n.length>50?n.slice(0,50)+"...":n;console.log(K.green(`
7
7
  Copied to clipboard!`)),console.log(K.dim(`Preview: ${t}`))}catch(t){let r=t instanceof Error?t.message:String(t);console.log(K.red(`
8
8
  Failed to copy to clipboard: ${r}`)),console.log(K.dim("You may need to check clipboard permissions or manually copy the message."))}},"handler"),detailedHelp:a(()=>{console.log(K.bold(`
@@ -11,8 +11,8 @@ Failed to copy to clipboard: ${r}`)),console.log(K.dim("You may need to check cl
11
11
  `),console.log("Description:"),console.log(" This command copies the most recent assistant response to your system clipboard."),console.log(` Useful for quickly sharing or saving AI responses.
12
12
  `),console.log("Examples:"),console.log(K.dim(" User: Explain how async/await works")),console.log(K.dim(" AI: [responds with explanation]")),console.log(K.cyan(" /copy")+K.dim(` - Copies the explanation to clipboard
13
13
  `)),console.log("Notes:"),console.log(" - Only copies assistant messages, not user messages"),console.log(" - Works with both plain text and formatted responses"),console.log(" - Requires clipboard permissions on some systems")},"detailedHelp")};import R from"chalk";function Ll(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(Ll,"resolveCwd");function Wl(e){let o=e.proposal;switch(o.destination){case"skill_patch":case"skill_create":return`${o.userLabel} ${o.destination} ${o.skillName}`;case"workflow_handoff":return`${o.userLabel} ${o.suggestedAction} ${o.evidenceRunIds.join(",")}`;case"memdir_handoff":return`${o.userLabel} ${o.memoryKind}`;case"reasoning_handoff":return`${o.userLabel} ${o.title}`}}a(Wl,"proposalLabel");function A(e=""){process.stdout.write(`${e}
14
- `)}a(A,"writeOutput");function Nl(e){for(let o of e)A(R.yellow(`[learn] ${o}`))}a(Nl,"printWarnings");function di(e){A(R.yellow(`
15
- Consumer impact:`)),A(R.dim(` action: ${e.action}`));let o=[["workflow capsules",e.workflowCapsules],["saved workflows",e.savedWorkflows],["constructed agents",e.constructedAgents],["prompt references",e.promptReferences]];for(let[n,t]of o)if(t.length!==0){A(R.dim(` ${n}:`));for(let r of t)A(R.dim(` - ${r}`))}}a(di,"printConsumerImpact");async function Ol(e){let o=Mo(e),n=await _o(o);return Nl(n.warnings),{storePath:o,store:n}}a(Ol,"readStore");function Dl(e,o){return e.find(n=>n.proposalId===o)}a(Dl,"findProposal");function Ul(e,o){let n=e.filter(t=>t.status==="pending");if(A(R.cyan(`
14
+ `)}a(A,"writeOutput");function Ol(e){for(let o of e)A(R.yellow(`[learn] ${o}`))}a(Ol,"printWarnings");function di(e){A(R.yellow(`
15
+ Consumer impact:`)),A(R.dim(` action: ${e.action}`));let o=[["workflow capsules",e.workflowCapsules],["saved workflows",e.savedWorkflows],["constructed agents",e.constructedAgents],["prompt references",e.promptReferences]];for(let[n,t]of o)if(t.length!==0){A(R.dim(` ${n}:`));for(let r of t)A(R.dim(` - ${r}`))}}a(di,"printConsumerImpact");async function Nl(e){let o=Lo(e),n=await Mo(o);return Ol(n.warnings),{storePath:o,store:n}}a(Nl,"readStore");function Dl(e,o){return e.find(n=>n.proposalId===o)}a(Dl,"findProposal");function Ul(e,o){let n=e.filter(t=>t.status==="pending");if(A(R.cyan(`
16
16
  [learn] pending learning suggestions`)),A(R.dim(` ${o}`)),n.length===0){A(R.dim(` (none)
17
17
  `));return}for(let t of n){let r=t.applyPlan?"apply-plan":"handoff";A(` ${R.cyan(t.proposalId)} ${R.dim(`[${r}]`)} ${Wl(t)}`)}A(R.dim(`
18
18
  Use /learn diff <id>, /learn approve <id>, or /learn reject <id>.
@@ -21,7 +21,7 @@ Consumer impact:`)),A(R.dim(` action: ${e.action}`));let o=[["workflow capsules
21
21
  Proposal:`),A(JSON.stringify(e.proposal,null,2)),e.proposal.destination==="workflow_handoff"&&di(e.proposal.consumerImpact),!e.applyPlan){A(R.dim(`
22
22
  No F224 apply plan is attached. Approval records the handoff only.
23
23
  `));return}A(`
24
- Apply plan:`),A(R.dim(` kind : ${e.applyPlan.kind}`)),A(R.dim(` skillRoot: ${e.applyPlan.skillRoot}`));for(let o of e.applyPlan.changes)A(R.dim(` - ${o.kind} ${o.relativePath}`)),o.kind==="write"&&A(o.content);A()}a(jl,"printDiff");async function Fl(e,o,n={}){let t=await Tr(e,o,n);switch(t.status){case"approved_already_applied":A(R.green(`
24
+ Apply plan:`),A(R.dim(` kind : ${e.applyPlan.kind}`)),A(R.dim(` skillRoot: ${e.applyPlan.skillRoot}`));for(let o of e.applyPlan.changes)A(R.dim(` - ${o.kind} ${o.relativePath}`)),o.kind==="write"&&A(o.content);A()}a(jl,"printDiff");async function Fl(e,o,n={}){let t=await Cr(e,o,n);switch(t.status){case"approved_already_applied":A(R.green(`
25
25
  [learn] approved ${o.proposalId}; files already match the apply plan.`)),A(R.dim(` recovered a pending proposal without applying it again.
26
26
  `));return;case"blocked_snapshot_conflict":A(R.red(`
27
27
  [learn] refusing to reapply ${o.proposalId}; ${t.relativePath} changed after the last snapshot.`)),A(R.dim(` snapshot: ${t.snapshotPath}`)),A(R.dim(` Review the file manually, then reject or recreate the learning proposal.
@@ -35,11 +35,11 @@ Apply plan:`),A(R.dim(` kind : ${e.applyPlan.kind}`)),A(R.dim(` skillRoot:
35
35
  [learn] approved ${o.proposalId} as a downstream handoff.`)),A(R.dim(` F224 does not mutate workflow, memory, or reasoning carriers directly.
36
36
  `));return;case"blocked_not_pending":A(R.dim(`
37
37
  [learn] ${o.proposalId} is already ${t.reviewStatus}.
38
- `));return}}a(Fl,"approveProposal");function en(){A(R.cyan(`
38
+ `));return}}a(Fl,"approveProposal");function on(){A(R.cyan(`
39
39
  /learn - Review procedural learning suggestions`)),A(R.dim(" /learn pending List pending suggestions")),A(R.dim(" /learn diff <proposalId> Preview proposal and apply plan")),A(R.dim(" /learn approve <proposalId> [--ack-impact]")),A(R.dim(" /learn reject <proposalId> [reason]")),A(R.dim(` /learn help
40
- `))}a(en,"printHelp");var mt={name:"learn",description:"Review procedural learning suggestions (FEATURE_224)",usage:"/learn [pending|diff|approve|reject|help] [proposalId]",argumentHint:"pending | diff <id> | approve <id> | reject <id> [reason] | help",handler:a(async(e,o)=>{let n=Ll(o),t=(e[0]??"pending").toLowerCase();if(t==="help"||t==="-h"||t==="--help"){en();return}let{storePath:r,store:i}=await Ol(n);if(t==="pending"||t==="list"){Ul(i.proposals,r);return}let l=e[1];if(!l){A(R.yellow(`
40
+ `))}a(on,"printHelp");var mt={name:"learn",description:"Review procedural learning suggestions (FEATURE_224)",usage:"/learn [pending|diff|approve|reject|help] [proposalId]",argumentHint:"pending | diff <id> | approve <id> | reject <id> [reason] | help",handler:a(async(e,o)=>{let n=Ll(o),t=(e[0]??"pending").toLowerCase();if(t==="help"||t==="-h"||t==="--help"){on();return}let{storePath:r,store:i}=await Nl(n);if(t==="pending"||t==="list"){Ul(i.proposals,r);return}let l=e[1];if(!l){A(R.yellow(`
41
41
  [learn] missing proposal id for ${t}.
42
- `)),en();return}let c=Dl(i.proposals,l);if(!c){A(R.yellow(`
42
+ `)),on();return}let c=Dl(i.proposals,l);if(!c){A(R.yellow(`
43
43
  [learn] proposal not found: ${l}
44
44
  `));return}if(t==="diff"){jl(c);return}if(t==="approve"){if(i.warnings.length>0){A(R.red(`
45
45
  [learn] refusing to mutate a corrupt learning store.
@@ -53,7 +53,7 @@ Apply plan:`),A(R.dim(` kind : ${e.applyPlan.kind}`)),A(R.dim(` skillRoot:
53
53
  [learn] rejected ${l}.
54
54
  `));return}A(R.yellow(`
55
55
  [learn] unknown subcommand: ${t}
56
- `)),en()},"handler"),detailedHelp:en};import*as Q from"node:fs";import*as nn from"node:path";import p from"chalk";var mi=900*1e3,Re=new Map;function ui(e){return e instanceof Error?e.message:String(e)}a(ui,"formatMemoryError");function Hl(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(Hl,"resolveCwd");function pi(e){let o;try{o=Q.readdirSync(e,{withFileTypes:!0})}catch(t){return t.code!=="ENOENT"&&console.log(p.red(`[memory] failed to read memory directory ${e}: ${ui(t)}`)),[]}let n=[];for(let t of o){if(!t.isFile()||!t.name.endsWith(".md")||t.name==="MEMORY.md")continue;let r=nn.join(e,t.name),i="",l=0;try{i=Q.readFileSync(r,"utf-8"),l=Q.statSync(r).mtimeMs}catch(m){console.log(p.red(`[memory] failed to read ${r}: ${ui(m)}`));continue}let d=Sr(i).frontmatter,u=d.name!==void 0||d.description!==void 0||d.type!==void 0,f=nn.basename(t.name,".md");n.push({filename:t.name,absPath:r,mtimeMs:l,title:d.name?.trim()||f,description:d.description?.trim()||f,type:d.type,parseOk:u})}return n}a(pi,"readTopicFiles");function Bl(e){return e.map(o=>`- [${o.title}](${o.filename}) \u2014 ${o.description}`)}a(Bl,"buildIndexLines");async function Gl(e,o){console.log(p.cyan(`
56
+ `)),on()},"handler"),detailedHelp:on};import*as Q from"node:fs";import*as tn from"node:path";import p from"chalk";var mi=900*1e3,Re=new Map;function ui(e){return e instanceof Error?e.message:String(e)}a(ui,"formatMemoryError");function Hl(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(Hl,"resolveCwd");function pi(e){let o;try{o=Q.readdirSync(e,{withFileTypes:!0})}catch(t){return t.code!=="ENOENT"&&console.log(p.red(`[memory] failed to read memory directory ${e}: ${ui(t)}`)),[]}let n=[];for(let t of o){if(!t.isFile()||!t.name.endsWith(".md")||t.name==="MEMORY.md")continue;let r=tn.join(e,t.name),i="",l=0;try{i=Q.readFileSync(r,"utf-8"),l=Q.statSync(r).mtimeMs}catch(m){console.log(p.red(`[memory] failed to read ${r}: ${ui(m)}`));continue}let d=Sr(i).frontmatter,u=d.name!==void 0||d.description!==void 0||d.type!==void 0,f=tn.basename(t.name,".md");n.push({filename:t.name,absPath:r,mtimeMs:l,title:d.name?.trim()||f,description:d.description?.trim()||f,type:d.type,parseOk:u})}return n}a(pi,"readTopicFiles");function Bl(e){return e.map(o=>`- [${o.title}](${o.filename}) \u2014 ${o.description}`)}a(Bl,"buildIndexLines");async function Gl(e,o){console.log(p.cyan(`
57
57
  [memory] per-project memory directory`)),console.log(p.dim(` ${e}`));let n=pi(e),t=n.filter(l=>!l.parseOk);console.log(p.dim(` ${n.length} topic file${n.length===1?"":"s"}`+(t.length>0?`, ${t.length} without parsable frontmatter`:"")));let r=!1,i="";try{i=Q.readFileSync(o,"utf-8"),r=!0}catch{r=!1}if(!r){console.log(p.yellow(`
58
58
  MEMORY.md does not exist yet.`)),n.length>0?console.log(p.dim(" Run `/memory rebuild` to seed it from existing topic files.")):console.log(p.dim(" The LLM will create it on first save \u2014 no action needed.")),console.log();return}console.log(p.cyan(`
59
59
  --- MEMORY.md ---`)),i.trim().length===0?console.log(p.dim(" (empty)")):console.log(i.trimEnd()),console.log(p.cyan(`--- end ---
@@ -90,7 +90,7 @@ Apply plan:`),A(R.dim(` kind : ${e.applyPlan.kind}`)),A(R.dim(` skillRoot:
90
90
  owns reads/writes; this command is your escape hatch when the
91
91
  MEMORY.md index drifts from the topic files on disk.
92
92
  `)),console.log("Notes:"),console.log(p.dim(" \u2022 Rebuild ONLY rewrites MEMORY.md. Topic files are never touched.")),console.log(p.dim(" \u2022 Rebuild sorts entries by file mtime descending \u2014 the same")),console.log(p.dim(" natural-LRU order the LLM produces by prepending new entries.")),console.log(p.dim(" \u2022 Files missing or with malformed frontmatter still appear in")),console.log(p.dim(" the rebuilt index using their filename as fallback; the command")),console.log(p.dim(` prints a warning so you can fix the frontmatter.
93
- `))}a(Ql,"printDetailedHelp");var pt={name:"memory",description:"Inspect, govern, or rebuild per-project memory",usage:"/memory [list|pending|show|approve|reject|curate|rebuild|open|help]",argumentHint:"list | pending | show <id> | approve <id> | reject <id> [reason] | curate | rebuild | open | help",handler:a(async(e,o,n)=>{let t=Hl(o),r=vr(t),i=$r(t),l=(e[0]??"list").toLowerCase(),c=n.createKodaXOptions?.().memoryReviewer,d=Cr({cwd:t,...c!==void 0?{memoryReviewer:c}:{}});if(l==="help"||l==="--help"||l==="-h"){fi();return}if(l==="list"){await Gl(r,i);return}if(l==="pending"||l==="inbox"){Xl(await d.listInbox());return}if(l==="show"){let u=e[1];if(u===void 0){console.log(p.yellow(`
93
+ `))}a(Ql,"printDetailedHelp");var pt={name:"memory",description:"Inspect, govern, or rebuild per-project memory",usage:"/memory [list|pending|show|approve|reject|curate|rebuild|open|help]",argumentHint:"list | pending | show <id> | approve <id> | reject <id> [reason] | curate | rebuild | open | help",handler:a(async(e,o,n)=>{let t=Hl(o),r=vr(t),i=$r(t),l=(e[0]??"list").toLowerCase(),c=n.createKodaXOptions?.().memoryReviewer,d=Tr({cwd:t,...c!==void 0?{memoryReviewer:c}:{}});if(l==="help"||l==="--help"||l==="-h"){fi();return}if(l==="list"){await Gl(r,i);return}if(l==="pending"||l==="inbox"){Xl(await d.listInbox());return}if(l==="show"){let u=e[1];if(u===void 0){console.log(p.yellow(`
94
94
  [memory] missing proposal id for show.
95
95
  `));return}let f=await d.showProposal(u);if(f===void 0){console.log(p.yellow(`
96
96
  [memory] proposal not found: ${u}
@@ -98,32 +98,32 @@ Apply plan:`),A(R.dim(` kind : ${e.applyPlan.kind}`)),A(R.dim(` skillRoot:
98
98
  [memory] missing proposal id for approve.
99
99
  `));return}let f=oc(t,u);if(f===void 0){console.log(p.yellow(`
100
100
  [memory] preview required before approve: /memory show ${u}
101
- `));return}let m=await d.approveProposal(u,f);Re.delete(on(t,u)),Yl(m);return}if(l==="reject"){let u=e[1];if(u===void 0){console.log(p.yellow(`
101
+ `));return}let m=await d.approveProposal(u,f);Re.delete(nn(t,u)),Yl(m);return}if(l==="reject"){let u=e[1];if(u===void 0){console.log(p.yellow(`
102
102
  [memory] missing proposal id for reject.
103
- `));return}let f=await d.rejectProposal(u,e.slice(2).join(" ").trim());Re.delete(on(t,u)),Jl(f);return}if(l==="curate"){Zl(await d.runCurator());return}if(l==="rebuild"){await ql(r,i);return}if(l==="open"){Kl(r,i);return}console.log(p.yellow(`
104
- [memory] unknown subcommand: ${l}`)),fi()},"handler"),detailedHelp:Ql};function on(e,o){return`${e}\0${o}`}a(on,"previewCacheKey");function ec(e,o,n){nc(Date.now()),Re.set(on(e,o),{fingerprints:n,createdAtMs:Date.now()})}a(ec,"cachePreviewFingerprints");function oc(e,o){let n=on(e,o),t=Re.get(n);if(t!==void 0){if(Date.now()-t.createdAtMs>mi){Re.delete(n);return}return t.fingerprints}}a(oc,"readCachedPreviewFingerprints");function nc(e){for(let[o,n]of Re)e-n.createdAtMs>mi&&Re.delete(o)}a(nc,"pruneExpiredPreviewFingerprints");import C from"chalk";function gi(){console.log(`
105
- ${C.bold("/goal")} \u2014 persistent session goal
103
+ `));return}let f=await d.rejectProposal(u,e.slice(2).join(" ").trim());Re.delete(nn(t,u)),Jl(f);return}if(l==="curate"){Zl(await d.runCurator());return}if(l==="rebuild"){await ql(r,i);return}if(l==="open"){Kl(r,i);return}console.log(p.yellow(`
104
+ [memory] unknown subcommand: ${l}`)),fi()},"handler"),detailedHelp:Ql};function nn(e,o){return`${e}\0${o}`}a(nn,"previewCacheKey");function ec(e,o,n){nc(Date.now()),Re.set(nn(e,o),{fingerprints:n,createdAtMs:Date.now()})}a(ec,"cachePreviewFingerprints");function oc(e,o){let n=nn(e,o),t=Re.get(n);if(t!==void 0){if(Date.now()-t.createdAtMs>mi){Re.delete(n);return}return t.fingerprints}}a(oc,"readCachedPreviewFingerprints");function nc(e){for(let[o,n]of Re)e-n.createdAtMs>mi&&Re.delete(o)}a(nc,"pruneExpiredPreviewFingerprints");import T from"chalk";function gi(){console.log(`
105
+ ${T.bold("/goal")} \u2014 persistent session goal
106
106
 
107
- ${C.bold("Subcommands:")}
108
- ${C.cyan("/goal <objective> [--tokens N]")} Create a new persistent goal.
109
- ${C.cyan("/goal status")} Show current goal (default).
110
- ${C.cyan("/goal pause")} Pause an active goal.
111
- ${C.cyan("/goal resume")} Resume a paused goal.
112
- ${C.cyan("/goal clear")} Clear the current goal.
113
- ${C.cyan("/goal help")} Show this help.
107
+ ${T.bold("Subcommands:")}
108
+ ${T.cyan("/goal <objective> [--tokens N]")} Create a new persistent goal.
109
+ ${T.cyan("/goal status")} Show current goal (default).
110
+ ${T.cyan("/goal pause")} Pause an active goal.
111
+ ${T.cyan("/goal resume")} Resume a paused goal.
112
+ ${T.cyan("/goal clear")} Clear the current goal.
113
+ ${T.cyan("/goal help")} Show this help.
114
114
 
115
- ${C.bold("Notes:")}
115
+ ${T.bold("Notes:")}
116
116
  - The agent auto-continues toward an active goal on every Worker turn end.
117
117
  - Token budget is optional; set it only when you want a hard ceiling.
118
118
  - update_goal({complete}) is verifier-gated; the agent cannot
119
119
  self-declare done without runtime confirmation.
120
- `.trim())}a(gi,"printHelp");function tc(e){let o=null,n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i==="--tokens"){let l=e[r+1];if(!l)return{error:"--tokens requires a value (e.g. `--tokens 50000`)"};let c=Number(l);if(!Hn(c))return{error:"--tokens value must be a positive integer"};o=c,r++;continue}if(i.startsWith("--tokens=")){let l=i.slice(9),c=Number(l);if(!Hn(c))return{error:"--tokens value must be a positive integer"};o=c;continue}if(i.startsWith("--"))return{error:`unknown flag: ${i}`};n.push(i)}let t=n.join(" ").trim();return t?{objective:t,tokenBudget:o}:{error:"objective is required"}}a(tc,"parseCreateArgs");function rc(e){if(!e)return C.dim("No goal set. Use `/goal <objective>` to create one.");let o=[`${C.bold("Goal:")} ${e.objective}`,`${C.bold("Status:")} ${e.status}`,`${C.bold("Tokens used:")} ${e.tokensUsed}`];if(e.tokenBudget!==null){let n=Math.max(0,e.tokenBudget-e.tokensUsed);o.push(`${C.bold("Token budget:")} ${e.tokenBudget} (remaining ${n})`)}else o.push(`${C.bold("Token budget:")} ${C.dim("none")}`);return o.push(`${C.bold("Elapsed:")} ${e.timeUsedSeconds}s`),e.status==="blocked"&&e.lastBlockerKind&&o.push(`${C.bold("Blocker:")} ${e.lastBlockerKind}`),o.join(`
121
- `)}a(rc,"renderStatus");async function ho(e,o,n,t){if(!e.lineage)throw new Error("session lineage unavailable \u2014 open or start a new session before using /goal");e.lineage=Ir(e.lineage,n,t),await o.saveSession()}a(ho,"persist");async function sc(e,o,n){if(!o.lineage){console.log(C.red("[/goal] no active session lineage"));return}let t=Ue(o.lineage);if(t&&t.status!=="complete"){console.log(C.yellow(`[/goal] a goal is already active (status: ${t.status}). Clear it first with \`/goal clear\` before creating a new one.`));return}let r=tc(e);if("error"in r){console.log(C.red(`[/goal] ${r.error}`));return}try{t&&t.status==="complete"&&await ho(o,n,null,"cleared");let i=Gr(r.objective,r.tokenBudget);await ho(o,n,i,"created"),console.log(C.green(`[/goal] created: "${i.objective}"`)),i.tokenBudget!==null&&console.log(C.dim(` budget: ${i.tokenBudget} tokens`))}catch(i){let l=i instanceof Error?i.message:String(i);console.log(C.red(`[/goal] ${l}`))}}a(sc,"doCreate");async function ic(e){if(!e.lineage){console.log(C.red("[/goal] no active session lineage"));return}let o=Ue(e.lineage);console.log(rc(o))}a(ic,"doStatus");async function ac(e,o){if(!e.lineage){console.log(C.red("[/goal] no active session lineage"));return}let n=Ue(e.lineage);if(!n){console.log(C.yellow("[/goal] no goal to pause"));return}if(n.status!=="active"){console.log(C.yellow(`[/goal] cannot pause from status '${n.status}' (only 'active' is pausable)`));return}let t=qr(n);await ho(e,o,t,"paused"),console.log(C.green("[/goal] paused"))}a(ac,"doPause");async function lc(e,o){if(!e.lineage){console.log(C.red("[/goal] no active session lineage"));return}let n=Ue(e.lineage);if(!n){console.log(C.yellow("[/goal] no goal to resume"));return}if(n.status!=="paused"){console.log(C.yellow(`[/goal] cannot resume from status '${n.status}' (only 'paused' is resumable)`));return}let t=Kr(n);await ho(e,o,t,"resumed"),console.log(C.green("[/goal] resumed"))}a(lc,"doResume");async function cc(e,o){if(!e.lineage){console.log(C.red("[/goal] no active session lineage"));return}if(!Ue(e.lineage)){console.log(C.yellow("[/goal] no goal to clear"));return}await ho(e,o,null,"cleared"),console.log(C.green("[/goal] cleared"))}a(cc,"doClear");var wi={name:"goal",description:"Manage a persistent session goal (FEATURE_192)",usage:"/goal [<objective> [--tokens N] | status | pause | resume | clear | help]",argumentHint:"<objective> | status | pause | resume | clear | help",handler:a(async(e,o,n)=>{let t=(e[0]??"status").toLowerCase();if(t==="help"||t==="--help"||t==="-h"){gi();return}if(t==="status"){await ic(o);return}if(t==="pause"){await ac(o,n);return}if(t==="resume"){await lc(o,n);return}if(t==="clear"){await cc(o,n);return}await sc(e,o,n)},"handler"),detailedHelp:gi};import{existsSync as ji}from"node:fs";import{join as oe}from"node:path";import w from"chalk";import ht from"path";import{createHash as gc}from"crypto";import{execFile as dc}from"child_process";import uc from"fs";import gt from"path";import{promisify as fc}from"util";var mc=fc(dc);function ge(e){if(!(!e||!e.trim()))return gt.resolve(e).replace(/\\/g,"/")}a(ge,"normalizePath");async function yo(e,o){try{let{stdout:n}=await mc("git",o,{cwd:e,windowsHide:!0,maxBuffer:1048576}),t=n.trim();return t||void 0}catch{return}}a(yo,"gitStdout");function pc(e){let o=ge(e);if(o)return gt.posix.basename(o)===".git"?gt.posix.dirname(o):o}a(pc,"deriveCanonicalRepoRoot");async function fp(e={}){let o=ge(e.cwd??process.cwd())??process.cwd().replace(/\\/g,"/"),n=ge(await yo(o,["rev-parse","--show-toplevel"])),t=await yo(n??o,["rev-parse","--path-format=absolute","--git-common-dir"])??await yo(n??o,["rev-parse","--git-common-dir"]),r=await yo(n??o,["branch","--show-current"])??await yo(n??o,["rev-parse","--abbrev-ref","HEAD"]);return{canonicalRepoRoot:pc(t)??n,workspaceRoot:n,executionCwd:o,branch:r&&r!=="HEAD"?r:void 0,workspaceKind:e.workspaceKind??"detected"}}a(fp,"inspectWorkspaceRuntime");function mp(e,o){return!e?.canonicalRepoRoot||!o?.canonicalRepoRoot?!1:ge(e.canonicalRepoRoot)===ge(o.canonicalRepoRoot)}a(mp,"isSameCanonicalRepo");function pp(e){return!!(e?.workspaceRoot&&uc.existsSync(e.workspaceRoot))}a(pp,"workspaceExists");function hi(e){let o=ge(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=ge(e.runtimeInfo?.executionCwd??o),t=ge(e.runtimeInfo?.canonicalRepoRoot??o);if(!(!o&&!n&&!t))return{canonicalRepoRoot:t,workspaceRoot:o,executionCwd:n,branch:e.runtimeInfo?.branch,workspaceKind:e.runtimeInfo?.workspaceKind??"detected"}}a(hi,"resolveSessionRuntimeInfo");function wt(e){if(!e?.workspaceRoot)return"No git workspace detected";let o=e.branch?` @ ${e.branch}`:"",n=e.workspaceKind??"detected";return`${e.workspaceRoot}${o} [${n}]`}a(wt,"formatWorkspaceTruth");var yi="_unknown",ki=80;function wc(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}a(wc,"caseFold");function hc(e){return wc(ht.resolve(e).replace(/\\/g,"/"))}a(hc,"normalizeRoot");function vi(e){return gc("sha256").update(e).digest("hex").slice(0,10)}a(vi,"shortHash");function yc(e){let o=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return o.length>ki?o.slice(o.length-ki):o}a(yc,"slugify");function Ee(e){if(!e||!e.trim())return{key:yi,canonicalRoot:null,displayName:yi};let o=hc(e),n=yc(o),t=n?`${n}-${vi(o)}`:vi(o),r=ht.basename(ht.resolve(e).replace(/\\/g,"/"))||e;return{key:t,canonicalRoot:o,displayName:r}}a(Ee,"deriveProjectKeyFromRoot");function vp(e){let o=hi({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=o?.canonicalRepoRoot??o?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return Ee(n)}a(vp,"deriveProjectKeyFromData");import Ce from"chalk";function tn(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(tn,"resolveLearningCommandCwd");function Ke(e=""){process.stdout.write(`${e}
122
- `)}a(Ke,"writeOutput");function kc(e,o){return o==="skill"?e.proposal.destination==="skill_patch"||e.proposal.destination==="skill_create":o==="workflow"?e.proposal.destination==="workflow_handoff":e.proposal.destination==="memdir_handoff"||e.proposal.destination==="reasoning_handoff"}a(kc,"matchesFilter");function vc(e){return e==="skill"?"pending method guides":e==="workflow"?"pending runnable workflows":"pending memory handoffs"}a(vc,"headingForFilter");function $c(e){let o=e.proposal;switch(o.destination){case"skill_patch":case"skill_create":return`${o.destination} ${o.skillName}`;case"workflow_handoff":return`${o.suggestedAction} ${o.evidenceRunIds.join(",")}`;case"memdir_handoff":return`${o.memoryKind}`;case"reasoning_handoff":return o.title}}a($c,"proposalLabel");async function rn(e,o){let n=Mo(e),t=await _o(n);for(let i of t.warnings)Ke(Ce.yellow(`[learn] ${i}`));let r=t.proposals.filter(i=>i.status==="pending").filter(i=>kc(i,o));if(Ke(Ce.cyan(`
123
- [learn] ${vc(o)}`)),Ke(Ce.dim(` ${n}`)),r.length===0){Ke(Ce.dim(` (none)
124
- `));return}for(let i of r)Ke(` ${Ce.cyan(i.proposalId)} ${Ce.dim(`[${i.proposal.destination}]`)} ${$c(i)}`);Ke(Ce.dim(`
120
+ `.trim())}a(gi,"printHelp");function tc(e){let o=null,n=[];for(let r=0;r<e.length;r++){let i=e[r];if(i==="--tokens"){let l=e[r+1];if(!l)return{error:"--tokens requires a value (e.g. `--tokens 50000`)"};let c=Number(l);if(!Hn(c))return{error:"--tokens value must be a positive integer"};o=c,r++;continue}if(i.startsWith("--tokens=")){let l=i.slice(9),c=Number(l);if(!Hn(c))return{error:"--tokens value must be a positive integer"};o=c;continue}if(i.startsWith("--"))return{error:`unknown flag: ${i}`};n.push(i)}let t=n.join(" ").trim();return t?{objective:t,tokenBudget:o}:{error:"objective is required"}}a(tc,"parseCreateArgs");function rc(e){if(!e)return T.dim("No goal set. Use `/goal <objective>` to create one.");let o=[`${T.bold("Goal:")} ${e.objective}`,`${T.bold("Status:")} ${e.status}`,`${T.bold("Tokens used:")} ${e.tokensUsed}`];if(e.tokenBudget!==null){let n=Math.max(0,e.tokenBudget-e.tokensUsed);o.push(`${T.bold("Token budget:")} ${e.tokenBudget} (remaining ${n})`)}else o.push(`${T.bold("Token budget:")} ${T.dim("none")}`);return o.push(`${T.bold("Elapsed:")} ${e.timeUsedSeconds}s`),e.status==="blocked"&&e.lastBlockerKind&&o.push(`${T.bold("Blocker:")} ${e.lastBlockerKind}`),o.join(`
121
+ `)}a(rc,"renderStatus");async function ho(e,o,n,t){if(!e.lineage)throw new Error("session lineage unavailable \u2014 open or start a new session before using /goal");e.lineage=Ir(e.lineage,n,t),await o.saveSession()}a(ho,"persist");async function sc(e,o,n){if(!o.lineage){console.log(T.red("[/goal] no active session lineage"));return}let t=Ue(o.lineage);if(t&&t.status!=="complete"){console.log(T.yellow(`[/goal] a goal is already active (status: ${t.status}). Clear it first with \`/goal clear\` before creating a new one.`));return}let r=tc(e);if("error"in r){console.log(T.red(`[/goal] ${r.error}`));return}try{t&&t.status==="complete"&&await ho(o,n,null,"cleared");let i=Gr(r.objective,r.tokenBudget);await ho(o,n,i,"created"),console.log(T.green(`[/goal] created: "${i.objective}"`)),i.tokenBudget!==null&&console.log(T.dim(` budget: ${i.tokenBudget} tokens`))}catch(i){let l=i instanceof Error?i.message:String(i);console.log(T.red(`[/goal] ${l}`))}}a(sc,"doCreate");async function ic(e){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let o=Ue(e.lineage);console.log(rc(o))}a(ic,"doStatus");async function ac(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let n=Ue(e.lineage);if(!n){console.log(T.yellow("[/goal] no goal to pause"));return}if(n.status!=="active"){console.log(T.yellow(`[/goal] cannot pause from status '${n.status}' (only 'active' is pausable)`));return}let t=qr(n);await ho(e,o,t,"paused"),console.log(T.green("[/goal] paused"))}a(ac,"doPause");async function lc(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let n=Ue(e.lineage);if(!n){console.log(T.yellow("[/goal] no goal to resume"));return}if(n.status!=="paused"){console.log(T.yellow(`[/goal] cannot resume from status '${n.status}' (only 'paused' is resumable)`));return}let t=Kr(n);await ho(e,o,t,"resumed"),console.log(T.green("[/goal] resumed"))}a(lc,"doResume");async function cc(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}if(!Ue(e.lineage)){console.log(T.yellow("[/goal] no goal to clear"));return}await ho(e,o,null,"cleared"),console.log(T.green("[/goal] cleared"))}a(cc,"doClear");var wi={name:"goal",description:"Manage a persistent session goal (FEATURE_192)",usage:"/goal [<objective> [--tokens N] | status | pause | resume | clear | help]",argumentHint:"<objective> | status | pause | resume | clear | help",handler:a(async(e,o,n)=>{let t=(e[0]??"status").toLowerCase();if(t==="help"||t==="--help"||t==="-h"){gi();return}if(t==="status"){await ic(o);return}if(t==="pause"){await ac(o,n);return}if(t==="resume"){await lc(o,n);return}if(t==="clear"){await cc(o,n);return}await sc(e,o,n)},"handler"),detailedHelp:gi};import{existsSync as ji}from"node:fs";import{join as oe}from"node:path";import w from"chalk";import ht from"path";import{createHash as gc}from"crypto";import{execFile as dc}from"child_process";import uc from"fs";import gt from"path";import{promisify as fc}from"util";var mc=fc(dc);function ge(e){if(!(!e||!e.trim()))return gt.resolve(e).replace(/\\/g,"/")}a(ge,"normalizePath");async function yo(e,o){try{let{stdout:n}=await mc("git",o,{cwd:e,windowsHide:!0,maxBuffer:1048576}),t=n.trim();return t||void 0}catch{return}}a(yo,"gitStdout");function pc(e){let o=ge(e);if(o)return gt.posix.basename(o)===".git"?gt.posix.dirname(o):o}a(pc,"deriveCanonicalRepoRoot");async function fp(e={}){let o=ge(e.cwd??process.cwd())??process.cwd().replace(/\\/g,"/"),n=ge(await yo(o,["rev-parse","--show-toplevel"])),t=await yo(n??o,["rev-parse","--path-format=absolute","--git-common-dir"])??await yo(n??o,["rev-parse","--git-common-dir"]),r=await yo(n??o,["branch","--show-current"])??await yo(n??o,["rev-parse","--abbrev-ref","HEAD"]);return{canonicalRepoRoot:pc(t)??n,workspaceRoot:n,executionCwd:o,branch:r&&r!=="HEAD"?r:void 0,workspaceKind:e.workspaceKind??"detected"}}a(fp,"inspectWorkspaceRuntime");function mp(e,o){return!e?.canonicalRepoRoot||!o?.canonicalRepoRoot?!1:ge(e.canonicalRepoRoot)===ge(o.canonicalRepoRoot)}a(mp,"isSameCanonicalRepo");function pp(e){return!!(e?.workspaceRoot&&uc.existsSync(e.workspaceRoot))}a(pp,"workspaceExists");function hi(e){let o=ge(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=ge(e.runtimeInfo?.executionCwd??o),t=ge(e.runtimeInfo?.canonicalRepoRoot??o);if(!(!o&&!n&&!t))return{canonicalRepoRoot:t,workspaceRoot:o,executionCwd:n,branch:e.runtimeInfo?.branch,workspaceKind:e.runtimeInfo?.workspaceKind??"detected"}}a(hi,"resolveSessionRuntimeInfo");function wt(e){if(!e?.workspaceRoot)return"No git workspace detected";let o=e.branch?` @ ${e.branch}`:"",n=e.workspaceKind??"detected";return`${e.workspaceRoot}${o} [${n}]`}a(wt,"formatWorkspaceTruth");var yi="_unknown",ki=80;function wc(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}a(wc,"caseFold");function hc(e){return wc(ht.resolve(e).replace(/\\/g,"/"))}a(hc,"normalizeRoot");function vi(e){return gc("sha256").update(e).digest("hex").slice(0,10)}a(vi,"shortHash");function yc(e){let o=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return o.length>ki?o.slice(o.length-ki):o}a(yc,"slugify");function Ee(e){if(!e||!e.trim())return{key:yi,canonicalRoot:null,displayName:yi};let o=hc(e),n=yc(o),t=n?`${n}-${vi(o)}`:vi(o),r=ht.basename(ht.resolve(e).replace(/\\/g,"/"))||e;return{key:t,canonicalRoot:o,displayName:r}}a(Ee,"deriveProjectKeyFromRoot");function vp(e){let o=hi({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=o?.canonicalRepoRoot??o?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return Ee(n)}a(vp,"deriveProjectKeyFromData");import Te from"chalk";function rn(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(rn,"resolveLearningCommandCwd");function Ke(e=""){process.stdout.write(`${e}
122
+ `)}a(Ke,"writeOutput");function kc(e,o){return o==="skill"?e.proposal.destination==="skill_patch"||e.proposal.destination==="skill_create":o==="workflow"?e.proposal.destination==="workflow_handoff":e.proposal.destination==="memdir_handoff"||e.proposal.destination==="reasoning_handoff"}a(kc,"matchesFilter");function vc(e){return e==="skill"?"pending method guides":e==="workflow"?"pending runnable workflows":"pending memory handoffs"}a(vc,"headingForFilter");function $c(e){let o=e.proposal;switch(o.destination){case"skill_patch":case"skill_create":return`${o.destination} ${o.skillName}`;case"workflow_handoff":return`${o.suggestedAction} ${o.evidenceRunIds.join(",")}`;case"memdir_handoff":return`${o.memoryKind}`;case"reasoning_handoff":return o.title}}a($c,"proposalLabel");async function sn(e,o){let n=Lo(e),t=await Mo(n);for(let i of t.warnings)Ke(Te.yellow(`[learn] ${i}`));let r=t.proposals.filter(i=>i.status==="pending").filter(i=>kc(i,o));if(Ke(Te.cyan(`
123
+ [learn] ${vc(o)}`)),Ke(Te.dim(` ${n}`)),r.length===0){Ke(Te.dim(` (none)
124
+ `));return}for(let i of r)Ke(` ${Te.cyan(i.proposalId)} ${Te.dim(`[${i.proposal.destination}]`)} ${$c(i)}`);Ke(Te.dim(`
125
125
  Use /learn diff <id>, /learn approve <id>, or /learn reject <id>.
126
- `))}a(rn,"printLearningPendingForFilter");import{join as ad}from"node:path";import hn from"chalk";import{existsSync as ie,readdirSync as Lc,readFileSync as cn,writeFileSync as Lp}from"node:fs";import{dirname as Wc,join as ee}from"node:path";import E from"chalk";import{existsSync as Sc,readFileSync as bc}from"node:fs";var $i=4,Si=180,bi=6e3,xi=360,yt="[truncated]";function Te(e){return/[\u3400-\u9fff]/u.test(e)?"zh":"en"}a(Te,"detectWorkflowLocale");function ko(...e){return Te(e.filter(o=>typeof o=="string").join(`
126
+ `))}a(sn,"printLearningPendingForFilter");import{join as ad}from"node:path";import yn from"chalk";import{existsSync as ie,readdirSync as Lc,readFileSync as dn,writeFileSync as Lp}from"node:fs";import{dirname as Wc,join as ee}from"node:path";import E from"chalk";import{existsSync as Sc,readFileSync as bc}from"node:fs";var $i=4,Si=180,bi=6e3,xi=360,yt="[truncated]";function Ce(e){return/[\u3400-\u9fff]/u.test(e)?"zh":"en"}a(Ce,"detectWorkflowLocale");function ko(...e){return Ce(e.filter(o=>typeof o=="string").join(`
127
127
  `))}a(ko,"inferWorkflowLocaleFromParts");function we(e,o={}){let n=e.trim();return o.full===!0||n.length<=bi?n:`${n.slice(0,bi).trimEnd()}
128
128
 
129
129
  ${yt}`}a(we,"trimResultPreview");function kt(e){return e.includes(yt)}a(kt,"isWorkflowResultPreviewTruncated");function xc(e,o){return o==="zh"?`[\u7ED3\u679C\u9884\u89C8\u5DF2\u622A\u65AD\u3002\u5B8C\u6574\u7ED3\u679C\u8BF7\u7528 /workflow show --full ${e} \u67E5\u770B\uFF1Bartifact \u6587\u4EF6\u4E5F\u4FDD\u5B58\u5728\u672C\u6B21 run \u76EE\u5F55\u3002]`:`[Result preview truncated. Use /workflow show --full ${e} for the complete result; artifacts are also saved in the run directory.]`}a(xc,"formatWorkflowResultTruncationHint");function ze(e,o,n){let t=e.lastIndexOf(yt);return t<0?e:`${e.slice(0,t).trimEnd()}
@@ -142,59 +142,59 @@ ${t}
142
142
  ${o}`}return[n,"","The workflow ended, but the generated script violated the result contract: it did not return displayable final text or a previewable artifact. This is not a normal completion state; fix the generated script and rerun it."].join(`
143
143
  `)}a(vt,"formatWorkflowCompletionAnswer");function $t(e){let o=e.summary.phases.length>0?e.summary.phases.join(" -> "):"dynamic",n=e.summary.maxAgents===null?"unbounded":String(e.summary.maxAgents),t=e.summary.plannedAgents===void 0?e.locale==="zh"?`\u6700\u591A ${n} \u4E2A\u667A\u80FD\u4F53`:`up to ${n} agents`:e.locale==="zh"?`\u8BA1\u5212\u7EA6 ${e.summary.plannedAgents} \u4E2A\u667A\u80FD\u4F53\uFF0C\u5B89\u5168\u4E0A\u9650 ${n}`:`about ${e.summary.plannedAgents} planned agents, safety cap ${n}`,r=e.summary.maxConcurrency===null?"unbounded":String(e.summary.maxConcurrency),i=Ac(e.approvalSummary);if(e.locale==="zh"){let c=e.summary.writesFiles?"\u5982\u9700\u5199\u6587\u4EF6\uFF0C\u4ECD\u4F1A\u7ECF\u8FC7\u6B63\u5E38\u6743\u9650\u786E\u8BA4\u3002":"\u8FD9\u662F\u53EA\u8BFB\u63A2\u67E5\uFF0C\u4E0D\u4F1A\u4E3B\u52A8\u4FEE\u6539\u6587\u4EF6\u3002";return[`\u6211\u4F1A\u7528 workflow \u505A\u8FD9\u6B21\u4EFB\u52A1\uFF0C\u5DF2\u542F\u52A8 ${e.summary.name}\uFF08${e.runId}\uFF09\u3002`,`\u8BA1\u5212\uFF1A${i}`,`\u9636\u6BB5\uFF1A${o}\uFF1B\u89C4\u6A21\uFF1A${t}\uFF0C\u5E76\u53D1 ${r}\u3002${c}`,"\u8FD0\u884C\u8FC7\u7A0B\u4F1A\u5728\u4E0B\u65B9\u52A8\u6001\u66F4\u65B0\uFF0C\u5B8C\u6210\u540E\u6211\u4F1A\u76F4\u63A5\u6C47\u603B\u7ED3\u8BBA\u3002"].join(`
144
144
  `)}let l=e.summary.writesFiles?"File-writing work still goes through normal permission gates.":"This is read-only and will not modify files.";return[`I will use a workflow for this task: ${e.summary.name} (${e.runId}).`,`Plan: ${i}`,`Phases: ${o}; scale: ${t}, ${r} concurrent. ${l}`,"Progress will update below, and I will summarize the result when it finishes."].join(`
145
- `)}a($t,"formatWorkflowLaunchAnswer");function X(e,o){let n=e.data?.[o];return typeof n=="string"&&n.trim().length>0?n.trim():void 0}a(X,"readEventString");function St(e,o="en",n){if(e.type!=="agent_completed"&&e.type!=="agent_unverified"&&e.type!=="agent_failed"&&e.type!=="agent_summary_updated"||e.type==="agent_completed"&&X(e,"status")!=="completed")return;let t=X(e,"summary")??X(e,"error");if(!t)return;let r=X(e,"summaryKind");if(r==="pending")return;let i=r==="digest"?"digest":r==="digest-failed"?"digest-failed":"excerpt",l=X(e,"name")??X(e,"taskId")??"agent";return Mc(l,t,o,n,i)}a(St,"formatWorkflowAgentDigest");function Ec(e){let o=e.replace(/\s+/g," ").trim();return o.length<=Si?o:`${o.slice(0,Si).trimEnd()}...`}a(Ec,"trimWorkflowAgentDigestExcerpt");function Cc(e){return/^(?:conclusion|finding|confirmed issue|issue|evidence|risk|next|unresolved|decision|result|summary|结论|发现|问题|证据|风险|下一步|未决|判断|决定|结果|摘要)[::]/i.test(e)||/^(?:[A-Z]{1,3}-?\d+|[HMSLP]\d+)[.)::\s-]/i.test(e)?!0:/(?:critical|high|medium|low)\s+severity|(?:严重|高危|中危|低危)/i.test(e)}a(Cc,"isHighSignalWorkflowAgentDigestLine");function Tc(e){let o=e.toLowerCase();return!!(/\[\/?workflow handoff\]/i.test(e)||/^\|.*\|$/.test(e)||/^\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?$/.test(e)||/^(?:i now have|i have|i now understand|here is|let me|i will|this report|the report)\b/.test(o)||/^(?:scope|review scope|范围|审查范围)[::]/i.test(e)||/^feature[_\s-]*\d+.*(?:report|review|audit|map|审查|报告|地图|变更地图)/i.test(e)||/^feature[_\s-]*\d+.*改动分布.*feature/i.test(e)||/(?:review report|audit|审查报告|综合报告|分析报告|变更地图)$/i.test(e)&&e.length<140)}a(Tc,"isLowInformationWorkflowAgentDigestLine");function Ic(e){return e.replace(/\s+/g," ").trim()}a(Ic,"compactWorkflowAgentDigestLine");function Pc(e,o={}){let n=e.replace(/^#{1,6}\s+/,"").replace(/^[-*]\s+/,"").replace(/^\d+[.)]\s+/,"").replace(/^`{3,}.*$/,"").replace(/^[`"'“”‘’)\]},,、。;;::.\s]+/,"").trim(),t=Ic(n);if(!(t.length<12)&&!/^[-*_`#\s]+$/.test(t)&&!Tc(t))return o.truncateLines===!1?t:Ec(t)}a(Pc,"normalizeWorkflowAgentDigestLine");function _c(e,o={}){let n=[],t=[];for(let r of e.split(/\r?\n+/)){let i=Pc(r,o);if(!i)continue;let l=Cc(i)?n:t;n.includes(i)||t.includes(i)||l.push(i)}return n.length>0?n.slice(0,$i):t.length>0?t.slice(0,$i):[]}a(_c,"extractWorkflowAgentDigestExcerpts");function Mc(e,o,n,t,r="excerpt"){let i=r==="digest",c=_c(o,{truncateLines:!i}).map(f=>`- ${f}`),d=t?n==="zh"?`\u8FD9\u662F\u5B50 Agent \u7684\u6709\u754C\u6458\u8981\uFF1B/workflow show ${t} \u53EF\u67E5\u770B\u8FD0\u884C\u4E8B\u4EF6\u65F6\u95F4\u7EBF\u3002`:`This is a child-agent digest; use /workflow show ${t} for the event timeline.`:n==="zh"?"\u8FD9\u662F\u5B50 Agent \u7684\u6709\u754C\u6458\u8981\uFF1B/workflow show \u53EF\u67E5\u770B\u8FD0\u884C\u4E8B\u4EF6\u65F6\u95F4\u7EBF\u3002":"This is a child-agent digest; use /workflow show for the event timeline.",u=n==="zh"?i?`\u5B50 Agent ${e} \u5DF2\u5B8C\u6210\u3002\u6458\u8981\uFF1A`:r==="digest-failed"?`\u5B50 Agent ${e} \u5DF2\u5B8C\u6210\uFF08\u667A\u80FD\u6458\u8981\u4E0D\u53EF\u7528\uFF0C\u4EE5\u4E0B\u4E3A\u672C\u5730\u6458\u5F55\uFF09\uFF1A`:`\u5B50 Agent ${e} \u5DF2\u5B8C\u6210\u3002\u6458\u5F55\u6458\u8981\uFF1A`:i?`Agent ${e} completed. Summary:`:r==="digest-failed"?`Agent ${e} completed (smart summary unavailable; local excerpt):`:`Agent ${e} completed. Extracted summary:`;return c.length===0?[n==="zh"?`\u5B50 Agent ${e} \u5DF2\u5B8C\u6210\uFF0C\u4F46\u672A\u80FD\u63D0\u53D6\u5230\u6709\u6548\u6458\u8981\u3002`:`Agent ${e} completed. No useful summary could be extracted.`,d].join(`
145
+ `)}a($t,"formatWorkflowLaunchAnswer");function X(e,o){let n=e.data?.[o];return typeof n=="string"&&n.trim().length>0?n.trim():void 0}a(X,"readEventString");function St(e,o="en",n){if(e.type!=="agent_completed"&&e.type!=="agent_unverified"&&e.type!=="agent_failed"&&e.type!=="agent_summary_updated"||e.type==="agent_completed"&&X(e,"status")!=="completed")return;let t=X(e,"summary")??X(e,"error");if(!t)return;let r=X(e,"summaryKind");if(r==="pending")return;let i=r==="digest"?"digest":r==="digest-failed"?"digest-failed":"excerpt",l=X(e,"name")??X(e,"taskId")??"agent";return Mc(l,t,o,n,i)}a(St,"formatWorkflowAgentDigest");function Ec(e){let o=e.replace(/\s+/g," ").trim();return o.length<=Si?o:`${o.slice(0,Si).trimEnd()}...`}a(Ec,"trimWorkflowAgentDigestExcerpt");function Tc(e){return/^(?:conclusion|finding|confirmed issue|issue|evidence|risk|next|unresolved|decision|result|summary|结论|发现|问题|证据|风险|下一步|未决|判断|决定|结果|摘要)[::]/i.test(e)||/^(?:[A-Z]{1,3}-?\d+|[HMSLP]\d+)[.)::\s-]/i.test(e)?!0:/(?:critical|high|medium|low)\s+severity|(?:严重|高危|中危|低危)/i.test(e)}a(Tc,"isHighSignalWorkflowAgentDigestLine");function Cc(e){let o=e.toLowerCase();return!!(/\[\/?workflow handoff\]/i.test(e)||/^\|.*\|$/.test(e)||/^\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?$/.test(e)||/^(?:i now have|i have|i now understand|here is|let me|i will|this report|the report)\b/.test(o)||/^(?:scope|review scope|范围|审查范围)[::]/i.test(e)||/^feature[_\s-]*\d+.*(?:report|review|audit|map|审查|报告|地图|变更地图)/i.test(e)||/^feature[_\s-]*\d+.*改动分布.*feature/i.test(e)||/(?:review report|audit|审查报告|综合报告|分析报告|变更地图)$/i.test(e)&&e.length<140)}a(Cc,"isLowInformationWorkflowAgentDigestLine");function Ic(e){return e.replace(/\s+/g," ").trim()}a(Ic,"compactWorkflowAgentDigestLine");function Pc(e,o={}){let n=e.replace(/^#{1,6}\s+/,"").replace(/^[-*]\s+/,"").replace(/^\d+[.)]\s+/,"").replace(/^`{3,}.*$/,"").replace(/^[`"'“”‘’)\]},,、。;;::.\s]+/,"").trim(),t=Ic(n);if(!(t.length<12)&&!/^[-*_`#\s]+$/.test(t)&&!Cc(t))return o.truncateLines===!1?t:Ec(t)}a(Pc,"normalizeWorkflowAgentDigestLine");function _c(e,o={}){let n=[],t=[];for(let r of e.split(/\r?\n+/)){let i=Pc(r,o);if(!i)continue;let l=Tc(i)?n:t;n.includes(i)||t.includes(i)||l.push(i)}return n.length>0?n.slice(0,$i):t.length>0?t.slice(0,$i):[]}a(_c,"extractWorkflowAgentDigestExcerpts");function Mc(e,o,n,t,r="excerpt"){let i=r==="digest",c=_c(o,{truncateLines:!i}).map(f=>`- ${f}`),d=t?n==="zh"?`\u8FD9\u662F\u5B50 Agent \u7684\u6709\u754C\u6458\u8981\uFF1B/workflow show ${t} \u53EF\u67E5\u770B\u8FD0\u884C\u4E8B\u4EF6\u65F6\u95F4\u7EBF\u3002`:`This is a child-agent digest; use /workflow show ${t} for the event timeline.`:n==="zh"?"\u8FD9\u662F\u5B50 Agent \u7684\u6709\u754C\u6458\u8981\uFF1B/workflow show \u53EF\u67E5\u770B\u8FD0\u884C\u4E8B\u4EF6\u65F6\u95F4\u7EBF\u3002":"This is a child-agent digest; use /workflow show for the event timeline.",u=n==="zh"?i?`\u5B50 Agent ${e} \u5DF2\u5B8C\u6210\u3002\u6458\u8981\uFF1A`:r==="digest-failed"?`\u5B50 Agent ${e} \u5DF2\u5B8C\u6210\uFF08\u667A\u80FD\u6458\u8981\u4E0D\u53EF\u7528\uFF0C\u4EE5\u4E0B\u4E3A\u672C\u5730\u6458\u5F55\uFF09\uFF1A`:`\u5B50 Agent ${e} \u5DF2\u5B8C\u6210\u3002\u6458\u5F55\u6458\u8981\uFF1A`:i?`Agent ${e} completed. Summary:`:r==="digest-failed"?`Agent ${e} completed (smart summary unavailable; local excerpt):`:`Agent ${e} completed. Extracted summary:`;return c.length===0?[n==="zh"?`\u5B50 Agent ${e} \u5DF2\u5B8C\u6210\uFF0C\u4F46\u672A\u80FD\u63D0\u53D6\u5230\u6709\u6548\u6458\u8981\u3002`:`Agent ${e} completed. No useful summary could be extracted.`,d].join(`
146
146
  `):[u,...c,d].join(`
147
- `)}a(Mc,"formatWorkflowAgentLongDigest");function sn(e){return(o,n="en")=>St(o,n,e)}a(sn,"createWorkflowAgentDigestLimiter");import P from"chalk";function bt(){return[`${P.bold("/workflow")} - dynamic multi-agent workflow harness`,"",`${P.bold("Subcommands:")}`,` ${P.cyan("/workflow list")} List built-in, pattern, and saved workflows. Alias: /workflow`,` ${P.cyan("/workflow create <request>")} Build & run a workflow for a request. The Worker investigates first, then authors it (scout-then-author). Requires AMA or AMAW \u2014 Solo (SA) mode runs no workflows.`,` ${P.cyan("/workflow <request>")} Shorthand for create when the first word isn't a known workflow name or subcommand.`,` ${P.cyan("/workflow <name> [args]")} Run a built-in or saved workflow by name. Args may be JSON or bare text.`,` ${P.cyan("/workflow runs [--all|--limit N]")} List active and recent workflow runs for this project.`,` ${P.cyan("/workflow show [--full] [runId]")} Show the latest run; use --full for complete result artifacts.`,` ${P.cyan("/workflow pause <runId>")} Pause future child launches for an active run.`,` ${P.cyan("/workflow resume <runId>")} Resume a paused run.`,` ${P.cyan("/workflow stop [runId]")} Stop an active run through abort propagation. Defaults to the active run.`,` ${P.cyan("/workflow delete [--force] [--run|--saved] <runId|savedName>")} Delete one persisted run record or generated saved capsule; --force removes stale non-terminal run records.`,` ${P.cyan("/workflow prune --dry-run|--keep N|--older-than Nd")}`," Preview or delete old terminal run records.",` ${P.cyan("/workflow rerun <runId|savedName> [args]")} Rerun a historical generated run, or run the current saved workflow by name.`,` ${P.cyan("/workflow save <runId> <name>")} Save a generated run as a workflow capsule.`,` ${P.cyan("/workflow rename <runId|alias|savedName> <newName>")} Rename a run display name or generated saved capsule.`,` ${P.cyan("/workflow revise [--replace] <runId|alias|savedName> <change>")} Generate and save a capsule revision.`,` ${P.cyan("/workflow help")} Show this help. Also available as /help workflow.`,"",`${P.bold("Examples:")}`,` ${P.dim("/workflow create Compare three flaky-test hypotheses and verify each one")}`,` ${P.dim('/workflow parallel-investigation {"question":"\u8BF7\u68C0\u67E5\u8FD9\u4E2A\u7ADE\u6001\u5728\u54EA\u91CC","targets":["packages/agent"]}')}`,` ${P.dim('/workflow rerun run-lx3 {"request":"\u8BF7\u7528\u540C\u6837\u6D41\u7A0B\u590D\u67E5 packages/repl"}')}`,` ${P.dim('/workflow rerun generated-audit {"request":"reuse the saved workflow for packages/repl"}')}`,` ${P.dim("/workflow prune --dry-run")}`,` ${P.dim("/workflow save run-lx3 generated-audit")}`,"",`${P.bold("Safety:")}`," - Generated and workflow capsule (.workflow.json) workflows run in the capability WorkflowApi runner."," - For rerun, a run id reruns its saved snapshot; a saved name runs the current saved capsule version."," - For revise --replace, only a saved generated capsule name can move; the previous capsule is archived."," - Local .ts/.mjs/.js workflows are trusted-local and require explicit confirmation."," - File, shell, MCP, and web effects still go through child agents and existing permission gates."].join(`
148
- `)}a(bt,"renderWorkflowHelp");function an(){console.log(`
147
+ `)}a(Mc,"formatWorkflowAgentLongDigest");function an(e){return(o,n="en")=>St(o,n,e)}a(an,"createWorkflowAgentDigestLimiter");import P from"chalk";function bt(){return[`${P.bold("/workflow")} - dynamic multi-agent workflow harness`,"",`${P.bold("Subcommands:")}`,` ${P.cyan("/workflow list")} List built-in, pattern, and saved workflows. Alias: /workflow`,` ${P.cyan("/workflow create <request>")} Build & run a workflow for a request. The Worker investigates first, then authors it (scout-then-author). Requires AMA or AMAW \u2014 Solo (SA) mode runs no workflows.`,` ${P.cyan("/workflow <request>")} Shorthand for create when the first word isn't a known workflow name or subcommand.`,` ${P.cyan("/workflow <name> [args]")} Run a built-in or saved workflow by name. Args may be JSON or bare text.`,` ${P.cyan("/workflow runs [--all|--limit N]")} List active and recent workflow runs for this project.`,` ${P.cyan("/workflow show [--full] [runId]")} Show the latest run; use --full for complete result artifacts.`,` ${P.cyan("/workflow pause <runId>")} Pause future child launches for an active run.`,` ${P.cyan("/workflow resume <runId>")} Resume a paused run.`,` ${P.cyan("/workflow stop [runId]")} Stop an active run through abort propagation. Defaults to the active run.`,` ${P.cyan("/workflow delete [--force] [--run|--saved] <runId|savedName>")} Delete one persisted run record or generated saved capsule; --force removes stale non-terminal run records.`,` ${P.cyan("/workflow prune --dry-run|--keep N|--older-than Nd")}`," Preview or delete old terminal run records.",` ${P.cyan("/workflow rerun <runId|savedName> [args]")} Rerun a historical generated run, or run the current saved workflow by name.`,` ${P.cyan("/workflow save <runId> <name>")} Save a generated run as a workflow capsule.`,` ${P.cyan("/workflow rename <runId|alias|savedName> <newName>")} Rename a run display name or generated saved capsule.`,` ${P.cyan("/workflow revise [--replace] <runId|alias|savedName> <change>")} Generate and save a capsule revision.`,` ${P.cyan("/workflow help")} Show this help. Also available as /help workflow.`,"",`${P.bold("Examples:")}`,` ${P.dim("/workflow create Compare three flaky-test hypotheses and verify each one")}`,` ${P.dim('/workflow parallel-investigation {"question":"\u8BF7\u68C0\u67E5\u8FD9\u4E2A\u7ADE\u6001\u5728\u54EA\u91CC","targets":["packages/agent"]}')}`,` ${P.dim('/workflow rerun run-lx3 {"request":"\u8BF7\u7528\u540C\u6837\u6D41\u7A0B\u590D\u67E5 packages/repl"}')}`,` ${P.dim('/workflow rerun generated-audit {"request":"reuse the saved workflow for packages/repl"}')}`,` ${P.dim("/workflow prune --dry-run")}`,` ${P.dim("/workflow save run-lx3 generated-audit")}`,"",`${P.bold("Safety:")}`," - Generated and workflow capsule (.workflow.json) workflows run in the capability WorkflowApi runner."," - For rerun, a run id reruns its saved snapshot; a saved name runs the current saved capsule version."," - For revise --replace, only a saved generated capsule name can move; the previous capsule is archived."," - Local .ts/.mjs/.js workflows are trusted-local and require explicit confirmation."," - File, shell, MCP, and web effects still go through child agents and existing permission gates."].join(`
148
+ `)}a(bt,"renderWorkflowHelp");function ln(){console.log(`
149
149
  ${bt()}
150
- `)}a(an,"printWorkflowHelp");var Nc=new Set(["completed","failed","stopped","denied","cancelled"]);function xt(e){return e.length===0?" (no built-in workflows)":e.map(o=>` ${E.cyan(o.name)} \u2014 ${o.description}`).join(`
151
- `)}a(xt,"formatWorkflowList");var Oc=6,Dc=900;function Uc(e){let o=e.replace(/\r\n/g,`
150
+ `)}a(ln,"printWorkflowHelp");var Oc=new Set(["completed","failed","stopped","denied","cancelled"]);function xt(e){return e.length===0?" (no built-in workflows)":e.map(o=>` ${E.cyan(o.name)} \u2014 ${o.description}`).join(`
151
+ `)}a(xt,"formatWorkflowList");var Nc=6,Dc=900;function Uc(e){let o=e.replace(/\r\n/g,`
152
152
  `).replace(/\r/g,`
153
153
  `).split(`
154
- `),n=[],t=0,r=!1;for(let l of o){if(n.length>=Oc)break;let c=` ${l}`,d=Dc-t;if(d<=0){r=!0;break}if(c.length>d){d>16&&n.push(`${c.slice(0,d-4)} ...`),r=!0;break}n.push(c),t+=c.length+1}let i=Math.max(0,o.length-n.length);if(i>0||r){let l=i>0?`${i} more line(s)`:"source truncated";n.push(` ... (${l}; full source omitted from prompt)`)}return n}a(Uc,"renderApprovalScriptPreview");function ae(e,o){let n=a(i=>i===null?"\u221E":String(i),"cap"),t=e.plannedAgents===void 0?void 0:String(e.plannedAgents),r=t===void 0?`agent total cap: ${n(e.maxAgents)}`:`planned agents: ${t} \xB7 agent safety cap: ${n(e.maxAgents)}`;return[`Run workflow ${E.cyan(e.name)}?`,` ${e.description}`,` phases: ${e.phases.length>0?e.phases.join(" \u2192 "):"(dynamic)"}`,` ${r} \xB7 max concurrency: ${n(e.maxConcurrency)} \xB7 token budget: ${n(e.tokenBudget)}`,` writes files: ${e.writesFiles?E.yellow("yes"):"no (read-only)"}`,...o?[` source: ${o.source}`,` sandbox/trust: ${o.sandbox}`,` worktree isolation: ${o.mayUseWorktree?"may request worktree":"shared cwd / per-child default"}`,...o.rawScriptPath?[` raw script: ${o.rawScriptPath}`]:o.rawScript?[" raw script: preview below"]:[],...o.rawScript&&!o.rawScriptPath?[" raw script preview:",...Uc(o.rawScript)]:[]]:[]].join(`
155
- `)}a(ae,"renderApprovalPrompt");function So(e){if(!ie(e))return[];let o=[];for(let n of Lc(e)){let t=ee(e,n,"run.json");if(ie(t))try{let r=JSON.parse(cn(t,"utf8"));o.push({runId:n,workflow:typeof r.workflow=="string"?r.workflow:"?",status:typeof r.status=="string"?r.status:"?",totalSpawned:typeof r.totalSpawned=="number"?r.totalSpawned:0,endedAt:typeof r.endedAt=="number"?r.endedAt:0})}catch{}}return o.sort((n,t)=>t.endedAt-n.endedAt)}a(So,"readWorkflowRuns");function jc(e){let o=ee(e,"events.jsonl");if(!ie(o))return[];let n=cn(o,"utf8").split(/\r?\n/).filter(r=>r.trim().length>0),t=[];for(let r of n)try{let i=JSON.parse(r);if(typeof i!="object"||i===null)continue;let l=i;if(typeof l.seq!="number"||typeof l.type!="string")continue;let c=l.data;t.push({seq:l.seq,type:l.type,...typeof c=="object"&&c!==null?{data:c}:{}})}catch{}return t}a(jc,"readWorkflowEvents");function Fc(e){return Array.isArray(e)?e.filter(o=>typeof o=="string"):[]}a(Fc,"readStringArray");function ln(e){return typeof e=="string"&&e.trim().length>0?e:void 0}a(ln,"readNonEmptyString");function Ai(e,o){let n=o?ln(o.scriptSnapshotPath):ee(e,"script.js"),t=o?ln(o.manifestSnapshotPath):ee(e,"manifest.json");return!n||!t?!1:ie(n)&&ie(t)}a(Ai,"hasGeneratedWorkflowSnapshot");function Ei(e,o){if(o)return Ai(e,o);let n=ee(e,"run.json");if(!ie(n))return!1;try{let t=JSON.parse(cn(n,"utf8"));return typeof t=="object"&&t!==null?Ai(e,t):!1}catch{return!1}}a(Ei,"hasRerunnableGeneratedWorkflowRun");function Hc(e){for(let o of[...e].reverse()){if(o.type!=="workflow_failed")continue;let n=o.data?.error;if(typeof n=="string"&&n.trim().length>0)return n}}a(Hc,"readWorkflowFailure");function bo(e,o){let n=ee(e,o),t=ee(n,"run.json"),r=jc(n),i=Hc(r);if(!(!ie(t)&&r.length===0)){if(!ie(t))return{runId:o,workflow:"?",status:i?"failed":"running",totalSpawned:r.filter(l=>l.type==="agent_spawned").length,eventCount:r.length,runDir:n,canRerun:!1,artifacts:[],events:r,...i?{error:i}:{}};try{let l=JSON.parse(cn(t,"utf8")),c=ln(l.scriptSnapshotPath),d=ln(l.manifestSnapshotPath);return{runId:o,workflow:typeof l.workflow=="string"?l.workflow:"?",status:typeof l.status=="string"?l.status:"?",totalSpawned:typeof l.totalSpawned=="number"?l.totalSpawned:0,eventCount:r.length,runDir:n,canRerun:Ei(n,l),...c?{scriptSnapshotPath:c}:{},...d?{manifestSnapshotPath:d}:{},...typeof l.startedAt=="number"?{startedAt:l.startedAt}:{},...typeof l.endedAt=="number"?{endedAt:l.endedAt}:{},...i?{error:i}:{},artifacts:Fc(l.artifacts),events:r}}catch{return{runId:o,workflow:"?",status:i?"failed":"unknown",totalSpawned:r.filter(l=>l.type==="agent_spawned").length,eventCount:r.length,runDir:n,canRerun:!1,artifacts:[],events:r,...i?{error:i}:{}}}}}a(bo,"readWorkflowRunDetail");function $o(e){return e==="completed"?E.green("ok"):e==="failed"?E.red("x"):e==="running"?E.cyan("run"):e==="paused"?E.yellow("pause"):e==="stopped"?E.dim("stop"):e==="denied"?E.dim("deny"):e==="cancelled"?E.dim("cancel"):E.dim("-")}a($o,"statusIcon");function At(e){return Nc.has(e)}a(At,"isTerminalWorkflowStatus");function Ci(e){if(!e)return;let o=[];return e.displayName&&e.displayName!==e.workflowName&&o.push(`display: ${e.displayName}`),e.source&&o.push(`source: ${e.source}`),e.savedWorkflowName&&o.push(`saved: ${e.savedWorkflowName}`),e.revisionOf&&o.push(`revision of: ${e.revisionOf}`),o.length>0?o.join(", "):void 0}a(Ci,"formatProcessListMeta");function Rt(e,o={}){if(e.length===0)return" (no workflow runs yet)";let n=o.limit===void 0?void 0:Math.max(1,Math.floor(o.limit)),t=n===void 0?e:e.slice(0,n);if(o.processSnapshots){let i=t.map(l=>{let c=Ci(o.processSnapshots?.get(l.runId));return` ${$o(l.status)} ${E.cyan(l.workflow)} ${E.dim(l.runId)} - ${l.status} (${l.totalSpawned} agents)${c?E.dim(` [${c}]`):""}`});return o.showLimitHint===!0&&n!==void 0&&e.length>t.length&&i.push(E.dim(` Showing ${t.length} of ${e.length} persisted runs. Use /workflow runs --all to show all.`)),i.join(`
154
+ `),n=[],t=0,r=!1;for(let l of o){if(n.length>=Nc)break;let c=` ${l}`,d=Dc-t;if(d<=0){r=!0;break}if(c.length>d){d>16&&n.push(`${c.slice(0,d-4)} ...`),r=!0;break}n.push(c),t+=c.length+1}let i=Math.max(0,o.length-n.length);if(i>0||r){let l=i>0?`${i} more line(s)`:"source truncated";n.push(` ... (${l}; full source omitted from prompt)`)}return n}a(Uc,"renderApprovalScriptPreview");function ae(e,o){let n=a(i=>i===null?"\u221E":String(i),"cap"),t=e.plannedAgents===void 0?void 0:String(e.plannedAgents),r=t===void 0?`agent total cap: ${n(e.maxAgents)}`:`planned agents: ${t} \xB7 agent safety cap: ${n(e.maxAgents)}`;return[`Run workflow ${E.cyan(e.name)}?`,` ${e.description}`,` phases: ${e.phases.length>0?e.phases.join(" \u2192 "):"(dynamic)"}`,` ${r} \xB7 max concurrency: ${n(e.maxConcurrency)} \xB7 token budget: ${n(e.tokenBudget)}`,` writes files: ${e.writesFiles?E.yellow("yes"):"no (read-only)"}`,...o?[` source: ${o.source}`,` sandbox/trust: ${o.sandbox}`,` worktree isolation: ${o.mayUseWorktree?"may request worktree":"shared cwd / per-child default"}`,...o.rawScriptPath?[` raw script: ${o.rawScriptPath}`]:o.rawScript?[" raw script: preview below"]:[],...o.rawScript&&!o.rawScriptPath?[" raw script preview:",...Uc(o.rawScript)]:[]]:[]].join(`
155
+ `)}a(ae,"renderApprovalPrompt");function So(e){if(!ie(e))return[];let o=[];for(let n of Lc(e)){let t=ee(e,n,"run.json");if(ie(t))try{let r=JSON.parse(dn(t,"utf8"));o.push({runId:n,workflow:typeof r.workflow=="string"?r.workflow:"?",status:typeof r.status=="string"?r.status:"?",totalSpawned:typeof r.totalSpawned=="number"?r.totalSpawned:0,endedAt:typeof r.endedAt=="number"?r.endedAt:0})}catch{}}return o.sort((n,t)=>t.endedAt-n.endedAt)}a(So,"readWorkflowRuns");function jc(e){let o=ee(e,"events.jsonl");if(!ie(o))return[];let n=dn(o,"utf8").split(/\r?\n/).filter(r=>r.trim().length>0),t=[];for(let r of n)try{let i=JSON.parse(r);if(typeof i!="object"||i===null)continue;let l=i;if(typeof l.seq!="number"||typeof l.type!="string")continue;let c=l.data;t.push({seq:l.seq,type:l.type,...typeof c=="object"&&c!==null?{data:c}:{}})}catch{}return t}a(jc,"readWorkflowEvents");function Fc(e){return Array.isArray(e)?e.filter(o=>typeof o=="string"):[]}a(Fc,"readStringArray");function cn(e){return typeof e=="string"&&e.trim().length>0?e:void 0}a(cn,"readNonEmptyString");function Ai(e,o){let n=o?cn(o.scriptSnapshotPath):ee(e,"script.js"),t=o?cn(o.manifestSnapshotPath):ee(e,"manifest.json");return!n||!t?!1:ie(n)&&ie(t)}a(Ai,"hasGeneratedWorkflowSnapshot");function Ei(e,o){if(o)return Ai(e,o);let n=ee(e,"run.json");if(!ie(n))return!1;try{let t=JSON.parse(dn(n,"utf8"));return typeof t=="object"&&t!==null?Ai(e,t):!1}catch{return!1}}a(Ei,"hasRerunnableGeneratedWorkflowRun");function Hc(e){for(let o of[...e].reverse()){if(o.type!=="workflow_failed")continue;let n=o.data?.error;if(typeof n=="string"&&n.trim().length>0)return n}}a(Hc,"readWorkflowFailure");function bo(e,o){let n=ee(e,o),t=ee(n,"run.json"),r=jc(n),i=Hc(r);if(!(!ie(t)&&r.length===0)){if(!ie(t))return{runId:o,workflow:"?",status:i?"failed":"running",totalSpawned:r.filter(l=>l.type==="agent_spawned").length,eventCount:r.length,runDir:n,canRerun:!1,artifacts:[],events:r,...i?{error:i}:{}};try{let l=JSON.parse(dn(t,"utf8")),c=cn(l.scriptSnapshotPath),d=cn(l.manifestSnapshotPath);return{runId:o,workflow:typeof l.workflow=="string"?l.workflow:"?",status:typeof l.status=="string"?l.status:"?",totalSpawned:typeof l.totalSpawned=="number"?l.totalSpawned:0,eventCount:r.length,runDir:n,canRerun:Ei(n,l),...c?{scriptSnapshotPath:c}:{},...d?{manifestSnapshotPath:d}:{},...typeof l.startedAt=="number"?{startedAt:l.startedAt}:{},...typeof l.endedAt=="number"?{endedAt:l.endedAt}:{},...i?{error:i}:{},artifacts:Fc(l.artifacts),events:r}}catch{return{runId:o,workflow:"?",status:i?"failed":"unknown",totalSpawned:r.filter(l=>l.type==="agent_spawned").length,eventCount:r.length,runDir:n,canRerun:!1,artifacts:[],events:r,...i?{error:i}:{}}}}}a(bo,"readWorkflowRunDetail");function $o(e){return e==="completed"?E.green("ok"):e==="failed"?E.red("x"):e==="running"?E.cyan("run"):e==="paused"?E.yellow("pause"):e==="stopped"?E.dim("stop"):e==="denied"?E.dim("deny"):e==="cancelled"?E.dim("cancel"):E.dim("-")}a($o,"statusIcon");function At(e){return Oc.has(e)}a(At,"isTerminalWorkflowStatus");function Ti(e){if(!e)return;let o=[];return e.displayName&&e.displayName!==e.workflowName&&o.push(`display: ${e.displayName}`),e.source&&o.push(`source: ${e.source}`),e.savedWorkflowName&&o.push(`saved: ${e.savedWorkflowName}`),e.revisionOf&&o.push(`revision of: ${e.revisionOf}`),o.length>0?o.join(", "):void 0}a(Ti,"formatProcessListMeta");function Rt(e,o={}){if(e.length===0)return" (no workflow runs yet)";let n=o.limit===void 0?void 0:Math.max(1,Math.floor(o.limit)),t=n===void 0?e:e.slice(0,n);if(o.processSnapshots){let i=t.map(l=>{let c=Ti(o.processSnapshots?.get(l.runId));return` ${$o(l.status)} ${E.cyan(l.workflow)} ${E.dim(l.runId)} - ${l.status} (${l.totalSpawned} agents)${c?E.dim(` [${c}]`):""}`});return o.showLimitHint===!0&&n!==void 0&&e.length>t.length&&i.push(E.dim(` Showing ${t.length} of ${e.length} persisted runs. Use /workflow runs --all to show all.`)),i.join(`
156
156
  `)}let r=t.map(i=>` ${$o(i.status)} ${E.cyan(i.workflow)} ${E.dim(i.runId)} \u2014 ${i.status} (${i.totalSpawned} agents)`);return o.showLimitHint===!0&&n!==void 0&&e.length>t.length&&r.push(E.dim(` Showing ${t.length} of ${e.length} persisted runs. Use /workflow runs --all to show all.`)),r.join(`
157
- `)}a(Rt,"formatRunsList");function Et(e,o={}){return e.length===0?" (no active workflow runs)":o.processSnapshots?e.map(n=>{let t=Ci(o.processSnapshots?.get(n.runId));return` ${$o(n.status)} ${E.cyan(n.workflow)} ${E.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)${t?E.dim(` [${t}]`):""}`}).join(`
157
+ `)}a(Rt,"formatRunsList");function Et(e,o={}){return e.length===0?" (no active workflow runs)":o.processSnapshots?e.map(n=>{let t=Ti(o.processSnapshots?.get(n.runId));return` ${$o(n.status)} ${E.cyan(n.workflow)} ${E.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)${t?E.dim(` [${t}]`):""}`}).join(`
158
158
  `):e.map(n=>` ${$o(n.status)} ${E.cyan(n.workflow)} ${E.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)`).join(`
159
- `)}a(Et,"formatManagedRunsList");function Ve(e){return e.status==="running"||e.status==="paused"}a(Ve,"isActiveManagedWorkflowRun");function Ct(e){return e.length===0?" (no workflow runs match the cleanup rule)":e.map(o=>` ${$o(o.status)} ${E.cyan(o.workflow)} ${E.dim(o.runId)} - ${o.status}`).join(`
160
- `)}a(Ct,"formatWorkflowPruneCandidates");function Tt(e,o){return e.filter(Ve)[0]?.runId??e[0]?.runId??o[0]?.runId}a(Tt,"selectDefaultWorkflowRunId");function It(e){return e.find(Ve)?.runId}a(It,"selectDefaultActiveWorkflowRunId");function Ri(e){if(e!==void 0)return typeof e=="number"?new Date(e).toLocaleString():e}a(Ri,"formatTime");function Bc(e,o=10){let n=e.map(mn).filter(t=>t!==void 0);return n.slice(Math.max(0,n.length-o))}a(Bc,"formatRecentWorkflowEvents");function Pt(e,o){return o?.canRerun??(e?.runDir?Ei(e.runDir):!1)}a(Pt,"canRerunWorkflowRun");function Gc(e){return e?e.artifacts.map(o=>({name:o,path:ee(e.runDir,"artifacts",`${Ur(o)}.json`)})):[]}a(Gc,"workflowArtifactRefs");function _t(e,o){return o?`/workflow show ${e} | /workflow rerun ${e}`:`/workflow show ${e}`}a(_t,"formatWorkflowNextActions");function Ti(e,o){return o?`Use /workflow show ${e} for events. /workflow revise ${e} <change> can repair the saved script; /workflow rerun ${e} repeats it unchanged.`:`Use /workflow show ${e} for events.`}a(Ti,"formatWorkflowFailureAction");function Mt(e,o,n={}){let t=n.processSnapshot;if(!e&&!o&&!t)return" (unknown workflow run)";let r=t?.workflowName??e?.workflow??o?.workflow??"?",i=t?.runId??e?.runId??o?.runId??"?",l=t?.status??e?.status??o?.status??"?",c=t?.progress.spawnedAgents??e?.totalSpawned??o?.totalSpawned??0,d=e?.eventCount??o?.eventCount??0,u=e?.runDir??o?.runDir??"",f=Ri(e?.startedAt??o?.startedAt??t?.startedAt),m=t&&t.status!=="running"&&t.status!=="paused"?t.updatedAt:void 0,y=Ri(e?.endedAt??o?.endedAt??m),v=t?.error??e?.error??o?.error,k=o?.artifacts??t?.artifacts?.map(de=>de.name)??[],$=Gc(o),g=e?.resultText,b=n.full===!0||g===void 0?Xe($,Te(r),{full:n.full===!0}):void 0,I=n.full===!0?b??g??t?.resultSummary:g!==void 0?he(g):t?.resultSummary!==void 0?he(t.resultSummary):b,M=I?ze(I,i,Te(I)):void 0,V=n.full===!0||!I||!kt(I)?"result:":"result preview:",Y=o?Bc(o.events):[],to=Pt(e,o);return[` ${E.cyan(r)} ${E.dim(i)}`,...t?.displayName&&t.displayName!==r?[` display name: ${t.displayName}`]:[],` status: ${l}`,...t?.source?[` source: ${t.source}`]:[],...t?.savedWorkflowName?[` saved workflow: ${t.savedWorkflowName}`]:[],...t?.sourceRunId?[` source run: ${t.sourceRunId}`]:[],...t?.sourceWorkflowName?[` source workflow: ${t.sourceWorkflowName}`]:[],...t?.revisionOf?[` revision of: ${t.revisionOf}`]:[],` agents: ${c}`,` events: ${d}`,...f?[` started: ${f}`]:[],...y?[` ended: ${y}`]:[],...u?[` run dir: ${u}`]:[],...k.length>0?[` artifacts: ${k.join(", ")}`]:[],...v?[` error: ${v}`]:[],...M?["",` ${V}`,...M.split(`
159
+ `)}a(Et,"formatManagedRunsList");function Ve(e){return e.status==="running"||e.status==="paused"}a(Ve,"isActiveManagedWorkflowRun");function Tt(e){return e.length===0?" (no workflow runs match the cleanup rule)":e.map(o=>` ${$o(o.status)} ${E.cyan(o.workflow)} ${E.dim(o.runId)} - ${o.status}`).join(`
160
+ `)}a(Tt,"formatWorkflowPruneCandidates");function Ct(e,o){return e.filter(Ve)[0]?.runId??e[0]?.runId??o[0]?.runId}a(Ct,"selectDefaultWorkflowRunId");function It(e){return e.find(Ve)?.runId}a(It,"selectDefaultActiveWorkflowRunId");function Ri(e){if(e!==void 0)return typeof e=="number"?new Date(e).toLocaleString():e}a(Ri,"formatTime");function Bc(e,o=10){let n=e.map(pn).filter(t=>t!==void 0);return n.slice(Math.max(0,n.length-o))}a(Bc,"formatRecentWorkflowEvents");function Pt(e,o){return o?.canRerun??(e?.runDir?Ei(e.runDir):!1)}a(Pt,"canRerunWorkflowRun");function Gc(e){return e?e.artifacts.map(o=>({name:o,path:ee(e.runDir,"artifacts",`${Ur(o)}.json`)})):[]}a(Gc,"workflowArtifactRefs");function _t(e,o){return o?`/workflow show ${e} | /workflow rerun ${e}`:`/workflow show ${e}`}a(_t,"formatWorkflowNextActions");function Ci(e,o){return o?`Use /workflow show ${e} for events. /workflow revise ${e} <change> can repair the saved script; /workflow rerun ${e} repeats it unchanged.`:`Use /workflow show ${e} for events.`}a(Ci,"formatWorkflowFailureAction");function Mt(e,o,n={}){let t=n.processSnapshot;if(!e&&!o&&!t)return" (unknown workflow run)";let r=t?.workflowName??e?.workflow??o?.workflow??"?",i=t?.runId??e?.runId??o?.runId??"?",l=t?.status??e?.status??o?.status??"?",c=t?.progress.spawnedAgents??e?.totalSpawned??o?.totalSpawned??0,d=e?.eventCount??o?.eventCount??0,u=e?.runDir??o?.runDir??"",f=Ri(e?.startedAt??o?.startedAt??t?.startedAt),m=t&&t.status!=="running"&&t.status!=="paused"?t.updatedAt:void 0,y=Ri(e?.endedAt??o?.endedAt??m),v=t?.error??e?.error??o?.error,k=o?.artifacts??t?.artifacts?.map(de=>de.name)??[],$=Gc(o),g=e?.resultText,b=n.full===!0||g===void 0?Xe($,Ce(r),{full:n.full===!0}):void 0,I=n.full===!0?b??g??t?.resultSummary:g!==void 0?he(g):t?.resultSummary!==void 0?he(t.resultSummary):b,M=I?ze(I,i,Ce(I)):void 0,V=n.full===!0||!I||!kt(I)?"result:":"result preview:",Y=o?Bc(o.events):[],to=Pt(e,o);return[` ${E.cyan(r)} ${E.dim(i)}`,...t?.displayName&&t.displayName!==r?[` display name: ${t.displayName}`]:[],` status: ${l}`,...t?.source?[` source: ${t.source}`]:[],...t?.savedWorkflowName?[` saved workflow: ${t.savedWorkflowName}`]:[],...t?.sourceRunId?[` source run: ${t.sourceRunId}`]:[],...t?.sourceWorkflowName?[` source workflow: ${t.sourceWorkflowName}`]:[],...t?.revisionOf?[` revision of: ${t.revisionOf}`]:[],` agents: ${c}`,` events: ${d}`,...f?[` started: ${f}`]:[],...y?[` ended: ${y}`]:[],...u?[` run dir: ${u}`]:[],...k.length>0?[` artifacts: ${k.join(", ")}`]:[],...v?[` error: ${v}`]:[],...M?["",` ${V}`,...M.split(`
161
161
  `).map(de=>` ${de}`)]:[],...Y.length>0?[""," recent events:",...Y.map(de=>` ${de.trimEnd()}`)]:[],"",` next: ${_t(i,to)}`].join(`
162
162
  `)}a(Mt,"formatWorkflowRunSnapshot");function Lt(e){return{project:ee(e,".kodax","workflows"),personal:H("workflows")}}a(Lt,"savedWorkflowDirs");async function Ii(e,o){return new Set((await je(e)).map(t=>t.name)).has(o)?`${o}-revision-${Date.now().toString(36)}`:o}a(Ii,"nextRevisionWorkflowName");function Pi(e){let o=e.resolution.kind==="run"?e.resolution.runId:e.capsule.provenance?.fromRunId,n=e.resolution.kind==="saved"?e.resolution.savedWorkflow.name:e.capsule.provenance?.fromWorkflowName,t=e.resolution.kind==="run"?e.resolution.runId:e.resolution.kind==="saved"?e.resolution.savedWorkflow.name:void 0;return{...o!==void 0?{fromRunId:o}:{},...n!==void 0?{fromWorkflowName:n}:{},...t!==void 0?{revisionOf:t}:{},...e.replacesWorkflowName!==void 0?{replacesWorkflowName:e.replacesWorkflowName}:{},createdAt:new Date().toISOString(),kodaxVersion:Qr}}a(Pi,"buildWorkflowRevisionProvenance");function Wt(e){return e.length===0?" (no saved workflows)":e.map(o=>` ${E.cyan(o.name)} ${E.dim(`(${o.source}, ${o.execution}: ${o.path})`)}`).join(`
163
163
  `)}a(Wt,"formatSavedList");function _i(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(_i,"isSafeWorkflowRunId");function Ie(e){if(e.confirm)return e.confirm;let o=e.readline;if(o)return n=>new Promise(t=>{o.question(`${n} (y/N) `,r=>t(/^y(es)?$/i.test(r.trim())))})}a(Ie,"resolveConfirm");function qc(e){console.log(E.red(`
164
164
  [workflow] invalid run id: ${e||"<empty>"}
165
- `))}a(qc,"printInvalidRunId");function ye(e){return _i(e)?!0:(qc(e),!1)}a(ye,"ensureSafeRunId");function dn(){let e=Kc(process.cwd());return{isGitRepo:e,worktreeCapable:e}}a(dn,"currentWorkflowPreflightEnv");function Kc(e){let o=e;for(;;){if(ie(ee(o,".git")))return!0;let n=Wc(o);if(n===o)return!1;o=n}}a(Kc,"hasGitMarker");function un(e){console.log(E.red(`
166
- [workflow] capsule preflight failed:`));for(let o of e.issues)console.log(E.red(` - ${o.requirement}: ${o.message}`));console.log()}a(un,"printPreflightFailure");function fn(e){let o=e.issues.filter(n=>n.severity==="warning");if(o.length!==0){console.log(E.yellow(`
167
- [workflow] capsule preflight warnings:`));for(let n of o)console.log(E.yellow(` - ${n.requirement}: ${n.message}`));console.log()}}a(fn,"printPreflightWarnings");async function Mi(e,o){if(e.execution==="trusted-local"&&!await o(`Run local workflow file? This EXECUTES local code:
165
+ `))}a(qc,"printInvalidRunId");function ye(e){return _i(e)?!0:(qc(e),!1)}a(ye,"ensureSafeRunId");function un(){let e=Kc(process.cwd());return{isGitRepo:e,worktreeCapable:e}}a(un,"currentWorkflowPreflightEnv");function Kc(e){let o=e;for(;;){if(ie(ee(o,".git")))return!0;let n=Wc(o);if(n===o)return!1;o=n}}a(Kc,"hasGitMarker");function fn(e){console.log(E.red(`
166
+ [workflow] capsule preflight failed:`));for(let o of e.issues)console.log(E.red(` - ${o.requirement}: ${o.message}`));console.log()}a(fn,"printPreflightFailure");function mn(e){let o=e.issues.filter(n=>n.severity==="warning");if(o.length!==0){console.log(E.yellow(`
167
+ [workflow] capsule preflight warnings:`));for(let n of o)console.log(E.yellow(` - ${n.requirement}: ${n.message}`));console.log()}}a(mn,"printPreflightWarnings");async function Mi(e,o){if(e.execution==="trusted-local"&&!await o(`Run local workflow file? This EXECUTES local code:
168
168
  ${e.path}`)){console.log(E.dim(`Workflow cancelled.
169
- `));return}try{let n={source:`saved:${e.source}`,sandbox:e.execution,mayUseWorktree:!1},t,r;if(e.execution==="capability-generated"){let l=await io(e.path),c=ao(l,dn());if(!c.ok){un(c);return}fn(c),n={source:`saved:${e.source}`,sandbox:e.execution,mayUseWorktree:l.manifest.mayUseWorktree===!0,rawScriptPath:e.path,rawScript:l.source},t={manifest:l.manifest,source:l.source},r=l.provenance}return{module:await Uo(e.path),approvalContext:n,...t!==void 0?{scriptSnapshot:t}:{},...r!==void 0?{provenance:r}:{}}}catch(n){let t=n instanceof Error?n.message:String(n);console.log(E.red(`
169
+ `));return}try{let n={source:`saved:${e.source}`,sandbox:e.execution,mayUseWorktree:!1},t,r;if(e.execution==="capability-generated"){let l=await io(e.path),c=ao(l,un());if(!c.ok){fn(c);return}mn(c),n={source:`saved:${e.source}`,sandbox:e.execution,mayUseWorktree:l.manifest.mayUseWorktree===!0,rawScriptPath:e.path,rawScript:l.source},t={manifest:l.manifest,source:l.source},r=l.provenance}return{module:await jo(e.path),approvalContext:n,...t!==void 0?{scriptSnapshot:t}:{},...r!==void 0?{provenance:r}:{}}}catch(n){let t=n instanceof Error?n.message:String(n);console.log(E.red(`
170
170
  [workflow] failed to load ${e.path}: ${t}
171
- `));return}}a(Mi,"prepareSavedWorkflow");function Nt(e){let o=e.data?.status;return typeof o=="string"?o:void 0}a(Nt,"workflowEventStatus");function mn(e){let o=e.data?.name??e.data?.taskId??"",n=Nt(e);switch(e.type){case"phase_started":return` > phase: ${e.data?.name??""}`;case"phase_finished":return` done phase: ${e.data?.name??""}`;case"agent_spawned":return` + ${o}`;case"agent_completed":return n==="failed"?` failed ${o}`:n==="completed_unverified"?` unverified ${o}`:` done ${o}`;case"agent_unverified":return` unverified ${o}`;case"agent_failed":return` failed ${o}`;case"agent_stopped":return` stopped ${o}`;case"workflow_log":return` log ${e.data?.message??""}`;case"artifact_written":return` artifact ${e.data?.name??""}`;case"synthesis_completed":return" synthesis complete";case"workflow_completed":return" workflow completed";case"workflow_stopped":return" workflow stopped";case"workflow_failed":return` workflow failed: ${e.data?.error??"unknown error"}`;default:return}}a(mn,"formatWorkflowEvent");function Li(e){let o=mn(e);o&&console.log(E.dim(o))}a(Li,"renderWorkflowEvent");import gn from"chalk";import zc from"string-width";var Xc=9;function Vc(e,o=Xc){let n=zc(e);return n>=o?e:`${e}${" ".repeat(o-n)}`}a(Vc,"padWorkflowLiveSymbol");function Oi(e,o={}){let n=e.items.filter(m=>m.kind==="agent"),t=n.filter(m=>m.status==="running").map(m=>m.title),r=n.filter(m=>m.status==="completed").length,i=n.filter(m=>m.status==="failed").length,l=n.filter(m=>m.status==="cancelled").length,c=e.status==="completed"?"completed":e.status==="failed"?"failed":e.status==="cancelled"?"stopped":"running",d=e.activePhaseId===void 0?void 0:e.items.find(m=>m.id===e.activePhaseId)?.title,u=Date.parse(e.startedAt),f=o.message??e.latestMessage;return{runId:e.runId,workflow:e.displayName??e.workflowName,status:c,...d!==void 0?{phase:d}:{},...e.activePhaseIndex!==void 0?{phaseIndex:e.activePhaseIndex}:{},...e.phaseCount!==void 0?{phaseTotal:e.phaseCount}:{},...Number.isFinite(u)?{startedAt:u}:{},elapsedMs:e.elapsedMs,activeAgents:t,totalSpawned:e.progress.spawnedAgents,...e.progress.plannedItems!==void 0?{plannedAgents:e.progress.plannedItems}:{},...e.progress.agentCap!==void 0?{agentCap:e.progress.agentCap}:{},...e.tokens!==void 0?{tokenBudgetSpent:e.tokens.spent}:{},...e.tokens?.total!==void 0?{tokenBudgetTotal:e.tokens.total}:{},completedAgents:r,failedAgents:i,stoppedAgents:l,...f!==void 0?{message:f}:{},...o.locale!==void 0?{locale:o.locale}:{}}}a(Oi,"workflowLiveSnapshotFromProcess");function Kp(e){return!e.shouldRender||e.rows.length===0?[]:e.rows.map(o=>`${Vc(o.symbol)}${o.text}`)}a(Kp,"formatWorkflowLiveViewModelForTranscript");var Yc=6,Wi={en:{workflow:"workflow",phase:"phase",agent:"agent",more:"more",progress:"progress",waiting:"waiting",hint:"hint",finished:"finished",failed:"failed",stopped:"stopped",started:"started",cap:"cap",budget:"budget",spent:"spent",waitingForFirstAgent:"waiting for first agent",showStopHint:a(e=>`show: /workflow show ${e} | stop: /workflow stop ${e}`,"showStopHint"),activeAgents:a(e=>`${e} active agent${e===1?"":"s"}`,"activeAgents")},zh:{workflow:"\u5DE5\u4F5C\u6D41",phase:"\u9636\u6BB5",agent:"\u667A\u80FD\u4F53",more:"\u66F4\u591A",progress:"\u8FDB\u5EA6",waiting:"\u7B49\u5F85",hint:"\u63D0\u793A",finished:"\u5B8C\u6210",failed:"\u5931\u8D25",stopped:"\u505C\u6B62",started:"\u5DF2\u542F\u52A8",cap:"\u4E0A\u9650",budget:"\u9884\u7B97",spent:"\u5DF2\u7528",waitingForFirstAgent:"\u7B49\u5F85\u7B2C\u4E00\u4E2A\u667A\u80FD\u4F53\u542F\u52A8",showStopHint:a(e=>`\u67E5\u770B: /workflow show ${e} | \u505C\u6B62: /workflow stop ${e}`,"showStopHint"),activeAgents:a(e=>`${e} \u4E2A\u667A\u80FD\u4F53\u8FD0\u884C\u4E2D`,"activeAgents")}},Jc={shouldRender:!1,workflow:"",runId:"",activeCount:0,totalSpawned:0,completedAgents:0,failedAgents:0,stoppedAgents:0,rows:[]};function Zc(e){return e.length>14?`${e.slice(0,14)}...`:e}a(Zc,"shortRunId");function pn(e){return e==="zh"?Wi.zh:Wi.en}a(pn,"workflowLiveLabels");function Qc(e,o){let n=Math.max(0,Math.floor(e)),t=Math.floor(n/1e3),r=t%60,i=Math.floor(t/60),l=i%60,c=Math.floor(i/60);return o==="zh"?c>0?`${c}\u5C0F\u65F6${String(l).padStart(2,"0")}\u5206`:l>0?`${l}\u5206${String(r).padStart(2,"0")}\u79D2`:`${r}\u79D2`:c>0?`${c}h${l}m${r}s`:l>0?`${l}m${r}s`:`${r}s`}a(Qc,"formatElapsedMs");function Ni(e){let o=Math.max(0,Math.floor(e));return o>=1e6?`${(o/1e6).toFixed(1).replace(/\.0$/,"")}M`:o>=1e3?`${(o/1e3).toFixed(1).replace(/\.0$/,"")}k`:String(o)}a(Ni,"formatTokenCount");function ed(e){if(e.tokenBudgetSpent===void 0)return;let o=pn(e.locale),n=Ni(e.tokenBudgetSpent);if(e.tokenBudgetTotal!==void 0&&Number.isFinite(e.tokenBudgetTotal)){let t=Ni(e.tokenBudgetTotal);return e.tokenBudgetSpent<=0?`${o.budget} ${t} tokens`:`${o.spent} ${n}/${t} tokens`}if(!(e.tokenBudgetSpent<=0))return`${o.spent} ${n} tokens`}a(ed,"formatWorkflowTokenUsage");function od(e,o){let n=[],t=e.startedAt===void 0?e.elapsedMs:o-e.startedAt;t!==void 0&&n.push(Qc(t,e.locale));let r=ed(e);return r!==void 0&&n.push(r),n}a(od,"formatWorkflowHeaderMetrics");function nd(e){let o=pn(e.locale),n=e.completedAgents+e.failedAgents+e.stoppedAgents;if(e.totalSpawned===0&&n===0)return;let t=Di(e,n),r=[];e.activeAgents.length>0&&r.push(o.activeAgents(e.activeAgents.length)),e.plannedAgents!==void 0&&r.push(`${o.started} ${e.totalSpawned}`),e.failedAgents>0&&r.push(`${e.failedAgents} ${o.failed}`),e.stoppedAgents>0&&r.push(`${e.stoppedAgents} ${o.stopped}`),e.agentCap!==void 0&&r.push(`${o.cap} ${e.agentCap}`);let i=r.length===0?"":e.locale==="zh"?`\uFF08${r.join("\uFF0C")}\uFF09`:` (${r.join(", ")})`;return`${n}/${t} ${o.finished}${i}`}a(nd,"formatWorkflowProgress");function td(e){let o=pn(e.locale);if(e.totalSpawned===0)return o.waiting;let n=e.activeAgents.length,t=Di(e),r=e.locale==="zh"?`${n}/${t} \u4E2A\u667A\u80FD\u4F53\u8FD0\u884C\u4E2D`:`${n}/${t} active agent${n===1?"":"s"}`,i=[];return e.failedAgents>0&&i.push(`${e.failedAgents} ${o.failed}`),e.stoppedAgents>0&&i.push(`${e.stoppedAgents} ${o.stopped}`),i.length===0?r:e.locale==="zh"?`${r}\uFF0C${i.join("\uFF0C")}`:`${r}, ${i.join(", ")}`}a(td,"formatWorkflowCounter");function Di(e,o){let n=o??e.completedAgents+e.failedAgents+e.stoppedAgents;return Math.max(e.plannedAgents??0,e.totalSpawned,n)}a(Di,"workflowProgressDenominator");function rd(e){if(e.phase)return e.phaseIndex!==void 0&&e.phaseTotal!==void 0&&e.phaseIndex>0&&e.phaseTotal>0?`${e.phaseIndex}/${e.phaseTotal} ${e.phase}`:e.phase}a(rd,"formatWorkflowPhase");function zp(e,o=Date.now()){if(!e||e.status!=="running")return Jc;let n=[],t=pn(e.locale),r=od(e,o),i=r.length===0?"":` \xB7 ${r.join(" \xB7 ")}`;n.push({kind:"header",id:"header",symbol:t.workflow,symbolColor:e.failedAgents>0?"red":"cyan",text:`${e.workflow} (${Zc(e.runId)}) - ${t.activeAgents(e.activeAgents.length)}${i}`,isActive:!0});let l=rd(e);l&&n.push({kind:"phase",id:"phase",symbol:t.phase,symbolColor:"cyan",text:l,isActive:!0});let c=nd(e);c&&n.push({kind:"summary",id:"progress",symbol:t.progress,symbolColor:e.failedAgents>0?"red":"green",text:c,isActive:!1}),e.totalSpawned===0&&e.activeAgents.length===0&&n.push({kind:"summary",id:"waiting",symbol:t.waiting,symbolColor:"dim",text:t.waitingForFirstAgent,isActive:!1}),n.push({kind:"hint",id:"controls",symbol:t.hint,symbolColor:"dim",text:e.message??t.showStopHint(e.runId),isActive:!1});let d=n.slice(0,Yc);return{shouldRender:!0,workflow:e.workflow,runId:e.runId,...e.phase!==void 0?{phase:e.phase}:{},...e.phaseIndex!==void 0?{phaseIndex:e.phaseIndex}:{},...e.phaseTotal!==void 0?{phaseTotal:e.phaseTotal}:{},activeCount:e.activeAgents.length,totalSpawned:e.totalSpawned,...e.plannedAgents!==void 0?{plannedAgents:e.plannedAgents}:{},completedAgents:e.completedAgents,failedAgents:e.failedAgents,stoppedAgents:e.stoppedAgents,counterText:td(e),rows:d}}a(zp,"buildWorkflowLiveViewModel");function sd(e,o){return o!==0?!1:e.name==="WorkflowScriptExecutionError"||/restricted workflow script|workflow generation source|workflow command .* must|unsupported workflow command/i.test(e.message)}a(sd,"isWorkflowHarnessFailure");function Ot(e){let o=Ti(e.runId,e.canRerun),n=e.partialResultText?ze(e.partialResultText,e.runId,e.locale??"en"):void 0,t=n?["","Partial results before failure:",n]:[];return sd(e.error,e.totalSpawned)?[`Workflow harness failed before launching child agents (${e.runId}): ${e.error.message}`,"This points to an invalid generated workflow script or saved capsule, not a failed child-agent task.",...t,o].join(`
171
+ `));return}}a(Mi,"prepareSavedWorkflow");function Ot(e){let o=e.data?.status;return typeof o=="string"?o:void 0}a(Ot,"workflowEventStatus");function pn(e){let o=e.data?.name??e.data?.taskId??"",n=Ot(e);switch(e.type){case"phase_started":return` > phase: ${e.data?.name??""}`;case"phase_finished":return` done phase: ${e.data?.name??""}`;case"agent_spawned":return` + ${o}`;case"agent_completed":return n==="failed"?` failed ${o}`:n==="completed_unverified"?` unverified ${o}`:` done ${o}`;case"agent_unverified":return` unverified ${o}`;case"agent_failed":return` failed ${o}`;case"agent_stopped":return` stopped ${o}`;case"workflow_log":return` log ${e.data?.message??""}`;case"artifact_written":return` artifact ${e.data?.name??""}`;case"synthesis_completed":return" synthesis complete";case"workflow_completed":return" workflow completed";case"workflow_stopped":return" workflow stopped";case"workflow_failed":return` workflow failed: ${e.data?.error??"unknown error"}`;default:return}}a(pn,"formatWorkflowEvent");function Li(e){let o=pn(e);o&&console.log(E.dim(o))}a(Li,"renderWorkflowEvent");import wn from"chalk";import zc from"string-width";var Xc=9;function Vc(e,o=Xc){let n=zc(e);return n>=o?e:`${e}${" ".repeat(o-n)}`}a(Vc,"padWorkflowLiveSymbol");function Ni(e,o={}){let n=e.items.filter(m=>m.kind==="agent"),t=n.filter(m=>m.status==="running").map(m=>m.title),r=n.filter(m=>m.status==="completed").length,i=n.filter(m=>m.status==="failed").length,l=n.filter(m=>m.status==="cancelled").length,c=e.status==="completed"?"completed":e.status==="failed"?"failed":e.status==="cancelled"?"stopped":"running",d=e.activePhaseId===void 0?void 0:e.items.find(m=>m.id===e.activePhaseId)?.title,u=Date.parse(e.startedAt),f=o.message??e.latestMessage;return{runId:e.runId,workflow:e.displayName??e.workflowName,status:c,...d!==void 0?{phase:d}:{},...e.activePhaseIndex!==void 0?{phaseIndex:e.activePhaseIndex}:{},...e.phaseCount!==void 0?{phaseTotal:e.phaseCount}:{},...Number.isFinite(u)?{startedAt:u}:{},elapsedMs:e.elapsedMs,activeAgents:t,totalSpawned:e.progress.spawnedAgents,...e.progress.plannedItems!==void 0?{plannedAgents:e.progress.plannedItems}:{},...e.progress.agentCap!==void 0?{agentCap:e.progress.agentCap}:{},...e.tokens!==void 0?{tokenBudgetSpent:e.tokens.spent}:{},...e.tokens?.total!==void 0?{tokenBudgetTotal:e.tokens.total}:{},completedAgents:r,failedAgents:i,stoppedAgents:l,...f!==void 0?{message:f}:{},...o.locale!==void 0?{locale:o.locale}:{}}}a(Ni,"workflowLiveSnapshotFromProcess");function Kp(e){return!e.shouldRender||e.rows.length===0?[]:e.rows.map(o=>`${Vc(o.symbol)}${o.text}`)}a(Kp,"formatWorkflowLiveViewModelForTranscript");var Yc=6,Wi={en:{workflow:"workflow",phase:"phase",agent:"agent",more:"more",progress:"progress",waiting:"waiting",hint:"hint",finished:"finished",failed:"failed",stopped:"stopped",started:"started",cap:"cap",budget:"budget",spent:"spent",waitingForFirstAgent:"waiting for first agent",showStopHint:a(e=>`show: /workflow show ${e} | stop: /workflow stop ${e}`,"showStopHint"),activeAgents:a(e=>`${e} active agent${e===1?"":"s"}`,"activeAgents")},zh:{workflow:"\u5DE5\u4F5C\u6D41",phase:"\u9636\u6BB5",agent:"\u667A\u80FD\u4F53",more:"\u66F4\u591A",progress:"\u8FDB\u5EA6",waiting:"\u7B49\u5F85",hint:"\u63D0\u793A",finished:"\u5B8C\u6210",failed:"\u5931\u8D25",stopped:"\u505C\u6B62",started:"\u5DF2\u542F\u52A8",cap:"\u4E0A\u9650",budget:"\u9884\u7B97",spent:"\u5DF2\u7528",waitingForFirstAgent:"\u7B49\u5F85\u7B2C\u4E00\u4E2A\u667A\u80FD\u4F53\u542F\u52A8",showStopHint:a(e=>`\u67E5\u770B: /workflow show ${e} | \u505C\u6B62: /workflow stop ${e}`,"showStopHint"),activeAgents:a(e=>`${e} \u4E2A\u667A\u80FD\u4F53\u8FD0\u884C\u4E2D`,"activeAgents")}},Jc={shouldRender:!1,workflow:"",runId:"",activeCount:0,totalSpawned:0,completedAgents:0,failedAgents:0,stoppedAgents:0,rows:[]};function Zc(e){return e.length>14?`${e.slice(0,14)}...`:e}a(Zc,"shortRunId");function gn(e){return e==="zh"?Wi.zh:Wi.en}a(gn,"workflowLiveLabels");function Qc(e,o){let n=Math.max(0,Math.floor(e)),t=Math.floor(n/1e3),r=t%60,i=Math.floor(t/60),l=i%60,c=Math.floor(i/60);return o==="zh"?c>0?`${c}\u5C0F\u65F6${String(l).padStart(2,"0")}\u5206`:l>0?`${l}\u5206${String(r).padStart(2,"0")}\u79D2`:`${r}\u79D2`:c>0?`${c}h${l}m${r}s`:l>0?`${l}m${r}s`:`${r}s`}a(Qc,"formatElapsedMs");function Oi(e){let o=Math.max(0,Math.floor(e));return o>=1e6?`${(o/1e6).toFixed(1).replace(/\.0$/,"")}M`:o>=1e3?`${(o/1e3).toFixed(1).replace(/\.0$/,"")}k`:String(o)}a(Oi,"formatTokenCount");function ed(e){if(e.tokenBudgetSpent===void 0)return;let o=gn(e.locale),n=Oi(e.tokenBudgetSpent);if(e.tokenBudgetTotal!==void 0&&Number.isFinite(e.tokenBudgetTotal)){let t=Oi(e.tokenBudgetTotal);return e.tokenBudgetSpent<=0?`${o.budget} ${t} tokens`:`${o.spent} ${n}/${t} tokens`}if(!(e.tokenBudgetSpent<=0))return`${o.spent} ${n} tokens`}a(ed,"formatWorkflowTokenUsage");function od(e,o){let n=[],t=e.startedAt===void 0?e.elapsedMs:o-e.startedAt;t!==void 0&&n.push(Qc(t,e.locale));let r=ed(e);return r!==void 0&&n.push(r),n}a(od,"formatWorkflowHeaderMetrics");function nd(e){let o=gn(e.locale),n=e.completedAgents+e.failedAgents+e.stoppedAgents;if(e.totalSpawned===0&&n===0)return;let t=Di(e,n),r=[];e.activeAgents.length>0&&r.push(o.activeAgents(e.activeAgents.length)),e.plannedAgents!==void 0&&r.push(`${o.started} ${e.totalSpawned}`),e.failedAgents>0&&r.push(`${e.failedAgents} ${o.failed}`),e.stoppedAgents>0&&r.push(`${e.stoppedAgents} ${o.stopped}`),e.agentCap!==void 0&&r.push(`${o.cap} ${e.agentCap}`);let i=r.length===0?"":e.locale==="zh"?`\uFF08${r.join("\uFF0C")}\uFF09`:` (${r.join(", ")})`;return`${n}/${t} ${o.finished}${i}`}a(nd,"formatWorkflowProgress");function td(e){let o=gn(e.locale);if(e.totalSpawned===0)return o.waiting;let n=e.activeAgents.length,t=Di(e),r=e.locale==="zh"?`${n}/${t} \u4E2A\u667A\u80FD\u4F53\u8FD0\u884C\u4E2D`:`${n}/${t} active agent${n===1?"":"s"}`,i=[];return e.failedAgents>0&&i.push(`${e.failedAgents} ${o.failed}`),e.stoppedAgents>0&&i.push(`${e.stoppedAgents} ${o.stopped}`),i.length===0?r:e.locale==="zh"?`${r}\uFF0C${i.join("\uFF0C")}`:`${r}, ${i.join(", ")}`}a(td,"formatWorkflowCounter");function Di(e,o){let n=o??e.completedAgents+e.failedAgents+e.stoppedAgents;return Math.max(e.plannedAgents??0,e.totalSpawned,n)}a(Di,"workflowProgressDenominator");function rd(e){if(e.phase)return e.phaseIndex!==void 0&&e.phaseTotal!==void 0&&e.phaseIndex>0&&e.phaseTotal>0?`${e.phaseIndex}/${e.phaseTotal} ${e.phase}`:e.phase}a(rd,"formatWorkflowPhase");function zp(e,o=Date.now()){if(!e||e.status!=="running")return Jc;let n=[],t=gn(e.locale),r=od(e,o),i=r.length===0?"":` \xB7 ${r.join(" \xB7 ")}`;n.push({kind:"header",id:"header",symbol:t.workflow,symbolColor:e.failedAgents>0?"red":"cyan",text:`${e.workflow} (${Zc(e.runId)}) - ${t.activeAgents(e.activeAgents.length)}${i}`,isActive:!0});let l=rd(e);l&&n.push({kind:"phase",id:"phase",symbol:t.phase,symbolColor:"cyan",text:l,isActive:!0});let c=nd(e);c&&n.push({kind:"summary",id:"progress",symbol:t.progress,symbolColor:e.failedAgents>0?"red":"green",text:c,isActive:!1}),e.totalSpawned===0&&e.activeAgents.length===0&&n.push({kind:"summary",id:"waiting",symbol:t.waiting,symbolColor:"dim",text:t.waitingForFirstAgent,isActive:!1}),n.push({kind:"hint",id:"controls",symbol:t.hint,symbolColor:"dim",text:e.message??t.showStopHint(e.runId),isActive:!1});let d=n.slice(0,Yc);return{shouldRender:!0,workflow:e.workflow,runId:e.runId,...e.phase!==void 0?{phase:e.phase}:{},...e.phaseIndex!==void 0?{phaseIndex:e.phaseIndex}:{},...e.phaseTotal!==void 0?{phaseTotal:e.phaseTotal}:{},activeCount:e.activeAgents.length,totalSpawned:e.totalSpawned,...e.plannedAgents!==void 0?{plannedAgents:e.plannedAgents}:{},completedAgents:e.completedAgents,failedAgents:e.failedAgents,stoppedAgents:e.stoppedAgents,counterText:td(e),rows:d}}a(zp,"buildWorkflowLiveViewModel");function sd(e,o){return o!==0?!1:e.name==="WorkflowScriptExecutionError"||/restricted workflow script|workflow generation source|workflow command .* must|unsupported workflow command/i.test(e.message)}a(sd,"isWorkflowHarnessFailure");function Nt(e){let o=Ci(e.runId,e.canRerun),n=e.partialResultText?ze(e.partialResultText,e.runId,e.locale??"en"):void 0,t=n?["","Partial results before failure:",n]:[];return sd(e.error,e.totalSpawned)?[`Workflow harness failed before launching child agents (${e.runId}): ${e.error.message}`,"This points to an invalid generated workflow script or saved capsule, not a failed child-agent task.",...t,o].join(`
172
172
  `):[`Workflow failed (${e.runId}): ${e.error.message}`,...t,o].join(`
173
- `)}a(Ot,"formatWorkflowFailedMessage");function id(e,o,n){return Xe(e.artifacts,o,n)??vo(e.events,n)}a(id,"formatWorkflowFailurePartialResult");function wn(e){let o=e?.usage;if(typeof o!="object"||o===null)return 0;let n=o,t=n.totalTokens;if(typeof t=="number"&&Number.isFinite(t)&&t>0)return t;let r=n.inputTokens,i=n.outputTokens,l=typeof r=="number"&&Number.isFinite(r)&&r>0?r:0,c=typeof i=="number"&&Number.isFinite(i)&&i>0?i:0;return l+c}a(wn,"readWorkflowEventUsageTokens");function D(e,o){if(e.onWorkflowRunMessage){e.onWorkflowRunMessage(o);return}if(o.type==="error"){console.log(gn.red(`
173
+ `)}a(Nt,"formatWorkflowFailedMessage");function id(e,o,n){return Xe(e.artifacts,o,n)??vo(e.events,n)}a(id,"formatWorkflowFailurePartialResult");function hn(e){let o=e?.usage;if(typeof o!="object"||o===null)return 0;let n=o,t=n.totalTokens;if(typeof t=="number"&&Number.isFinite(t)&&t>0)return t;let r=n.inputTokens,i=n.outputTokens,l=typeof r=="number"&&Number.isFinite(r)&&r>0?r:0,c=typeof i=="number"&&Number.isFinite(i)&&i>0?i:0;return l+c}a(hn,"readWorkflowEventUsageTokens");function D(e,o){if(e.onWorkflowRunMessage){e.onWorkflowRunMessage(o);return}if(o.type==="error"){console.log(wn.red(`
174
174
  ${o.text}
175
- `));return}if(o.type==="success"){console.log(gn.green(`
175
+ `));return}if(o.type==="success"){console.log(wn.green(`
176
176
  ${o.text}
177
- `));return}if(o.type==="event"){console.log(gn.dim(o.text));return}if(o.type==="assistant"){console.log(`
177
+ `));return}if(o.type==="event"){console.log(wn.dim(o.text));return}if(o.type==="assistant"){console.log(`
178
178
  ${o.text}
179
- `);return}console.log(gn.dim(`
179
+ `);return}console.log(wn.dim(`
180
180
  ${o.text}
181
- `))}a(D,"emitWorkflowRunMessage");function Ye(e,o,n={}){let t=n.presentation==="agentic"?sn(n.runId??"current"):void 0,r=!1;return i=>{if(r&&(i.type==="agent_completed"||i.type==="agent_unverified"||i.type==="agent_failed"||i.type==="agent_summary_updated"))return;o?.onEvent(i);let l=mn(i);if(e.onWorkflowRunMessage){if(l&&D(e,{type:"event",text:l}),t){let c=t(i,n.locale??"en");c&&D(e,{type:"assistant",text:c,final:!1})}(i.type==="workflow_completed"||i.type==="workflow_failed"||i.type==="workflow_stopped")&&(r=!0);return}(i.type==="workflow_completed"||i.type==="workflow_failed"||i.type==="workflow_stopped")&&(r=!0),l&&Li(i)}}a(Ye,"workflowEventSink");function Je(e,o,n){return e.subscribeWorkflowProcess(t=>{t.snapshot.runId===n&&o.onProcessEvent(t)})}a(Je,"subscribeWorkflowLiveProcess");function Pe(e,o,n,t="en"){let r=Date.now(),i=new Map,l,c=0,d=0,u=0,f=0,m=0,y=!1,v=n.phases??[],k=n.tokenBudget!==void 0&&Number.isFinite(n.tokenBudget)?n.tokenBudget:void 0,$=a((g,b)=>{let I=l===void 0?-1:v.indexOf(l),M=I>=0?I+1:void 0,V=v.length>0?v.length:void 0;e.onWorkflowRunUpdate?.({runId:o,workflow:n.name,status:g,...l!==void 0?{phase:l}:{},...M!==void 0?{phaseIndex:M}:{},...V!==void 0?{phaseTotal:V}:{},startedAt:r,elapsedMs:Math.max(0,Date.now()-r),activeAgents:[...i.values()],totalSpawned:c,...n.plannedAgents!==void 0?{plannedAgents:n.plannedAgents}:{},...n.maxAgents!==void 0?{agentCap:n.maxAgents}:{},tokenBudgetSpent:m,...k!==void 0?{tokenBudgetTotal:k}:{},completedAgents:d,failedAgents:u,stoppedAgents:f,...b!==void 0?{message:b}:{},locale:t})},"emit");return{running:a(g=>{y||$("running",g)},"running"),onProcessEvent:a(g=>{if(y&&g.type!=="workflow_finished")return;let b=g.snapshot.status;(g.type==="workflow_finished"||b==="completed"||b==="failed"||b==="cancelled")&&(y=!0);let I=g.type==="workflow_updated"?g.message:void 0;e.onWorkflowRunUpdate?.(Oi(g.snapshot,I===void 0?{locale:t}:{locale:t,message:I}))},"onProcessEvent"),onEvent:a(g=>{if(!y)switch(g.type){case"phase_started":{let b=g.data?.name;l=typeof b=="string"?b:l,$("running");break}case"agent_spawned":{let b=typeof g.data?.taskId=="string"?g.data.taskId:`task-${c+1}`,I=typeof g.data?.name=="string"?g.data.name:b;i.set(b,I),c+=1,$("running");break}case"agent_completed":{let b=typeof g.data?.taskId=="string"?g.data.taskId:void 0;b&&i.delete(b),m+=wn(g.data),Nt(g)==="failed"?u+=1:d+=1,$("running");break}case"agent_unverified":{let b=typeof g.data?.taskId=="string"?g.data.taskId:void 0;b&&i.delete(b),m+=wn(g.data),d+=1,$("running");break}case"agent_failed":{let b=typeof g.data?.taskId=="string"?g.data.taskId:void 0;b&&i.delete(b),m+=wn(g.data),u+=1,$("running");break}case"agent_stopped":{let b=typeof g.data?.taskId=="string"?g.data.taskId:void 0;b&&i.delete(b),m+=wn(g.data),f+=1,$("running");break}case"synthesis_completed":{$("running","synthesis complete");break}default:break}},"onEvent"),complete:a((g,b)=>{y||(y=!0,$(g,b))},"complete")}}a(Pe,"createWorkflowLiveUpdateEmitter");function _e(e,o,n,t,r={}){e.done.then(i=>{if(i.kind==="failed"){if(e.getSnapshot?.()?.status==="stopped"){t?.complete("stopped","Workflow stopped by user.");return}let l=r.locale??"en",c={full:r.presentation==="agentic"},d=id(i.state,l,c),u=Ot({runId:n,error:i.error,canRerun:r.canRerun===!0,totalSpawned:i.state.totalSpawned,...d!==void 0?{partialResultText:d}:{},locale:l});t?.complete("failed",i.error.message),D(o,{type:"error",text:r.presentation==="agentic"&&d!==void 0?Ot({runId:n,error:i.error,canRerun:r.canRerun===!0,totalSpawned:i.state.totalSpawned,locale:l}):u}),r.presentation==="agentic"&&d!==void 0&&D(o,{type:"assistant",text:u,final:!0});return}if(i.kind==="completed"){let l=r.locale??"en",c={full:r.presentation==="agentic"},d=he(i.result,c)??Xe(i.state.artifacts,l,c),u=d===void 0?vo(i.state.events,c):void 0,f=d??u;if(t?.complete("completed",f?"completed with result":"completed"),r.presentation==="agentic"){D(o,{type:"assistant",text:vt({runId:n,totalSpawned:i.state.totalSpawned,...f!==void 0?{resultText:f}:{},...d===void 0&&u!==void 0?{isFallbackPreview:!0}:{},locale:l}),final:!0});return}D(o,{type:"success",text:[`Workflow completed (${i.state.totalSpawned} agents, run ${n}).`,`Use /workflow show ${n} for the event timeline.`].join(`
181
+ `))}a(D,"emitWorkflowRunMessage");function Ye(e,o,n={}){let t=n.presentation==="agentic"?an(n.runId??"current"):void 0,r=!1;return i=>{if(r&&(i.type==="agent_completed"||i.type==="agent_unverified"||i.type==="agent_failed"||i.type==="agent_summary_updated"))return;o?.onEvent(i);let l=pn(i);if(e.onWorkflowRunMessage){if(l&&D(e,{type:"event",text:l}),t){let c=t(i,n.locale??"en");c&&D(e,{type:"assistant",text:c,final:!1})}(i.type==="workflow_completed"||i.type==="workflow_failed"||i.type==="workflow_stopped")&&(r=!0);return}(i.type==="workflow_completed"||i.type==="workflow_failed"||i.type==="workflow_stopped")&&(r=!0),l&&Li(i)}}a(Ye,"workflowEventSink");function Je(e,o,n){return e.subscribeWorkflowProcess(t=>{t.snapshot.runId===n&&o.onProcessEvent(t)})}a(Je,"subscribeWorkflowLiveProcess");function Pe(e,o,n,t="en"){let r=Date.now(),i=new Map,l,c=0,d=0,u=0,f=0,m=0,y=!1,v=n.phases??[],k=n.tokenBudget!==void 0&&Number.isFinite(n.tokenBudget)?n.tokenBudget:void 0,$=a((g,b)=>{let I=l===void 0?-1:v.indexOf(l),M=I>=0?I+1:void 0,V=v.length>0?v.length:void 0;e.onWorkflowRunUpdate?.({runId:o,workflow:n.name,status:g,...l!==void 0?{phase:l}:{},...M!==void 0?{phaseIndex:M}:{},...V!==void 0?{phaseTotal:V}:{},startedAt:r,elapsedMs:Math.max(0,Date.now()-r),activeAgents:[...i.values()],totalSpawned:c,...n.plannedAgents!==void 0?{plannedAgents:n.plannedAgents}:{},...n.maxAgents!==void 0?{agentCap:n.maxAgents}:{},tokenBudgetSpent:m,...k!==void 0?{tokenBudgetTotal:k}:{},completedAgents:d,failedAgents:u,stoppedAgents:f,...b!==void 0?{message:b}:{},locale:t})},"emit");return{running:a(g=>{y||$("running",g)},"running"),onProcessEvent:a(g=>{if(y&&g.type!=="workflow_finished")return;let b=g.snapshot.status;(g.type==="workflow_finished"||b==="completed"||b==="failed"||b==="cancelled")&&(y=!0);let I=g.type==="workflow_updated"?g.message:void 0;e.onWorkflowRunUpdate?.(Ni(g.snapshot,I===void 0?{locale:t}:{locale:t,message:I}))},"onProcessEvent"),onEvent:a(g=>{if(!y)switch(g.type){case"phase_started":{let b=g.data?.name;l=typeof b=="string"?b:l,$("running");break}case"agent_spawned":{let b=typeof g.data?.taskId=="string"?g.data.taskId:`task-${c+1}`,I=typeof g.data?.name=="string"?g.data.name:b;i.set(b,I),c+=1,$("running");break}case"agent_completed":{let b=typeof g.data?.taskId=="string"?g.data.taskId:void 0;b&&i.delete(b),m+=hn(g.data),Ot(g)==="failed"?u+=1:d+=1,$("running");break}case"agent_unverified":{let b=typeof g.data?.taskId=="string"?g.data.taskId:void 0;b&&i.delete(b),m+=hn(g.data),d+=1,$("running");break}case"agent_failed":{let b=typeof g.data?.taskId=="string"?g.data.taskId:void 0;b&&i.delete(b),m+=hn(g.data),u+=1,$("running");break}case"agent_stopped":{let b=typeof g.data?.taskId=="string"?g.data.taskId:void 0;b&&i.delete(b),m+=hn(g.data),f+=1,$("running");break}case"synthesis_completed":{$("running","synthesis complete");break}default:break}},"onEvent"),complete:a((g,b)=>{y||(y=!0,$(g,b))},"complete")}}a(Pe,"createWorkflowLiveUpdateEmitter");function _e(e,o,n,t,r={}){e.done.then(i=>{if(i.kind==="failed"){if(e.getSnapshot?.()?.status==="stopped"){t?.complete("stopped","Workflow stopped by user.");return}let l=r.locale??"en",c={full:r.presentation==="agentic"},d=id(i.state,l,c),u=Nt({runId:n,error:i.error,canRerun:r.canRerun===!0,totalSpawned:i.state.totalSpawned,...d!==void 0?{partialResultText:d}:{},locale:l});t?.complete("failed",i.error.message),D(o,{type:"error",text:r.presentation==="agentic"&&d!==void 0?Nt({runId:n,error:i.error,canRerun:r.canRerun===!0,totalSpawned:i.state.totalSpawned,locale:l}):u}),r.presentation==="agentic"&&d!==void 0&&D(o,{type:"assistant",text:u,final:!0});return}if(i.kind==="completed"){let l=r.locale??"en",c={full:r.presentation==="agentic"},d=he(i.result,c)??Xe(i.state.artifacts,l,c),u=d===void 0?vo(i.state.events,c):void 0,f=d??u;if(t?.complete("completed",f?"completed with result":"completed"),r.presentation==="agentic"){D(o,{type:"assistant",text:vt({runId:n,totalSpawned:i.state.totalSpawned,...f!==void 0?{resultText:f}:{},...d===void 0&&u!==void 0?{isFallbackPreview:!0}:{},locale:l}),final:!0});return}D(o,{type:"success",text:[`Workflow completed (${i.state.totalSpawned} agents, run ${n}).`,`Use /workflow show ${n} for the event timeline.`].join(`
182
182
  `)}),f&&D(o,{type:"info",text:`Workflow result:
183
- ${f}`})}}).catch(i=>{let l=i instanceof Error?i.message:String(i);if(e.getSnapshot?.()?.status==="stopped"){t?.complete("stopped","Workflow stopped by user.");return}t?.complete("failed",l),D(o,{type:"error",text:Ot({runId:n,error:i instanceof Error?i:new Error(l),canRerun:r.canRerun===!0})})})}a(_e,"observeManagedWorkflowDone");function Me(e,o){e.done.finally(()=>{try{o()}catch{}}).catch(()=>{})}a(Me,"unsubscribeWorkflowLiveProcessOnDone");function ke(e,o){if(e.onBuilderEvent?.(o),o.stage==="failed"){D(e.callbacks,{type:"error",text:`Workflow builder failed: ${o.message}`});return}!e.onBuilderEvent&&(o.stage==="started"||o.stage==="generating"||o.stage==="validating"||o.stage==="ready")&&console.log(hn.dim(`
183
+ ${f}`})}}).catch(i=>{let l=i instanceof Error?i.message:String(i);if(e.getSnapshot?.()?.status==="stopped"){t?.complete("stopped","Workflow stopped by user.");return}t?.complete("failed",l),D(o,{type:"error",text:Nt({runId:n,error:i instanceof Error?i:new Error(l),canRerun:r.canRerun===!0})})})}a(_e,"observeManagedWorkflowDone");function Me(e,o){e.done.finally(()=>{try{o()}catch{}}).catch(()=>{})}a(Me,"unsubscribeWorkflowLiveProcessOnDone");function ke(e,o){if(e.onBuilderEvent?.(o),o.stage==="failed"){D(e.callbacks,{type:"error",text:`Workflow builder failed: ${o.message}`});return}!e.onBuilderEvent&&(o.stage==="started"||o.stage==="generating"||o.stage==="validating"||o.stage==="ready")&&console.log(yn.dim(`
184
184
  [workflow] ${o.message}
185
- `))}a(ke,"emitWorkflowBuilderEvent");function xo(e){return{source:e.source,displayName:e.displayName,...e.goal!==void 0?{goal:e.goal}:{},...e.savedWorkflowName!==void 0?{savedWorkflowName:e.savedWorkflowName}:{},...e.sourceRunId!==void 0?{sourceRunId:e.sourceRunId}:{},...e.sourceWorkflowName!==void 0?{sourceWorkflowName:e.sourceWorkflowName}:{},...e.revisionOf!==void 0?{revisionOf:e.revisionOf}:{},...e.hostMetadata!==void 0?{hostMetadata:{...e.hostMetadata}}:{}}}a(xo,"buildWorkflowProcessMetadata");async function ld(e){let o=e.approval==="required"?Ie(e.callbacks):void 0;if(e.approval==="required"&&!o)return console.log(hn.red(`
185
+ `))}a(ke,"emitWorkflowBuilderEvent");function xo(e){return{source:e.source,displayName:e.displayName,...e.goal!==void 0?{goal:e.goal}:{},...e.savedWorkflowName!==void 0?{savedWorkflowName:e.savedWorkflowName}:{},...e.sourceRunId!==void 0?{sourceRunId:e.sourceRunId}:{},...e.sourceWorkflowName!==void 0?{sourceWorkflowName:e.sourceWorkflowName}:{},...e.revisionOf!==void 0?{revisionOf:e.revisionOf}:{},...e.hostMetadata!==void 0?{hostMetadata:{...e.hostMetadata}}:{}}}a(xo,"buildWorkflowProcessMetadata");async function ld(e){let o=e.approval==="required"?Ie(e.callbacks):void 0;if(e.approval==="required"&&!o)return console.log(yn.red(`
186
186
  [workflow] refusing to start a workflow without an interactive approval channel.
187
- `)),"failed";let n=e.callbacks.createKodaXOptions;if(!n)return console.log(hn.red(`
187
+ `)),"failed";let n=e.callbacks.createKodaXOptions;if(!n)return console.log(yn.red(`
188
188
  [workflow] cannot start - REPL options unavailable in this context.
189
- `)),"failed";let t=Te(e.request),r,i;try{if(ke(e,{stage:"started",message:"Workflow builder started"}),r=n(),e.builtin){let g=Oo(e.builtin.name);if(!g)throw new Error(`unknown built-in workflow: ${e.builtin.name}`);i={module:g,args:e.builtin.args,approvalDescription:g.meta.description,mayUseWorktree:!1,sandbox:"built-in"}}else{ke(e,{stage:"generating",message:"Workflow - generating harness"});let b=await(e.generateWorkflow??No)({request:e.request,options:r});if(b.kind==="declined")return ke(e,{stage:"declined",message:b.reason}),console.log(hn.dim(`
189
+ `)),"failed";let t=Ce(e.request),r,i;try{if(ke(e,{stage:"started",message:"Workflow builder started"}),r=n(),e.builtin){let g=Do(e.builtin.name);if(!g)throw new Error(`unknown built-in workflow: ${e.builtin.name}`);i={module:g,args:e.builtin.args,approvalDescription:g.meta.description,mayUseWorktree:!1,sandbox:"built-in"}}else{ke(e,{stage:"generating",message:"Workflow - generating harness"});let b=await(e.generateWorkflow??No)({request:e.request,options:r});if(b.kind==="declined")return ke(e,{stage:"declined",message:b.reason}),console.log(yn.dim(`
190
190
  Workflow not created: ${b.reason}
191
191
  `)),"declined";i={module:b.module,args:{request:e.request},approvalDescription:b.approvalSummary,mayUseWorktree:b.manifest.mayUseWorktree===!0,sandbox:"capability-generated",scriptSnapshot:b.scriptSnapshot,rawScript:b.scriptSnapshot.source}}ke(e,{stage:"validating",message:"Workflow - validating harness"})}catch(g){let b=g instanceof Error?g.message:String(g);return ke(e,{stage:"failed",message:b}),"failed"}ke(e,{stage:"ready",message:"Workflow - harness ready"});let l=e.presentation??"command",c=Se(i.module);l!=="agentic"&&D(e.callbacks,{type:"info",text:`${e.builtin?"Built-in":"Generated"} workflow: ${i.approvalDescription}`});let d=Ee(process.cwd()).key,u=e.runBaseDir??H("workflow-runs",d),f=e.runManager??Fe(),m=`run-${Date.now().toString(36)}`,y=ad(u,m);if(o){if(!await o(ae(c,{source:e.sourceLabel??"generated",sandbox:i.sandbox,mayUseWorktree:i.mayUseWorktree,...i.rawScript!==void 0?{rawScript:i.rawScript}:{}})))return ke(e,{stage:"cancelled",message:"Workflow cancelled"}),D(e.callbacks,{type:"info",text:"Workflow cancelled."}),"cancelled"}else l!=="agentic"&&(D(e.callbacks,{type:"info",text:ae(c,{source:e.sourceLabel??"generated",sandbox:i.sandbox,mayUseWorktree:i.mayUseWorktree})}),D(e.callbacks,{type:"info",text:`Auto-started ${e.builtin?"built-in":"generated"} workflow (${i.sandbox}); normal permission gates still apply.`}));l==="agentic"?D(e.callbacks,{type:"assistant",text:$t({runId:m,summary:c,approvalSummary:i.approvalDescription,locale:t}),final:!1}):D(e.callbacks,{type:"info",text:`Started workflow ${i.module.meta.name} (${m}). Use /workflow show ${m} for status.`});let v=Pe(e.callbacks,m,i.module.meta,t);v.running(`Use /workflow show ${m} for status or /workflow stop ${m} to stop.`);let k=Je(f,v,m),$=f.startFromOptions({module:i.module,args:i.args,options:r,runId:m,runDir:y,...i.scriptSnapshot!==void 0?{scriptSnapshot:i.scriptSnapshot}:{},processMetadata:xo({source:e.processSource??"command",displayName:i.module.meta.name,goal:e.request,hostMetadata:{workflowAuthorship:"kodax-generated"}}),onEvent:Ye(e.callbacks,void 0,{presentation:e.presentation??"command",locale:t,runId:m})});return Me($,k),ke(e,{stage:"launched",message:`Workflow ${i.module.meta.name} started`}),_e($,e.callbacks,m,v,{canRerun:!0,presentation:l,locale:t}),"started"}a(ld,"startGeneratedWorkflowFromRequest");function Dt(e){let o=e[0]?.toLowerCase();if(o==="help"||o==="--help"||o==="-h")return{kind:"help"};if(!o||o==="list")return{kind:"list"};if(o==="runs")return{kind:"runs",rawArgs:e.slice(1)};if(o==="show"){let n=e.slice(1),t=n.includes("--full"),r=n.find(i=>i!=="--full")??"";return t?{kind:"show",runId:r,full:!0}:{kind:"show",runId:r}}if(o==="pause")return{kind:"pause",runId:e[1]??""};if(o==="resume")return{kind:"resume",runId:e[1]??""};if(o==="stop")return{kind:"stop",runId:e[1]??""};if(o==="delete"){let n=e.slice(1),t=n.includes("--force"),r=n.includes("--saved"),i=n.includes("--run"),l=n.find(d=>d!=="--force"&&d!=="--saved"&&d!=="--run")??"",c=r&&i?"conflict":r?"saved":i?"run":void 0;return{kind:"delete",target:l,...t?{force:!0}:{},...c?{scope:c}:{}}}if(o==="prune")return{kind:"prune",rawArgs:e.slice(1)};if(o==="save")return{kind:"save",runId:e[1]??"",name:e[2]??""};if(o==="rename")return{kind:"rename",target:e[1]??"",newName:e.slice(2).join(" ").trim()};if(o==="revise"){let n=e.slice(1),t=n.includes("--replace"),r=n.filter(i=>i!=="--replace");return{kind:"revise",target:r[0]??"",request:r.slice(1).join(" ").trim(),...t?{replace:!0}:{}}}return o==="rerun"?{kind:"rerun",runId:e[1]??"",rawArgs:e.slice(2).join(" ").trim()}:o==="create"?{kind:"create",request:e.slice(1).join(" ").trim()}:{kind:"start",name:e[0],rawArgs:e.slice(1).join(" ").trim()}}a(Dt,"parseWorkflowInvocation");function Ao(e){let o=e.trim();if(!o)return{};if(o.startsWith("{"))try{return JSON.parse(o)}catch{return{question:o}}return{question:o}}a(Ao,"parseWorkflowArgs");function Ut(e){return["Revise this existing KodaX dynamic workflow capsule.","Return a complete revised workflow, not a patch.","Preserve the reusable workflow intent, safety requirements, and compatible args shape unless the requested change explicitly requires otherwise.","",`Target: ${e.target}`,"","Original manifest:",JSON.stringify(e.capsule.manifest,null,2),"","Original source:","```js",e.capsule.source,"```","",`Change request: ${e.changeRequest}`].join(`
192
- `)}a(Ut,"buildWorkflowRevisionRequest");function Ui(e){if(!e)return;let o=Number(e);return Number.isInteger(o)&&o>=0?o:void 0}a(Ui,"parseNonNegativeInteger");function jt(e){let o=!1,n=20;for(let t=0;t<e.length;t+=1){let r=e[t];if(r==="--all"){o=!0;continue}if(r==="--limit"){let i=Ui(e[t+1]);if(i===void 0||i<1)return{all:o,limit:n,error:"--limit expects a positive integer"};n=Math.min(i,200),t+=1;continue}return{all:o,limit:n,error:`unknown option: ${r??""}`}}return{all:o,limit:n}}a(jt,"parseWorkflowRunsOptions");function cd(e){if(!e)return;let o=/^(\d+)([dh]?)$/i.exec(e.trim());if(!o)return;let n=Number(o[1]);return!Number.isInteger(n)||n<=0?void 0:(o[2]?.toLowerCase()||"d")==="h"?n*60*60*1e3:n*24*60*60*1e3}a(cd,"parseOlderThanMs");function Ft(e){let o=!1,n,t;for(let r=0;r<e.length;r+=1){let i=e[r];if(i==="--dry-run"){o=!0;continue}if(i==="--keep"){let l=Ui(e[r+1]);if(l===void 0)return{dryRun:o,error:"--keep expects a non-negative integer"};n=l,r+=1;continue}if(i==="--older-than"){let l=cd(e[r+1]);if(l===void 0)return{dryRun:o,error:"--older-than expects a value like 7d or 24h"};t=l,r+=1;continue}return{dryRun:o,error:`unknown option: ${i??""}`}}return o&&n===void 0&&t===void 0?{dryRun:o,keep:50}:{dryRun:o,...n!==void 0?{keep:n}:{},...t!==void 0?{olderThanMs:t}:{}}}a(Ft,"parseWorkflowPruneOptions");var dd=1440*60*1e3;function ud(e){return new Map(e.map(o=>[o.runId,o]))}a(ud,"processSnapshotsByRunId");function fd(e){return{dryRun:e.dryRun,...e.keep!==void 0?{keep:e.keep}:{},...e.olderThanMs!==void 0?{olderThanDays:e.olderThanMs/dd}:{}}}a(fd,"workflowPruneRetentionOptions");function md(e,o){let n=new Map(e.map(t=>[t.runId,t]));return o.map(t=>{let r=n.get(t);return{runId:t,workflow:r?.workflow??"?",status:r?.status??"?",endedAt:r?.endedAt??0}})}a(md,"workflowPruneCandidateSummaries");function Fi(e){return xo({source:"capsule",displayName:e.displayName,savedWorkflowName:e.savedWorkflowName,sourceRunId:e.provenance?.fromRunId,sourceWorkflowName:e.provenance?.fromWorkflowName??e.savedWorkflowName,revisionOf:e.provenance?.revisionOf})}a(Fi,"buildSavedWorkflowProcessMetadata");var Hi={name:"workflow",description:"Run a dynamic multi-agent workflow (FEATURE_217)",usage:"/workflow [help | list | pending | runs | show | pause | resume | stop | delete | prune | rerun | save | rename | revise | create | <name> [args] | <request>]",argumentHint:"help | list | pending | runs [--all|--limit N] | show [runId] | pause <runId> | resume <runId> | stop [runId] | delete [--force] [--run|--saved] <runId|savedName> | prune --dry-run|--keep N|--older-than Nd | rerun <runId|savedName> [args] | save <runId> <name> | rename <runId|alias|savedName> <newName> | revise [--replace] <runId|alias|savedName> <change> | create <request> | <name> [args]",detailedHelp:an,handler:a(async(e,o,n,t)=>{if((e[0]??"").toLowerCase()==="pending"){await rn(tn(o),"workflow");return}let r=Dt(e);if(t.agentMode==="sa"&&(r.kind==="create"||r.kind==="rerun"||r.kind==="start")){console.log(w.yellow(`
192
+ `)}a(Ut,"buildWorkflowRevisionRequest");function Ui(e){if(!e)return;let o=Number(e);return Number.isInteger(o)&&o>=0?o:void 0}a(Ui,"parseNonNegativeInteger");function jt(e){let o=!1,n=20;for(let t=0;t<e.length;t+=1){let r=e[t];if(r==="--all"){o=!0;continue}if(r==="--limit"){let i=Ui(e[t+1]);if(i===void 0||i<1)return{all:o,limit:n,error:"--limit expects a positive integer"};n=Math.min(i,200),t+=1;continue}return{all:o,limit:n,error:`unknown option: ${r??""}`}}return{all:o,limit:n}}a(jt,"parseWorkflowRunsOptions");function cd(e){if(!e)return;let o=/^(\d+)([dh]?)$/i.exec(e.trim());if(!o)return;let n=Number(o[1]);return!Number.isInteger(n)||n<=0?void 0:(o[2]?.toLowerCase()||"d")==="h"?n*60*60*1e3:n*24*60*60*1e3}a(cd,"parseOlderThanMs");function Ft(e){let o=!1,n,t;for(let r=0;r<e.length;r+=1){let i=e[r];if(i==="--dry-run"){o=!0;continue}if(i==="--keep"){let l=Ui(e[r+1]);if(l===void 0)return{dryRun:o,error:"--keep expects a non-negative integer"};n=l,r+=1;continue}if(i==="--older-than"){let l=cd(e[r+1]);if(l===void 0)return{dryRun:o,error:"--older-than expects a value like 7d or 24h"};t=l,r+=1;continue}return{dryRun:o,error:`unknown option: ${i??""}`}}return o&&n===void 0&&t===void 0?{dryRun:o,keep:50}:{dryRun:o,...n!==void 0?{keep:n}:{},...t!==void 0?{olderThanMs:t}:{}}}a(Ft,"parseWorkflowPruneOptions");var dd=1440*60*1e3;function ud(e){return new Map(e.map(o=>[o.runId,o]))}a(ud,"processSnapshotsByRunId");function fd(e){return{dryRun:e.dryRun,...e.keep!==void 0?{keep:e.keep}:{},...e.olderThanMs!==void 0?{olderThanDays:e.olderThanMs/dd}:{}}}a(fd,"workflowPruneRetentionOptions");function md(e,o){let n=new Map(e.map(t=>[t.runId,t]));return o.map(t=>{let r=n.get(t);return{runId:t,workflow:r?.workflow??"?",status:r?.status??"?",endedAt:r?.endedAt??0}})}a(md,"workflowPruneCandidateSummaries");function Fi(e){return xo({source:"capsule",displayName:e.displayName,savedWorkflowName:e.savedWorkflowName,sourceRunId:e.provenance?.fromRunId,sourceWorkflowName:e.provenance?.fromWorkflowName??e.savedWorkflowName,revisionOf:e.provenance?.revisionOf})}a(Fi,"buildSavedWorkflowProcessMetadata");var Hi={name:"workflow",description:"Run a dynamic multi-agent workflow (FEATURE_217)",usage:"/workflow [help | list | pending | runs | show | pause | resume | stop | delete | prune | rerun | save | rename | revise | create | <name> [args] | <request>]",argumentHint:"help | list | pending | runs [--all|--limit N] | show [runId] | pause <runId> | resume <runId> | stop [runId] | delete [--force] [--run|--saved] <runId|savedName> | prune --dry-run|--keep N|--older-than Nd | rerun <runId|savedName> [args] | save <runId> <name> | rename <runId|alias|savedName> <newName> | revise [--replace] <runId|alias|savedName> <change> | create <request> | <name> [args]",detailedHelp:ln,handler:a(async(e,o,n,t)=>{if((e[0]??"").toLowerCase()==="pending"){await sn(rn(o),"workflow");return}let r=Dt(e);if(t.agentMode==="sa"&&(r.kind==="create"||r.kind==="rerun"||r.kind==="start")){console.log(w.yellow(`
193
193
  [workflow] Workflows run multiple agents, which Solo (SA) mode does not support.
194
194
  Switch with /agent-mode ama to author and run one via /workflow, or /agent-mode amaw to
195
195
  also let the agent start one from natural language.
196
- `));return}let i=Ee(process.cwd()).key,l=H("workflow-runs",i),c=Fe(),d=Lt(process.cwd()),u=Vr({runManager:c,runBaseDir:l,savedWorkflowDirs:d}),f=a(async h=>({invocation:{source:"prompt",displayName:"workflow create",disableModelInvocation:!1,...t.agentMode==="ama"?{agentModeOverride:"amaw"}:{},prompt:Jr(h)}}),"createWorkflowFromText");if(r.kind==="help"){an();return}if(r.kind==="list"){console.log(w.bold(`
197
- Built-in workflows:`)),console.log(xt(Do())),console.log(w.bold(`
196
+ `));return}let i=Ee(process.cwd()).key,l=H("workflow-runs",i),c=Fe(),d=Lt(process.cwd()),u=Vr({runManager:c,runBaseDir:l,savedWorkflowDirs:d}),f=a(async h=>({invocation:{source:"prompt",displayName:"workflow create",disableModelInvocation:!1,...t.agentMode==="ama"?{agentModeOverride:"amaw"}:{},prompt:Jr(h)}}),"createWorkflowFromText");if(r.kind==="help"){ln();return}if(r.kind==="list"){console.log(w.bold(`
197
+ Built-in workflows:`)),console.log(xt(Uo())),console.log(w.bold(`
198
198
  Pattern templates:`));for(let x of Yr())console.log(` ${w.cyan(x.name)} ${w.dim(`(${x.pattern})`)} - ${x.description}`);let h=await je(d);h.length>0&&(console.log(w.bold(`
199
199
  Saved workflows:`)),console.log(Wt(h))),console.log(w.dim(`
200
200
  Run one with: /workflow <name> <question or JSON args>`)),console.log(w.dim(` Show usage with: /workflow help
@@ -203,17 +203,17 @@ Usage: /workflow runs [--all] [--limit N]
203
203
  ${h.error}
204
204
  `));return}let x=ud(u.listWorkflowProcessSnapshots({activeOnly:!1})),S=c.list().filter(Ve);S.length>0&&(console.log(w.bold(`
205
205
  Active workflow runs:`)),console.log(Et(S,{processSnapshots:x}))),console.log(w.bold(`
206
- Workflow runs:`)),console.log(Rt(So(l),{limit:h.all?void 0:h.limit,showLimitHint:!h.all,processSnapshots:x})),console.log();return}if(r.kind==="show"){let h=So(l),x=r.runId||Tt(c.list(),h);if(!x){console.log(w.yellow(`
206
+ Workflow runs:`)),console.log(Rt(So(l),{limit:h.all?void 0:h.limit,showLimitHint:!h.all,processSnapshots:x})),console.log();return}if(r.kind==="show"){let h=So(l),x=r.runId||Ct(c.list(),h);if(!x){console.log(w.yellow(`
207
207
  No workflow runs yet. Start one with /workflow create <request>.
208
- `));return}if(!ye(x))return;let S=c.get(x),_=bo(l,x),T=u.getWorkflowProcessSnapshot(x);console.log(w.bold(`
209
- Workflow run:`)),console.log(Mt(S,_,{full:r.full===!0,...T?{processSnapshot:T}:{}})),console.log();return}if(r.kind==="pause"){if(!ye(r.runId))return;let h=c.pause(r.runId);console.log(h?w.dim(`Paused workflow ${r.runId}.
208
+ `));return}if(!ye(x))return;let S=c.get(x),_=bo(l,x),C=u.getWorkflowProcessSnapshot(x);console.log(w.bold(`
209
+ Workflow run:`)),console.log(Mt(S,_,{full:r.full===!0,...C?{processSnapshot:C}:{}})),console.log();return}if(r.kind==="pause"){if(!ye(r.runId))return;let h=c.pause(r.runId);console.log(h?w.dim(`Paused workflow ${r.runId}.
210
210
  `):w.yellow(`No running workflow ${r.runId}.
211
211
  `));return}if(r.kind==="resume"){if(!ye(r.runId))return;let h=c.resume(r.runId);console.log(h?w.dim(`Resumed workflow ${r.runId}.
212
212
  `):w.yellow(`No paused workflow ${r.runId}.
213
213
  `));return}if(r.kind==="stop"){let h=r.runId||It(c.list());if(!h){console.log(w.yellow(`
214
214
  No active workflow to stop.
215
- `));return}if(!ye(h))return;let x=await u.stopWorkflow(h,"stopped by user"),S=c.get(h),_=bo(l,h),T=u.getWorkflowProcessSnapshot(h),U=S?.status??_?.status??T?.status,z=S?!Ve(S):_?At(_.status):T!==void 0&&Lo(T.status),O=_t(h,Pt(S,_));console.log(x?w.dim(`Stopped workflow ${h}.
216
- `):U&&z?w.yellow(`Workflow ${h} is already ${U}. Next: ${O}.
215
+ `));return}if(!ye(h))return;let x=await u.stopWorkflow(h,"stopped by user"),S=c.get(h),_=bo(l,h),C=u.getWorkflowProcessSnapshot(h),U=S?.status??_?.status??C?.status,z=S?!Ve(S):_?At(_.status):C!==void 0&&Wo(C.status),N=_t(h,Pt(S,_));console.log(x?w.dim(`Stopped workflow ${h}.
216
+ `):U&&z?w.yellow(`Workflow ${h} is already ${U}. Next: ${N}.
217
217
  `):w.yellow(`No active workflow ${h}.
218
218
  `));return}if(r.kind==="delete"){if(!r.target){console.log(w.yellow(`
219
219
  Usage: /workflow delete [--force] [--run|--saved] <runId|savedName>
@@ -231,16 +231,16 @@ Deleted saved workflow ${fe.name}.
231
231
  No persisted workflow run ${r.target}. Use --saved to delete the saved workflow.
232
232
  `));return}await h(S.savedWorkflow.name,S.savedWorkflow.source);return}if(S?.kind==="missing"){console.log(w.yellow(`
233
233
  No persisted workflow run or generated saved workflow ${r.target}.
234
- `));return}let T=S?.kind==="run"?S.runId:_??r.target;if(!ye(T))return;if(await u.deleteWorkflowRun(T,{force:r.force})){console.log(w.dim(`
235
- Deleted workflow run ${T}${r.force?" with --force":""}.
236
- `));return}let z=x??c.getWorkflowProcessSnapshot(T),O=u.getWorkflowProcessSnapshot(T);if(!O&&!ji(oe(l,T,"run.json"))){console.log(w.yellow(`
234
+ `));return}let C=S?.kind==="run"?S.runId:_??r.target;if(!ye(C))return;if(await u.deleteWorkflowRun(C,{force:r.force})){console.log(w.dim(`
235
+ Deleted workflow run ${C}${r.force?" with --force":""}.
236
+ `));return}let z=x??c.getWorkflowProcessSnapshot(C),N=u.getWorkflowProcessSnapshot(C);if(!N&&!ji(oe(l,C,"run.json"))){console.log(w.yellow(`
237
237
  No persisted workflow run or generated saved workflow ${r.target}.
238
- `));return}if(z&&!Lo(z.status)){console.log(w.yellow(`
239
- Workflow ${T} is ${z.status}. Stop it before deleting the run record.
240
- `));return}if(O&&!Lo(O.status)){console.log(w.yellow(`
241
- Workflow ${T} is a non-terminal persisted ${O.status} record. If it is stale, run /workflow delete --force ${T}.
238
+ `));return}if(z&&!Wo(z.status)){console.log(w.yellow(`
239
+ Workflow ${C} is ${z.status}. Stop it before deleting the run record.
240
+ `));return}if(N&&!Wo(N.status)){console.log(w.yellow(`
241
+ Workflow ${C} is a non-terminal persisted ${N.status} record. If it is stale, run /workflow delete --force ${C}.
242
242
  `));return}console.log(w.yellow(`
243
- Workflow ${T} is not a deletable terminal run.
243
+ Workflow ${C} is not a deletable terminal run.
244
244
  `));return}if(r.kind==="prune"){let h=Ft(r.rawArgs);if(h.error){console.log(w.yellow(`
245
245
  Usage: /workflow prune --dry-run | --keep N | --older-than Nd
246
246
  ${h.error}
@@ -249,7 +249,7 @@ Usage: /workflow prune --dry-run | --keep N | --older-than Nd
249
249
  No cleanup rule was provided.
250
250
  `));return}let x=So(l),S=await u.pruneWorkflowRuns(fd(h)),_=md(x,S.candidates);console.log(w.bold(h.dryRun?`
251
251
  Workflow prune preview:`:`
252
- Workflow prune:`)),console.log(Ct(_)),S.protectedRuns>0&&console.log(w.dim(`
252
+ Workflow prune:`)),console.log(Tt(_)),S.protectedRuns>0&&console.log(w.dim(`
253
253
  Protected ${S.protectedRuns} active workflow run${S.protectedRuns===1?"":"s"} from pruning.`)),h.dryRun?console.log(w.dim(`
254
254
  Dry run only. Add --keep N or --older-than Nd without --dry-run to delete.
255
255
  `)):console.log(w.dim(`
@@ -270,7 +270,7 @@ Usage: /workflow rename <runId|alias|savedName> <newName>
270
270
  [workflow] rename failed: ${h.runId}
271
271
  `));return}console.log(w.green(`
272
272
  Renamed workflow run ${h.runId} to ${r.newName.trim()}.
273
- `));return}try{let x=await Nr({dirs:d,name:h.savedWorkflow.name,newName:r.newName,source:h.savedWorkflow.source});console.log(w.green(`
273
+ `));return}try{let x=await Or({dirs:d,name:h.savedWorkflow.name,newName:r.newName,source:h.savedWorkflow.source});console.log(w.green(`
274
274
  Renamed saved workflow ${r.target} to ${x.name}.
275
275
  `))}catch(x){let S=x instanceof Error?x.message:String(x);console.log(w.red(`
276
276
  [workflow] rename failed: ${S}
@@ -290,12 +290,12 @@ Usage: /workflow revise [--replace] <runId|alias|savedName> <change request>
290
290
  [workflow] only generated workflow capsules can be revised.
291
291
  `));return}_=await io(S.savedWorkflow.path)}}catch(F){let ro=F instanceof Error?F.message:String(F);console.log(w.red(`
292
292
  [workflow] revise failed: ${ro}
293
- `));return}let T=Ut({target:r.target,capsule:_,changeRequest:r.request}),U;try{U=await No({request:T,options:x()})}catch(F){let ro=F instanceof Error?F.message:String(F);console.log(w.red(`
293
+ `));return}let C=Ut({target:r.target,capsule:_,changeRequest:r.request}),U;try{U=await No({request:C,options:x()})}catch(F){let ro=F instanceof Error?F.message:String(F);console.log(w.red(`
294
294
  [workflow] revise generation failed: ${ro}
295
295
  `));return}if(U.kind==="declined"){console.log(w.dim(`
296
296
  Workflow revision not created: ${U.reason}
297
- `));return}let z=r.replace===!0&&S.kind==="saved"?S:void 0,O=z?.savedWorkflow.name,ue=O??await Ii(d,U.manifest.name),J=ue===U.manifest.name?U.manifest:{...U.manifest,name:ue};if(!await h(ae(Se({meta:J,run:U.module.run}),{source:O?`revision-replace:${O}`:`revision:${r.target}`,sandbox:"capability-generated",mayUseWorktree:J.mayUseWorktree===!0,rawScript:U.source}))){console.log(w.dim(`Workflow revision cancelled.
298
- `));return}let j={name:ue,manifest:J,source:U.source,intent:_r(J,{originalRequest:r.request}),..._.inputs!==void 0?{inputs:_.inputs}:{},..._.requires!==void 0?{requires:_.requires}:{},provenance:Pi({capsule:_,resolution:S,...O!==void 0?{replacesWorkflowName:O}:{}})};if(z){let F=await Or({...j,dirs:d,savedSource:z.savedWorkflow.source});console.log(w.green(`
297
+ `));return}let z=r.replace===!0&&S.kind==="saved"?S:void 0,N=z?.savedWorkflow.name,ue=N??await Ii(d,U.manifest.name),J=ue===U.manifest.name?U.manifest:{...U.manifest,name:ue};if(!await h(ae(Se({meta:J,run:U.module.run}),{source:N?`revision-replace:${N}`:`revision:${r.target}`,sandbox:"capability-generated",mayUseWorktree:J.mayUseWorktree===!0,rawScript:U.source}))){console.log(w.dim(`Workflow revision cancelled.
298
+ `));return}let j={name:ue,manifest:J,source:U.source,intent:_r(J,{originalRequest:r.request}),..._.inputs!==void 0?{inputs:_.inputs}:{},..._.requires!==void 0?{requires:_.requires}:{},provenance:Pi({capsule:_,resolution:S,...N!==void 0?{replacesWorkflowName:N}:{}})};if(z){let F=await Nr({...j,dirs:d,savedSource:z.savedWorkflow.source});console.log(w.green(`
299
299
  Replaced saved workflow ${F.name} with revised capsule at ${F.path}
300
300
  `)),console.log(w.dim(`Previous capsule archived at ${F.previousPath}
301
301
  `));return}let Po=await Wr({...j,dir:d.project??oe(process.cwd(),".kodax","workflows")});console.log(w.green(`
@@ -312,18 +312,18 @@ Usage: /workflow rerun <runId|savedName> [args]
312
312
  `));return}if(S&&!_){let L=await Mi(S,h);if(!L)return;let so=ko(r.rawArgs,L.module.meta.name,L.module.meta.description,L.scriptSnapshot?.source),gr="agentic";if(!await h(ae(Se(L.module),L.approvalContext))){console.log(w.dim(`Workflow cancelled.
313
313
  `));return}let Z=`run-${Date.now().toString(36)}`,va=oe(l,Z);console.log(w.dim(`
314
314
  Started workflow ${L.module.meta.name} (${Z}). Use /workflow show ${Z} for status.
315
- `));let Mn=Pe(n,Z,L.module.meta,so);Mn.running(`Use /workflow show ${Z} for status or /workflow stop ${Z} to stop.`);let $a=Je(c,Mn,Z),wr=c.startFromOptions({module:L.module,args:Ao(r.rawArgs),options:x(),runId:Z,runDir:va,...L.scriptSnapshot?{scriptSnapshot:L.scriptSnapshot}:{},processMetadata:Fi({displayName:L.module.meta.name,savedWorkflowName:S.name,provenance:L.provenance}),onEvent:Ye(n,void 0,{presentation:gr,locale:so,runId:Z})});Me(wr,$a),_e(wr,n,Z,Mn,{canRerun:L.scriptSnapshot!==void 0,presentation:gr,locale:so});return}let T;try{T=await jn({runDir:oe(l,r.runId)})}catch(L){let so=L instanceof Error?L.message:String(L);console.log(w.red(`
315
+ `));let Ln=Pe(n,Z,L.module.meta,so);Ln.running(`Use /workflow show ${Z} for status or /workflow stop ${Z} to stop.`);let $a=Je(c,Ln,Z),wr=c.startFromOptions({module:L.module,args:Ao(r.rawArgs),options:x(),runId:Z,runDir:va,...L.scriptSnapshot?{scriptSnapshot:L.scriptSnapshot}:{},processMetadata:Fi({displayName:L.module.meta.name,savedWorkflowName:S.name,provenance:L.provenance}),onEvent:Ye(n,void 0,{presentation:gr,locale:so,runId:Z})});Me(wr,$a),_e(wr,n,Z,Ln,{canRerun:L.scriptSnapshot!==void 0,presentation:gr,locale:so});return}let C;try{C=await jn({runDir:oe(l,r.runId)})}catch(L){let so=L instanceof Error?L.message:String(L);console.log(w.red(`
316
316
  [workflow] rerun failed: ${so}
317
- `));return}let z=bo(l,r.runId)?.scriptSnapshotPath??oe(l,r.runId,"script.js"),O=ko(r.rawArgs,T.capsule.manifest.name,T.capsule.manifest.description,T.capsule.source),ue="agentic",J=ao(T.capsule,dn());if(!J.ok){un(J);return}if(fn(J),!await h(ae(Se(T.module),{source:`run:${r.runId}`,sandbox:"capability-generated",mayUseWorktree:T.capsule.manifest.mayUseWorktree===!0,rawScriptPath:z,rawScript:T.capsule.source}))){console.log(w.dim(`Workflow cancelled.
317
+ `));return}let z=bo(l,r.runId)?.scriptSnapshotPath??oe(l,r.runId,"script.js"),N=ko(r.rawArgs,C.capsule.manifest.name,C.capsule.manifest.description,C.capsule.source),ue="agentic",J=ao(C.capsule,un());if(!J.ok){fn(J);return}if(mn(J),!await h(ae(Se(C.module),{source:`run:${r.runId}`,sandbox:"capability-generated",mayUseWorktree:C.capsule.manifest.mayUseWorktree===!0,rawScriptPath:z,rawScript:C.capsule.source}))){console.log(w.dim(`Workflow cancelled.
318
318
  `));return}let j=`run-${Date.now().toString(36)}`,Po=oe(l,j);console.log(w.dim(`
319
- Started workflow ${T.module.meta.name} (${j}). Use /workflow show ${j} for status.
320
- `));let F=Pe(n,j,T.module.meta,O);F.running(`Use /workflow show ${j} for status or /workflow stop ${j} to stop.`);let ro=Je(c,F,j),pr=c.startFromOptions({module:T.module,args:Ao(r.rawArgs),options:x(),runId:j,runDir:Po,scriptSnapshot:{manifest:T.capsule.manifest,source:T.capsule.source},processMetadata:xo({source:"command",displayName:T.module.meta.name,sourceRunId:r.runId}),onEvent:Ye(n,void 0,{presentation:ue,locale:O,runId:j})});Me(pr,ro),_e(pr,n,j,F,{canRerun:!0,presentation:ue,locale:O});return}if(r.kind==="create"){if(!r.request){console.log(w.yellow(`
319
+ Started workflow ${C.module.meta.name} (${j}). Use /workflow show ${j} for status.
320
+ `));let F=Pe(n,j,C.module.meta,N);F.running(`Use /workflow show ${j} for status or /workflow stop ${j} to stop.`);let ro=Je(c,F,j),pr=c.startFromOptions({module:C.module,args:Ao(r.rawArgs),options:x(),runId:j,runDir:Po,scriptSnapshot:{manifest:C.capsule.manifest,source:C.capsule.source},processMetadata:xo({source:"command",displayName:C.module.meta.name,sourceRunId:r.runId}),onEvent:Ye(n,void 0,{presentation:ue,locale:N,runId:j})});Me(pr,ro),_e(pr,n,j,F,{canRerun:!0,presentation:ue,locale:N});return}if(r.kind==="create"){if(!r.request){console.log(w.yellow(`
321
321
  Usage: /workflow create <request>
322
322
  `));return}return await f(r.request)}let m=Ie(n);if(!m){console.log(w.red(`
323
323
  [workflow] refusing to start a workflow without an interactive approval channel.
324
- `));return}let y={source:"built-in",sandbox:"trusted package",mayUseWorktree:!1},v,k=Oo(r.name),$,g;if(!k){let h=(await je(d)).find(x=>x.name===r.name);if(!h){let x=[r.name,r.rawArgs].filter(S=>S&&S.length>0).join(" ").trim();return await f(x)}if($=h,h.execution==="trusted-local"&&!await m(`Run local workflow file? This EXECUTES local code:
324
+ `));return}let y={source:"built-in",sandbox:"trusted package",mayUseWorktree:!1},v,k=Do(r.name),$,g;if(!k){let h=(await je(d)).find(x=>x.name===r.name);if(!h){let x=[r.name,r.rawArgs].filter(S=>S&&S.length>0).join(" ").trim();return await f(x)}if($=h,h.execution==="trusted-local"&&!await m(`Run local workflow file? This EXECUTES local code:
325
325
  ${h.path}`)){console.log(w.dim(`Workflow cancelled.
326
- `));return}try{if(h.execution==="capability-generated"){let x=await io(h.path),S=ao(x,dn());if(!S.ok){un(S);return}fn(S),y={source:`saved:${h.source}`,sandbox:h.execution,mayUseWorktree:x.manifest.mayUseWorktree===!0,rawScriptPath:h.path,rawScript:x.source},v={manifest:x.manifest,source:x.source},g=x.provenance}k=await Uo(h.path),h.execution==="trusted-local"&&(y={source:`saved:${h.source}`,sandbox:h.execution,mayUseWorktree:!1})}catch(x){let S=x instanceof Error?x.message:String(x);console.log(w.red(`
326
+ `));return}try{if(h.execution==="capability-generated"){let x=await io(h.path),S=ao(x,un());if(!S.ok){fn(S);return}mn(S),y={source:`saved:${h.source}`,sandbox:h.execution,mayUseWorktree:x.manifest.mayUseWorktree===!0,rawScriptPath:h.path,rawScript:x.source},v={manifest:x.manifest,source:x.source},g=x.provenance}k=await jo(h.path),h.execution==="trusted-local"&&(y={source:`saved:${h.source}`,sandbox:h.execution,mayUseWorktree:!1})}catch(x){let S=x instanceof Error?x.message:String(x);console.log(w.red(`
327
327
  [workflow] failed to load ${h.path}: ${S}
328
328
  `));return}}let b=n.createKodaXOptions;if(!b){console.log(w.red(`
329
329
  [workflow] cannot start \u2014 REPL options unavailable in this context.
@@ -340,27 +340,27 @@ Cancelled. Current session preserved.`));return}try{await n.saveSession(),consol
340
340
  `)),console.log("Usage:"),console.log(B.cyan(" /new")+` - Clear current session and start fresh
341
341
  `),console.log("Description:"),console.log(" This command clears the current conversation history and starts a new session."),console.log(" It automatically saves the previous session before clearing."),console.log(` Useful for switching contexts or starting a new topic.
342
342
  `),console.log("Examples:"),console.log(B.dim(" User: Help me refactor the authentication module")),console.log(B.dim(" AI: [provides refactoring help]")),console.log(B.cyan(" /new")),console.log(B.dim(" \u2713 Started new session")),console.log(B.dim(" User: Now I need help with database optimization")),console.log(B.dim(` AI: [provides database help]
343
- `)),console.log("Notes:"),console.log(" \u2022 Automatically saves previous session before clearing"),console.log(" \u2022 Prompts for confirmation if there are messages in the current session"),console.log(" \u2022 Use /load to resume a previous session"),console.log(" \u2022 Use /sessions to see all saved sessions")},"detailedHelp")};import N from"chalk";var Bg="The provider may be rejecting the current session history. Create a new session from a safe summary and continue there?",Gg="The current LLM API may be rejecting this session history. Run /recover [prompt] to continue in a fresh session from safe memory.";function qg(e){return Lr(e.error,e.messageCount)}a(qg,"shouldOfferSessionRecovery");var Bt={name:"recover",aliases:["handoff"],description:"Create a fresh session from safe memory and continue",usage:"/recover [prompt]",handler:a(async(e,o,n)=>{if(o.messages.length===0){console.log(N.yellow(`
344
- Current session is empty. Start a normal message instead.`));return}if(!n.recoverSession){console.log(N.red(`
343
+ `)),console.log("Notes:"),console.log(" \u2022 Automatically saves previous session before clearing"),console.log(" \u2022 Prompts for confirmation if there are messages in the current session"),console.log(" \u2022 Use /load to resume a previous session"),console.log(" \u2022 Use /sessions to see all saved sessions")},"detailedHelp")};import O from"chalk";var Bg="The provider may be rejecting the current session history. Create a new session from a safe summary and continue there?",Gg="The current LLM API may be rejecting this session history. Run /recover [prompt] to continue in a fresh session from safe memory.";function qg(e){return Lr(e.error,e.messageCount)}a(qg,"shouldOfferSessionRecovery");var Bt={name:"recover",aliases:["handoff"],description:"Create a fresh session from safe memory and continue",usage:"/recover [prompt]",handler:a(async(e,o,n)=>{if(o.messages.length===0){console.log(O.yellow(`
344
+ Current session is empty. Start a normal message instead.`));return}if(!n.recoverSession){console.log(O.red(`
345
345
  [Recover is not available in this host]
346
- `));return}if(n.confirm&&!await n.confirm("Create a new session from a safe summary of this one and continue there?")){console.log(N.dim(`
347
- Cancelled. Current session preserved.`));return}let t;try{t=await n.recoverSession(Un(e.join(" ")))}catch(r){let i=r instanceof Error?r.message:String(r);console.log(N.red(`
346
+ `));return}if(n.confirm&&!await n.confirm("Create a new session from a safe summary of this one and continue there?")){console.log(O.dim(`
347
+ Cancelled. Current session preserved.`));return}let t;try{t=await n.recoverSession(Un(e.join(" ")))}catch(r){let i=r instanceof Error?r.message:String(r);console.log(O.red(`
348
348
  [Recover failed] ${i}
349
- `));return}t==="blocked"?console.log(N.yellow(`
349
+ `));return}t==="blocked"?console.log(O.yellow(`
350
350
  [Recover blocked by the current session transition guard]
351
- `)):t==="failed"?console.log(N.red(`
351
+ `)):t==="failed"?console.log(O.red(`
352
352
  [Recover failed]
353
- `)):t==="empty"&&console.log(N.yellow(`
353
+ `)):t==="empty"&&console.log(O.yellow(`
354
354
  [Nothing to recover from this session]
355
- `))},"handler"),detailedHelp:a(()=>{console.log(N.cyan(`
355
+ `))},"handler"),detailedHelp:a(()=>{console.log(O.cyan(`
356
356
  /recover - Continue in a Fresh Session
357
- `)),console.log(N.bold("Usage:")),console.log(N.dim(" /recover ")+"Continue with a safe memory summary"),console.log(N.dim(" /recover <prompt> ")+"Continue with a custom first prompt"),console.log(N.dim(" /handoff <prompt> ")+"Alias for /recover"),console.log(),console.log(N.bold("Description:")),console.log(N.dim(" Saves the current session, creates a new local session,")),console.log(N.dim(" carries over only a compact memory summary, and runs the")),console.log(N.dim(" first continuation prompt there. Raw tool calls and provider")),console.log(N.dim(" history are not replayed to the model.")),console.log()},"detailedHelp")};import{execFile as pd}from"node:child_process";import{promisify as gd}from"node:util";import ne from"chalk";var wd=gd(pd),Gt=1e5;async function Eo(e,o){let{stdout:n}=await wd("git",e,{cwd:o,maxBuffer:67108864});return n}a(Eo,"git");async function hd(e){for(let o of["main","master","develop"])try{return await Eo(["rev-parse","--verify",o],e),o}catch{}return"HEAD"}a(hd,"detectBaseBranch");async function Ro(e,o){return(await Eo(["rev-parse",e],o)).trim()}a(Ro,"resolveRef");async function yd(e,o){try{return await Ro(e,o)}catch{return}}a(yd,"tryResolveRef");async function kd(e,o){let n=e[0];if(n==="base"){let t=await hd(o);return{diff:await Eo(["diff",`${t}...HEAD`],o),label:`changes against ${t}`,scope:"compare",baseRef:await Ro(t,o),headRef:await Ro("HEAD",o)}}if(n==="sha"&&e[1]){let t=await yd(`${e[1]}^`,o);return{diff:await Eo(["show",e[1]],o),label:`commit ${e[1]}`,scope:"commit",...t?{baseRef:t}:{},headRef:await Ro(e[1],o)}}if(n==="sha")throw new Error("missing commit hash for sha scope; use /review sha <hash>");return{diff:await Eo(["diff","HEAD"],o),label:"uncommitted changes",scope:"all",headRef:await Ro("HEAD",o)}}a(kd,"getDiff");function vd(e){let o=!1,n=!1,t=!1,r=!1,i=[],l=[],c=a(f=>f==="--workflow"||f==="workflow"?(o=!0,!0):f==="--lean"||f==="lean"?(n=!0,!0):!1,"applyModeArg");for(let f=0;f<e.length;f+=1){let m=e[f];if(m!==void 0){if(r){l.push(m);continue}if(m==="--"){r=!0;continue}if(!c(m)){if(!t&&m==="base"){i.push("base"),t=!0;continue}if(!t&&m==="sha"){for(i.push("sha"),t=!0;f+1<e.length;){let y=e[f+1];if(y===void 0)break;if(y==="--"){r=!0,f+=1;break}if(c(y)){f+=1;continue}i.push(y),f+=1;break}continue}l.push(m)}}}let d=l.join(" ").trim(),u=i[0]==="sha"&&!i[1]?"missing commit hash for sha scope; use /review sha <hash>":void 0;return{workflow:o,lean:n,diffArgs:i,prompt:d.length>0?d:void 0,...u?{error:u}:{}}}a(vd,"parseReviewInvocation");function $d(e,o={}){let n=[`Review ${e} with KodaX's built-in scoped-review workflow.`,"Use the captured immutable review packets as the sole review input.","The built-in gives each ordinary packet one primary with both specVerdict and qualityVerdict, adds a second primary only for routing-high, sends only candidate findings to a fresh independent verifier, and performs capable final synthesis.","Final output must lead with verified findings, cite files or diff hunks, and state when no issues are found."];return o.lean===!0&&n.splice(2,0,"Add one lean/minimal-diff reviewer: find code that can be deleted or replaced by existing repo code, stdlib/native platform features, or already-installed dependencies.","Lean review must not recommend cutting trust-boundary validation, security checks, data-loss protection, accessibility basics, or explicitly requested behavior."),o.customPrompt&&n.push(`User review focus: ${o.customPrompt}`),o.packets&&o.packets.length>0&&n.push(`Captured packets: ${o.packets.length}.`,"Do not call changed_scope or recapture Git: these packets are the sole immutable review input."),n.join(`
357
+ `)),console.log(O.bold("Usage:")),console.log(O.dim(" /recover ")+"Continue with a safe memory summary"),console.log(O.dim(" /recover <prompt> ")+"Continue with a custom first prompt"),console.log(O.dim(" /handoff <prompt> ")+"Alias for /recover"),console.log(),console.log(O.bold("Description:")),console.log(O.dim(" Saves the current session, creates a new local session,")),console.log(O.dim(" carries over only a compact memory summary, and runs the")),console.log(O.dim(" first continuation prompt there. Raw tool calls and provider")),console.log(O.dim(" history are not replayed to the model.")),console.log()},"detailedHelp")};import{execFile as pd}from"node:child_process";import{promisify as gd}from"node:util";import ne from"chalk";var wd=gd(pd),Gt=1e5;async function Eo(e,o){let{stdout:n}=await wd("git",e,{cwd:o,maxBuffer:67108864});return n}a(Eo,"git");async function hd(e){for(let o of["main","master","develop"])try{return await Eo(["rev-parse","--verify",o],e),o}catch{}return"HEAD"}a(hd,"detectBaseBranch");async function Ro(e,o){return(await Eo(["rev-parse",e],o)).trim()}a(Ro,"resolveRef");async function yd(e,o){try{return await Ro(e,o)}catch{return}}a(yd,"tryResolveRef");async function kd(e,o){let n=e[0];if(n==="base"){let t=await hd(o);return{diff:await Eo(["diff",`${t}...HEAD`],o),label:`changes against ${t}`,scope:"compare",baseRef:await Ro(t,o),headRef:await Ro("HEAD",o)}}if(n==="sha"&&e[1]){let t=await yd(`${e[1]}^`,o);return{diff:await Eo(["show",e[1]],o),label:`commit ${e[1]}`,scope:"commit",...t?{baseRef:t}:{},headRef:await Ro(e[1],o)}}if(n==="sha")throw new Error("missing commit hash for sha scope; use /review sha <hash>");return{diff:await Eo(["diff","HEAD"],o),label:"uncommitted changes",scope:"all",headRef:await Ro("HEAD",o)}}a(kd,"getDiff");function vd(e){let o=!1,n=!1,t=!1,r=!1,i=[],l=[],c=a(f=>f==="--workflow"||f==="workflow"?(o=!0,!0):f==="--lean"||f==="lean"?(n=!0,!0):!1,"applyModeArg");for(let f=0;f<e.length;f+=1){let m=e[f];if(m!==void 0){if(r){l.push(m);continue}if(m==="--"){r=!0;continue}if(!c(m)){if(!t&&m==="base"){i.push("base"),t=!0;continue}if(!t&&m==="sha"){for(i.push("sha"),t=!0;f+1<e.length;){let y=e[f+1];if(y===void 0)break;if(y==="--"){r=!0,f+=1;break}if(c(y)){f+=1;continue}i.push(y),f+=1;break}continue}l.push(m)}}}let d=l.join(" ").trim(),u=i[0]==="sha"&&!i[1]?"missing commit hash for sha scope; use /review sha <hash>":void 0;return{workflow:o,lean:n,diffArgs:i,prompt:d.length>0?d:void 0,...u?{error:u}:{}}}a(vd,"parseReviewInvocation");function $d(e,o={}){let n=[`Review ${e} with KodaX's built-in scoped-review workflow.`,"Use the captured immutable review packets as the sole review input.","The built-in gives each ordinary packet one primary with both specVerdict and qualityVerdict, adds a second primary only for routing-high, sends only candidate findings to a fresh independent verifier, and performs capable final synthesis.","Final output must lead with verified findings, cite files or diff hunks, and state when no issues are found."];return o.lean===!0&&n.splice(2,0,"Add one lean/minimal-diff reviewer: find code that can be deleted or replaced by existing repo code, stdlib/native platform features, or already-installed dependencies.","Lean review must not recommend cutting trust-boundary validation, security checks, data-loss protection, accessibility basics, or explicitly requested behavior."),o.customPrompt&&n.push(`User review focus: ${o.customPrompt}`),o.packets&&o.packets.length>0&&n.push(`Captured packets: ${o.packets.length}.`,"Do not call changed_scope or recapture Git: these packets are the sole immutable review input."),n.join(`
358
358
  `)}a($d,"buildReviewWorkflowRequest");function Sd(e){return e.length<=Gt?e:`${e.slice(0,Gt)}
359
359
 
360
360
  [diff truncated to ${Gt} chars - review the rest with a narrower scope]`}a(Sd,"truncateDiff");function bd(e){let o=Sd(e.diff),n=[`Review the following ${e.label} as a third-party reviewer (not the author).`,"Look for bugs (logic errors, null/undefined handling, off-by-one, races),","security (injection, secret exposure, auth bypass), performance hotpaths,","and design (over-engineering vs missing abstraction).","Cite specific diff lines. For each finding, note whether it is verifiable by","tsc / lint / test / build. If the diff is small or risk-free, say so briefly."];return e.lean===!0&&n.push("","Lean pass:","- After correctness/security findings, look for unnecessary code introduced by the diff.","- Prefer deletion or replacement with existing repo code, stdlib/native platform features, or already-installed dependencies when that is verifiably simpler.","- Do not recommend cutting trust-boundary validation, security checks, data-loss protection, accessibility basics, or explicitly requested behavior.","- For each lean suggestion, say what was skipped or can be removed, and when it should be added back."),e.customPrompt&&n.push("",`User review focus: ${e.customPrompt}`),n.push("","```diff",o,"```"),n.join(`
361
361
  `)}a(bd,"buildReviewPrompt");function Bi(e){let o=[e.workflow?"--workflow":void 0,e.lean?"--lean":void 0].filter(n=>n!==void 0);return o.length>0?`/review ${o.join(" ")}`:"/review"}a(Bi,"buildDisplayName");function xd(){console.log(ne.bold(`
362
362
  /review - Review Git Changes
363
- `)),console.log("Usage:"),console.log(ne.cyan(" /review [--lean] [--workflow] [base | sha <hash>] [prompt...]")),console.log(),console.log("Scopes:"),console.log(ne.dim(" default ")+"Review uncommitted changes against HEAD"),console.log(ne.dim(" base ")+"Review changes against the detected base branch"),console.log(ne.dim(" sha <hash> ")+"Review a specific commit"),console.log(),console.log("Options:"),console.log(ne.dim(" --lean ")+"Add a minimal-diff/YAGNI review pass"),console.log(ne.dim(" --workflow ")+"Run the deterministic scoped-review workflow"),console.log(),console.log("Examples:"),console.log(ne.dim(" /review --lean")),console.log(ne.dim(" /review base focus on auth and data loss")),console.log(ne.dim(" /review sha abc123 --lean -- check for native platform replacements"))}a(xd,"printReviewHelp");var Gi={name:"review",description:"Review git changes for bugs, security, performance, design, and optional lean diffs",usage:"/review [--lean] [--workflow] [base | sha <hash>] [prompt...]",argumentHint:"[--lean] [--workflow] [base | sha <hash>] [prompt...]",detailedHelp:xd,handler:a(async(e,o)=>{let n=o.gitRoot??process.cwd(),t=vd(e);if(t.error)return{success:!1,message:`/review: ${t.error}`};let r;try{r=await kd(t.diffArgs,n)}catch(i){return{success:!1,message:`/review: git failed - ${i instanceof Error?i.message:String(i)}`}}if(!r.diff.trim())return{success:!0,message:"No changes to review."};if(t.workflow){let i;try{i=await Zr({cwd:n,sessionId:o.sessionId,label:r.label,diff:r.diff,scope:r.scope,...r.baseRef?{baseRef:r.baseRef}:{},...r.headRef?{headRef:r.headRef}:{},customPrompt:t.prompt})}catch(l){return{success:!1,message:`/review: could not create review packet - ${l instanceof Error?l.message:String(l)}`}}return{success:!0,workflow:{request:$d(r.label,{lean:t.lean,customPrompt:t.prompt,packets:i}),source:"command",displayName:Bi(t),processSource:"review",builtin:{name:"scoped-review",args:{packets:i,...t.lean?{lean:!0}:{},...t.prompt?{reviewFocus:t.prompt}:{}}}}}}return{success:!0,invocation:{prompt:bd({label:r.label,diff:r.diff,lean:t.lean,customPrompt:t.prompt}),source:"prompt",displayName:Bi(t)}}},"handler")};import{constants as Ad}from"node:fs";import{access as Rd,readFile as Ed,writeFile as Cd}from"node:fs/promises";import{join as Td}from"node:path";import te from"chalk";var Xi=`# KodaX Lean Mode
363
+ `)),console.log("Usage:"),console.log(ne.cyan(" /review [--lean] [--workflow] [base | sha <hash>] [prompt...]")),console.log(),console.log("Scopes:"),console.log(ne.dim(" default ")+"Review uncommitted changes against HEAD"),console.log(ne.dim(" base ")+"Review changes against the detected base branch"),console.log(ne.dim(" sha <hash> ")+"Review a specific commit"),console.log(),console.log("Options:"),console.log(ne.dim(" --lean ")+"Add a minimal-diff/YAGNI review pass"),console.log(ne.dim(" --workflow ")+"Run the deterministic scoped-review workflow"),console.log(),console.log("Examples:"),console.log(ne.dim(" /review --lean")),console.log(ne.dim(" /review base focus on auth and data loss")),console.log(ne.dim(" /review sha abc123 --lean -- check for native platform replacements"))}a(xd,"printReviewHelp");var Gi={name:"review",description:"Review git changes for bugs, security, performance, design, and optional lean diffs",usage:"/review [--lean] [--workflow] [base | sha <hash>] [prompt...]",argumentHint:"[--lean] [--workflow] [base | sha <hash>] [prompt...]",detailedHelp:xd,handler:a(async(e,o)=>{let n=o.gitRoot??process.cwd(),t=vd(e);if(t.error)return{success:!1,message:`/review: ${t.error}`};let r;try{r=await kd(t.diffArgs,n)}catch(i){return{success:!1,message:`/review: git failed - ${i instanceof Error?i.message:String(i)}`}}if(!r.diff.trim())return{success:!0,message:"No changes to review."};if(t.workflow){let i;try{i=await Zr({cwd:n,sessionId:o.sessionId,label:r.label,diff:r.diff,scope:r.scope,...r.baseRef?{baseRef:r.baseRef}:{},...r.headRef?{headRef:r.headRef}:{},customPrompt:t.prompt})}catch(l){return{success:!1,message:`/review: could not create review packet - ${l instanceof Error?l.message:String(l)}`}}return{success:!0,workflow:{request:$d(r.label,{lean:t.lean,customPrompt:t.prompt,packets:i}),source:"command",displayName:Bi(t),processSource:"review",builtin:{name:"scoped-review",args:{packets:i,...t.lean?{lean:!0}:{},...t.prompt?{reviewFocus:t.prompt}:{}}}}}}return{success:!0,invocation:{prompt:bd({label:r.label,diff:r.diff,lean:t.lean,customPrompt:t.prompt}),source:"prompt",displayName:Bi(t)}}},"handler")};import{constants as Ad}from"node:fs";import{access as Rd,readFile as Ed,writeFile as Td}from"node:fs/promises";import{join as Cd}from"node:path";import te from"chalk";var Xi=`# KodaX Lean Mode
364
364
 
365
365
  Before writing code:
366
366
  1. Do we need to build this at all?
@@ -380,10 +380,10 @@ Never cut:
380
380
  After coding:
381
381
  - explain what was skipped
382
382
  - say when to add it back
383
- `;function Id(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??e.gitRoot??process.cwd()}a(Id,"resolveTargetRoot");async function Vi(e){try{return await Rd(e,Ad.F_OK),!0}catch(o){if(o.code==="ENOENT")return!1;throw o}}a(Vi,"pathExists");function qi(e){return console.log(te.dim(`AGENTS.md already exists at ${e}; left unchanged.`)),{success:!0,message:`AGENTS.md already exists and was left unchanged: ${e}`}}a(qi,"existingAgentsResult");function yn(e){return e instanceof Error?e.message:String(e)}a(yn,"errorMessage");async function Ki(e,o){let n;try{n=await Vi(e)}catch(t){return{success:!1,message:`/agents init: failed to inspect ${e}: ${yn(t)}`}}if(n)return qi(e);try{await Cd(e,Xi,{encoding:"utf8",flag:"wx"})}catch(t){return t.code==="EEXIST"?qi(e):{success:!1,message:`/agents init: failed to write ${e}: ${yn(t)}`}}if(o.reloadAgentsFiles)try{await o.reloadAgentsFiles()}catch(t){return{success:!1,message:`/agents init: created ${e} but failed to reload AGENTS.md files: ${yn(t)}`}}return console.log(te.green(`Created ${e}`)),{success:!0,message:`Created ${e}`}}a(Ki,"initializeAgentsFile");function Pd(e,o){return[`Review and update the target project's AGENTS.md at ${e}.`,"","Goal: ensure the project instructions include KodaX Lean Mode guidance, without duplicating equivalent existing guidance.","","Required behavior:","- First inspect the existing AGENTS.md content and decide whether lean/minimal-diff constraints are already present.","- If equivalent guidance already exists, leave the file unchanged and explain that no change was needed.","- If guidance is missing or partial, edit AGENTS.md with the smallest clear diff that merges the Lean Mode ideas into the existing structure.","- Do not add duplicate headings or repeat bullets that already exist with equivalent meaning.","- Preserve existing project-specific instructions and ordering unless a small local insertion is clearly better.","- Never weaken trust-boundary validation, security checks, data-loss protection, accessibility basics, or explicitly requested behavior.","","Lean Mode guidance to merge when missing:","","```markdown",Xi.trimEnd(),"```","","Current AGENTS.md content:","","```markdown",o,"```"].join(`
383
+ `;function Id(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??e.gitRoot??process.cwd()}a(Id,"resolveTargetRoot");async function Vi(e){try{return await Rd(e,Ad.F_OK),!0}catch(o){if(o.code==="ENOENT")return!1;throw o}}a(Vi,"pathExists");function qi(e){return console.log(te.dim(`AGENTS.md already exists at ${e}; left unchanged.`)),{success:!0,message:`AGENTS.md already exists and was left unchanged: ${e}`}}a(qi,"existingAgentsResult");function kn(e){return e instanceof Error?e.message:String(e)}a(kn,"errorMessage");async function Ki(e,o){let n;try{n=await Vi(e)}catch(t){return{success:!1,message:`/agents init: failed to inspect ${e}: ${kn(t)}`}}if(n)return qi(e);try{await Td(e,Xi,{encoding:"utf8",flag:"wx"})}catch(t){return t.code==="EEXIST"?qi(e):{success:!1,message:`/agents init: failed to write ${e}: ${kn(t)}`}}if(o.reloadAgentsFiles)try{await o.reloadAgentsFiles()}catch(t){return{success:!1,message:`/agents init: created ${e} but failed to reload AGENTS.md files: ${kn(t)}`}}return console.log(te.green(`Created ${e}`)),{success:!0,message:`Created ${e}`}}a(Ki,"initializeAgentsFile");function Pd(e,o){return[`Review and update the target project's AGENTS.md at ${e}.`,"","Goal: ensure the project instructions include KodaX Lean Mode guidance, without duplicating equivalent existing guidance.","","Required behavior:","- First inspect the existing AGENTS.md content and decide whether lean/minimal-diff constraints are already present.","- If equivalent guidance already exists, leave the file unchanged and explain that no change was needed.","- If guidance is missing or partial, edit AGENTS.md with the smallest clear diff that merges the Lean Mode ideas into the existing structure.","- Do not add duplicate headings or repeat bullets that already exist with equivalent meaning.","- Preserve existing project-specific instructions and ordering unless a small local insertion is clearly better.","- Never weaken trust-boundary validation, security checks, data-loss protection, accessibility basics, or explicitly requested behavior.","","Lean Mode guidance to merge when missing:","","```markdown",Xi.trimEnd(),"```","","Current AGENTS.md content:","","```markdown",o,"```"].join(`
384
384
  `)}a(Pd,"buildLeanReviewPrompt");function zi(){console.log(te.bold(`
385
385
  /agents - Manage Target Project Instructions
386
- `)),console.log("Usage:"),console.log(te.cyan(" /agents init")),console.log(te.cyan(" /agents lean")),console.log(),console.log("Commands:"),console.log(te.dim(" init ")+"Create AGENTS.md in the target project if it is absent"),console.log(te.dim(" lean ")+"Initialize or LLM-review AGENTS.md for Lean Mode guidance"),console.log(),console.log("Notes:"),console.log(te.dim(" - Existing AGENTS.md files are never overwritten.")),console.log(te.dim(" - /agents lean asks the LLM to merge missing lean guidance without duplicates.")),console.log(te.dim(" - The generated file belongs to the target project, not KodaX itself."))}a(zi,"printAgentsHelp");var qt={name:"agents",description:"Initialize target-project AGENTS.md instructions",usage:"/agents init | lean",argumentHint:"init | lean",detailedHelp:zi,handler:a(async(e,o,n)=>{let t=e[0]?.toLowerCase()??"help";if(t!=="init"&&t!=="lean")return zi(),!0;let r=Id(o),i=Td(r,"AGENTS.md");if(t==="init")return await Ki(i,n);let l;try{l=await Vi(i)}catch(d){return{success:!1,message:`/agents lean: failed to inspect ${i}: ${yn(d)}`}}if(!l)return await Ki(i,n);let c;try{c=await Ed(i,"utf8")}catch(d){let u=d instanceof Error?d.message:String(d);return{success:!1,message:`/agents lean: failed to read ${i}: ${u}`}}return{success:!0,invocation:{prompt:Pd(i,c),source:"prompt",displayName:"/agents lean"}}},"handler")};function vn(e){let o=e.match(/\r\n|\r|\n/g);return o?o.length:0}a(vn,"getPastedTextRefNumLines");function _d(e,o){return o===0?`[Pasted text #${e}]`:`[Pasted text #${e} +${o} lines]`}a(_d,"formatPastedTextRef");function Md(e,o){return`[...Truncated text #${e} +${o} lines...]`}a(Md,"formatTruncatedTextRef");var Ld=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/g;function Wd(e){let o=[],n=new RegExp(Ld.source,"g");for(let t of e.matchAll(n)){let r=Number.parseInt(t[2]??"0",10);!Number.isFinite(r)||r<=0||o.push({id:r,kind:t[1],match:t[0],index:t.index??0})}return o}a(Wd,"parseReferences");function Nd(e,o){let n=Wd(e);if(n.length===0)return e;let t=a(i=>o instanceof Map?o.get(i):o[i],"getContent"),r=e;for(let i=n.length-1;i>=0;i--){let l=n[i];if(l.kind==="Image")continue;let c=t(l.id);!c||c.type!=="text"||(r=r.slice(0,l.index)+c.content+r.slice(l.index+l.match.length))}return r}a(Nd,"expandPastedTextRefs");var Od=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]$/,Dd=/^\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/;function Ud(e,o){if(o>=e.length)return!0;let n=e[o];return!n||/\s/.test(n)}a(Ud,"isAtWordBoundaryAfter");function jd(e,o){if(o===0)return!0;let n=e[o-1];return!n||/\s/.test(n)}a(jd,"isAtWordBoundaryBefore");function dw(e,o){if(o<=0||!Ud(e,o))return null;let t=e.slice(0,o).match(Od);if(!t)return null;let r=o-t[0].length,i=Number.parseInt(t[2]??"0",10);return!Number.isFinite(i)||i<=0?null:{start:r,end:o,id:i,kind:t[1]}}a(dw,"findPlaceholderBeforeCursor");function uw(e,o){if(o>=e.length||!jd(e,o))return null;let t=e.slice(o).match(Dd);if(!t)return null;let r=Number.parseInt(t[2]??"0",10);return!Number.isFinite(r)||r<=0?null:{start:o,end:o+t[0].length,id:r,kind:t[1]}}a(uw,"findPlaceholderAfterCursor");function fw(e){return e.length>800||vn(e)>2}a(fw,"shouldReplacePasteWithPlaceholder");function mw(e,o){if(e.length<=1e4)return{truncatedText:e,placeholderContent:""};let n=Math.floor(1e3/2),t=Math.floor(1e3/2),r=e.slice(0,n),i=e.slice(-t),l=e.slice(n,-t),c=vn(l),d=Md(o,c);return{truncatedText:r+d+i,placeholderContent:l}}a(mw,"maybeTruncateLongInput");var Kt=class{static{a(this,"PasteStore")}contents=new Map;nextId=1;registerText(o){let n=this.nextId++,t=vn(o);return this.contents.set(n,{id:n,type:"text",content:o}),{id:n,placeholder:_d(n,t),numLines:t}}registerTruncatedText(o){let n=this.nextId++,t=vn(o);return this.contents.set(n,{id:n,type:"text",content:o}),{id:n,numLines:t}}adopt(o){this.contents.set(o.id,o),o.id>=this.nextId&&(this.nextId=o.id+1)}peekNextId(){return this.nextId}get(o){return this.contents.get(o)}expand(o){return Nd(o,this.contents)}snapshot(){return new Map(this.contents)}restore(o){this.contents.clear();for(let[n,t]of o)this.contents.set(n,t);for(let n of o.keys())n>=this.nextId&&(this.nextId=n+1)}reset(){this.contents.clear(),this.nextId=1}size(){return this.contents.size}export(){return Array.from(this.contents.values())}},kn=null;function pw(){return kn===null&&(kn=new Kt),kn}a(pw,"getOrCreateModulePasteStore");function Yi(){return kn??void 0}a(Yi,"getActivePasteStore");import{createHash as Fd}from"node:crypto";import{mkdir as Hd,readdir as Bd,readFile as Gd,stat as qd,unlink as Kd,writeFile as zd}from"node:fs/promises";import*as zt from"node:path";var Xd="paste-cache",Vd=720*60*60*1e3;function Xt(){return H(Xd)}a(Xt,"getPasteCacheDir");function Ji(e){return zt.join(Xt(),`${e}.txt`)}a(Ji,"getPastePath");function vw(e){return Fd("sha256").update(e).digest("hex").slice(0,16)}a(vw,"hashPastedText");async function $w(e,o){try{let n=Xt();return await Hd(n,{recursive:!0}),await zd(Ji(e),o,{encoding:"utf8",mode:384}),!0}catch{return!1}}a($w,"storePastedText");async function Zi(e){try{return await Gd(Ji(e),{encoding:"utf8"})}catch{return null}}a(Zi,"retrievePastedText");async function Sw(e=Vd){let o=Xt(),n=Date.now()-e,t=0,r=0,i;try{i=await Bd(o)}catch{return{scanned:t,removed:r}}for(let l of i){if(!l.endsWith(".txt"))continue;t+=1;let c=zt.join(o,l);try{(await qd(c)).mtimeMs<n&&(await Kd(c),r+=1)}catch{}}return{scanned:t,removed:r}}a(Sw,"cleanupOldPastes");import*as Qt from"path";import*as ea from"os";function Yd(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}a(Yd,"escapeRegExp");function Jd(e,o){if(!e)return;let n=e.trim();if(!n.startsWith("/"))return;let t=new RegExp(`^/${Yd(o)}(?:\\s+)?`,"i"),r=n.replace(t,"").trim();return r.length>0?r:void 0}a(Jd,"deriveArgumentHintFromUsage");function Vt(e,o="builtin"){return{...e,source:e.source??o,userInvocable:e.userInvocable??!0,disableModelInvocation:e.disableModelInvocation??!1,argumentHint:e.argumentHint??Jd(e.usage,e.name)}}a(Vt,"toCommandDefinition");function Yt(e){for(let o of Qi)try{let n=Vt(o,"builtin");e.register(n)}catch(n){q({source:"repl:commands",level:"error",message:`Failed to register command "${o.name}".`,detail:n})}}a(Yt,"registerBuiltinCommands");import*as le from"fs";import*as Le from"path";function Zd(e){if(Array.isArray(e))return e.map(o=>String(o).trim()).filter(o=>o.length>0);if(typeof e=="string")return e.split(",").map(o=>o.trim()).filter(o=>o.length>0)}a(Zd,"normalizeAliases");function Qd(e){if(e==="critical"||e==="high"||e==="medium"||e==="low")return e}a(Qd,"normalizePriority");function eu(e){return{disableModelInvocation:e["disable-model-invocation"]===!0,userInvocable:e["user-invocable"]!==!1,allowedTools:xr(e["allowed-tools"]),context:e.context==="fork"?"fork":void 0,agent:typeof e.agent=="string"?e.agent:void 0,argumentHint:typeof e["argument-hint"]=="string"?e["argument-hint"]:void 0,model:typeof e.model=="string"?e.model:void 0,hooks:Ar(e.hooks),frontmatter:e}}a(eu,"buildExecutionMetadata");function ou(e,o){try{let n=le.readFileSync(e,"utf-8"),[t,r]=br(n),i=t??{},l=Le.basename(e,".md"),c=typeof i.name=="string"&&i.name.trim()?i.name.trim():l;if(!c||r.trim().length===0)return;let d=typeof i.description=="string"&&i.description.trim()?i.description.trim():`Custom command from ${o} level`;return{name:c,description:d,aliases:Zd(i.aliases),priority:Qd(i.priority),content:r.trim(),location:o,path:e,frontmatter:i,execution:eu(i)}}catch(n){q({source:"repl:commands",level:"error",message:`Error parsing command file ${e}.`,detail:n});return}}a(ou,"parseCommandFile");function Jt(e){let o=[],n=new Set;for(let t=0;t<e.length;t++){let r=e[t],i=typeof r=="string"?r:r.path,l=typeof r=="string"?t===0?"user":"project":r.location;if(!le.existsSync(i))continue;let c=Le.resolve(i);try{c=le.realpathSync.native?.(i)??le.realpathSync(i)}catch{c=Le.resolve(i)}if(!n.has(c)){n.add(c);try{let d=le.readdirSync(i);for(let u of d){if(!u.endsWith(".md"))continue;let f=Le.join(i,u),m=ou(f,l);m&&o.push(m)}}catch(d){q({source:"repl:commands",level:"error",message:`Error scanning directory ${i}.`,detail:d})}}}return o}a(Jt,"discoverCommands");function Zt(e,o){for(let n of e)try{o.register({name:n.name,aliases:n.aliases,description:n.description,source:"extension",priority:n.priority,location:n.location,path:n.path,userInvocable:n.execution.userInvocable,disableModelInvocation:n.execution.disableModelInvocation,allowedTools:n.execution.allowedTools,context:n.execution.context,agent:n.execution.agent,argumentHint:n.execution.argumentHint,model:n.execution.model,hooks:n.execution.hooks,frontmatter:n.frontmatter,handler:a(async()=>({success:!0,invocation:{...n.execution,prompt:n.content,source:"prompt",displayName:n.name,path:n.path}}),"handler")})}catch(t){q({source:"repl:commands",level:"error",message:`Error registering command ${n.name}.`,detail:t})}}a(Zt,"registerDiscoveredCommands");function er(e,o){Yt(e);try{let n=ea.homedir(),t=o??process.cwd(),r=Jt([{path:Qt.join(t,".kodax","commands"),location:"project"},{path:H("commands"),location:"user"},{path:Qt.join(n,".agents","commands"),location:"user"}]);Zt(r,e)}catch(n){q({source:"repl:commands",level:"error",message:"Failed to discover commands.",detail:n})}}a(er,"registerAllCommands");function Fw(e){let o=new pe;return er(o,e),o.getAll()}a(Fw,"listRegisteredCommands");function nu(e){return{global:e.filter(o=>o.scope==="global").length,directory:e.filter(o=>o.scope==="directory").length,project:e.filter(o=>o.scope==="project").length}}a(nu,"summarizeAgentsFiles");async function aa(e){let o=$e(e);return await o.reload(),o.size}a(aa,"reloadSkillRegistry");function tu(e,o){if(!Array.isArray(o))return[];let n=[];for(let t of o){if(typeof t!="string")continue;let r=t.trim();r&&n.push(Sn.isAbsolute(r)?r:Sn.resolve(Sn.dirname(e),r))}return n}a(tu,"normalizeConfiguredExtensionPaths");function ru(){let e=Sn.join(Oe(),"config.json");try{if(!bn.existsSync(e))return{};let o=JSON.parse(bn.readFileSync(e,"utf-8"));if(!o||typeof o!="object"||Array.isArray(o))return{};let n=o;return{...n,extensions:tu(e,n.extensions)}}catch(o){let n=o instanceof Error?o.message:String(o);return console.log(s.yellow(`[extensions] Failed to read configured extensions: ${n}`)),{}}}a(ru,"loadExtensionReloadConfig");async function su(){try{return await jr()}catch(e){let o=e instanceof Error?e.message:String(e);return console.log(s.yellow(`[extensions] Failed to discover default extensions: ${o}`)),[]}}a(su,"discoverDefaultExtensionsForReload");async function iu(){let e=ru(),o=await Fn(e.extensions??[]),n=await Fn(await su()),t=await jo(n,o),r=[...t,...o],i=re();if(!i&&r.length>0&&(i=Fr({config:e}).activate()),!i)return{reloaded:0,loaded:0,failures:0};let l=Qe(i),c=l.failures.length;await i.reloadExtensions({continueOnError:!0});let d=Qe(i),u=Math.max(0,d.failures.length-c),f=d.loadedExtensions.map(k=>k.path),m=await jo(t,f),y=await jo(o,[...f,...m]);await i.loadExtensions(m,{continueOnError:!0,loadSource:"discovery",stage:"reload"}),await i.loadExtensions(y,{continueOnError:!0,loadSource:"config",stage:"reload"});let v=Qe(i);return{reloaded:Math.max(0,l.loadedExtensions.length-u),loaded:Math.max(0,v.loadedExtensions.length-d.loadedExtensions.length),failures:Math.max(0,v.failures.length-c)}}a(iu,"reloadExtensionRuntimeFromDisk");function au(e,o,n){if(!Number.isFinite(o)||o<=0||n<=0)return{...e,enabled:!0};let t=o/n*100,r=Math.max(1,Math.ceil(t)-1);return{...e,enabled:!0,triggerPercent:Math.min(e.triggerPercent,r)}}a(au,"createManualCompactionConfig");function or(e){e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace unchanged: ${wt(e.runtimeInfo)}`)):console.log(s.dim(" Workspace unchanged."))}a(or,"printWorkspaceUnchangedNote");var Qi=[{name:"help",aliases:["h","?"],description:"Show all available commands",usage:"/help [command]",handler:a(async e=>{if(e.length>0){let o=e[0];ce.size===0&&xn(),ce.has(o.toLowerCase())||!!An(o)?rr(o):vu(o)}else ku()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
386
+ `)),console.log("Usage:"),console.log(te.cyan(" /agents init")),console.log(te.cyan(" /agents lean")),console.log(),console.log("Commands:"),console.log(te.dim(" init ")+"Create AGENTS.md in the target project if it is absent"),console.log(te.dim(" lean ")+"Initialize or LLM-review AGENTS.md for Lean Mode guidance"),console.log(),console.log("Notes:"),console.log(te.dim(" - Existing AGENTS.md files are never overwritten.")),console.log(te.dim(" - /agents lean asks the LLM to merge missing lean guidance without duplicates.")),console.log(te.dim(" - The generated file belongs to the target project, not KodaX itself."))}a(zi,"printAgentsHelp");var qt={name:"agents",description:"Initialize target-project AGENTS.md instructions",usage:"/agents init | lean",argumentHint:"init | lean",detailedHelp:zi,handler:a(async(e,o,n)=>{let t=e[0]?.toLowerCase()??"help";if(t!=="init"&&t!=="lean")return zi(),!0;let r=Id(o),i=Cd(r,"AGENTS.md");if(t==="init")return await Ki(i,n);let l;try{l=await Vi(i)}catch(d){return{success:!1,message:`/agents lean: failed to inspect ${i}: ${kn(d)}`}}if(!l)return await Ki(i,n);let c;try{c=await Ed(i,"utf8")}catch(d){let u=d instanceof Error?d.message:String(d);return{success:!1,message:`/agents lean: failed to read ${i}: ${u}`}}return{success:!0,invocation:{prompt:Pd(i,c),source:"prompt",displayName:"/agents lean"}}},"handler")};function $n(e){let o=e.match(/\r\n|\r|\n/g);return o?o.length:0}a($n,"getPastedTextRefNumLines");function _d(e,o){return o===0?`[Pasted text #${e}]`:`[Pasted text #${e} +${o} lines]`}a(_d,"formatPastedTextRef");function Md(e,o){return`[...Truncated text #${e} +${o} lines...]`}a(Md,"formatTruncatedTextRef");var Ld=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/g;function Wd(e){let o=[],n=new RegExp(Ld.source,"g");for(let t of e.matchAll(n)){let r=Number.parseInt(t[2]??"0",10);!Number.isFinite(r)||r<=0||o.push({id:r,kind:t[1],match:t[0],index:t.index??0})}return o}a(Wd,"parseReferences");function Od(e,o){let n=Wd(e);if(n.length===0)return e;let t=a(i=>o instanceof Map?o.get(i):o[i],"getContent"),r=e;for(let i=n.length-1;i>=0;i--){let l=n[i];if(l.kind==="Image")continue;let c=t(l.id);!c||c.type!=="text"||(r=r.slice(0,l.index)+c.content+r.slice(l.index+l.match.length))}return r}a(Od,"expandPastedTextRefs");var Nd=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]$/,Dd=/^\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/;function Ud(e,o){if(o>=e.length)return!0;let n=e[o];return!n||/\s/.test(n)}a(Ud,"isAtWordBoundaryAfter");function jd(e,o){if(o===0)return!0;let n=e[o-1];return!n||/\s/.test(n)}a(jd,"isAtWordBoundaryBefore");function dw(e,o){if(o<=0||!Ud(e,o))return null;let t=e.slice(0,o).match(Nd);if(!t)return null;let r=o-t[0].length,i=Number.parseInt(t[2]??"0",10);return!Number.isFinite(i)||i<=0?null:{start:r,end:o,id:i,kind:t[1]}}a(dw,"findPlaceholderBeforeCursor");function uw(e,o){if(o>=e.length||!jd(e,o))return null;let t=e.slice(o).match(Dd);if(!t)return null;let r=Number.parseInt(t[2]??"0",10);return!Number.isFinite(r)||r<=0?null:{start:o,end:o+t[0].length,id:r,kind:t[1]}}a(uw,"findPlaceholderAfterCursor");function fw(e){return e.length>800||$n(e)>2}a(fw,"shouldReplacePasteWithPlaceholder");function mw(e,o){if(e.length<=1e4)return{truncatedText:e,placeholderContent:""};let n=Math.floor(1e3/2),t=Math.floor(1e3/2),r=e.slice(0,n),i=e.slice(-t),l=e.slice(n,-t),c=$n(l),d=Md(o,c);return{truncatedText:r+d+i,placeholderContent:l}}a(mw,"maybeTruncateLongInput");var Kt=class{static{a(this,"PasteStore")}contents=new Map;nextId=1;registerText(o){let n=this.nextId++,t=$n(o);return this.contents.set(n,{id:n,type:"text",content:o}),{id:n,placeholder:_d(n,t),numLines:t}}registerTruncatedText(o){let n=this.nextId++,t=$n(o);return this.contents.set(n,{id:n,type:"text",content:o}),{id:n,numLines:t}}adopt(o){this.contents.set(o.id,o),o.id>=this.nextId&&(this.nextId=o.id+1)}peekNextId(){return this.nextId}get(o){return this.contents.get(o)}expand(o){return Od(o,this.contents)}snapshot(){return new Map(this.contents)}restore(o){this.contents.clear();for(let[n,t]of o)this.contents.set(n,t);for(let n of o.keys())n>=this.nextId&&(this.nextId=n+1)}reset(){this.contents.clear(),this.nextId=1}size(){return this.contents.size}export(){return Array.from(this.contents.values())}},vn=null;function pw(){return vn===null&&(vn=new Kt),vn}a(pw,"getOrCreateModulePasteStore");function Yi(){return vn??void 0}a(Yi,"getActivePasteStore");import{createHash as Fd}from"node:crypto";import{mkdir as Hd,readdir as Bd,readFile as Gd,stat as qd,unlink as Kd,writeFile as zd}from"node:fs/promises";import*as zt from"node:path";var Xd="paste-cache",Vd=720*60*60*1e3;function Xt(){return H(Xd)}a(Xt,"getPasteCacheDir");function Ji(e){return zt.join(Xt(),`${e}.txt`)}a(Ji,"getPastePath");function vw(e){return Fd("sha256").update(e).digest("hex").slice(0,16)}a(vw,"hashPastedText");async function $w(e,o){try{let n=Xt();return await Hd(n,{recursive:!0}),await zd(Ji(e),o,{encoding:"utf8",mode:384}),!0}catch{return!1}}a($w,"storePastedText");async function Zi(e){try{return await Gd(Ji(e),{encoding:"utf8"})}catch{return null}}a(Zi,"retrievePastedText");async function Sw(e=Vd){let o=Xt(),n=Date.now()-e,t=0,r=0,i;try{i=await Bd(o)}catch{return{scanned:t,removed:r}}for(let l of i){if(!l.endsWith(".txt"))continue;t+=1;let c=zt.join(o,l);try{(await qd(c)).mtimeMs<n&&(await Kd(c),r+=1)}catch{}}return{scanned:t,removed:r}}a(Sw,"cleanupOldPastes");import*as Qt from"path";import*as ea from"os";function Yd(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}a(Yd,"escapeRegExp");function Jd(e,o){if(!e)return;let n=e.trim();if(!n.startsWith("/"))return;let t=new RegExp(`^/${Yd(o)}(?:\\s+)?`,"i"),r=n.replace(t,"").trim();return r.length>0?r:void 0}a(Jd,"deriveArgumentHintFromUsage");function Vt(e,o="builtin"){return{...e,source:e.source??o,userInvocable:e.userInvocable??!0,disableModelInvocation:e.disableModelInvocation??!1,argumentHint:e.argumentHint??Jd(e.usage,e.name)}}a(Vt,"toCommandDefinition");function Yt(e){for(let o of Qi)try{let n=Vt(o,"builtin");e.register(n)}catch(n){q({source:"repl:commands",level:"error",message:`Failed to register command "${o.name}".`,detail:n})}}a(Yt,"registerBuiltinCommands");import*as le from"fs";import*as Le from"path";function Zd(e){if(Array.isArray(e))return e.map(o=>String(o).trim()).filter(o=>o.length>0);if(typeof e=="string")return e.split(",").map(o=>o.trim()).filter(o=>o.length>0)}a(Zd,"normalizeAliases");function Qd(e){if(e==="critical"||e==="high"||e==="medium"||e==="low")return e}a(Qd,"normalizePriority");function eu(e){return{disableModelInvocation:e["disable-model-invocation"]===!0,userInvocable:e["user-invocable"]!==!1,allowedTools:xr(e["allowed-tools"]),context:e.context==="fork"?"fork":void 0,agent:typeof e.agent=="string"?e.agent:void 0,argumentHint:typeof e["argument-hint"]=="string"?e["argument-hint"]:void 0,model:typeof e.model=="string"?e.model:void 0,hooks:Ar(e.hooks),frontmatter:e}}a(eu,"buildExecutionMetadata");function ou(e,o){try{let n=le.readFileSync(e,"utf-8"),[t,r]=br(n),i=t??{},l=Le.basename(e,".md"),c=typeof i.name=="string"&&i.name.trim()?i.name.trim():l;if(!c||r.trim().length===0)return;let d=typeof i.description=="string"&&i.description.trim()?i.description.trim():`Custom command from ${o} level`;return{name:c,description:d,aliases:Zd(i.aliases),priority:Qd(i.priority),content:r.trim(),location:o,path:e,frontmatter:i,execution:eu(i)}}catch(n){q({source:"repl:commands",level:"error",message:`Error parsing command file ${e}.`,detail:n});return}}a(ou,"parseCommandFile");function Jt(e){let o=[],n=new Set;for(let t=0;t<e.length;t++){let r=e[t],i=typeof r=="string"?r:r.path,l=typeof r=="string"?t===0?"user":"project":r.location;if(!le.existsSync(i))continue;let c=Le.resolve(i);try{c=le.realpathSync.native?.(i)??le.realpathSync(i)}catch{c=Le.resolve(i)}if(!n.has(c)){n.add(c);try{let d=le.readdirSync(i);for(let u of d){if(!u.endsWith(".md"))continue;let f=Le.join(i,u),m=ou(f,l);m&&o.push(m)}}catch(d){q({source:"repl:commands",level:"error",message:`Error scanning directory ${i}.`,detail:d})}}}return o}a(Jt,"discoverCommands");function Zt(e,o){for(let n of e)try{o.register({name:n.name,aliases:n.aliases,description:n.description,source:"extension",priority:n.priority,location:n.location,path:n.path,userInvocable:n.execution.userInvocable,disableModelInvocation:n.execution.disableModelInvocation,allowedTools:n.execution.allowedTools,context:n.execution.context,agent:n.execution.agent,argumentHint:n.execution.argumentHint,model:n.execution.model,hooks:n.execution.hooks,frontmatter:n.frontmatter,handler:a(async()=>({success:!0,invocation:{...n.execution,prompt:n.content,source:"prompt",displayName:n.name,path:n.path}}),"handler")})}catch(t){q({source:"repl:commands",level:"error",message:`Error registering command ${n.name}.`,detail:t})}}a(Zt,"registerDiscoveredCommands");function er(e,o){Yt(e);try{let n=ea.homedir(),t=o??process.cwd(),r=Jt([{path:Qt.join(t,".kodax","commands"),location:"project"},{path:H("commands"),location:"user"},{path:Qt.join(n,".agents","commands"),location:"user"}]);Zt(r,e)}catch(n){q({source:"repl:commands",level:"error",message:"Failed to discover commands.",detail:n})}}a(er,"registerAllCommands");function Fw(e){let o=new pe;return er(o,e),o.getAll()}a(Fw,"listRegisteredCommands");function nu(e){return{global:e.filter(o=>o.scope==="global").length,directory:e.filter(o=>o.scope==="directory").length,project:e.filter(o=>o.scope==="project").length}}a(nu,"summarizeAgentsFiles");async function aa(e){let o=$e(e);return await o.reload(),o.size}a(aa,"reloadSkillRegistry");function tu(e,o){if(!Array.isArray(o))return[];let n=[];for(let t of o){if(typeof t!="string")continue;let r=t.trim();r&&n.push(bn.isAbsolute(r)?r:bn.resolve(bn.dirname(e),r))}return n}a(tu,"normalizeConfiguredExtensionPaths");function ru(){let e=bn.join(Ne(),"config.json");try{if(!xn.existsSync(e))return{};let o=JSON.parse(xn.readFileSync(e,"utf-8"));if(!o||typeof o!="object"||Array.isArray(o))return{};let n=o;return{...n,extensions:tu(e,n.extensions)}}catch(o){let n=o instanceof Error?o.message:String(o);return console.log(s.yellow(`[extensions] Failed to read configured extensions: ${n}`)),{}}}a(ru,"loadExtensionReloadConfig");async function su(){try{return await jr()}catch(e){let o=e instanceof Error?e.message:String(e);return console.log(s.yellow(`[extensions] Failed to discover default extensions: ${o}`)),[]}}a(su,"discoverDefaultExtensionsForReload");async function iu(){let e=ru(),o=await Fn(e.extensions??[]),n=await Fn(await su()),t=await Fo(n,o),r=[...t,...o],i=re();if(!i&&r.length>0&&(i=Fr({config:e}).activate()),!i)return{reloaded:0,loaded:0,failures:0};let l=Qe(i),c=l.failures.length;await i.reloadExtensions({continueOnError:!0});let d=Qe(i),u=Math.max(0,d.failures.length-c),f=d.loadedExtensions.map(k=>k.path),m=await Fo(t,f),y=await Fo(o,[...f,...m]);await i.loadExtensions(m,{continueOnError:!0,loadSource:"discovery",stage:"reload"}),await i.loadExtensions(y,{continueOnError:!0,loadSource:"config",stage:"reload"});let v=Qe(i);return{reloaded:Math.max(0,l.loadedExtensions.length-u),loaded:Math.max(0,v.loadedExtensions.length-d.loadedExtensions.length),failures:Math.max(0,v.failures.length-c)}}a(iu,"reloadExtensionRuntimeFromDisk");function au(e){return{...e,enabled:!0}}a(au,"createManualCompactionConfig");function or(e){e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace unchanged: ${wt(e.runtimeInfo)}`)):console.log(s.dim(" Workspace unchanged."))}a(or,"printWorkspaceUnchangedNote");var Qi=[{name:"help",aliases:["h","?"],description:"Show all available commands",usage:"/help [command]",handler:a(async e=>{if(e.length>0){let o=e[0];ce.size===0&&An(),ce.has(o.toLowerCase())||!!Rn(o)?rr(o):vu(o)}else ku()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
387
387
  /help - Show Command Help
388
388
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /help ")+"Show all available commands"),console.log(s.dim(" /help <command> ")+"Show detailed help for a specific command"),console.log(s.dim(" /<command> help ")+"Shortcut for command-specific help"),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /help ")+"# List all commands"),console.log(s.dim(" /help mode ")+"# Detailed help for /mode"),console.log(s.dim(" /mode help ")+"# Same detailed help shortcut"),console.log()},"detailedHelp")},{name:"exit",aliases:["quit","q","bye"],description:"Exit interactive mode",handler:a(async(e,o,n)=>{await n.saveSession(),console.log(s.green(`
389
389
  Session saved. Goodbye!`)),await n.exit()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
@@ -409,15 +409,15 @@ Pasted text #${r} (${l.length} chars):
409
409
  [Unknown /paste subcommand: ${o}]`)),console.log(s.dim(" Try /paste show <id> or /paste list"))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
410
410
  /paste - Inspect stored paste contents
411
411
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /paste list - Show all pasted text ids in this session")),console.log(s.dim(" /paste show <id> - Print the full content of paste #<id>")),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" When you paste more than ~800 chars into the input bar, KodaX")),console.log(s.dim(" replaces the pasted text with a `[Pasted text #N +K lines]` anchor")),console.log(s.dim(" to keep the UI responsive. The full content is preserved and sent")),console.log(s.dim(" to the LLM on submit. Use this command to see what was captured.")),console.log()},"detailedHelp")},{name:"compact",description:"Manually trigger context compaction",usage:"/compact [instructions]",handler:a(async(e,o,n,t)=>{try{let r=await cs(o.gitRoot),i=t.provider,l=Nn(i);if(!l){console.log(s.red(`
412
- [Provider not found: ${i}]`));return}let c=e.length>0?e.join(" "):void 0,d=r.contextWindow??l.getEffectiveContextWindow?.(t.model)??l.getContextWindow?.()??2e5,u=o.contextTokenSnapshot?.currentTokens??On(o.messages),f=au(r,u,d);console.log(s.dim(`
413
- [Compacting conversation...]`)),n.startCompacting?.();try{let m=await Pr(o.messages,f,l,d,c,void 0,u,Hr,Br,t.model);if(!m.compacted){console.log(s.green(`
412
+ [Provider not found: ${i}]`));return}let c=e.length>0?e.join(" "):void 0,d=r.contextWindow??l.getEffectiveContextWindow?.(t.model)??l.getContextWindow?.()??2e5,u=o.contextTokenSnapshot?.currentTokens??_o(o.messages),f=au(r);console.log(s.dim(`
413
+ [Compacting conversation...]`)),n.startCompacting?.();try{let m=await Pr(o.messages,f,l,d,c,void 0,u,Hr,Br,t.model,!0,l.getEffectiveMaxOutputTokens(t.model));if(!m.compacted){console.log(s.green(`
414
414
  [No compaction needed]`)),console.log(s.dim(`Current token usage: ${m.tokensBefore.toLocaleString()}
415
- `));return}o.messages=m.messages,o.contextTokenSnapshot={currentTokens:m.tokensAfter,baselineEstimatedTokens:m.tokensAfter,source:"estimate"},n.onCompactStats?.({tokensBefore:m.tokensBefore,tokensAfter:m.tokensAfter}),n.clearHistory?.(),await n.saveSession(),console.log(s.green(`
415
+ `));return}o.messages=m.messages,o.contextTokenSnapshot={currentTokens:m.tokensAfter,baselineEstimatedTokens:_o(m.messages),source:o.contextTokenSnapshot?.source??"estimate"},n.onCompactStats?.({tokensBefore:m.tokensBefore,tokensAfter:m.tokensAfter}),n.clearHistory?.(),await n.saveSession(),console.log(s.green(`
416
416
  [Compaction complete: ${Math.round(m.tokensBefore/1e3)}k -> ${Math.round(m.tokensAfter/1e3)}k tokens, ${Math.round((1-m.tokensAfter/m.tokensBefore)*100)}% reduced]`)),console.log()}finally{n.stopCompacting?.()}}catch(r){let i=r instanceof Error?r.message:String(r);console.log(s.red(`
417
417
  [Compaction failed: ${i}]
418
418
  `))}},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
419
419
  /compact - Manual Context Compaction
420
- `)),console.log(s.bold("Usage:")),console.log(s.dim(" /compact ")+"Compact conversation with default instructions"),console.log(s.dim(" /compact <text> ")+"Compact with custom instructions for the summary"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" Manually triggers context compaction using LLM-generated summaries.")),console.log(s.dim(" Older messages are replaced with a structured summary, keeping recent context.")),console.log(s.dim(" /compact still works even if auto-compaction is disabled or the auto threshold is not reached.")),console.log(),console.log(s.bold("What it does:")),console.log(s.dim(" 1. Protects a recent slice of context from pruning/summary")),console.log(s.dim(" 2. Generates structured summary of older messages using LLM")),console.log(s.dim(" 3. Tracks files that were read/modified in the conversation")),console.log(s.dim(" 4. Replaces old messages with summary to save tokens")),console.log(),console.log(s.bold("Configuration:")),console.log(s.dim(" Config file: ~/.kodax/config.json")),console.log(s.dim(" Settings:")),console.log(s.dim(" - compaction.triggerPercent: Usage percentage that triggers compaction")),console.log(s.dim(" - compaction.enabled: Controls auto-compaction only; /compact always remains available")),console.log(s.dim(" - compaction.contextWindow: Optional token-window override")),console.log(s.dim(" - compaction.protectionPercent / rollingSummaryPercent / pruningThresholdTokens: Advanced tuning")),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /compact ")+"# Compact with default instructions"),console.log(s.dim(" /compact focus on auth logic ")+"# Emphasize authentication in summary"),console.log(),console.log(s.dim(" See also: /help status (shows token usage)")),console.log()},"detailedHelp")},{name:"reload",description:"Reload project rules, skills, and active extensions",handler:a(async(e,o,n,t)=>{console.log(s.cyan(`
420
+ `)),console.log(s.bold("Usage:")),console.log(s.dim(" /compact ")+"Compact conversation with default instructions"),console.log(s.dim(" /compact <text> ")+"Compact with custom instructions for the summary"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" Manually triggers context compaction using LLM-generated summaries.")),console.log(s.dim(" Older messages are replaced with a structured summary, keeping recent context.")),console.log(s.dim(" /compact still works even if auto-compaction is disabled or the auto threshold is not reached.")),console.log(),console.log(s.bold("What it does:")),console.log(s.dim(" 1. Protects a recent slice of context from pruning/summary")),console.log(s.dim(" 2. Generates structured summary of older messages using LLM")),console.log(s.dim(" 3. Tracks files that were read/modified in the conversation")),console.log(s.dim(" 4. Replaces old messages with summary to save tokens")),console.log(),console.log(s.bold("Configuration:")),console.log(s.dim(" Config file: ~/.kodax/config.json")),console.log(s.dim(" Settings:")),console.log(s.dim(" - compaction.triggerPercent: Optional early trigger below 100; 100 uses physical capacity")),console.log(s.dim(" - compaction.enabled: Controls auto-compaction only; /compact always remains available")),console.log(s.dim(" - compaction.contextWindow: Optional token-window override")),console.log(s.dim(" - compaction.protectionPercent / rollingSummaryPercent / pruningThresholdTokens: Advanced tuning")),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /compact ")+"# Compact with default instructions"),console.log(s.dim(" /compact focus on auth logic ")+"# Emphasize authentication in summary"),console.log(),console.log(s.dim(" See also: /help status (shows token usage)")),console.log()},"detailedHelp")},{name:"reload",description:"Reload project rules, skills, and active extensions",handler:a(async(e,o,n,t)=>{console.log(s.cyan(`
421
421
  Reloading project rule files, skills, and runtime extensions...
422
422
  `));try{let r=await n.reloadAgentsFiles?.()??[],i=nu(r),l=await aa(o.gitRoot),c=await iu(),d=c.reloaded+c.loaded,u=c.failures;if(r.length===0&&l===0&&d===0&&u===0){console.log(s.yellow(`No project rule files, skills, or active extensions found.
423
423
  `)),console.log(s.dim(" Create AGENTS.md or CLAUDE.md in your project, add skills, or load extensions with --extension.")),console.log();return}console.log(s.green(`Reloaded successfully:
@@ -428,7 +428,7 @@ Reloading project rule files, skills, and runtime extensions...
428
428
  [No active extension runtime]
429
429
  `));return}let o=Qe(e),n=o.tools.filter(t=>t.source.kind==="extension");if(console.log(s.bold(`
430
430
  Extension Runtime:
431
- `)),console.log(s.dim(` Loaded: ${o.loadedExtensions.length}`)),console.log(s.dim(` Capabilities: ${o.capabilityProviders.length}`)),console.log(s.dim(` Commands: ${o.commands.length}`)),console.log(s.dim(` Hooks: ${o.hooks.length}`)),console.log(s.dim(` Failures: ${o.failures.length}`)),console.log(s.dim(` Extension Tools: ${n.length}`)),o.defaults.activeTools!==void 0&&console.log(s.dim(` Active Tools: ${o.defaults.activeTools.join(", ")||"(none)"}`)),(o.defaults.modelSelection.provider||o.defaults.modelSelection.model)&&console.log(s.dim(` Model Override: ${o.defaults.modelSelection.provider??"(inherit)"} / ${o.defaults.modelSelection.model??"(inherit)"}`)),o.defaults.thinkingLevel&&console.log(s.dim(` Thinking: ${o.defaults.thinkingLevel}`)),console.log(),o.loadedExtensions.length>0){console.log(s.bold("Loaded Extensions:"));for(let t of o.loadedExtensions)console.log(s.dim(` - ${t.label} [${t.loadSource}] (${t.path})`));console.log()}if(o.commands.length>0){console.log(s.bold("Extension Commands:"));for(let t of o.commands){let r=t.aliases?.length?` [${t.aliases.join(", ")}]`:"";console.log(s.dim(` - /${t.name}${r} ${t.description}`))}console.log()}if(o.capabilityProviders.length>0){console.log(s.bold("Capability Providers:"));for(let t of o.capabilityProviders){let r=Cu(t.metadata);console.log(s.dim(` - ${t.id} [${t.kinds.join(", ")}]${r?` ${r}`:""}`))}console.log()}if(n.length>0){console.log(s.bold("Extension Tools:"));for(let t of n){let r=t.shadowedSources.length>0?` overrides: ${t.shadowedSources.map(i=>i.label??i.id??i.kind).join(", ")}`:"";console.log(s.dim(` - ${t.name}${r}`))}console.log()}if(o.hooks.length>0){console.log(s.bold("Hook Participation:"));for(let t of o.hooks)console.log(s.dim(` - ${t.hook} [#${t.order}] ${t.source.label}`));console.log()}if(o.failures.length>0){console.log(s.bold("Recent Failures:"));for(let t of o.failures.slice(-10))console.log(s.dim(` - [${t.stage}] ${t.source.label}: ${t.target} -> ${t.message}`));console.log()}},"handler")},{name:"status",aliases:["info","ctx"],description:"Show current session status",handler:a(async(e,o,n,t)=>{await $u(o,t,e,n)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
431
+ `)),console.log(s.dim(` Loaded: ${o.loadedExtensions.length}`)),console.log(s.dim(` Capabilities: ${o.capabilityProviders.length}`)),console.log(s.dim(` Commands: ${o.commands.length}`)),console.log(s.dim(` Hooks: ${o.hooks.length}`)),console.log(s.dim(` Failures: ${o.failures.length}`)),console.log(s.dim(` Extension Tools: ${n.length}`)),o.defaults.activeTools!==void 0&&console.log(s.dim(` Active Tools: ${o.defaults.activeTools.join(", ")||"(none)"}`)),(o.defaults.modelSelection.provider||o.defaults.modelSelection.model)&&console.log(s.dim(` Model Override: ${o.defaults.modelSelection.provider??"(inherit)"} / ${o.defaults.modelSelection.model??"(inherit)"}`)),o.defaults.thinkingLevel&&console.log(s.dim(` Thinking: ${o.defaults.thinkingLevel}`)),console.log(),o.loadedExtensions.length>0){console.log(s.bold("Loaded Extensions:"));for(let t of o.loadedExtensions)console.log(s.dim(` - ${t.label} [${t.loadSource}] (${t.path})`));console.log()}if(o.commands.length>0){console.log(s.bold("Extension Commands:"));for(let t of o.commands){let r=t.aliases?.length?` [${t.aliases.join(", ")}]`:"";console.log(s.dim(` - /${t.name}${r} ${t.description}`))}console.log()}if(o.capabilityProviders.length>0){console.log(s.bold("Capability Providers:"));for(let t of o.capabilityProviders){let r=Tu(t.metadata);console.log(s.dim(` - ${t.id} [${t.kinds.join(", ")}]${r?` ${r}`:""}`))}console.log()}if(n.length>0){console.log(s.bold("Extension Tools:"));for(let t of n){let r=t.shadowedSources.length>0?` overrides: ${t.shadowedSources.map(i=>i.label??i.id??i.kind).join(", ")}`:"";console.log(s.dim(` - ${t.name}${r}`))}console.log()}if(o.hooks.length>0){console.log(s.bold("Hook Participation:"));for(let t of o.hooks)console.log(s.dim(` - ${t.hook} [#${t.order}] ${t.source.label}`));console.log()}if(o.failures.length>0){console.log(s.bold("Recent Failures:"));for(let t of o.failures.slice(-10))console.log(s.dim(` - [${t.stage}] ${t.source.label}: ${t.target} -> ${t.message}`));console.log()}},"handler")},{name:"status",aliases:["info","ctx"],description:"Show current session status",handler:a(async(e,o,n,t)=>{await $u(o,t,e,n)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
432
432
  /status - Show Session Status
433
433
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /status ")+"Display current session information"),console.log(s.dim(" /status workspace ")+"Show deeper workspace/runtime details"),console.log(s.dim(" /status runtime ")+"Show SDK runtime mode, identity, and queue counters"),console.log(s.dim(" /info, /ctx ")+"Aliases for /status"),console.log(),console.log(s.bold("Displays:")),console.log(s.dim(" - Current mode (code/ask)")),console.log(s.dim(" - Session ID")),console.log(s.dim(" - Message count")),console.log(s.dim(" - Estimated token usage")),console.log(s.dim(" - Current workspace truth")),console.log(s.dim(" - Session timestamps")),console.log(s.dim(" - Repo-intelligence mode and active runtime summary")),console.log()},"detailedHelp")},{name:"mcp",description:"Show MCP server status or refresh catalogs",usage:"/mcp [status|refresh]",handler:a(async e=>{let o=re();if(!o){console.log(s.yellow(`
434
434
  [No extension runtime active \u2014 MCP is not available]`));return}let t=Qe(o).capabilityProviders.find(c=>c.id==="mcp");if((e[0]?.toLowerCase()??"status")==="refresh"){console.log(s.dim(`
@@ -437,7 +437,7 @@ MCP Status
437
437
  `)),!t){console.log(s.yellow(" No MCP provider registered.")),console.log(s.dim(` Add mcpServers to ~/.kodax/config.json to enable MCP.
438
438
  `));return}let l=t.metadata?.servers??[];console.log(s.dim(` Servers: ${l.length}`)),console.log();for(let c of l){let d=c.status==="ready"?s.green:c.status==="error"?s.red:s.yellow;console.log(` ${s.bold(c.serverId)} ${d(c.status)} connect=${s.dim(c.connect)}`),c.cachedAt&&console.log(s.dim(` tools=${c.tools} resources=${c.resources} prompts=${c.prompts}`)),c.lastError&&console.log(s.red(` error: ${c.lastError}`))}console.log()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
439
439
  /mcp - MCP Server Management
440
- `)),console.log(s.bold("Usage:")),console.log(s.dim(" /mcp ")+"Show MCP server status"),console.log(s.dim(" /mcp status ")+"Same as /mcp"),console.log(s.dim(" /mcp refresh ")+"Force-refresh all MCP server catalogs"),console.log()},"detailedHelp")},{name:"repo-intel",description:"Inspect built-in repo intelligence",usage:"/repo-intel [status|mode|trace]",handler:a(async(e,o,n,t)=>{let r=e[0]?.toLowerCase()??"status";if(r==="status"){let i=await Wo({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace,probe:!0,workspaceRoot:tr(o)});ra(i);return}if(r==="mode"){if(e.length===1){console.log(s.dim(`
440
+ `)),console.log(s.bold("Usage:")),console.log(s.dim(" /mcp ")+"Show MCP server status"),console.log(s.dim(" /mcp status ")+"Same as /mcp"),console.log(s.dim(" /mcp refresh ")+"Force-refresh all MCP server catalogs"),console.log()},"detailedHelp")},{name:"repo-intel",description:"Inspect built-in repo intelligence",usage:"/repo-intel [status|mode|trace]",handler:a(async(e,o,n,t)=>{let r=e[0]?.toLowerCase()??"status";if(r==="status"){let i=await Oo({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace,probe:!0,workspaceRoot:tr(o)});ra(i);return}if(r==="mode"){if(e.length===1){console.log(s.dim(`
441
441
  Current repo-intelligence mode: ${s.cyan(t.repoIntelligenceMode??"auto")}`)),console.log(s.dim(`Usage: /repo-intel mode [auto|full|light|off]
442
442
  `));return}let i=uu(e[1]);if(!i){console.log(s.red(`
443
443
  [Invalid repo-intelligence mode: ${e[1]}]`)),console.log(s.dim(`Usage: /repo-intel mode [auto|full|light|off]
@@ -453,7 +453,7 @@ Current repo-intelligence trace: ${s.cyan(t.repoIntelligenceTrace?"on":"off")}`)
453
453
  /repo-intel - Built-in Repo Intelligence
454
454
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /repo-intel ")+"Show built-in repo-intelligence status"),console.log(s.dim(" /repo-intel status ")+"Show built-in engine status without probing an external daemon"),console.log(s.dim(" /repo-intel mode auto ")+"Let KodaX pick the best repo-intelligence engine"),console.log(s.dim(" /repo-intel mode full ")+"Prefer the full repo-intelligence engine"),console.log(s.dim(" /repo-intel mode light ")+"Use the light repo-intelligence engine"),console.log(s.dim(" /repo-intel mode off ")+"Disable repo-intelligence injection"),console.log(s.dim(" /repo-intel trace on|off|toggle ")+"Toggle repo-intelligence trace output"),console.log(),console.log(s.bold("Notes:")),console.log(s.dim(" - /status now includes a compact repo-intelligence summary.")),console.log(s.dim(" - External repointel endpoint/bin controls are deprecated for built-in KodaX.")),console.log()},"detailedHelp")},{name:"repointel",aliases:["ri"],description:"Deprecated alias for /repo-intel status",usage:"/repointel [status]",userInvocable:!1,handler:a(async(e,o,n,t)=>{let r=e[0]?.toLowerCase()??"status";if(console.log(s.yellow(`
455
455
  [/repointel is deprecated; use /repo-intel status]
456
- `)),r==="status"){let i=await Wo({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace,probe:!0,workspaceRoot:tr(o)});ra(i);return}if(r==="mode"){console.log(s.dim(`Use /repo-intel mode [auto|full|light|off] to change repo-intelligence mode.
456
+ `)),r==="status"){let i=await Oo({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace,probe:!0,workspaceRoot:tr(o)});ra(i);return}if(r==="mode"){console.log(s.dim(`Use /repo-intel mode [auto|full|light|off] to change repo-intelligence mode.
457
457
  `));return}if(r==="trace"){console.log(s.dim(`Use /repo-intel trace [on|off|toggle] to change repo-intelligence trace output.
458
458
  `));return}if(r==="warm"||r==="endpoint"||r==="bin"){console.log(s.dim("Repo intelligence is built into KodaX; external daemon/bin controls are no longer a normal REPL command surface.")),console.log(s.dim(`Use /repo-intel status to inspect the active engine.
459
459
  `));return}console.log(s.dim(`Usage: /repointel [status]
@@ -470,7 +470,7 @@ Child-task provider fallback: `)+s.green("on")),console.log(s.dim(" Order: ")+s
470
470
  `));return}be({fallbackProviders:l}),process.env.KODAX_FALLBACK_PROVIDERS=l.join(","),console.log(s.green(`
471
471
  \u2713 `)+s.dim("Child-task fallback order: ")+s.cyan(l.join(" \u2192 "))),console.log(s.dim(` Provider ids must match your configured providers (see /status or kodax doctor).
472
472
  `))},"handler")},{name:"mode",description:"Show or switch permission mode (plan/accept-edits/auto)",usage:"/mode [plan|accept-edits|auto]",handler:a(async(e,o,n,t)=>{if(e.length===0){let i=co(t.permissionMode,"accept-edits")??"accept-edits";console.log(s.dim(`
473
- Current mode: ${s.cyan(i)}`)),console.log(s.dim("Usage: /mode [plan|accept-edits|auto]"));return}let r=e[0];Bo.includes(r)?(t.permissionMode=r,n.setPermissionMode?.(r),it(r),console.log(s.cyan(`
473
+ Current mode: ${s.cyan(i)}`)),console.log(s.dim("Usage: /mode [plan|accept-edits|auto]"));return}let r=e[0];Go.includes(r)?(t.permissionMode=r,n.setPermissionMode?.(r),it(r),console.log(s.cyan(`
474
474
  [Switched to ${r} mode] (saved)`))):console.log(s.red(`
475
475
  [Unknown mode: ${e[0]}. Use: plan | accept-edits | auto]`))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
476
476
  /mode - Switch Permission Mode
@@ -513,7 +513,7 @@ Classifier engine: ${s.cyan(t.engine)}`)),console.log(s.dim(` consecutive denia
513
513
  [All sessions deleted]`)),or(o)):(await n.deleteSession?.(e[0]),console.log(s.green(`
514
514
  [Session deleted: ${e[0]}]`)),or(o))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
515
515
  /delete - Delete Saved Sessions
516
- `)),console.log(s.bold("Usage:")),console.log(s.dim(" /delete ")+"Show usage (lists sessions)"),console.log(s.dim(" /delete <id> ")+"Delete a specific session"),console.log(s.dim(" /delete all ")+"Delete ALL sessions"),console.log(s.dim(" /rm, /del ")+"Aliases for /delete"),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /delete 20260219_143052")+" # Delete specific session"),console.log(s.dim(" /delete all ")+"# Delete all sessions"),console.log(),console.log(s.bold("Workspace behavior:")),console.log(s.dim(" Deletes saved session records only.")),console.log(s.dim(" Current workspaces and checkouts remain untouched.")),console.log(),console.log(s.yellow(" Warning: /delete all cannot be undone!")),console.log()},"detailedHelp")},{name:"model",aliases:["m"],description:"Show or switch provider/model",usage:"/model [<provider>[/<model>] | /<model>]",handler:a(async(e,o,n,t)=>{let r=Ho().providerModels;if(e.length===0){console.log(s.bold(`
516
+ `)),console.log(s.bold("Usage:")),console.log(s.dim(" /delete ")+"Show usage (lists sessions)"),console.log(s.dim(" /delete <id> ")+"Delete a specific session"),console.log(s.dim(" /delete all ")+"Delete ALL sessions"),console.log(s.dim(" /rm, /del ")+"Aliases for /delete"),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /delete 20260219_143052")+" # Delete specific session"),console.log(s.dim(" /delete all ")+"# Delete all sessions"),console.log(),console.log(s.bold("Workspace behavior:")),console.log(s.dim(" Deletes saved session records only.")),console.log(s.dim(" Current workspaces and checkouts remain untouched.")),console.log(),console.log(s.yellow(" Warning: /delete all cannot be undone!")),console.log()},"detailedHelp")},{name:"model",aliases:["m"],description:"Show or switch provider/model",usage:"/model [<provider>[/<model>] | /<model>]",handler:a(async(e,o,n,t)=>{let r=Bo().providerModels;if(e.length===0){console.log(s.bold(`
517
517
  Available Providers:
518
518
  `));let c=rs(r);for(let d of c){let u=d.configured?s.green("[configured]"):s.red("[not configured]"),f=d.custom?s.yellow(" [custom]"):"",m=d.name===t.provider,y=m?s.cyan(" *"):"";console.log(` ${s.bold(d.name)}${y} ${u}${f}`),d.capabilityProfile.transport==="cli-bridge"&&console.log(s.yellow(` ! ${Gn(d.capabilityProfile)}`));let v=He(d.name,r),k=m?t.model:null;for(let $ of v){let b=m&&(k===$||!k&&$===d.model)?s.cyan(">"):" ";console.log(` ${b} ${$}`)}console.log()}console.log(s.dim(`Current: provider=${t.provider}${t.model?`, model=${t.model}`:""}`)),console.log(s.dim("Usage:")),console.log(s.dim(" /model <provider> Switch provider")),console.log(s.dim(" /model <provider>/<model> Switch to specific model")),console.log(s.dim(` /model /<model> Switch model within current provider
519
519
  `));return}let i=(e[0]??"").trim();if(!i)return;if(i.startsWith("/")){let c=i.slice(1);if(!c){console.log(s.red(`
@@ -522,25 +522,25 @@ Available Providers:
522
522
  `));return}be({model:c}),n.switchProvider?.(t.provider,c),console.log(s.cyan(`
523
523
  [Switched to ${c}] (saved)`));return}if(i.includes("/")){let c=i.indexOf("/"),d=i.slice(0,c),u=i.slice(c+1);if(!u||!d){console.log(s.red(`
524
524
  [Invalid format. Use: /model <provider>/<model>]`));return}if(!We(d)){console.log(s.red(`
525
- [Unknown provider: ${d}]`)),console.log(s.dim(`Available: ${Ne().join(", ")}
525
+ [Unknown provider: ${d}]`)),console.log(s.dim(`Available: ${Oe().join(", ")}
526
526
  `));return}let f=He(d,r);if(!f.includes(u)){console.log(s.red(`
527
527
  [Unknown model: ${u}]`)),console.log(s.dim(`Available models for ${d}: ${f.join(", ")}
528
528
  `));return}be({provider:d,model:u}),n.switchProvider?.(d,u),console.log(s.cyan(`
529
529
  [Switched to ${d}/${u}] (saved)`));return}let l=i;We(l)?(be({provider:l,model:void 0}),n.switchProvider?.(l),console.log(s.cyan(`
530
530
  [Switched to ${l}] (saved)`))):(console.log(s.red(`
531
- [Unknown provider: ${l}]`)),console.log(s.dim(`Available: ${Ne().join(", ")}
531
+ [Unknown provider: ${l}]`)),console.log(s.dim(`Available: ${Oe().join(", ")}
532
532
  `)))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
533
533
  /model - Switch LLM Provider/Model
534
534
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /model ")+"List all providers with models"),console.log(s.dim(" /model <provider> ")+"Switch to a provider (default model)"),console.log(s.dim(" /model <provider>/<model> ")+"Switch to a specific model"),console.log(s.dim(" /model /<model> ")+"Switch model within current provider"),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /model ")+"# See available providers & models"),console.log(s.dim(" /model anthropic ")+"# Switch to Anthropic (default model)"),console.log(s.dim(" /model openai/gpt-5.4 ")+"# Switch to OpenAI GPT-5.4"),console.log(s.dim(" /model /claude-opus-4-6 ")+"# Switch to Opus within current provider"),console.log()},"detailedHelp")},{name:"provider",description:"Inspect provider semantics and policy constraints",usage:"/provider [<provider>[/<model>]]",handler:a(async(e,o,n,t)=>{let r=(e[0]??"").trim();if(r==="forget-capability"){let f=(e[1]??"").trim();if(!f){Dn(),console.log(s.dim(`
535
535
  [Cleared all learned capability overrides]
536
536
  `));return}let m=f.indexOf("/"),y=m===-1?f:f.slice(0,m),v=m===-1?void 0:f.slice(m+1)||void 0;Dn(y,v),console.log(s.dim(`
537
537
  [Cleared learned capability overrides for ${y}${v?`/${v}`:""}]
538
- `));return}if(r==="probe"){let f=Fo(t.provider,t.model).filter(y=>y!=="auto"&&y!=="off"),m=`${t.provider}/${t.model??"(default)"}`;console.log(s.dim(`
538
+ `));return}if(r==="probe"){let f=Ho(t.provider,t.model).filter(y=>y!=="auto"&&y!=="off"),m=`${t.provider}/${t.model??"(default)"}`;console.log(s.dim(`
539
539
  [Probing ${m} \u2014 ${f.length} efforts, minimal requests\u2026]`));try{let y=await ws({provider:t.provider,model:t.model,efforts:f,resolve:Nn,now:a(()=>new Date().toISOString(),"now")});for(let v of y){let k=v.status==="accepted"?s.green("\u2713"):v.status==="rejected"?s.red("\u2717"):s.yellow("!");console.log(s.dim(` ${k} ${v.effort}${v.error?` \u2014 ${v.error}`:""}`))}console.log(s.dim(` (rejections recorded; undo with /provider forget-capability)
540
540
  `))}catch(y){let v=y instanceof Error?y.message:String(y);console.log(s.red(`
541
541
  [Probe failed: ${v}]
542
542
  `))}return}let i=t.provider,l=t.model;if(r)if(r.includes("/")){let f=r.indexOf("/");i=r.slice(0,f).trim(),l=r.slice(f+1).trim()||void 0}else i=r,l=void 0;if(!We(i)){console.log(s.red(`
543
- [Unknown provider: ${i}]`)),console.log(s.dim(`Available: ${Ne().join(", ")}
543
+ [Unknown provider: ${i}]`)),console.log(s.dim(`Available: ${Oe().join(", ")}
544
544
  `));return}let c=os(i,l);if(!c){console.log(s.red(`
545
545
  [Provider details unavailable: ${i}]`)),console.log();return}let d=ls(i,l,t.reasoningMode);console.log(s.bold(`
546
546
  Provider Details:
@@ -548,18 +548,18 @@ Provider Details:
548
548
  /provider - Inspect Provider Semantics
549
549
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /provider ")+"Inspect the current provider/model"),console.log(s.dim(" /provider <provider> ")+"Inspect a provider using its default model"),console.log(s.dim(" /provider <provider>/<model> ")+"Inspect a specific provider/model pair"),console.log(s.dim(" /provider probe ")+"Send minimal requests to learn which efforts the model rejects"),console.log(s.dim(" /provider forget-capability [<provider>[/<model>]]")),console.log(s.dim(" ")+"Clear learned (observed/probed) effort rejections; re-offer those rungs"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" Shows the provider capability matrix and common 029 policy outcomes.")),console.log(s.dim(" Use this to understand why long-running, harness, or evidence-heavy flows may warn or block.")),console.log()},"detailedHelp")},{name:"thinking",aliases:["think","t"],description:"Show or change reasoning mode (compat alias)",usage:"/thinking [on|off|auto|quick|balanced|deep]",handler:a(async(e,o,n,t)=>{if(e.length===0){let i=Bn(t.provider,t.model),l=t.thinking?s.green("ON"):s.dim("OFF");console.log(s.dim(`
550
550
  Thinking: ${l}`)),console.log(s.dim(`Reasoning mode: ${s.cyan(t.reasoningMode)}`)),console.log(s.dim(`Effective control: ${s.cyan(qn(i))}`)),console.log(s.dim(`Actual execution: ${Kn(t.reasoningMode,i)}`)),console.log(s.dim(`Usage: /thinking on|off|auto|quick|balanced|deep
551
- `));return}let r=e[0].toLowerCase();if(r==="on"||r==="off"||Wn.includes(r)){let i=r==="on"?"auto":r==="off"?"off":r,l=na(i,n,t);ve(`Reasoning mode: ${i}`,l);return}console.log(s.red(`
551
+ `));return}let r=e[0].toLowerCase();if(r==="on"||r==="off"||On.includes(r)){let i=r==="on"?"auto":r==="off"?"off":r,l=na(i,n,t);ve(`Reasoning mode: ${i}`,l);return}console.log(s.red(`
552
552
  [Invalid value: ${e[0]}]`)),console.log(s.dim(`Usage: /thinking on|off|auto|quick|balanced|deep
553
553
  `))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
554
554
  /thinking - Legacy Alias for Reasoning Mode
555
555
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /thinking ")+"Show current reasoning status"),console.log(s.dim(" /thinking on ")+"Map to /reasoning auto"),console.log(s.dim(" /thinking off ")+"Map to /reasoning off"),console.log(s.dim(" /thinking auto ")+"Set reasoning mode to auto"),console.log(s.dim(" /thinking quick ")+"Set reasoning mode to quick"),console.log(s.dim(" /thinking balanced ")+"Set reasoning mode to balanced"),console.log(s.dim(" /thinking deep ")+"Set reasoning mode to deep"),console.log(s.dim(" /t ")+"Alias for /thinking"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" Compatibility command for the new unified reasoning modes.")),console.log(s.dim(" Use /reasoning for the primary interface.")),console.log()},"detailedHelp")},{name:"reasoning",aliases:["reason"],description:"Show or set reasoning mode",usage:"/reasoning [off|auto|quick|balanced|deep]",handler:a(async(e,o,n,t)=>{if(e.length===0){let l=Bn(t.provider,t.model);console.log(s.dim(`
556
556
  Reasoning mode: ${s.cyan(t.reasoningMode)}`)),console.log(s.dim(`Thinking compatibility: ${t.thinking?s.green("ON"):s.dim("OFF")}`)),console.log(s.dim(`Effective control: ${s.cyan(qn(l))}`)),console.log(s.dim(`Actual execution: ${Kn(t.reasoningMode,l)}`)),console.log(s.dim(`Usage: /reasoning off|auto|quick|balanced|deep
557
- `));return}let r=e[0].toLowerCase();if(!Wn.includes(r)){console.log(s.red(`
557
+ `));return}let r=e[0].toLowerCase();if(!On.includes(r)){console.log(s.red(`
558
558
  [Invalid reasoning mode: ${e[0]}]`)),console.log(s.dim(`Usage: /reasoning off|auto|quick|balanced|deep
559
559
  `));return}let i=na(r,n,t);ve(`Reasoning mode: ${r}`,i)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
560
560
  /reasoning - Set Reasoning Mode
561
561
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /reasoning ")+"Show current reasoning mode"),console.log(s.dim(" /reasoning off ")+"Disable reasoning"),console.log(s.dim(" /reasoning auto ")+"Use semantic routing + adaptive depth"),console.log(s.dim(" /reasoning quick ")+"Low-depth reasoning"),console.log(s.dim(" /reasoning balanced ")+"Medium-depth reasoning"),console.log(s.dim(" /reasoning deep ")+"High-depth reasoning"),console.log(s.dim(" /reasoning:auto ")+"Inline form, equivalent to /reasoning auto"),console.log(s.dim(" /reason ")+"Alias for /reasoning"),console.log()},"detailedHelp")},{name:"effort",description:"Show or set native reasoning effort",usage:"/effort [level]",handler:a(async(e,o,n,t)=>{let r=du(t);if(e.length===0){let f=oa(t);console.log(s.dim(`
562
- Reasoning effort: ${s.cyan(f)}`)),console.log(s.dim(`Compatibility: ${s.cyan(t.reasoningMode)}`)),console.log(s.dim(`Available: ${Fo(t.provider,t.model).join(", ")}`)),console.log(s.dim(`${r}
562
+ Reasoning effort: ${s.cyan(f)}`)),console.log(s.dim(`Compatibility: ${s.cyan(t.reasoningMode)}`)),console.log(s.dim(`Available: ${Ho(t.provider,t.model).join(", ")}`)),console.log(s.dim(`${r}
563
563
  `));return}if(e.length>1){console.log(s.red(`
564
564
  [Reasoning effort accepts exactly one value]`)),console.log(s.dim(`${r}
565
565
  `));return}let i=e[0],l;try{l=hr(i)}catch(f){let m=f instanceof Error?f.message:String(f);console.log(s.red(`
@@ -576,49 +576,49 @@ Agent mode: ${s.cyan(t.agentMode.toUpperCase())}`)),console.log(s.dim(`Usage: /a
576
576
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /agent-mode ")+"Show current agent mode"),console.log(s.dim(" /agent-mode ama ")+"Adaptive multi-agent mode; workflows run only via the /workflow command"),console.log(s.dim(" /agent-mode amaw ")+"AMA + the agent may start a workflow itself from natural language"),console.log(s.dim(" /agent-mode ama-workflow")+"Alias for /agent-mode amaw"),console.log(s.dim(" /agent-mode sa ")+"Force single-agent execution"),console.log(s.dim(" /agent-mode toggle ")+"Cycle AMA -> AMAW -> SA"),console.log(s.dim(" /am ")+"Alias for /agent-mode"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" AMA runs the adaptive multi-agent harness. Workflows are command-gated: the /workflow")),console.log(s.dim(" command runs as a full scout-then-author Worker turn, but the agent never starts")),console.log(s.dim(" one on its own from natural language.")),console.log(s.dim(" AMAW is AMA plus self-activation: the agent may decide from natural language to author")),console.log(s.dim(" and run a workflow (run_workflow). /workflow behaves identically to AMA.")),console.log(s.dim(" SA forces a single solo agent \u2014 no sub-agents and no workflows \u2014 to save tokens.")),console.log()},"detailedHelp")},{name:"auto",aliases:["a"],description:"Quick switch to auto mode",handler:a(async(e,o,n,t)=>{t.permissionMode="auto",n.setPermissionMode?.("auto"),it("auto"),console.log(s.cyan(`
577
577
  [Switched to auto mode] (saved)`))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
578
578
  /auto - Quick Switch to Auto Mode
579
- `)),console.log(s.bold("Usage:")),console.log(s.dim(" /auto ")+"Switch to auto mode"),console.log(s.dim(" /a ")+"Alias for /auto"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" Equivalent to /mode auto.")),console.log(s.dim(" Auto-mode classifier evaluates each non-Tier-1 tool call;")),console.log(s.dim(" benign actions auto-approve, risky ones escalate to user confirm.")),console.log(),console.log(s.dim(" See also: /help mode, /auto-engine, /auto-denials")),console.log()},"detailedHelp")},{name:"skill",description:"Skill namespace - list, invoke, or review skill learning",usage:"/skill[:name] [pending|args]",handler:a(async(e,o)=>{if((e[0]??"").toLowerCase()==="pending"){await rn(tn(o),"skill");return}await bu(e,o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
579
+ `)),console.log(s.bold("Usage:")),console.log(s.dim(" /auto ")+"Switch to auto mode"),console.log(s.dim(" /a ")+"Alias for /auto"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" Equivalent to /mode auto.")),console.log(s.dim(" Auto-mode classifier evaluates each non-Tier-1 tool call;")),console.log(s.dim(" benign actions auto-approve, risky ones escalate to user confirm.")),console.log(),console.log(s.dim(" See also: /help mode, /auto-engine, /auto-denials")),console.log()},"detailedHelp")},{name:"skill",description:"Skill namespace - list, invoke, or review skill learning",usage:"/skill[:name] [pending|args]",handler:a(async(e,o)=>{if((e[0]??"").toLowerCase()==="pending"){await sn(rn(o),"skill");return}await bu(e,o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
580
580
  /skill - Skill Namespace
581
- `)),console.log(s.bold("Usage:")),console.log(s.dim(" /skill ")+"List all available skills"),console.log(s.dim(" /<skill-name> [args] ")+"Invoke a skill when no command uses that name"),console.log(s.dim(" /skill:<name> [args] ")+"Invoke a skill with the compatibility form"),console.log(s.dim(" /skill reload ")+"Reload skills from disk"),console.log(s.dim(" /skill pending ")+"List pending method-guide learning suggestions"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" Direct slash skill invocation follows the Claude Code style.")),console.log(s.dim(" Built-in and extension commands keep priority when names overlap.")),console.log(s.dim(" The /skill:<name> form remains supported for compatibility.")),console.log(s.dim(" Skills can also be triggered by natural language - just ask!")),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /skill ")+"# List all skills"),console.log(s.dim(" /skill reload ")+"# Reload skills after editing ~/.kodax/skills"),console.log(s.dim(" /code-review src/ ")+"# Invoke code-review skill"),console.log(s.dim(" /skill:code-review src/ ")+"# Compatibility form"),console.log(s.dim(" /skill:tdd auth ")+"# Invoke TDD skill"),console.log()},"detailedHelp")},{name:"verifier-log",description:"Toggle Sidecar Verifier log line (off by default)",usage:"/verifier-log [on|off]",argumentHint:"on | off",handler:a(async e=>{let o=e[0]?.toLowerCase(),n=process.env.KODAX_VERIFIER_LOG==="1";if(!o){let i=Ho().verifierLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
581
+ `)),console.log(s.bold("Usage:")),console.log(s.dim(" /skill ")+"List all available skills"),console.log(s.dim(" /<skill-name> [args] ")+"Invoke a skill when no command uses that name"),console.log(s.dim(" /skill:<name> [args] ")+"Invoke a skill with the compatibility form"),console.log(s.dim(" /skill reload ")+"Reload skills from disk"),console.log(s.dim(" /skill pending ")+"List pending method-guide learning suggestions"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" Direct slash skill invocation follows the Claude Code style.")),console.log(s.dim(" Built-in and extension commands keep priority when names overlap.")),console.log(s.dim(" The /skill:<name> form remains supported for compatibility.")),console.log(s.dim(" Skills can also be triggered by natural language - just ask!")),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /skill ")+"# List all skills"),console.log(s.dim(" /skill reload ")+"# Reload skills after editing ~/.kodax/skills"),console.log(s.dim(" /code-review src/ ")+"# Invoke code-review skill"),console.log(s.dim(" /skill:code-review src/ ")+"# Compatibility form"),console.log(s.dim(" /skill:tdd auth ")+"# Invoke TDD skill"),console.log()},"detailedHelp")},{name:"verifier-log",description:"Toggle Sidecar Verifier log line (off by default)",usage:"/verifier-log [on|off]",argumentHint:"on | off",handler:a(async e=>{let o=e[0]?.toLowerCase(),n=process.env.KODAX_VERIFIER_LOG==="1";if(!o){let i=Bo().verifierLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
582
582
  Sidecar Verifier log: ${s.cyan(l)}${c}`)),console.log(s.dim(" When on, a one-line summary persists per verifier call:\n `[Sidecar Verifier] {verdict} \xB7 {provider}/{model} \xB7 {ms}ms \xB7 {trace}`")),console.log(s.dim(`Usage: /verifier-log [on|off]
583
583
  `));return}let t;if(o==="on"||o==="true"||o==="1")t=!0;else if(o==="off"||o==="false"||o==="0")t=!1;else{console.log(s.red(`
584
584
  [Invalid value: ${e[0]}]`)),console.log(s.dim(`Usage: /verifier-log [on|off]
585
585
  `));return}t?process.env.KODAX_VERIFIER_LOG="1":delete process.env.KODAX_VERIFIER_LOG;let r=eo({verifierLog:t});ve(`Sidecar Verifier log: ${t?"on":"off"}`,r)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
586
586
  /verifier-log - Sidecar Verifier Log Toggle
587
- `)),console.log(s.bold("Usage:")),console.log(s.dim(" /verifier-log ")+"Show current state"),console.log(s.dim(" /verifier-log on ")+"Enable + persist to config"),console.log(s.dim(" /verifier-log off ")+"Disable + persist to config"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" The Sidecar Verifier is the second-pass LLM judgment that fires")),console.log(s.dim(" after a Worker terminates text-only. Off by default (silent happy")),console.log(s.dim(" path). When on, every verifier call emits a one-line summary:")),console.log(s.dim(" [Sidecar Verifier] accept \xB7 anthropic/claude-sonnet-4-6 \xB7 3214ms \xB7 verifier_ok")),console.log(),console.log(s.bold("Equivalent env var:")),console.log(s.dim(" KODAX_VERIFIER_LOG=1 ")+"Same effect, env wins over config"),console.log()},"detailedHelp")},{name:"stall-log",description:"Toggle Stall Sidecar log line (off by default)",usage:"/stall-log [on|off]",argumentHint:"on | off",handler:a(async e=>{let o=e[0]?.toLowerCase(),n=process.env.KODAX_STALL_LOG==="1";if(!o){let i=Ho().stallLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
587
+ `)),console.log(s.bold("Usage:")),console.log(s.dim(" /verifier-log ")+"Show current state"),console.log(s.dim(" /verifier-log on ")+"Enable + persist to config"),console.log(s.dim(" /verifier-log off ")+"Disable + persist to config"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" The Sidecar Verifier is the second-pass LLM judgment that fires")),console.log(s.dim(" after a Worker terminates text-only. Off by default (silent happy")),console.log(s.dim(" path). When on, every verifier call emits a one-line summary:")),console.log(s.dim(" [Sidecar Verifier] accept \xB7 anthropic/claude-sonnet-4-6 \xB7 3214ms \xB7 verifier_ok")),console.log(),console.log(s.bold("Equivalent env var:")),console.log(s.dim(" KODAX_VERIFIER_LOG=1 ")+"Same effect, env wins over config"),console.log()},"detailedHelp")},{name:"stall-log",description:"Toggle Stall Sidecar log line (off by default)",usage:"/stall-log [on|off]",argumentHint:"on | off",handler:a(async e=>{let o=e[0]?.toLowerCase(),n=process.env.KODAX_STALL_LOG==="1";if(!o){let i=Bo().stallLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
588
588
  Stall Sidecar log: ${s.cyan(l)}${c}`)),console.log(s.dim(" When on, a one-line summary persists per L2 stall verdict:\n `[Stall Sidecar] isStuck={true|false} \xB7 {provider}/{model} \xB7 {ms}ms \xB7 {trace}`")),console.log(s.dim(`Usage: /stall-log [on|off]
589
589
  `));return}let t;if(o==="on"||o==="true"||o==="1")t=!0;else if(o==="off"||o==="false"||o==="0")t=!1;else{console.log(s.red(`
590
590
  [Invalid value: ${e[0]}]`)),console.log(s.dim(`Usage: /stall-log [on|off]
591
591
  `));return}t?process.env.KODAX_STALL_LOG="1":delete process.env.KODAX_STALL_LOG;let r=eo({stallLog:t});ve(`Stall Sidecar log: ${t?"on":"off"}`,r)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
592
592
  /stall-log - Stall Sidecar Log Toggle
593
- `)),console.log(s.bold("Usage:")),console.log(s.dim(" /stall-log ")+"Show current state"),console.log(s.dim(" /stall-log on ")+"Enable + persist to config"),console.log(s.dim(" /stall-log off ")+"Disable + persist to config"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" The Stall Sidecar (FEATURE_178) is the L2 anti-loop LLM judge that")),console.log(s.dim(" fires when the L1 rule-based detector spots a repeat-tool pattern.")),console.log(s.dim(" Off by default (silent happy path). When on, every L2 verdict emits")),console.log(s.dim(" a one-line summary:")),console.log(s.dim(" [Stall Sidecar] isStuck=true \xB7 zhipu/glm-5.1 (inherit) \xB7 1842ms \xB7 sidecar_ok")),console.log(),console.log(s.bold("Equivalent env var:")),console.log(s.dim(" KODAX_STALL_LOG=1 ")+"Same effect, env wins over config"),console.log()},"detailedHelp")},ft,mt,pt,wi,Hi,Ht,Bt,Gi,qt],lu={General:["help","copy","exit","clear","compact","reload","extensions","status","agents"],Permission:["mode","auto"],Session:["new","recover","save","load","sessions","history","delete"],Settings:["model","provider","thinking","reasoning","effort","agent-mode","plan","repo-intel"],Skills:["skill","learn"]};function cu(e){let o=Co();return e.map(n=>o.get(n)).filter(n=>n!==void 0).filter(n=>n.userInvocable!==!1)}a(cu,"getCommandsForCategory");function sr(e){return e!=="off"}a(sr,"reasoningModeToLegacyThinking");function la(e){return e==="none"?"off":e??"auto"}a(la,"formatReasoningEffortDisplay");function du(e){return`Usage: /effort ${Fo(e.provider,e.model).join("|")}|<provider-value>`}a(du,"formatReasoningEffortUsage");function oa(e){let o=ss(e);return ts({provider:e.provider,model:e.model,effort:o,effortOverride:e.effortOverride,thinking:e.thinking,reasoningMode:e.reasoningMode})}a(oa,"formatCurrentReasoningEffortStatus");function uu(e){let o=e?.trim().toLowerCase();return o==="auto"?"auto":o==="full"?"full":o==="light"?"light":o==="off"?"off":null}a(uu,"normalizeRepoIntelPublicMode");function fu(e,o){return e?e==="toggle"?!o:e==="on"||e==="true"||e==="1"?!0:e==="off"||e==="false"||e==="0"?!1:null:null}a(fu,"resolveToggleFlag");function eo(e){try{return be(e),{saved:!0}}catch(o){return{saved:!1,error:o instanceof Error?o:new Error(String(o))}}}a(eo,"persistUserConfig");function ve(e,o){if(o.saved){console.log(s.cyan(`
593
+ `)),console.log(s.bold("Usage:")),console.log(s.dim(" /stall-log ")+"Show current state"),console.log(s.dim(" /stall-log on ")+"Enable + persist to config"),console.log(s.dim(" /stall-log off ")+"Disable + persist to config"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" The Stall Sidecar (FEATURE_178) is the L2 anti-loop LLM judge that")),console.log(s.dim(" fires when the L1 rule-based detector spots a repeat-tool pattern.")),console.log(s.dim(" Off by default (silent happy path). When on, every L2 verdict emits")),console.log(s.dim(" a one-line summary:")),console.log(s.dim(" [Stall Sidecar] isStuck=true \xB7 zhipu/glm-5.1 (inherit) \xB7 1842ms \xB7 sidecar_ok")),console.log(),console.log(s.bold("Equivalent env var:")),console.log(s.dim(" KODAX_STALL_LOG=1 ")+"Same effect, env wins over config"),console.log()},"detailedHelp")},ft,mt,pt,wi,Hi,Ht,Bt,Gi,qt],lu={General:["help","copy","exit","clear","compact","reload","extensions","status","agents"],Permission:["mode","auto"],Session:["new","recover","save","load","sessions","history","delete"],Settings:["model","provider","thinking","reasoning","effort","agent-mode","plan","repo-intel"],Skills:["skill","learn"]};function cu(e){let o=To();return e.map(n=>o.get(n)).filter(n=>n!==void 0).filter(n=>n.userInvocable!==!1)}a(cu,"getCommandsForCategory");function sr(e){return e!=="off"}a(sr,"reasoningModeToLegacyThinking");function la(e){return e==="none"?"off":e??"auto"}a(la,"formatReasoningEffortDisplay");function du(e){return`Usage: /effort ${Ho(e.provider,e.model).join("|")}|<provider-value>`}a(du,"formatReasoningEffortUsage");function oa(e){let o=ss(e);return ts({provider:e.provider,model:e.model,effort:o,effortOverride:e.effortOverride,thinking:e.thinking,reasoningMode:e.reasoningMode})}a(oa,"formatCurrentReasoningEffortStatus");function uu(e){let o=e?.trim().toLowerCase();return o==="auto"?"auto":o==="full"?"full":o==="light"?"light":o==="off"?"off":null}a(uu,"normalizeRepoIntelPublicMode");function fu(e,o){return e?e==="toggle"?!o:e==="on"||e==="true"||e==="1"?!0:e==="off"||e==="false"||e==="0"?!1:null:null}a(fu,"resolveToggleFlag");function eo(e){try{return be(e),{saved:!0}}catch(o){return{saved:!1,error:o instanceof Error?o:new Error(String(o))}}}a(eo,"persistUserConfig");function ve(e,o){if(o.saved){console.log(s.cyan(`
594
594
  [${e}] (saved)`));return}console.log(s.yellow(`
595
595
  [${e}]`)),console.log(s.red(`[Config save failed: ${o.error.message}]`))}a(ve,"printPersistedCommandStatus");function na(e,o,n){let t=sr(e),r=e!=="off"&&n.effort==="none",i=eo({reasoningMode:e,thinking:t,...r?{effort:void 0}:{}});return o.setReasoningMode?o.setReasoningMode(e):(n.reasoningMode=e,n.thinking=t),r&&(o.setEffort?o.setEffort(void 0):(n.effort=void 0,n.effortOverride=!1)),i}a(na,"applyReasoningMode");function ca(e){return e==="none"?"off":"auto"}a(ca,"resolveReasoningModeAfterEffort");function mu(e,o){let n=ca(e);return{...o,effort:e,effortOverride:e!==void 0,reasoningMode:n,thinking:sr(n)}}a(mu,"resolveConfigAfterReasoningEffort");function pu(e,o,n){let t=ca(e),r=sr(t),i=eo({effort:e,reasoningMode:t,thinking:r});return o.setEffort?o.setEffort(e):(n.effort=e,n.effortOverride=e!==void 0),o.setReasoningMode?o.setReasoningMode(t):(n.reasoningMode=t,n.thinking=r),i}a(pu,"applyReasoningEffort");function gu(e,o,n){let t=eo({agentMode:e});return o.setAgentMode?o.setAgentMode(e):n.agentMode=e,t}a(gu,"applyAgentMode");function ta(e,o,n,t){let r=eo(o);return n.setRepoIntelligenceRuntime?n.setRepoIntelligenceRuntime(e):(e.mode!==void 0&&(t.repoIntelligenceMode=e.mode),e.trace!==void 0&&(t.repoIntelligenceTrace=e.trace)),r}a(ta,"applyRepoIntelligenceRuntimeConfig");function wu(e){let o=e.configuredMode===e.requestedMode?e.configuredMode:`${e.configuredMode} -> ${e.requestedMode}`,n=e.fallbackToLight?", fallback=light":"";return`${o} => ${e.effectiveEngine} (${e.status}${n})`}a(wu,"formatRepoIntelligenceSummary");function tr(e){return e.runtimeInfo?.workspaceRoot??e.gitRoot??e.runtimeInfo?.executionCwd}a(tr,"getRepoIntelInspectionWorkspaceRoot");function hu(e){return e.status}a(hu,"formatRepoIntelStatusLabel");function yu(e){return e.effectiveEngine==="off"?"off":e.effectiveEngine}a(yu,"formatRepoIntelActiveEngine");function ra(e){console.log(s.bold(`
596
596
  Repo Intelligence:
597
597
  `)),console.log(s.dim(` Mode: ${s.cyan(e.configuredMode)}`)),console.log(s.dim(` Engine: ${s.cyan(yu(e))}`)),console.log(s.dim(` Status: ${s.cyan(hu(e))}`)),console.log(s.dim(` Trace: ${s.cyan(e.traceEnabled?"on":"off")}`)),e.workerPath&&console.log(s.dim(` Worker: ${e.workerPath}`)),e.storageRoot&&console.log(s.dim(` Cache: ${e.storageRoot}`)),e.fallbackToLight&&console.log(s.yellow(" Fallback: light engine is currently active")),e.error&&console.log(s.red(` Error: ${e.error}`));for(let o of e.warnings)console.log(s.yellow(` Warning: ${o}`));console.log()}a(ra,"printRepoIntelStatus");function sa(e,o){if(o.length!==0){console.log(s.dim(`${e}:`));for(let n of o){let t=n.aliases?.length?` (${n.aliases.join(", ")})`:"";console.log(` ${s.cyan(`/${n.name}`)}${s.dim(t)} ${n.description}`)}console.log()}}a(sa,"printCommandSection");function ku(){console.log(s.bold(`
598
598
  Available Commands:
599
- `));let e=Co(),o=new Set;for(let[t,r]of Object.entries(lu)){let i=cu(r);if(i.length!==0){for(let l of i)o.add(l.name.toLowerCase());sa(t,i)}}let n=new Map;for(let t of e.getAll()){if(t.userInvocable===!1||o.has(t.name.toLowerCase()))continue;let r=t.source==="extension"?"Extensions":t.source==="skill"?"Skill Commands":t.source==="prompt"?"Prompt Commands":"Other Commands",i=n.get(r)??[];i.push(t),n.set(r,i)}for(let t of Au()){if(o.has(t.name.toLowerCase()))continue;let r=n.get("Extensions")??[];r.push({name:t.name,aliases:t.aliases,description:t.description}),n.set("Extensions",r)}for(let t of["Extensions","Skill Commands","Prompt Commands","Other Commands"])sa(t,n.get(t)??[]);console.log(s.dim("Special syntax:")),console.log(` ${s.cyan("@path")} Attach image to context`),console.log(` ${s.cyan("!command")} Execute shell command`),console.log(),console.log(s.dim("Skills:")),console.log(` ${s.cyan("/skill")} List all available skills`),console.log(` ${s.cyan("/<skill-name>")} Invoke a skill when no command has that name`),console.log(` ${s.cyan("/skill:<name>")} Compatibility form (e.g., /skill:code-review)`),console.log(` ${s.cyan("/skill pending")} Review pending skill learning suggestions`),console.log(),console.log(s.dim(`Tip: ${s.cyan("/<command> help")} shows command-specific help.`)),console.log()}a(ku,"printHelp");function vu(e){let o=Mr({topic:e});console.log(`
600
- ${s.cyan(o.title)}`),console.log(o.content),o.nextTopics.length>0&&console.log(s.dim(`
601
- Related topics: ${o.nextTopics.join(", ")}`)),console.log()}a(vu,"printManualTopic");function rr(e){ce.size===0&&xn();let o=ce.get(e.toLowerCase());if(!o){let n=An(e);if(!n){console.log(s.yellow(`
599
+ `));let e=To(),o=new Set;for(let[t,r]of Object.entries(lu)){let i=cu(r);if(i.length!==0){for(let l of i)o.add(l.name.toLowerCase());sa(t,i)}}let n=new Map;for(let t of e.getAll()){if(t.userInvocable===!1||o.has(t.name.toLowerCase()))continue;let r=t.source==="extension"?"Extensions":t.source==="skill"?"Skill Commands":t.source==="prompt"?"Prompt Commands":"Other Commands",i=n.get(r)??[];i.push(t),n.set(r,i)}for(let t of Au()){if(o.has(t.name.toLowerCase()))continue;let r=n.get("Extensions")??[];r.push({name:t.name,aliases:t.aliases,description:t.description}),n.set("Extensions",r)}for(let t of["Extensions","Skill Commands","Prompt Commands","Other Commands"])sa(t,n.get(t)??[]);console.log(s.dim("Special syntax:")),console.log(` ${s.cyan("@path")} Attach image to context`),console.log(` ${s.cyan("!command")} Execute shell command`),console.log(),console.log(s.dim("Skills:")),console.log(` ${s.cyan("/skill")} List all available skills`),console.log(` ${s.cyan("/<skill-name>")} Invoke a skill when no command has that name`),console.log(` ${s.cyan("/skill:<name>")} Compatibility form (e.g., /skill:code-review)`),console.log(` ${s.cyan("/skill pending")} Review pending skill learning suggestions`),console.log(),console.log(s.dim(`Tip: ${s.cyan("/<command> help")} shows command-specific help.`)),console.log()}a(ku,"printHelp");function vu(e){let o=Mr({topic:e});if(console.log(`
600
+ ${s.cyan(o.title)}`),console.log(o.content),o.topics.length>0){console.log();for(let n of o.topics)console.log(`- ${n.id}: ${n.summary}`)}o.topics.length===0&&o.nextTopics.length>0&&console.log(s.dim(`
601
+ Related topics: ${o.nextTopics.join(", ")}`)),console.log()}a(vu,"printManualTopic");function rr(e){ce.size===0&&An();let o=ce.get(e.toLowerCase());if(!o){let n=Rn(e);if(!n){console.log(s.yellow(`
602
602
  [Unknown command: /${e}. Type /help for available commands]`));return}console.log(s.cyan(`
603
603
  /${n.name}`)),n.aliases?.length&&console.log(s.dim(`Aliases: ${n.aliases.join(", ")}`)),console.log(s.dim(`
604
604
  ${n.description}`)),console.log(s.dim(`
605
605
  Usage: ${Ru(n)}`)),console.log();return}o.detailedHelp?o.detailedHelp():(console.log(s.cyan(`
606
606
  /${o.name}`)),o.aliases?.length&&console.log(s.dim(`Aliases: ${o.aliases.join(", ")}`)),console.log(s.dim(`
607
607
  ${o.description}`)),o.usage&&console.log(s.dim(`
608
- Usage: ${o.usage}`)),console.log())}a(rr,"printDetailedHelp");async function $u(e,o,n=[],t){let r=n[0]?.toLowerCase(),i=e.contextTokenSnapshot?.currentTokens??On(e.messages),l=e.contextTokenSnapshot?.source??"estimate",c=es(o.provider),d=ns(o.provider,o.model,o.reasoningMode);if(console.log(s.bold(`
608
+ Usage: ${o.usage}`)),console.log())}a(rr,"printDetailedHelp");async function $u(e,o,n=[],t){let r=n[0]?.toLowerCase(),i=e.contextTokenSnapshot?.currentTokens??_o(e.messages),l=e.contextTokenSnapshot?.source??"estimate",c=es(o.provider),d=ns(o.provider,o.model,o.reasoningMode);if(console.log(s.bold(`
609
609
  Session Status:
610
- `)),console.log(s.dim(` Provider: ${s.cyan(o.provider)}${o.model?` / ${s.cyan(o.model)}`:""}`)),console.log(s.dim(` Permission: ${s.cyan(o.permissionMode)}`)),console.log(s.dim(` Reasoning: ${s.cyan(o.reasoningMode)}`)),console.log(s.dim(` Effort: ${s.cyan(la(o.effort))}`)),console.log(s.dim(` Agent Mode: ${s.cyan(o.agentMode.toUpperCase())}`)),c){let f=Gn(c),m=c.transport==="cli-bridge"?s.yellow(f):s.cyan(f);console.log(s.dim(` Provider Cap: ${m}`))}if(d&&d.status!=="allow"){let f=d.status==="block"?s.red:s.yellow;console.log(s.dim(` Provider Policy: ${f(d.summary)}`))}console.log(s.dim(` Session ID: ${e.sessionId}`)),console.log(s.dim(` Messages: ${e.messages.length}`)),console.log(s.dim(` Tokens: ~${i} (${l})`));let u=await Wo({mode:o.repoIntelligenceMode,trace:o.repoIntelligenceTrace,probe:!0,workspaceRoot:tr(e)});console.log(s.dim(` Repo Intel: ${s.cyan(wu(u))}`)),e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace: ${s.cyan(wt(e.runtimeInfo))}`)):e.gitRoot&&console.log(s.dim(` Workspace: ${s.cyan(e.gitRoot)}`)),(r==="workspace"||r==="worktree"||r==="runtime")&&(e.runtimeInfo?.canonicalRepoRoot&&console.log(s.dim(` Canonical: ${e.runtimeInfo.canonicalRepoRoot}`)),e.runtimeInfo?.executionCwd&&console.log(s.dim(` Exec CWD: ${e.runtimeInfo.executionCwd}`)),e.runtimeInfo?.workspaceKind&&console.log(s.dim(` Kind: ${e.runtimeInfo.workspaceKind}`))),r==="runtime"&&await Su(t),console.log(s.dim(` Created: ${e.createdAt}`)),console.log(s.dim(` Last Active: ${e.lastAccessed}`)),console.log()}a($u,"printStatus");async function Su(e){if(!e?.getRuntimeStatus){console.log(s.dim(" SDK Runtime: unavailable (host did not provide runtime status)"));return}let o;try{o=await e.getRuntimeStatus()}catch(t){console.log(s.dim(` SDK Runtime: unavailable (${t instanceof Error?t.message:String(t)})`));return}if(!o){console.log(s.dim(" SDK Runtime: unavailable"));return}console.log(s.dim(` SDK Runtime: ${s.cyan(o.mode)} profile=${s.cyan(o.profile)}`)),console.log(s.dim(` Runtime ID: ${o.runtimeId}`)),o.health&&console.log(s.dim(` Health: ${o.health}`)),o.endpoint&&console.log(s.dim(` Endpoint: ${o.endpoint}`)),o.startedAt&&console.log(s.dim(` Runtime Up: ${o.startedAt}`));let n=[Ze("sessions",o.sessions),Ze("runs",o.runs),Ze("active",o.activeRuns),Ze("queued",o.queuedRuns),Ze("pending permissions",o.pendingPermissions),Ze("workflows",o.workflows)].filter(t=>t!==void 0);n.length>0&&console.log(s.dim(` Runtime Ctrs: ${n.join(" ")}`))}a(Su,"printRuntimeSurfaceStatus");function Ze(e,o){return o===void 0?void 0:`${e}=${o}`}a(Ze,"formatRuntimeCount");async function bu(e,o){let n=$e(o.gitRoot);if(e[0]?.toLowerCase()==="reload"){let r=await aa(o.gitRoot);console.log(s.green(`
610
+ `)),console.log(s.dim(` Provider: ${s.cyan(o.provider)}${o.model?` / ${s.cyan(o.model)}`:""}`)),console.log(s.dim(` Permission: ${s.cyan(o.permissionMode)}`)),console.log(s.dim(` Reasoning: ${s.cyan(o.reasoningMode)}`)),console.log(s.dim(` Effort: ${s.cyan(la(o.effort))}`)),console.log(s.dim(` Agent Mode: ${s.cyan(o.agentMode.toUpperCase())}`)),c){let f=Gn(c),m=c.transport==="cli-bridge"?s.yellow(f):s.cyan(f);console.log(s.dim(` Provider Cap: ${m}`))}if(d&&d.status!=="allow"){let f=d.status==="block"?s.red:s.yellow;console.log(s.dim(` Provider Policy: ${f(d.summary)}`))}console.log(s.dim(` Session ID: ${e.sessionId}`)),console.log(s.dim(` Messages: ${e.messages.length}`)),console.log(s.dim(` Tokens: ~${i} (${l})`));let u=await Oo({mode:o.repoIntelligenceMode,trace:o.repoIntelligenceTrace,probe:!0,workspaceRoot:tr(e)});console.log(s.dim(` Repo Intel: ${s.cyan(wu(u))}`)),e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace: ${s.cyan(wt(e.runtimeInfo))}`)):e.gitRoot&&console.log(s.dim(` Workspace: ${s.cyan(e.gitRoot)}`)),(r==="workspace"||r==="worktree"||r==="runtime")&&(e.runtimeInfo?.canonicalRepoRoot&&console.log(s.dim(` Canonical: ${e.runtimeInfo.canonicalRepoRoot}`)),e.runtimeInfo?.executionCwd&&console.log(s.dim(` Exec CWD: ${e.runtimeInfo.executionCwd}`)),e.runtimeInfo?.workspaceKind&&console.log(s.dim(` Kind: ${e.runtimeInfo.workspaceKind}`))),r==="runtime"&&await Su(t),console.log(s.dim(` Created: ${e.createdAt}`)),console.log(s.dim(` Last Active: ${e.lastAccessed}`)),console.log()}a($u,"printStatus");async function Su(e){if(!e?.getRuntimeStatus){console.log(s.dim(" SDK Runtime: unavailable (host did not provide runtime status)"));return}let o;try{o=await e.getRuntimeStatus()}catch(t){console.log(s.dim(` SDK Runtime: unavailable (${t instanceof Error?t.message:String(t)})`));return}if(!o){console.log(s.dim(" SDK Runtime: unavailable"));return}console.log(s.dim(` SDK Runtime: ${s.cyan(o.mode)} profile=${s.cyan(o.profile)}`)),console.log(s.dim(` Runtime ID: ${o.runtimeId}`)),o.health&&console.log(s.dim(` Health: ${o.health}`)),o.endpoint&&console.log(s.dim(` Endpoint: ${o.endpoint}`)),o.startedAt&&console.log(s.dim(` Runtime Up: ${o.startedAt}`));let n=[Ze("sessions",o.sessions),Ze("runs",o.runs),Ze("active",o.activeRuns),Ze("queued",o.queuedRuns),Ze("pending permissions",o.pendingPermissions),Ze("workflows",o.workflows)].filter(t=>t!==void 0);n.length>0&&console.log(s.dim(` Runtime Ctrs: ${n.join(" ")}`))}a(Su,"printRuntimeSurfaceStatus");function Ze(e,o){return o===void 0?void 0:`${e}=${o}`}a(Ze,"formatRuntimeCount");async function bu(e,o){let n=$e(o.gitRoot);if(e[0]?.toLowerCase()==="reload"){let r=await aa(o.gitRoot);console.log(s.green(`
611
611
  Skills reloaded: ${r} skill(s)`)),console.log(s.dim("Updated skills will apply to subsequent requests in this session.")),console.log();return}n.size===0&&await De(o.gitRoot),xu(n.listUserInvocable())}a(bu,"handleSkillNamespaceCommand");function xu(e){if(console.log(s.bold(`
612
612
  Available Skills:
613
613
  `)),e.length===0){console.log(s.dim(" No skills found.")),console.log(s.dim(`
614
- Skills can be placed in:`)),console.log(s.dim(" - .kodax/skills/")),console.log(s.dim(" - ~/.kodax/skills/")),console.log(s.dim(" - ~/.agents/skills/"));return}let o=Co(),n=e.map(r=>{let i=o.get(r.name)!==void 0||An(r.name)!==void 0;return{skill:r,invocation:i?`/skill:${r.name}`:`/${r.name}`,commandNameTaken:i}}),t=Math.max(...n.map(r=>r.invocation.length));for(let r of n){let{skill:i}=r,l=r.invocation.padEnd(t),c=i.argumentHint?` ${i.argumentHint}`:"",d=i.source==="builtin"?" [builtin]":i.source==="user"?" [user]":i.source==="plugin"?" [plugin]":"",u=r.commandNameTaken?" [command name exists]":"",f=i.description.length>50?i.description.slice(0,50)+"...":i.description;console.log(` ${s.cyan(l)}${s.dim(c)}${s.dim(d)}${s.dim(u)} ${s.dim(f)}`)}console.log(),console.log(s.dim(`Total: ${e.length} skills`)),console.log(s.dim("Usage: /<skill-name> [args], legacy /skill:<name> [args], or ask naturally")),console.log(s.dim("Review pending skill learning suggestions with /skill pending")),console.log()}a(xu,"printSkillsListPiMonoStyle");var ce=new pe;function xn(e){ce.size>0||er(ce,e)}a(xn,"initCommandRegistry");function Co(e){return xn(e),ce}a(Co,"getCommandRegistry");function Au(){return re()?.listCommands().filter(o=>o.metadata?.userInvocable!==!1)??[]}a(Au,"getActiveExtensionCommands");function An(e){let o=re(),n=e.trim().toLowerCase();if(!n)return;let t=o?.listCommands().find(r=>r.name.trim().toLowerCase()===n||(r.aliases??[]).some(i=>i.trim().toLowerCase()===n));if(t)return t.metadata?.userInvocable===!1?void 0:t}a(An,"getActiveExtensionCommand");function Ru(e){return e.usage??`/${e.name}`}a(Ru,"formatExtensionCommandUsage");function Eu(e){return Array.isArray(e)?e.map(o=>String(o)).join(", "):e&&typeof e=="object"?JSON.stringify(e):String(e)}a(Eu,"formatExtensionDiagnosticValue");function Cu(e){if(!e)return;let o=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>`${n}=${Eu(t)}`);return o.length>0?o.join(" | "):void 0}a(Cu,"formatExtensionDiagnosticMetadata");function Qe(e){let o=e.getDiagnostics;if(typeof o=="function")return o.call(e);let n=e.getDefaults,t=typeof n=="function"?n.call(e):void 0;return{loadedExtensions:[],capabilityProviders:e.listCapabilityProviders().map(r=>({id:r.id,kinds:[...r.kinds],source:{kind:"extension",id:`extension:${r.id}`,label:r.id,path:"(runtime)"}})),commands:e.listCommands().map(r=>({name:r.name,aliases:r.aliases,description:r.description,usage:r.usage,metadata:r.metadata,source:{kind:"extension",id:`extension-command:${r.name}`,label:r.name,path:"(runtime)"}})),tools:[],hooks:[],failures:[],defaults:{activeTools:t?.activeTools,modelSelection:t?.modelSelection??{},thinkingLevel:t?.thinkingLevel}}}a(Qe,"getExtensionRuntimeDiagnostics");function Tu(e,o){if(o.invocation)return{prompt:o.invocation.prompt,source:"extension",displayName:o.invocation.displayName??`/${e.name}`,disableModelInvocation:o.invocation.disableModelInvocation,allowedTools:o.invocation.allowedTools,context:o.invocation.context,model:o.invocation.model}}a(Tu,"toExtensionInvocationRequest");function Iu(e){return e.map(o=>{if(typeof o=="string")return o;if(o instanceof Error)return o.stack??o.message;try{return JSON.stringify(o)}catch{return String(o)}}).join(" ")}a(Iu,"formatDiagnosticParts");function $n(e,o,n){q({source:e,level:o,message:Iu(n)})}a($n,"emitCommandDiagnostic");async function Pu(e,o,n){let t=re();if(!t)return console.log(s.yellow(`
615
- [Extension runtime is not active for /${e.name}]`)),!1;let r=await e.handler(o,{sessionId:n.sessionId,gitRoot:n.gitRoot,workingDirectory:n.runtimeInfo?.executionCwd??n.gitRoot??process.cwd(),reloadExtensions:a(()=>t.reloadExtensions(),"reloadExtensions"),getDiagnostics:a(()=>Qe(t),"getDiagnostics"),logger:{debug:a((...l)=>$n(`repl:extension-command:${e.name}`,"debug",l),"debug"),info:a((...l)=>$n(`repl:extension-command:${e.name}`,"info",l),"info"),warn:a((...l)=>$n(`repl:extension-command:${e.name}`,"warn",l),"warn"),error:a((...l)=>$n(`repl:extension-command:${e.name}`,"error",l),"error")}});if(!r)return!0;r.message&&console.log(r.message);let i=Tu(e,r);return i?{invocation:i}:!0}a(Pu,"executeExtensionCommand");function Rh(e){let o=e.trim();if(!o.startsWith("/"))return null;let n=o.slice(1).split(/\s+/),r=n[0]?.toLowerCase(),i=n.slice(1).filter(Boolean);if(!r)return null;if(r.startsWith("skill:")){let c=r.slice(6);return c?{command:"skill",args:i,skillInvocation:{name:c}}:{command:"skill",args:i}}let l=r.indexOf(":");if(l>0){let c=r.slice(l+1).trim();r=r.slice(0,l),i=c?[c,...i]:i}return{command:r,args:i}}a(Rh,"parseCommand");function ia(e){let o=e[0]?.trim().toLowerCase();return o==="help"||o==="--help"||o==="-h"}a(ia,"isCommandHelpRequest");async function Eh(e,o,n,t){if(ce.size===0&&xn(o.gitRoot),e.skillInvocation)return await nr({command:e.skillInvocation.name,args:e.args},o);let r=ce.get(e.command);if(r){if(r.userInvocable===!1)return console.log(s.yellow(`
614
+ Skills can be placed in:`)),console.log(s.dim(" - .kodax/skills/")),console.log(s.dim(" - ~/.kodax/skills/")),console.log(s.dim(" - ~/.agents/skills/"));return}let o=To(),n=e.map(r=>{let i=o.get(r.name)!==void 0||Rn(r.name)!==void 0;return{skill:r,invocation:i?`/skill:${r.name}`:`/${r.name}`,commandNameTaken:i}}),t=Math.max(...n.map(r=>r.invocation.length));for(let r of n){let{skill:i}=r,l=r.invocation.padEnd(t),c=i.argumentHint?` ${i.argumentHint}`:"",d=i.source==="builtin"?" [builtin]":i.source==="user"?" [user]":i.source==="plugin"?" [plugin]":"",u=r.commandNameTaken?" [command name exists]":"",f=i.description.length>50?i.description.slice(0,50)+"...":i.description;console.log(` ${s.cyan(l)}${s.dim(c)}${s.dim(d)}${s.dim(u)} ${s.dim(f)}`)}console.log(),console.log(s.dim(`Total: ${e.length} skills`)),console.log(s.dim("Usage: /<skill-name> [args], legacy /skill:<name> [args], or ask naturally")),console.log(s.dim("Review pending skill learning suggestions with /skill pending")),console.log()}a(xu,"printSkillsListPiMonoStyle");var ce=new pe;function An(e){ce.size>0||er(ce,e)}a(An,"initCommandRegistry");function To(e){return An(e),ce}a(To,"getCommandRegistry");function Au(){return re()?.listCommands().filter(o=>o.metadata?.userInvocable!==!1)??[]}a(Au,"getActiveExtensionCommands");function Rn(e){let o=re(),n=e.trim().toLowerCase();if(!n)return;let t=o?.listCommands().find(r=>r.name.trim().toLowerCase()===n||(r.aliases??[]).some(i=>i.trim().toLowerCase()===n));if(t)return t.metadata?.userInvocable===!1?void 0:t}a(Rn,"getActiveExtensionCommand");function Ru(e){return e.usage??`/${e.name}`}a(Ru,"formatExtensionCommandUsage");function Eu(e){return Array.isArray(e)?e.map(o=>String(o)).join(", "):e&&typeof e=="object"?JSON.stringify(e):String(e)}a(Eu,"formatExtensionDiagnosticValue");function Tu(e){if(!e)return;let o=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>`${n}=${Eu(t)}`);return o.length>0?o.join(" | "):void 0}a(Tu,"formatExtensionDiagnosticMetadata");function Qe(e){let o=e.getDiagnostics;if(typeof o=="function")return o.call(e);let n=e.getDefaults,t=typeof n=="function"?n.call(e):void 0;return{loadedExtensions:[],capabilityProviders:e.listCapabilityProviders().map(r=>({id:r.id,kinds:[...r.kinds],source:{kind:"extension",id:`extension:${r.id}`,label:r.id,path:"(runtime)"}})),commands:e.listCommands().map(r=>({name:r.name,aliases:r.aliases,description:r.description,usage:r.usage,metadata:r.metadata,source:{kind:"extension",id:`extension-command:${r.name}`,label:r.name,path:"(runtime)"}})),tools:[],hooks:[],failures:[],defaults:{activeTools:t?.activeTools,modelSelection:t?.modelSelection??{},thinkingLevel:t?.thinkingLevel}}}a(Qe,"getExtensionRuntimeDiagnostics");function Cu(e,o){if(o.invocation)return{prompt:o.invocation.prompt,source:"extension",displayName:o.invocation.displayName??`/${e.name}`,disableModelInvocation:o.invocation.disableModelInvocation,allowedTools:o.invocation.allowedTools,context:o.invocation.context,model:o.invocation.model}}a(Cu,"toExtensionInvocationRequest");function Iu(e){return e.map(o=>{if(typeof o=="string")return o;if(o instanceof Error)return o.stack??o.message;try{return JSON.stringify(o)}catch{return String(o)}}).join(" ")}a(Iu,"formatDiagnosticParts");function Sn(e,o,n){q({source:e,level:o,message:Iu(n)})}a(Sn,"emitCommandDiagnostic");async function Pu(e,o,n){let t=re();if(!t)return console.log(s.yellow(`
615
+ [Extension runtime is not active for /${e.name}]`)),!1;let r=await e.handler(o,{sessionId:n.sessionId,gitRoot:n.gitRoot,workingDirectory:n.runtimeInfo?.executionCwd??n.gitRoot??process.cwd(),reloadExtensions:a(()=>t.reloadExtensions(),"reloadExtensions"),getDiagnostics:a(()=>Qe(t),"getDiagnostics"),logger:{debug:a((...l)=>Sn(`repl:extension-command:${e.name}`,"debug",l),"debug"),info:a((...l)=>Sn(`repl:extension-command:${e.name}`,"info",l),"info"),warn:a((...l)=>Sn(`repl:extension-command:${e.name}`,"warn",l),"warn"),error:a((...l)=>Sn(`repl:extension-command:${e.name}`,"error",l),"error")}});if(!r)return!0;r.message&&console.log(r.message);let i=Cu(e,r);return i?{invocation:i}:!0}a(Pu,"executeExtensionCommand");function Rh(e){let o=e.trim();if(!o.startsWith("/"))return null;let n=o.slice(1).split(/\s+/),r=n[0]?.toLowerCase(),i=n.slice(1).filter(Boolean);if(!r)return null;if(r.startsWith("skill:")){let c=r.slice(6);return c?{command:"skill",args:i,skillInvocation:{name:c}}:{command:"skill",args:i}}let l=r.indexOf(":");if(l>0){let c=r.slice(l+1).trim();r=r.slice(0,l),i=c?[c,...i]:i}return{command:r,args:i}}a(Rh,"parseCommand");function ia(e){let o=e[0]?.trim().toLowerCase();return o==="help"||o==="--help"||o==="-h"}a(ia,"isCommandHelpRequest");async function Eh(e,o,n,t){if(ce.size===0&&An(o.gitRoot),e.skillInvocation)return await nr({command:e.skillInvocation.name,args:e.args},o);let r=ce.get(e.command);if(r){if(r.userInvocable===!1)return console.log(s.yellow(`
616
616
  [Command /${r.name} is not user-invocable]`)),!1;if(ia(e.args))return rr(e.command),!0;try{let d=await r.handler(e.args,o,n,t);return d&&typeof d=="object"?d:!0}catch(d){return console.log(s.red(`
617
- [Command failed: ${d instanceof Error?d.message:String(d)}]`)),!1}}let i=An(e.command);if(i){if(ia(e.args))return rr(e.command),!0;try{return await Pu(i,e.args,o)}catch(d){return console.log(s.red(`
617
+ [Command failed: ${d instanceof Error?d.message:String(d)}]`)),!1}}let i=Rn(e.command);if(i){if(ia(e.args))return rr(e.command),!0;try{return await Pu(i,e.args,o)}catch(d){return console.log(s.red(`
618
618
  [Extension command failed: ${d instanceof Error?d.message:String(d)}]`)),!1}}let l=await _u(e,o);if(l)return await nr({command:l.skill.name,args:l.args},o);let c=await da(e.command,o);return c?await nr({command:c.name,args:e.args},o):(console.log(s.yellow(`
619
619
  [Unknown command: /${e.command}. Type /help for available commands]`)),!1)}a(Eh,"executeCommand");async function _u(e,o){let n=e.args[0];if(!n)return;let t=`${e.command}:${n}`,r=await da(t,o);if(r)return{skill:r,args:e.args.slice(1)}}a(_u,"resolveNamespacedDirectSkillCommand");async function da(e,o){let n=$e(o.gitRoot);n.size===0&&await De(o.gitRoot);let t=n.get(e);return t?.userInvocable?t:void 0}a(da,"resolveDirectSkillCommand");async function nr(e,o){let n=$e(o.gitRoot),t=e.command,r=e.args.join(" ");n.size===0&&await De(o.gitRoot);try{let i=n.get(t);if(!i)return console.log(s.red(`
620
620
  [Skill not found: ${t}]`)),!1;if(!i.userInvocable)return console.log(s.yellow(`
621
621
  [Skill "${t}" is not user-invocable]`)),!1;console.log(s.cyan(`
622
622
  [Invoking skill: ${t}]`)),i.argumentHint&&console.log(s.dim(`Arguments: ${r||"(none)"}`)),console.log();let l=await n.loadFull(t),c={workingDirectory:process.cwd(),projectRoot:o.gitRoot??void 0,sessionId:o.sessionId,environment:{},executeDynamicContext:o.skillDynamicContext?.execute,disableDynamicContext:o.skillDynamicContext?.disable},d=await Rr(l,r,c);return console.log(s.green(`Skill activated: ${t}`)),console.log(s.dim("The skill context has been prepared for the AI.")),console.log(),{invocation:{prompt:d.content,source:"skill",displayName:t,path:l.skillFilePath,disableModelInvocation:d.disableModelInvocation,userInvocable:l.userInvocable,allowedTools:l.allowedTools,context:l.context,agent:l.agent,argumentHint:l.argumentHint,model:l.model,hooks:l.hooks,skillInvocation:{name:t,path:l.skillFilePath,description:l.description,arguments:r||void 0,allowedTools:l.allowedTools,context:l.context,agent:l.agent,argumentHint:l.argumentHint,model:l.model,hookEvents:l.hooks?Object.entries(l.hooks).filter(([,u])=>Array.isArray(u)&&u.length>0).map(([u])=>u):void 0,expandedContent:d.content}}}}catch(i){return console.log(s.red(`
623
- [Error invoking skill: ${i instanceof Error?i.message:String(i)}]`)),!1}}a(nr,"executeSkillCommand");var Rn=class{static{a(this,"SkillCompleter")}gitRoot;constructor(o){this.gitRoot=o}canComplete(o,n){return this.parseTrigger(o.slice(0,n))!==void 0}async getCompletions(o,n){let t=this.parseTrigger(o.slice(0,n));if(!t)return[];let r=t.partial.toLowerCase();return(await this.getSkills()).filter(l=>{let c=l.name.toLowerCase();return c.includes(r)||this.fuzzyIncludes(r,c)}).map(l=>({text:`${t.invocationPrefix}${l.name}`,display:l.name,description:this.truncateDescription(l.description),type:"skill"})).sort((l,c)=>{let d=l.display.toLowerCase().startsWith(r),u=c.display.toLowerCase().startsWith(r);return d&&!u?-1:!d&&u?1:l.display.length-c.display.length})}setGitRoot(o){this.gitRoot!==o&&(this.gitRoot=o)}parseTrigger(o){let n=o.match(/(^|\s)\/skill:([^\s]*)$/);if(n)return{partial:n[2]??"",invocationPrefix:"/skill:"};let t=o.match(/(^|\s)\/([^\s]*)$/);if(t)return{partial:t[2]??"",invocationPrefix:"/"}}async getSkills(){try{let o=$e(this.gitRoot);return o.size===0&&await De(this.gitRoot),o.listUserInvocable()}catch{return[]}}fuzzyIncludes(o,n){let t=0;for(let r=0;r<n.length&&t<o.length;r+=1)n[r]===o[t]&&(t+=1);return t===o.length}truncateDescription(o,n=50){return o.length<=n?o:o.slice(0,n-3)+"..."}};import{exec as Mu}from"node:child_process";import*as oo from"node:path";import{promisify as Lu}from"node:util";var ua=Lu(Mu);function Wu(e){let o=e.slice(3);if(!o)return;let n=o.indexOf(" -> ");return(n===-1?o:o.slice(n+4)).replace(/^"(.*)"$/,"$1").trim()||void 0}a(Wu,"pathFromPorcelainLine");async function fa(e,o=10){try{let[{stdout:n},{stdout:t}]=await Promise.all([ua("git rev-parse --show-toplevel",{cwd:e}),ua("git status --porcelain=v1 -uall",{cwd:e})]),r=n.trim(),i=[],l=new Set;for(let c of t.split(`
624
- `)){if(!c.trim())continue;let d=Wu(c);if(!d)continue;let u=oo.resolve(r,d),f=oo.relative(e,u).split(oo.sep).join("/");if(!(!f||f.startsWith("..")||l.has(f))&&(l.add(f),i.push(f),i.length>=o))break}return i}catch{return[]}}a(fa,"getRecentWorkingSetFiles");function no(e){let o=e.lastIndexOf("/");if(o===-1)return-1;for(;o>0&&!/\s/.test(e[o-1]??"");)if(o=e.lastIndexOf("/",o-1),o===-1)return-1;return o}a(no,"findCommandSlashIndex");var ir=class{static{a(this,"FileCompleter")}cwdSource;cache=new Map;cacheTimeout=5e3;recentCache=new Map;recentFilesProvider;constructor(o,n=fa){this.cwdSource=o,this.recentFilesProvider=n}canComplete(o,n){let t=o.slice(0,n),r=t.lastIndexOf("@");return!(r===-1||r>0&&!/\s/.test(t[r-1]??"")||t.slice(r+1).includes(" "))}async getCompletions(o,n){let t=o.slice(0,n),r=t.lastIndexOf("@");if(r===-1)return[];let i=t.slice(r+1),l=[],c=this.resolveCwd(),d=i.lastIndexOf("/"),u=d===-1?c:To.join(c,i.slice(0,d)),f=d===-1?i:i.slice(d+1);try{let y=(await this.readdir(u)).filter(v=>v.toLowerCase().startsWith(f.toLowerCase()));for(let v of y){let k=To.join(u,v),$=await this.isDirectory(k),g=d===-1?v:i.slice(0,d+1)+v;l.push({text:"@"+g+($?"/":""),display:v+($?"/":""),description:$?"directory":"file",type:"file"})}}catch{}if(d===-1){let m=await this.getRecentFiles(c),y=new Set(l.map($=>$.text)),v=f.toLowerCase(),k=[];for(let $ of m){if(f&&!To.basename($).toLowerCase().startsWith(v))continue;let g="@"+$;y.has(g)||(y.add(g),k.push({text:g,display:$,description:"recent",type:"file"}))}l.unshift(...k)}return l}async getRecentFiles(o){let n=Date.now(),t=this.recentCache.get(o);if(t&&t.expiresAt>n)return t.files;let r=await this.recentFilesProvider(o);return this.recentCache.set(o,{files:r,expiresAt:Date.now()+this.cacheTimeout}),r}resolveCwd(){return typeof this.cwdSource=="function"?this.cwdSource():this.cwdSource??process.cwd()}async readdir(o){let n=Date.now(),t=this.cache.get(o);return t&&t.expiresAt>n?t.entries:(t&&this.cache.delete(o),new Promise(r=>{En.readdir(o,(i,l)=>{i?r([]):(this.cache.set(o,{entries:l,expiresAt:Date.now()+this.cacheTimeout}),r(l))})}))}async isDirectory(o){return new Promise(n=>{En.stat(o,(t,r)=>{n(!t&&r.isDirectory())})})}},ar=class{static{a(this,"CommandCompleter")}commands;constructor(){this.commands=new Map,this.loadCommands()}loadCommands(){for(let n of Co().getAll())n.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]});let o=re();for(let n of o?.listCommands()??[])n.metadata?.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]})}canComplete(o,n){let t=o.slice(0,n),r=no(t);return r===-1?!1:!t.slice(r).includes(" ")}async getCompletions(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return[];this.commands.clear(),this.loadCommands();let i=t.slice(r+1).toLowerCase(),l=[];for(let[c,d]of this.commands){this.fuzzyMatch(i,c)&&l.push({text:"/"+c,display:"/"+c,description:d.description,type:"command"});for(let u of d.aliases)u!==c&&this.fuzzyMatch(i,u)&&l.push({text:"/"+u,display:"/"+u,description:`Alias for /${c}: ${d.description}`,type:"command"})}return l}fuzzyMatch(o,n){if(!o)return!0;let t=o.toLowerCase(),r=n.toLowerCase(),i=0;for(let l=0;l<r.length&&i<t.length;l++)r[l]===t[i]&&i++;return i===t.length}};function Fh(e){let o=new ir(e),n=new Rn,t=new ar;return async r=>{let i=r.includes("@"),l=r.includes("/");if(!i&&!l)return[[],r];let c=[];if(l){let u=await Nu(r,r.length);c.push(...u)}if(l&&n.canComplete(r,r.length)){let u=await n.getCompletions(r,r.length);c.push(...u)}if(l&&t.canComplete(r,r.length)){let u=await t.getCompletions(r,r.length);c.push(...u)}if(i&&o.canComplete(r,r.length)){let u=await o.getCompletions(r,r.length);c.push(...u)}return[c.map(u=>Ou(r,u)),r]}}a(Fh,"createCompleter");async function Nu(e,o){let{ArgumentCompleter:n}=await import("./argument-completer-N6RT5KYT.js"),t=new n;return t.canComplete(e,o)?t.getCompletions(e,o):[]}a(Nu,"getArgumentCompletions");function Ou(e,o){if(o.type!=="argument")return o.text;let n=no(e);if(n!==-1&&!/\s/.test(e.slice(n)))return`${e} ${o.text}`;let r=e.match(/\S+$/)?.[0]??"";return`${r?e.slice(0,e.length-r.length):e}${o.text}`}a(Ou,"formatReadlineCompletion");import{existsSync as Tn,readdirSync as ha,readFileSync as ya}from"node:fs";import{join as In}from"node:path";var Du=[{name:"plan",description:"Read-only planning mode - blocks all modifications",type:"enum"},{name:"accept-edits",description:"File edits auto-approved, bash requires confirmation",type:"enum"},{name:"auto",description:"Use auto-mode classifier for tool permissions",type:"enum"}],Cn=[{name:"on",description:"Map to reasoning auto",type:"enum"},{name:"off",description:"Disable reasoning",type:"enum"},{name:"auto",description:"Use semantic routing with adaptive depth",type:"enum"},{name:"quick",description:"Low-depth reasoning mode",type:"enum"},{name:"balanced",description:"Medium-depth reasoning mode",type:"enum"},{name:"deep",description:"High-depth reasoning mode",type:"enum"}],ma=Cn.slice(2).concat([{name:"off",description:"Disable reasoning",type:"enum"}]);function Uu(e){if(e&&e.includes("/")){let o=e.indexOf("/"),n=e.slice(0,o),t=e.slice(o+1);if(We(n))try{return He(n).filter(i=>!t||i.toLowerCase().includes(t.toLowerCase())).map(i=>({name:`${n}/${i}`,description:i,type:"enum"}))}catch{}return[]}return Ne().map(o=>({name:o,description:`Switch to ${o} provider`,type:"enum"}))}a(Uu,"getModelArgs");var lr=[{name:"workspace",description:"Inspect current workspace/runtime truth in more detail",type:"enum"},{name:"runtime",description:"Alias for workspace runtime inspection",type:"enum"},{name:"worktree",description:"Alias for workspace runtime inspection",type:"enum"}],cr=[{name:"all",description:"Delete ALL sessions",type:"enum"}],ju=[{name:"status",description:"Show MCP server status",type:"enum"},{name:"refresh",description:"Refresh MCP server catalogs",type:"enum"}],Fu=[{name:"status",description:"Show child-task fallback order",type:"enum"},{name:"off",description:"Disable child-task fallback providers",type:"enum"}],Hu=[{name:"llm",description:"Use LLM classifier for auto mode",type:"enum"},{name:"rules",description:"Use rules-only auto mode",type:"enum"}],pa=[{name:"ama",description:"Use AMA agent mode",type:"enum"},{name:"amaw",description:"Use AMA workflow agent mode",type:"enum"},{name:"ama-workflow",description:"Alias for amaw",type:"enum"},{name:"sa",description:"Use single-agent mode",type:"enum"},{name:"toggle",description:"Cycle to the next agent mode",type:"enum"}],ga=[{name:"on",description:"Enable logging",type:"enum"},{name:"off",description:"Disable logging",type:"enum"}],Bu=[{name:"list",description:"List project memory files",type:"enum"},{name:"pending",description:"List pending memory proposals",type:"enum"},{name:"show",description:"Preview a memory proposal",type:"enum"},{name:"approve",description:"Approve a memory proposal",type:"enum"},{name:"reject",description:"Reject a memory proposal",type:"enum"},{name:"curate",description:"Report memory governance findings",type:"enum"},{name:"rebuild",description:"Rebuild MEMORY.md index",type:"enum"},{name:"open",description:"Print the memory entrypoint path",type:"enum"},{name:"help",description:"Show memory help",type:"enum"}],Gu=[{name:"status",description:"Show current persistent goal",type:"enum"},{name:"pause",description:"Pause the active goal",type:"enum"},{name:"resume",description:"Resume a paused goal",type:"enum"},{name:"clear",description:"Clear the current goal",type:"enum"},{name:"help",description:"Show goal help",type:"enum"},{name:"--tokens",description:"Set an optional goal token budget",type:"enum"}],qu=[{name:"show",description:"Show a captured paste by id",type:"enum"},{name:"list",description:"List captured pastes",type:"enum"}],Ku=[{name:"--lean",description:"Add a minimal-diff/YAGNI review pass",type:"enum"},{name:"--workflow",description:"Review through a dynamic workflow",type:"enum"},{name:"base",description:"Review changes against the detected base branch",type:"enum"},{name:"sha",description:"Review a specific commit",type:"enum"},{name:"help",description:"Show review help",type:"enum"}],zu=[{name:"init",description:"Create AGENTS.md in the target project if absent",type:"enum"},{name:"lean",description:"Initialize or LLM-review AGENTS.md for Lean Mode guidance",type:"enum"},{name:"help",description:"Show agents help",type:"enum"}],Xu=[{name:"status",description:"Inspect the current repo-intelligence runtime state",type:"enum"},{name:"mode",description:"Switch repo-intelligence runtime mode",type:"enum"},{name:"trace",description:"Toggle repo-intelligence trace output",type:"enum"}],Vu=[{name:"auto",description:"Let KodaX pick the best repo-intelligence engine",type:"enum"},{name:"full",description:"Prefer the full repo-intelligence engine",type:"enum"},{name:"light",description:"Use the light repo-intelligence engine",type:"enum"},{name:"off",description:"Disable repo-intelligence injection",type:"enum"}],Yu=[{name:"on",description:"Enable repo-intelligence trace output",type:"enum"},{name:"off",description:"Disable repo-intelligence trace output",type:"enum"},{name:"toggle",description:"Toggle repo-intelligence trace output",type:"enum"}],Ju=[{name:"status",description:"Deprecated alias for /repo-intel status",type:"enum"}],Zu=[{name:"list",description:"List built-in and saved workflows",type:"enum"},{name:"create",description:"Generate and run a workflow from a request",type:"enum"},{name:"runs",description:"List active and recent workflow runs",type:"enum"},{name:"show",description:"Show latest run or a specific workflow run",type:"enum"},{name:"pause",description:"Pause future child launches for a run",type:"enum"},{name:"resume",description:"Resume a paused run",type:"enum"},{name:"stop",description:"Stop an active workflow run",type:"enum"},{name:"delete",description:"Delete one persisted workflow run or generated saved capsule",type:"enum"},{name:"prune",description:"Preview or delete old terminal workflow runs",type:"enum"},{name:"rerun",description:"Rerun a run id or saved workflow name",type:"enum"},{name:"save",description:"Save a generated run as a workflow capsule",type:"enum"},{name:"rename",description:"Rename a run display name or saved workflow capsule",type:"enum"},{name:"revise",description:"Generate a revised workflow capsule",type:"enum"},{name:"help",description:"Show workflow help",type:"enum"}],Qu=new Set(["show","pause","resume","stop","delete","rerun","save","rename","revise"]),ef=new Set(["show","delete","rerun","save","rename","revise"]),of=[{name:"--all",description:"Show all persisted workflow runs",type:"enum"},{name:"--limit",description:"Show at most N persisted workflow runs",type:"enum"}],nf=[{name:"--dry-run",description:"Preview cleanup without deleting runs",type:"enum"},{name:"--keep",description:"Keep the newest N terminal runs",type:"enum"},{name:"--older-than",description:"Delete terminal runs older than Nd or Nh",type:"enum"}],tf=[{name:"--force",description:"Delete stale non-terminal run records",type:"enum"},{name:"--run",description:"Treat the target as a workflow run record",type:"enum"},{name:"--saved",description:"Treat the target as a generated saved workflow capsule",type:"enum"}],rf=[".workflow.json",".ts",".mjs",".js"];function sf(e,o){switch(e){case"pause":return o==="running";case"resume":return o==="paused";case"stop":return o==="running"||o==="paused";case"delete":return o!=="running"&&o!=="paused";default:return!0}}a(sf,"workflowRunMatchesSubcommand");function Pn(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(Pn,"isWorkflowRunEntryName");function af(e,o){let n=In(e,"workflow-metadata.json");if(Tn(n))try{let r=JSON.parse(ya(n,"utf8"));if(typeof r=="object"&&r!==null){let i=r.displayName;if(typeof i=="string"&&Pn(i.trim()))return i.trim()}}catch{}let t=o.displayName;return typeof t=="string"&&Pn(t.trim())?t.trim():void 0}a(af,"readWorkflowRunDisplayName");function lf(){let e=Ee(process.cwd()).key,o=H("workflow-runs",e);if(!Tn(o))return[];let n=[];for(let t of ha(o)){if(!Pn(t))continue;let r=In(o,t,"run.json");if(Tn(r))try{let i=JSON.parse(ya(r,"utf8")),l=typeof i.workflow=="string"?i.workflow:"?",c=typeof i.status=="string"?i.status:"?",d=typeof i.endedAt=="number"?i.endedAt:0;n.push({arg:{name:t,description:`${l} - ${c}`,type:"string"},endedAt:d});let u=af(In(o,t),i);u&&u!==t&&n.push({arg:{name:u,description:`${l} alias for ${t} - ${c}`,type:"string"},endedAt:d})}catch{}}return n.sort((t,r)=>r.endedAt-t.endedAt).map(t=>t.arg)}a(lf,"getPersistedWorkflowRunIdArgs");function _n(e){let o=Fe().list().filter(r=>sf(e,r.status)).map(r=>({name:r.runId,description:`${r.workflow} - ${r.status}`,type:"string"})),n=ef.has(e)?lf():[],t=new Set;return[...o,...n].filter(r=>t.has(r.name)?!1:(t.add(r.name),!0))}a(_n,"getWorkflowRunIdArgs");function cf(e){for(let o of rf)if(e.endsWith(o)){let n=e.slice(0,-o.length);return Pn(n)?n:void 0}}a(cf,"savedWorkflowNameFromFile");function Io(e={}){let o=[{path:H("workflows"),source:"personal"},{path:In(process.cwd(),".kodax","workflows"),source:"project"}],n=new Map;for(let t of o)if(Tn(t.path))try{for(let r of ha(t.path)){if(e.generatedOnly===!0&&!r.endsWith(".workflow.json"))continue;let i=cf(r);i&&n.set(i,{name:i,description:`${t.source} saved workflow`,type:"enum"})}}catch{}return[...n.values()].sort((t,r)=>t.name.localeCompare(r.name))}a(Io,"getSavedWorkflowNameArgs");function df(){let e=new Map;for(let o of _n("rerun"))e.set(o.name,{...o,description:`recent run: ${o.description}`,type:"string"});for(let o of Io()){let n=e.get(o.name);if(n){e.set(o.name,{...n,description:`${n.description}; also ${o.description}`});continue}e.set(o.name,{...o,description:o.description,type:"string"})}return[...e.values()]}a(df,"getWorkflowRerunArgs");function dr(e){let o=new Map;for(let n of _n(e))o.set(n.name,{...n,description:`workflow run: ${n.description}`,type:"string"});for(let n of Io({generatedOnly:e==="delete"})){let t=o.get(n.name);if(t){o.set(n.name,{...t,description:`${t.description}; also ${n.description}`});continue}o.set(n.name,{...n,description:n.description,type:"string"})}return[...o.values()]}a(dr,"getWorkflowRunOrSavedNameArgs");function wa(e){let o=new Set(e.slice(1).filter(n=>n.startsWith("--")));return o.has("--saved")?Io({generatedOnly:!0}):o.has("--run")?_n("delete"):dr("delete")}a(wa,"getWorkflowDeleteTargetArgs");function uf(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;if(t<=1)return[...Zu,...Do().map(r=>({name:r.name,description:r.description,type:"enum"})),...Io()];if(n==="rerun"&&t<=2)return df();if(n==="rename"&&t<=2)return dr("rename");if(n==="delete"&&t<=2)return[...tf,...wa(e)];if(n==="delete"&&t<=3&&e.slice(1).some(r=>r.startsWith("--")))return wa(e);if(n==="revise"){if(t<=2)return[{name:"--replace",description:"Replace a saved workflow after confirmation",type:"enum"},...dr("revise")];if(e[1]==="--replace"&&t<=3)return Io()}return Qu.has(n)&&t<=2?_n(n):n==="runs"&&t<=2?of:n==="prune"&&t<=2?nf:[]}a(uf,"getWorkflowArgs");function ff(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;return t<=1?Xu:t>2?[]:n==="mode"?Vu:n==="trace"?Yu:[]}a(ff,"getRepoIntelArgs");var mf=new Map([["mode",Du],["thinking",Cn],["think",Cn],["t",Cn],["reasoning",ma],["reason",ma],["status",lr],["info",lr],["ctx",lr],["mcp",ju],["fallback",Fu],["auto-engine",Hu],["agent-mode",pa],["am",pa],["verifier-log",ga],["stall-log",ga],["memory",Bu],["goal",Gu],["paste",qu],["review",Ku],["agents",zu],["delete",cr],["rm",cr],["del",cr]]),pf=new Set(["model","m","provider"]),gf=new Set(["repo-intel"]),wf=new Set(["repointel","ri"]),hf=new Set(["workflow"]);function ur(e,o,n=[]){let t=e.toLowerCase();return pf.has(t)?Uu(o):gf.has(t)?ff(n):wf.has(t)?n.length<=1?Ju:[]:hf.has(t)?uf(n):mf.get(t)??[]}a(ur,"getCommandArguments");var fr=class{static{a(this,"ArgumentCompleter")}canComplete(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return!1;let i=t.slice(r),l=i.split(/\s+/);if(l.length>=2&&l[0]!=="")return!0;let c=i.slice(1).toLowerCase();return ur(c).length>0}async getCompletions(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return[];let i=t.slice(r),l=i.indexOf(" "),c=(l===-1?i.slice(1):i.slice(1,l)).toLowerCase(),d=l===-1?"":i.slice(l+1),u=d?d.split(/\s+/):[""],f=u.length-1,m=(u[f]??"").toLowerCase(),y=ur(c,m,u);if(!y||y.length===0)return[];let v=new Set(u.slice(0,-1).map($=>$.toLowerCase()));return y.filter($=>!v.has($.name.toLowerCase())).filter($=>!m||$.name.includes("/")?!0:$.name.toLowerCase().includes(m)).map($=>({text:$.name,display:$.name,description:$.description,type:"argument"})).sort(($,g)=>{if(!m)return 0;let b=$.display.toLowerCase().startsWith(m),I=g.display.toLowerCase().startsWith(m);return b&&!I?-1:!b&&I?1:$.display.length-g.display.length})}};function ey(){return new fr}a(ey,"createArgumentCompleter");export{ct as a,G as b,Tm as c,Ys as d,Im as e,Bo as f,$f as g,ba as h,Sf as i,lo as j,ps as k,gs as l,co as m,Zn as n,Ua as o,Qn as p,ot as q,nt as r,mo as s,Ga as t,tt as u,Ge as v,Ns as w,Os as x,nl as y,gm as z,it as A,wm as B,hm as C,Gs as D,Vs as E,se as F,Qs as G,ei as H,Nm as I,yl as J,Pl as K,Om as L,Zo as M,ut as N,Dm as O,ci as P,Um as Q,jm as R,Fm as S,fp as T,mp as U,pp as V,hi as W,wt as X,yi as Y,Ee as Z,vp as _,ko as $,St as aa,Ie as ba,Xc as ca,Vc as da,Oi as ea,Kp as fa,zp as ga,ld as ha,Bg as ia,Gg as ja,qg as ka,dw as la,uw as ma,fw as na,mw as oa,pw as pa,Yi as qa,vw as ra,$w as sa,Zi as ta,Sw as ua,Fw as va,Qi as wa,Co as xa,Rh as ya,Eh as za,Rn as Aa,fr as Ba,ey as Ca,no as Da,ir as Ea,ar as Fa,Fh as Ga};
623
+ [Error invoking skill: ${i instanceof Error?i.message:String(i)}]`)),!1}}a(nr,"executeSkillCommand");var En=class{static{a(this,"SkillCompleter")}gitRoot;constructor(o){this.gitRoot=o}canComplete(o,n){return this.parseTrigger(o.slice(0,n))!==void 0}async getCompletions(o,n){let t=this.parseTrigger(o.slice(0,n));if(!t)return[];let r=t.partial.toLowerCase();return(await this.getSkills()).filter(l=>{let c=l.name.toLowerCase();return c.includes(r)||this.fuzzyIncludes(r,c)}).map(l=>({text:`${t.invocationPrefix}${l.name}`,display:l.name,description:this.truncateDescription(l.description),type:"skill"})).sort((l,c)=>{let d=l.display.toLowerCase().startsWith(r),u=c.display.toLowerCase().startsWith(r);return d&&!u?-1:!d&&u?1:l.display.length-c.display.length})}setGitRoot(o){this.gitRoot!==o&&(this.gitRoot=o)}parseTrigger(o){let n=o.match(/(^|\s)\/skill:([^\s]*)$/);if(n)return{partial:n[2]??"",invocationPrefix:"/skill:"};let t=o.match(/(^|\s)\/([^\s]*)$/);if(t)return{partial:t[2]??"",invocationPrefix:"/"}}async getSkills(){try{let o=$e(this.gitRoot);return o.size===0&&await De(this.gitRoot),o.listUserInvocable()}catch{return[]}}fuzzyIncludes(o,n){let t=0;for(let r=0;r<n.length&&t<o.length;r+=1)n[r]===o[t]&&(t+=1);return t===o.length}truncateDescription(o,n=50){return o.length<=n?o:o.slice(0,n-3)+"..."}};import{exec as Mu}from"node:child_process";import*as oo from"node:path";import{promisify as Lu}from"node:util";var ua=Lu(Mu);function Wu(e){let o=e.slice(3);if(!o)return;let n=o.indexOf(" -> ");return(n===-1?o:o.slice(n+4)).replace(/^"(.*)"$/,"$1").trim()||void 0}a(Wu,"pathFromPorcelainLine");async function fa(e,o=10){try{let[{stdout:n},{stdout:t}]=await Promise.all([ua("git rev-parse --show-toplevel",{cwd:e}),ua("git status --porcelain=v1 -uall",{cwd:e})]),r=n.trim(),i=[],l=new Set;for(let c of t.split(`
624
+ `)){if(!c.trim())continue;let d=Wu(c);if(!d)continue;let u=oo.resolve(r,d),f=oo.relative(e,u).split(oo.sep).join("/");if(!(!f||f.startsWith("..")||l.has(f))&&(l.add(f),i.push(f),i.length>=o))break}return i}catch{return[]}}a(fa,"getRecentWorkingSetFiles");function no(e){let o=e.lastIndexOf("/");if(o===-1)return-1;for(;o>0&&!/\s/.test(e[o-1]??"");)if(o=e.lastIndexOf("/",o-1),o===-1)return-1;return o}a(no,"findCommandSlashIndex");var ir=class{static{a(this,"FileCompleter")}cwdSource;cache=new Map;cacheTimeout=5e3;recentCache=new Map;recentFilesProvider;constructor(o,n=fa){this.cwdSource=o,this.recentFilesProvider=n}canComplete(o,n){let t=o.slice(0,n),r=t.lastIndexOf("@");return!(r===-1||r>0&&!/\s/.test(t[r-1]??"")||t.slice(r+1).includes(" "))}async getCompletions(o,n){let t=o.slice(0,n),r=t.lastIndexOf("@");if(r===-1)return[];let i=t.slice(r+1),l=[],c=this.resolveCwd(),d=i.lastIndexOf("/"),u=d===-1?c:Co.join(c,i.slice(0,d)),f=d===-1?i:i.slice(d+1);try{let y=(await this.readdir(u)).filter(v=>v.toLowerCase().startsWith(f.toLowerCase()));for(let v of y){let k=Co.join(u,v),$=await this.isDirectory(k),g=d===-1?v:i.slice(0,d+1)+v;l.push({text:"@"+g+($?"/":""),display:v+($?"/":""),description:$?"directory":"file",type:"file"})}}catch{}if(d===-1){let m=await this.getRecentFiles(c),y=new Set(l.map($=>$.text)),v=f.toLowerCase(),k=[];for(let $ of m){if(f&&!Co.basename($).toLowerCase().startsWith(v))continue;let g="@"+$;y.has(g)||(y.add(g),k.push({text:g,display:$,description:"recent",type:"file"}))}l.unshift(...k)}return l}async getRecentFiles(o){let n=Date.now(),t=this.recentCache.get(o);if(t&&t.expiresAt>n)return t.files;let r=await this.recentFilesProvider(o);return this.recentCache.set(o,{files:r,expiresAt:Date.now()+this.cacheTimeout}),r}resolveCwd(){return typeof this.cwdSource=="function"?this.cwdSource():this.cwdSource??process.cwd()}async readdir(o){let n=Date.now(),t=this.cache.get(o);return t&&t.expiresAt>n?t.entries:(t&&this.cache.delete(o),new Promise(r=>{Tn.readdir(o,(i,l)=>{i?r([]):(this.cache.set(o,{entries:l,expiresAt:Date.now()+this.cacheTimeout}),r(l))})}))}async isDirectory(o){return new Promise(n=>{Tn.stat(o,(t,r)=>{n(!t&&r.isDirectory())})})}},ar=class{static{a(this,"CommandCompleter")}commands;constructor(){this.commands=new Map,this.loadCommands()}loadCommands(){for(let n of To().getAll())n.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]});let o=re();for(let n of o?.listCommands()??[])n.metadata?.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]})}canComplete(o,n){let t=o.slice(0,n),r=no(t);return r===-1?!1:!t.slice(r).includes(" ")}async getCompletions(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return[];this.commands.clear(),this.loadCommands();let i=t.slice(r+1).toLowerCase(),l=[];for(let[c,d]of this.commands){this.fuzzyMatch(i,c)&&l.push({text:"/"+c,display:"/"+c,description:d.description,type:"command"});for(let u of d.aliases)u!==c&&this.fuzzyMatch(i,u)&&l.push({text:"/"+u,display:"/"+u,description:`Alias for /${c}: ${d.description}`,type:"command"})}return l}fuzzyMatch(o,n){if(!o)return!0;let t=o.toLowerCase(),r=n.toLowerCase(),i=0;for(let l=0;l<r.length&&i<t.length;l++)r[l]===t[i]&&i++;return i===t.length}};function Fh(e){let o=new ir(e),n=new En,t=new ar;return async r=>{let i=r.includes("@"),l=r.includes("/");if(!i&&!l)return[[],r];let c=[];if(l){let u=await Ou(r,r.length);c.push(...u)}if(l&&n.canComplete(r,r.length)){let u=await n.getCompletions(r,r.length);c.push(...u)}if(l&&t.canComplete(r,r.length)){let u=await t.getCompletions(r,r.length);c.push(...u)}if(i&&o.canComplete(r,r.length)){let u=await o.getCompletions(r,r.length);c.push(...u)}return[c.map(u=>Nu(r,u)),r]}}a(Fh,"createCompleter");async function Ou(e,o){let{ArgumentCompleter:n}=await import("./argument-completer-RSK6CCGP.js"),t=new n;return t.canComplete(e,o)?t.getCompletions(e,o):[]}a(Ou,"getArgumentCompletions");function Nu(e,o){if(o.type!=="argument")return o.text;let n=no(e);if(n!==-1&&!/\s/.test(e.slice(n)))return`${e} ${o.text}`;let r=e.match(/\S+$/)?.[0]??"";return`${r?e.slice(0,e.length-r.length):e}${o.text}`}a(Nu,"formatReadlineCompletion");import{existsSync as In,readdirSync as ha,readFileSync as ya}from"node:fs";import{join as Pn}from"node:path";var Du=[{name:"plan",description:"Read-only planning mode - blocks all modifications",type:"enum"},{name:"accept-edits",description:"File edits auto-approved, bash requires confirmation",type:"enum"},{name:"auto",description:"Use auto-mode classifier for tool permissions",type:"enum"}],Cn=[{name:"on",description:"Map to reasoning auto",type:"enum"},{name:"off",description:"Disable reasoning",type:"enum"},{name:"auto",description:"Use semantic routing with adaptive depth",type:"enum"},{name:"quick",description:"Low-depth reasoning mode",type:"enum"},{name:"balanced",description:"Medium-depth reasoning mode",type:"enum"},{name:"deep",description:"High-depth reasoning mode",type:"enum"}],ma=Cn.slice(2).concat([{name:"off",description:"Disable reasoning",type:"enum"}]);function Uu(e){if(e&&e.includes("/")){let o=e.indexOf("/"),n=e.slice(0,o),t=e.slice(o+1);if(We(n))try{return He(n).filter(i=>!t||i.toLowerCase().includes(t.toLowerCase())).map(i=>({name:`${n}/${i}`,description:i,type:"enum"}))}catch{}return[]}return Oe().map(o=>({name:o,description:`Switch to ${o} provider`,type:"enum"}))}a(Uu,"getModelArgs");var lr=[{name:"workspace",description:"Inspect current workspace/runtime truth in more detail",type:"enum"},{name:"runtime",description:"Alias for workspace runtime inspection",type:"enum"},{name:"worktree",description:"Alias for workspace runtime inspection",type:"enum"}],cr=[{name:"all",description:"Delete ALL sessions",type:"enum"}],ju=[{name:"status",description:"Show MCP server status",type:"enum"},{name:"refresh",description:"Refresh MCP server catalogs",type:"enum"}],Fu=[{name:"status",description:"Show child-task fallback order",type:"enum"},{name:"off",description:"Disable child-task fallback providers",type:"enum"}],Hu=[{name:"llm",description:"Use LLM classifier for auto mode",type:"enum"},{name:"rules",description:"Use rules-only auto mode",type:"enum"}],pa=[{name:"ama",description:"Use AMA agent mode",type:"enum"},{name:"amaw",description:"Use AMA workflow agent mode",type:"enum"},{name:"ama-workflow",description:"Alias for amaw",type:"enum"},{name:"sa",description:"Use single-agent mode",type:"enum"},{name:"toggle",description:"Cycle to the next agent mode",type:"enum"}],ga=[{name:"on",description:"Enable logging",type:"enum"},{name:"off",description:"Disable logging",type:"enum"}],Bu=[{name:"list",description:"List project memory files",type:"enum"},{name:"pending",description:"List pending memory proposals",type:"enum"},{name:"show",description:"Preview a memory proposal",type:"enum"},{name:"approve",description:"Approve a memory proposal",type:"enum"},{name:"reject",description:"Reject a memory proposal",type:"enum"},{name:"curate",description:"Report memory governance findings",type:"enum"},{name:"rebuild",description:"Rebuild MEMORY.md index",type:"enum"},{name:"open",description:"Print the memory entrypoint path",type:"enum"},{name:"help",description:"Show memory help",type:"enum"}],Gu=[{name:"status",description:"Show current persistent goal",type:"enum"},{name:"pause",description:"Pause the active goal",type:"enum"},{name:"resume",description:"Resume a paused goal",type:"enum"},{name:"clear",description:"Clear the current goal",type:"enum"},{name:"help",description:"Show goal help",type:"enum"},{name:"--tokens",description:"Set an optional goal token budget",type:"enum"}],qu=[{name:"show",description:"Show a captured paste by id",type:"enum"},{name:"list",description:"List captured pastes",type:"enum"}],Ku=[{name:"--lean",description:"Add a minimal-diff/YAGNI review pass",type:"enum"},{name:"--workflow",description:"Review through a dynamic workflow",type:"enum"},{name:"base",description:"Review changes against the detected base branch",type:"enum"},{name:"sha",description:"Review a specific commit",type:"enum"},{name:"help",description:"Show review help",type:"enum"}],zu=[{name:"init",description:"Create AGENTS.md in the target project if absent",type:"enum"},{name:"lean",description:"Initialize or LLM-review AGENTS.md for Lean Mode guidance",type:"enum"},{name:"help",description:"Show agents help",type:"enum"}],Xu=[{name:"status",description:"Inspect the current repo-intelligence runtime state",type:"enum"},{name:"mode",description:"Switch repo-intelligence runtime mode",type:"enum"},{name:"trace",description:"Toggle repo-intelligence trace output",type:"enum"}],Vu=[{name:"auto",description:"Let KodaX pick the best repo-intelligence engine",type:"enum"},{name:"full",description:"Prefer the full repo-intelligence engine",type:"enum"},{name:"light",description:"Use the light repo-intelligence engine",type:"enum"},{name:"off",description:"Disable repo-intelligence injection",type:"enum"}],Yu=[{name:"on",description:"Enable repo-intelligence trace output",type:"enum"},{name:"off",description:"Disable repo-intelligence trace output",type:"enum"},{name:"toggle",description:"Toggle repo-intelligence trace output",type:"enum"}],Ju=[{name:"status",description:"Deprecated alias for /repo-intel status",type:"enum"}],Zu=[{name:"list",description:"List built-in and saved workflows",type:"enum"},{name:"create",description:"Generate and run a workflow from a request",type:"enum"},{name:"runs",description:"List active and recent workflow runs",type:"enum"},{name:"show",description:"Show latest run or a specific workflow run",type:"enum"},{name:"pause",description:"Pause future child launches for a run",type:"enum"},{name:"resume",description:"Resume a paused run",type:"enum"},{name:"stop",description:"Stop an active workflow run",type:"enum"},{name:"delete",description:"Delete one persisted workflow run or generated saved capsule",type:"enum"},{name:"prune",description:"Preview or delete old terminal workflow runs",type:"enum"},{name:"rerun",description:"Rerun a run id or saved workflow name",type:"enum"},{name:"save",description:"Save a generated run as a workflow capsule",type:"enum"},{name:"rename",description:"Rename a run display name or saved workflow capsule",type:"enum"},{name:"revise",description:"Generate a revised workflow capsule",type:"enum"},{name:"help",description:"Show workflow help",type:"enum"}],Qu=new Set(["show","pause","resume","stop","delete","rerun","save","rename","revise"]),ef=new Set(["show","delete","rerun","save","rename","revise"]),of=[{name:"--all",description:"Show all persisted workflow runs",type:"enum"},{name:"--limit",description:"Show at most N persisted workflow runs",type:"enum"}],nf=[{name:"--dry-run",description:"Preview cleanup without deleting runs",type:"enum"},{name:"--keep",description:"Keep the newest N terminal runs",type:"enum"},{name:"--older-than",description:"Delete terminal runs older than Nd or Nh",type:"enum"}],tf=[{name:"--force",description:"Delete stale non-terminal run records",type:"enum"},{name:"--run",description:"Treat the target as a workflow run record",type:"enum"},{name:"--saved",description:"Treat the target as a generated saved workflow capsule",type:"enum"}],rf=[".workflow.json",".ts",".mjs",".js"];function sf(e,o){switch(e){case"pause":return o==="running";case"resume":return o==="paused";case"stop":return o==="running"||o==="paused";case"delete":return o!=="running"&&o!=="paused";default:return!0}}a(sf,"workflowRunMatchesSubcommand");function _n(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(_n,"isWorkflowRunEntryName");function af(e,o){let n=Pn(e,"workflow-metadata.json");if(In(n))try{let r=JSON.parse(ya(n,"utf8"));if(typeof r=="object"&&r!==null){let i=r.displayName;if(typeof i=="string"&&_n(i.trim()))return i.trim()}}catch{}let t=o.displayName;return typeof t=="string"&&_n(t.trim())?t.trim():void 0}a(af,"readWorkflowRunDisplayName");function lf(){let e=Ee(process.cwd()).key,o=H("workflow-runs",e);if(!In(o))return[];let n=[];for(let t of ha(o)){if(!_n(t))continue;let r=Pn(o,t,"run.json");if(In(r))try{let i=JSON.parse(ya(r,"utf8")),l=typeof i.workflow=="string"?i.workflow:"?",c=typeof i.status=="string"?i.status:"?",d=typeof i.endedAt=="number"?i.endedAt:0;n.push({arg:{name:t,description:`${l} - ${c}`,type:"string"},endedAt:d});let u=af(Pn(o,t),i);u&&u!==t&&n.push({arg:{name:u,description:`${l} alias for ${t} - ${c}`,type:"string"},endedAt:d})}catch{}}return n.sort((t,r)=>r.endedAt-t.endedAt).map(t=>t.arg)}a(lf,"getPersistedWorkflowRunIdArgs");function Mn(e){let o=Fe().list().filter(r=>sf(e,r.status)).map(r=>({name:r.runId,description:`${r.workflow} - ${r.status}`,type:"string"})),n=ef.has(e)?lf():[],t=new Set;return[...o,...n].filter(r=>t.has(r.name)?!1:(t.add(r.name),!0))}a(Mn,"getWorkflowRunIdArgs");function cf(e){for(let o of rf)if(e.endsWith(o)){let n=e.slice(0,-o.length);return _n(n)?n:void 0}}a(cf,"savedWorkflowNameFromFile");function Io(e={}){let o=[{path:H("workflows"),source:"personal"},{path:Pn(process.cwd(),".kodax","workflows"),source:"project"}],n=new Map;for(let t of o)if(In(t.path))try{for(let r of ha(t.path)){if(e.generatedOnly===!0&&!r.endsWith(".workflow.json"))continue;let i=cf(r);i&&n.set(i,{name:i,description:`${t.source} saved workflow`,type:"enum"})}}catch{}return[...n.values()].sort((t,r)=>t.name.localeCompare(r.name))}a(Io,"getSavedWorkflowNameArgs");function df(){let e=new Map;for(let o of Mn("rerun"))e.set(o.name,{...o,description:`recent run: ${o.description}`,type:"string"});for(let o of Io()){let n=e.get(o.name);if(n){e.set(o.name,{...n,description:`${n.description}; also ${o.description}`});continue}e.set(o.name,{...o,description:o.description,type:"string"})}return[...e.values()]}a(df,"getWorkflowRerunArgs");function dr(e){let o=new Map;for(let n of Mn(e))o.set(n.name,{...n,description:`workflow run: ${n.description}`,type:"string"});for(let n of Io({generatedOnly:e==="delete"})){let t=o.get(n.name);if(t){o.set(n.name,{...t,description:`${t.description}; also ${n.description}`});continue}o.set(n.name,{...n,description:n.description,type:"string"})}return[...o.values()]}a(dr,"getWorkflowRunOrSavedNameArgs");function wa(e){let o=new Set(e.slice(1).filter(n=>n.startsWith("--")));return o.has("--saved")?Io({generatedOnly:!0}):o.has("--run")?Mn("delete"):dr("delete")}a(wa,"getWorkflowDeleteTargetArgs");function uf(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;if(t<=1)return[...Zu,...Uo().map(r=>({name:r.name,description:r.description,type:"enum"})),...Io()];if(n==="rerun"&&t<=2)return df();if(n==="rename"&&t<=2)return dr("rename");if(n==="delete"&&t<=2)return[...tf,...wa(e)];if(n==="delete"&&t<=3&&e.slice(1).some(r=>r.startsWith("--")))return wa(e);if(n==="revise"){if(t<=2)return[{name:"--replace",description:"Replace a saved workflow after confirmation",type:"enum"},...dr("revise")];if(e[1]==="--replace"&&t<=3)return Io()}return Qu.has(n)&&t<=2?Mn(n):n==="runs"&&t<=2?of:n==="prune"&&t<=2?nf:[]}a(uf,"getWorkflowArgs");function ff(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;return t<=1?Xu:t>2?[]:n==="mode"?Vu:n==="trace"?Yu:[]}a(ff,"getRepoIntelArgs");var mf=new Map([["mode",Du],["thinking",Cn],["think",Cn],["t",Cn],["reasoning",ma],["reason",ma],["status",lr],["info",lr],["ctx",lr],["mcp",ju],["fallback",Fu],["auto-engine",Hu],["agent-mode",pa],["am",pa],["verifier-log",ga],["stall-log",ga],["memory",Bu],["goal",Gu],["paste",qu],["review",Ku],["agents",zu],["delete",cr],["rm",cr],["del",cr]]),pf=new Set(["model","m","provider"]),gf=new Set(["repo-intel"]),wf=new Set(["repointel","ri"]),hf=new Set(["workflow"]);function ur(e,o,n=[]){let t=e.toLowerCase();return pf.has(t)?Uu(o):gf.has(t)?ff(n):wf.has(t)?n.length<=1?Ju:[]:hf.has(t)?uf(n):mf.get(t)??[]}a(ur,"getCommandArguments");var fr=class{static{a(this,"ArgumentCompleter")}canComplete(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return!1;let i=t.slice(r),l=i.split(/\s+/);if(l.length>=2&&l[0]!=="")return!0;let c=i.slice(1).toLowerCase();return ur(c).length>0}async getCompletions(o,n){let t=o.slice(0,n),r=no(t);if(r===-1)return[];let i=t.slice(r),l=i.indexOf(" "),c=(l===-1?i.slice(1):i.slice(1,l)).toLowerCase(),d=l===-1?"":i.slice(l+1),u=d?d.split(/\s+/):[""],f=u.length-1,m=(u[f]??"").toLowerCase(),y=ur(c,m,u);if(!y||y.length===0)return[];let v=new Set(u.slice(0,-1).map($=>$.toLowerCase()));return y.filter($=>!v.has($.name.toLowerCase())).filter($=>!m||$.name.includes("/")?!0:$.name.toLowerCase().includes(m)).map($=>({text:$.name,display:$.name,description:$.description,type:"argument"})).sort(($,g)=>{if(!m)return 0;let b=$.display.toLowerCase().startsWith(m),I=g.display.toLowerCase().startsWith(m);return b&&!I?-1:!b&&I?1:$.display.length-g.display.length})}};function ey(){return new fr}a(ey,"createArgumentCompleter");export{ct as a,G as b,Cm as c,Ys as d,Im as e,Go as f,$f as g,ba as h,Sf as i,lo as j,ps as k,gs as l,co as m,Zn as n,Ua as o,Qn as p,ot as q,nt as r,mo as s,Ga as t,tt as u,Ge as v,Os as w,Ns as x,nl as y,gm as z,it as A,wm as B,hm as C,Gs as D,Vs as E,se as F,Qs as G,ei as H,Om as I,yl as J,Pl as K,Nm as L,Qo as M,ut as N,Dm as O,ci as P,Um as Q,jm as R,Fm as S,fp as T,mp as U,pp as V,hi as W,wt as X,yi as Y,Ee as Z,vp as _,ko as $,St as aa,Ie as ba,Xc as ca,Vc as da,Ni as ea,Kp as fa,zp as ga,ld as ha,Bg as ia,Gg as ja,qg as ka,dw as la,uw as ma,fw as na,mw as oa,pw as pa,Yi as qa,vw as ra,$w as sa,Zi as ta,Sw as ua,Fw as va,Qi as wa,To as xa,Rh as ya,Eh as za,En as Aa,fr as Ba,ey as Ca,no as Da,ir as Ea,ar as Fa,Fh as Ga};