@kodax-ai/kodax 0.7.60 → 0.7.61

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 (44) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/README.md +2 -0
  3. package/README_CN.md +2 -0
  4. package/dist/chunks/{agent-L5FC3YOY.js → agent-E74WVAFR.js} +1 -1
  5. package/dist/chunks/argument-completer-BBFYCVTM.js +2 -0
  6. package/dist/chunks/{chunk-5TRQBMPR.js → chunk-2OEKUAV4.js} +1 -1
  7. package/dist/chunks/{chunk-ZPD7IUKW.js → chunk-4NSOBQCU.js} +1 -1
  8. package/dist/chunks/{chunk-QFCF3GNT.js → chunk-7COB3EKF.js} +171 -156
  9. package/dist/chunks/chunk-CGGX3FXE.js +19 -0
  10. package/dist/chunks/{chunk-6DWXUZMO.js → chunk-D7CC6YZC.js} +198 -198
  11. package/dist/chunks/{chunk-SGNM3UP6.js → chunk-KIVYMSRH.js} +1 -1
  12. package/dist/chunks/chunk-NJW2LQOP.js +722 -0
  13. package/dist/chunks/{chunk-IJN6ZJVI.js → chunk-PJXKBM3Y.js} +4 -4
  14. package/dist/chunks/{chunk-2RLIKZOZ.js → chunk-QCBKLNN5.js} +2 -2
  15. package/dist/chunks/{chunk-XULI4U7I.js → chunk-XHOPSZVL.js} +1 -1
  16. package/dist/chunks/{compaction-config-E4LN3M53.js → compaction-config-GESEZQVA.js} +1 -1
  17. package/dist/chunks/{construction-bootstrap-GIFDM4L5.js → construction-bootstrap-OSXHEIBB.js} +1 -1
  18. package/dist/chunks/{dist-7PXDYX2R.js → dist-W3OOJP66.js} +1 -1
  19. package/dist/chunks/host-FRQXOEHH.js +2 -0
  20. package/dist/chunks/{run-manager-IU5COC6X.js → run-manager-FGCG7DFF.js} +1 -1
  21. package/dist/chunks/{utils-NP42DKL3.js → utils-47QI5MSP.js} +1 -1
  22. package/dist/index.d.ts +4 -4
  23. package/dist/index.js +1 -1
  24. package/dist/kodax_cli.js +927 -909
  25. package/dist/sdk-agent.d.ts +2 -2
  26. package/dist/sdk-agent.js +1 -1
  27. package/dist/sdk-coding.d.ts +6 -4
  28. package/dist/sdk-coding.js +1 -1
  29. package/dist/sdk-mcp.js +1 -1
  30. package/dist/sdk-repl.d.ts +6 -6
  31. package/dist/sdk-repl.js +1 -1
  32. package/dist/sdk-session.d.ts +3 -3
  33. package/dist/sdk-session.js +1 -1
  34. package/dist/sdk-skills.js +1 -1
  35. package/dist/types-chunks/{bash-prefix-extractor.d-Ds1THKeH.d.ts → bash-prefix-extractor.d-e1LD2IRl.d.ts} +7 -0
  36. package/dist/types-chunks/{run-manager.d-DLK3ed-T.d.ts → run-manager.d-DHPlNYkK.d.ts} +16 -2
  37. package/dist/types-chunks/{sdk-session-CtwN7iBO.d.ts → sdk-session-DINrM1pF.d.ts} +2 -2
  38. package/dist/types-chunks/{storage.d-DlZS0g8w.d.ts → storage.d-xiw7Vgx0.d.ts} +1 -1
  39. package/dist/types-chunks/{utils.d-Boz9k2HB.d.ts → utils.d-Dy19-1XR.d.ts} +2 -2
  40. package/package.json +1 -1
  41. package/dist/chunks/argument-completer-BQDAYT7W.js +0 -2
  42. package/dist/chunks/chunk-4K5BDO7S.js +0 -721
  43. package/dist/chunks/chunk-U6BNMGSK.js +0 -17
  44. package/dist/chunks/host-FLG7FJZT.js +0 -2
@@ -1,27 +1,27 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{a as Kr}from"./chunk-SGNM3UP6.js";import{B as Wo,F as ve,H as Br,J as Gr,K as zr,L as qr,j as Or,l as Oe,m as _n,n as Dr,o as Ur,p as jr,q as Mn,t as Lo,v as Fr,x as Pn,y as Ln,z as Hr}from"./chunk-5TRQBMPR.js";import{Aa as Lr,Ba as Wr,Ha as Nr}from"./chunk-XULI4U7I.js";import{i as _o}from"./chunk-U6BNMGSK.js";import{d as Sr,e as Mo,f as We,h as no,i as Po,j as $r,k as br,m as xr,n as Cn,o as Ar,p as to,q as Rr,t as ke,z as Ne}from"./chunk-2RLIKZOZ.js";import{ea as Er,fa as Tr,h as vr}from"./chunk-ZPD7IUKW.js";import{Cc as te,Rc as Cr,Tc as Ir,Uc as _r,Xc as In,_ as Io,kd as Mr,md as Pr,w as kr}from"./chunk-QFCF3GNT.js";import{Ja as An,Ka as Ie,La as _e,s as xn,z as rr}from"./chunk-S4GVQO3W.js";import{Ab as cr,Ba as sr,Bc as fr,Ca as ir,Cc as mr,Da as En,Dc as pr,Lb as Eo,Md as hr,Nb as To,Ob as dr,Pd as Tn,Qb as ur,Qc as Me,Rc as Pe,Wc as gr,Yd as Co,k as Rn,le as yr,va as Ro,vb as ar,wa as H,wb as lr,wd as Le,xd as wr}from"./chunk-4K5BDO7S.js";import{a,b as bn,c as ra}from"./chunk-V4WSBIXB.js";var ns=bn((qu,os)=>{"use strict";os.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 cs=bn((Xu,ls)=>{"use strict";var as="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",ts=new RegExp("^"+as+"$"),rs="|&;()<> \\t",aa='"((\\\\"|[^"])*?)"',la="'((\\\\'|[^'])*?)'",ca=/^#$/,ss="'",is='"',Wn="$",Se="",da=4294967296;for(Nn=0;Nn<4;Nn++)Se+=(da*Math.random()).toString(16);var Nn,ua=new RegExp("^"+Se);function fa(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(fa,"matchAll");function ma(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+Se+JSON.stringify(t)+Se:o+t}a(ma,"getVar");function pa(e,o,n){n||(n={});var t=n.escape||"\\",r="(\\"+t+`['"`+rs+`]|[^\\s'"`+rs+"])+",i=new RegExp(["("+as+")","("+r+"|"+aa+"|"+la+")+"].join("|"),"g"),l=fa(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(ts.test(u))return{op:u};var f=!1,m=!1,h="",k=!1,y;function v(){y+=1;var I,P,X=u.charAt(y);if(X==="{"){if(y+=1,u.charAt(y)==="}")throw new Error("Bad substitution: "+u.slice(y-2,y+1));if(I=u.indexOf("}",y),I<0)throw new Error("Bad substitution: "+u.slice(y));P=u.slice(y,I),y=I}else if(/[*@#?$!_-]/.test(X))P=X,y+=1;else{var V=u.slice(y);I=V.match(/[^\w\d_]/),I?(P=V.slice(0,I.index),y+=I.index-1):(P=V,y=u.length)}return ma(o,"",P)}for(a(v,"parseEnvVar"),y=0;y<u.length;y++){var p=u.charAt(y);if(k=k||!f&&(p==="*"||p==="?"),m)h+=p,m=!1;else if(f)p===f?f=!1:f==ss?h+=p:p===t?(y+=1,p=u.charAt(y),p===is||p===t||p===Wn?h+=p:h+=t+p):p===Wn?h+=v():h+=p;else if(p===is||p===ss)f=p;else{if(ts.test(p))return{op:u};if(ca.test(p)){c=!0;var R={comment:e.slice(d.index+y+1)};return h.length?[h,R]:[R]}else p===t?m=!0:p===Wn?h+=v():h+=p}}return k?{op:"glob",pattern:h}:h}).reduce(function(d,u){return typeof u>"u"?d:d.concat(u)},[])}a(pa,"parseInternal");ls.exports=a(function(o,n,t){var r=pa(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("("+Se+".*?"+Se+")","g"));return c.length===1?i.concat(c[0]):i.concat(c.filter(Boolean).map(function(d){return ua.test(d)?JSON.parse(d.split(Se)[1]):d}))},[])},"parse")});var ds=bn(On=>{"use strict";On.quote=ns();On.parse=cs()});import*as wn from"fs";import*as bo from"path";import s from"chalk";var No=["plan","accept-edits","auto","auto-in-project"];function Uu(e){return e==="auto"||e==="auto-in-project"}a(Uu,"isAutoMode");function sa(e){switch(e){case"plan":return"Plan";case"accept-edits":return"Edits";case"auto":case"auto-in-project":return"Auto"}}a(sa,"permissionModeDisplayName");var ia='[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 ju(e=console.warn){let o=!1;return()=>{o||(o=!0,e(ia))}}a(ju,"createAutoInProjectDeprecationEmitter");var Xr=Mr(),ro=new Set(Xr.filter(e=>e.sideEffect==="mutates-fs"&&e.requiredParams.includes("path")).map(e=>e.name)),Vr=new Set(Xr.filter(e=>e.sideEffect!=="readonly").map(e=>e.name)),Yr=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"]),Jr=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 Zr(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(Zr,"computeConfirmTools");function Qr(e){return e!==void 0&&No.includes(e)}a(Qr,"isPermissionMode");function so(e,o){return Qr(e)?e:o}a(so,"normalizePermissionMode");async function es(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?(ir(e.provider,e.model,t,"probed",e.now()),n.push({effort:t,status:"rejected"})):n.push({effort:t,status:"accepted"})}return n}a(es,"probeProviderReasoningEfforts");import Ho from"fs";import As from"path";import Oo from"fs";import W from"path";import ao from"os";var ms=ra(ds(),1);var us=new Set(["/dev/null","nul","NUL"]);function Dn(e){return us.has(e)||us.has(e.toLowerCase())}a(Dn,"isNullDevice");function io(e){let o=e.trim();if(!o)return{statements:[],unparseable:!1};if(o.includes("`"))return{statements:[],unparseable:!0};let n;try{n=(0,ms.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 h=n[m];if(typeof h=="string"){i.push(h);continue}if("op"in h){let k=h.op;if(k==="&&"||k==="||"||k===";"){f(k);continue}if(k==="|"){u();continue}if(k==="&"){let y=n[m+1];if(y!==void 0&&typeof y!="string"&&"op"in y&&(y.op===">"||y.op===">>")){let v=n[m+2];if(typeof v!="string"){d=!0,m+=1;continue}l.push(fs(`&${y.op}`,v)),m+=2;continue}d=!0;continue}if(wa(k)){let y=null,v=i[i.length-1];v!==void 0&&/^[0-9]+$/.test(v)&&(y=v,i.pop());let p=n[m+1];if(typeof p!="string"){d=!0;continue}l.push(fs(y?`${y}${k}`:k,p)),m+=1;continue}if(k==="glob"){let y=h.pattern;typeof y=="string"?i.push(y):d=!0;continue}d=!0;continue}if("comment"in h)break;d=!0}return f(null),{statements:t,unparseable:d}}a(io,"parseBashCommand");var ga=new Set([">",">>","<","<<","<<<","&>","&>>"]),ps=/^([0-9]+|&)(>>?|<<?)$/;function wa(e){return ga.has(e)||ps.test(e)}a(wa,"isRedirectionOp");function fs(e,o){let n=null,t=e,r=ps.exec(e);return r&&(n=r[1],t=r[2]),{op:e,fd:n,append:t===">>"||e==="&>>",input:t==="<"||t==="<<"||e==="<<<",target:o}}a(fs,"parseRedirection");var ha=W.join(".agent","plan_mode_doc.md"),Do=new Map,Uo=null;function ya(e){if(!e||!e.trim())return!1;let o=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Jr)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(ya,"isSingleBashReadCommand");var ka=/^[a-zA-Z0-9]+$/;function va(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(!ka.test(t))return!1;return n}a(va,"isHelpCommand");function jn(e){if(!e||!e.trim())return!1;if(va(e))return!0;let o=e.trim().replace(/\\\r?\n/g," "),n=io(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||!Dn(c.target))return!1;let l=i.argv.join(" ");if(l&&!(t&&i.argv[0]?.toLowerCase()==="cd"&&i.argv.length>=2)&&!ya(l))return!1}}return!0}a(jn,"isBashReadCommand");function Sa(e){let o=e.trim();return o?jn(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(Sa,"getDirectShellBypassBlockReason");var ws=new Set(["remove-item","set-content","add-content","out-file","new-item","copy-item","move-item","rename-item","ni"]);function Fn(e){if(!e||!e.trim())return!1;let o=io(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 Yr)if(c===i||l!==null&&c===l)return!0}for(let i of r)if(ws.has(i))return!0;for(let i of t.redirections)if(!i.input&&!Dn(i.target))return!0}return!1}a(Fn,"isBashWriteCommand");function Hn(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(Hn,"parseAllowedToolPattern");function $a(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e.startsWith(n)}return e===o}a($a,"matchesBashPatternLegacy");function ba(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e===n}return e===o}a(ba,"matchesBashPatternByExtractedPrefix");async function Bn(e,o,n,t,r){if(e.toLowerCase()!=="bash")return!1;let i=o.command??"",l=[];for(let c of n){let d=Hn(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&&ba(c.value,d))return!0;return!1}for(let{pattern:c}of l)if(c&&$a(i,c))return!0;return!1}a(Bn,"isToolCallAllowed");function Gn(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(Gn,"generateSavePattern");function lo(e,o){try{let n=W.resolve(e),t=W.resolve(o),r=Ro(),i=W.join(t,".kodax");return De(n,i)||De(n,r)?!0:!(De(n,t)||ks().some(c=>De(n,c)))}catch{return!1}}a(lo,"isAlwaysConfirmPath");function gs(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"&&xa.test(e)):!!(e.startsWith(".")&&/[/\\]/.test(e))}a(gs,"looksLikePath");var xa=/^\/[A-Za-z][A-Za-z0-9]*(?::[A-Za-z0-9]+)?$/;function Aa(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(Aa,"legacyRegexPathScan");function Fo(e){let o=new Set,n=io(e);if(!n.unparseable)for(let t of n.statements)for(let r of t.stages){for(let i of r.argv)gs(i)&&o.add(i);for(let i of r.redirections)gs(i.target)&&o.add(i.target)}for(let t of Aa(e))o.add(t);return Array.from(o)}a(Fo,"extractPathsFromCommand");function Ra(e,o){let n=Fo(e);for(let t of n)if(lo(t,o))return!0;return!1}a(Ra,"isCommandOnProtectedPath");function jo(e){let o=W.normalize(e);return process.platform==="win32"?o.toLowerCase():o}a(jo,"normalizePathForComparison");function Ea(e,o){return jo(e)===jo(o)}a(Ea,"pathsEqual");function De(e,o){let n=jo(e),t=jo(o);return n===t||n.startsWith(t+W.sep)}a(De,"isPathInsideDirectory");function zn(e,o){try{let n=W.resolve(o),t=W.resolve(n,ys(hs(e)));return De(t,n)}catch{return!1}}a(zn,"isPathInsideProject");function Ta(e){let o=e.match(/[A-Za-z]:[\\/][^\s;|&<>(){}'"]+|\/[^\s;|&<>(){}'"]+/g);return o?o.filter(n=>!/^(?:\/dev\/|\/proc\/)/i.test(n)):[]}a(Ta,"collectAbsolutePathCandidates");function qn(e){let o=W.resolve(e),n=Do.get(o);if(n)return n;if(Oo.existsSync(o)){let c=Oo.realpathSync.native(o);return Do.set(o,c),c}let t=[],r=o;for(;!Oo.existsSync(r);){let c=W.dirname(r);if(c===r)return Do.set(o,o),o;t.unshift(W.basename(r)),r=c}let i=Oo.realpathSync.native(r),l=W.join(i,...t);return Do.set(o,l),l}a(qn,"resolveExistingPathPrefix");function hs(e){return e==="~"?ao.homedir():e.startsWith(`~${W.sep}`)||e.startsWith("~/")||e.startsWith("~\\")?W.join(ao.homedir(),e.slice(2)):e}a(hs,"expandHomeDirectory");function ys(e){let o=ao.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(ys,"expandSystemTempAlias");function Ca(e,o){let n=W.resolve(o??process.cwd()),t=ys(hs(e)),r=W.isAbsolute(t)?W.resolve(t):W.resolve(n,t);return qn(r)}a(Ca,"resolvePermissionPath");function ks(){if(Uo)return Uo;let e=new Set,o=[ao.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(qn(n))}catch{}return Uo=Array.from(e),Uo}a(ks,"getSystemTempDirectories");function Kn(e){let o=qn(e??process.cwd());return{projectPlanDoc:W.join(o,ha),systemTempDirs:ks()}}a(Kn,"getPlanModeAllowedWritablePaths");function Un(e,o){let n=Ca(e,o),{projectPlanDoc:t,systemTempDirs:r}=Kn(o);return Ea(n,t)?!0:r.some(i=>De(n,i))}a(Un,"isPlanModeAllowedPath");function Ia(e){let{projectPlanDoc:o,systemTempDirs:n}=Kn(e),t=n[0]??ao.tmpdir();return`${o} or the system temp directory (${t})`}a(Ia,"formatPlanModeAllowedLocations");var _a=new Set(["-a","--append","-i","--ignore-interrupts"]);function Ma(e){let o=[];for(let n=1;n<e.argv.length;n+=1){let t=e.argv[n];_a.has(t)||t.startsWith("-")||o.push(t)}return o}a(Ma,"collectTeeTargets");function Pa(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(Pa,"collectPowerShellWriteTargets");function Ue(e){let o=new Set,n=a(r=>{let i=r?.trim();i&&o.add(i)},"pushTarget");for(let r of Fo(e))n(r);let t=io(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 Ma(i))n(c);else if(ws.has(l))for(let c of Pa(i))n(c)}}return Array.from(o)}a(Ue,"collectBashWriteTargets");function vs(e,o){if(!Fn(e))return{dangerous:!1};let n=new Set([...Ue(e),...Ta(e)]);for(let t of n)if(!zn(t,o))return{dangerous:!0,reason:`Command may modify file outside project: ${t}`};return{dangerous:!1}}a(vs,"getBashOutsideProjectWriteRisk");function Ss(e,o,n){let t=Ia(n);if(Pr(e))return null;if(ro.has(e)){let r=typeof o.path=="string"?o.path:"";return r?Un(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(!Fn(r))return null;let i=Ue(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=>!Un(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(Ss,"getPlanModeBlockReason");import fe from"node:path";import La from"node:os";function je(e,o){try{let n=fe.resolve(e),t=fe.resolve(o);return n===t?!0:n.startsWith(t+fe.sep)}catch{return!1}}a(je,"isPathUnder");function Wa(){try{return Ro()}catch{return}}a(Wa,"safeGetAgentConfigHome");function $s(e,o){let n=Wa();if(n&&je(e,n))return"user-kodax";let t=fe.join(fe.resolve(o),".kodax");if(je(e,t))return"project-kodax"}a($s,"resolveProtectedZone");function Na(){let e=new Set;try{e.add(La.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(Na,"getSystemTempDirs");var Oa=new Set(["bash"]),Da={toolNames:Oa,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=Na(),c=fe.resolve(o);for(let d of Fo(n)){let u;try{u=fe.resolve(o,d)}catch{continue}let f=$s(u,o);if(f){r.has(u)||(r.add(u),t.push({kind:"protected_path",path:d,zone:f}));continue}if(lo(d,o)){let m=l.some(k=>je(u,k)),h=je(u,c);!m&&!h&&!i.has(u)&&(i.add(u),t.push({kind:"outside_project",path:d}))}}for(let d of Ue(n)){let u;try{u=fe.resolve(o,d)}catch{continue}$s(u,o)||je(u,c)||l.some(h=>je(u,h))||t.push({kind:"shell_redirect_outside",target:d})}return t}};var Bo=H("config.json");function Rs(){return As.join(process.cwd(),".kodax","config.local.json")}a(Rs,"getProjectConfigFile");function Lf(e=process.env){let n=co(Bo).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=xs(n.classifierModel),d=xs(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,h=typeof n.timeoutMs=="number"&&n.timeoutMs>0?Math.floor(n.timeoutMs):void 0,k=bs(e.KODAX_AUTO_SPECULATIVE_WINDOW_MS?.trim()),y=typeof n.speculativeWindowMs=="number"?bs(String(n.speculativeWindowMs)):void 0;return{engine:l,classifierModel:c,classifierModelEnv:d,timeoutMs:m??h,speculativeWindowMs:k??y}}a(Lf,"loadAutoModeSettings");function bs(e){if(e===void 0||e==="")return;let o=Number(e);if(Number.isFinite(o))return o<0?0:Math.floor(o)}a(bs,"parseSpeculativeWindow");function xs(e){if(typeof e!="string")return;let o=e.trim();return o.length===0?void 0:o}a(xs,"nonEmptyString");function co(e){try{if(Ho.existsSync(e))return JSON.parse(Ho.readFileSync(e,"utf-8"))}catch{}return{}}a(co,"readJsonFile");function Es(e,o){Ho.mkdirSync(As.dirname(e),{recursive:!0}),Ho.writeFileSync(e,JSON.stringify(o,null,2))}a(Es,"writeJsonFile");function Xn(e){let o=co(Bo);Es(Bo,{...o,permissionMode:e})}a(Xn,"savePermissionModeUser");function Wf(){let e=co(Bo),o=co(Rs()),n=e.alwaysAllowTools??[],t=o.alwaysAllowTools??[];return[...new Set([...n,...t])]}a(Wf,"loadAlwaysAllowTools");function Nf(e,o,n=!1){let t=Gn(e,o,n);if(!t)return;let r=Rs(),i=co(r),l=i.alwaysAllowTools??[];l.includes(t)||Es(r,{...i,alwaysAllowTools:[...l,t]})}a(Nf,"saveAlwaysAllowToolPattern");var Vn=["ama","amaw","sa"];function Ts(e){let o=Vn.indexOf(e);return Vn[(o+1)%Vn.length]??"ama"}a(Ts,"nextAgentMode");var Fe=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}},Ua=new Fe;import z from"chalk";import{Buffer as Ms}from"node:buffer";import{spawn as ja}from"node:child_process";import Cs from"node:process";var $e="\x1B",Fa="\x07",Yn=`${$e}\\`;function Is(e,o){return e.SSH_CONNECTION?!1:o==="win32"||o==="darwin"||o==="linux"}a(Is,"shouldPreferNativeClipboard");function Ha(e,o){let n=Ms.from(e,"utf8").toString("base64"),t=o.TERM==="xterm-kitty"?Yn:Fa,r=`${$e}]52;c;${n}${t}`;return o.TMUX?`${$e}Ptmux;${r.replaceAll($e,`${$e}${$e}`)}${Yn}`:o.STY?`${$e}P${r}${Yn}`:r}a(Ha,"buildOscSequence");async function Go(e,o,n){return new Promise((t,r)=>{let i=ja(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(Go,"execClipboardCommand");function Ba(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=Ms.from(e,"utf8");return[["powershell",["-NoProfile","-NonInteractive","-Command",o],n],["pwsh",["-NoProfile","-NonInteractive","-Command",o],n],["cmd",["/c","chcp 65001 >nul & clip"],n]]}a(Ba,"buildWindowsClipboardCandidates");async function _s(e,o,n){if(o.SSH_CONNECTION)return!1;switch(n){case"win32":{let t=Ba(e);for(let[r,i,l]of t)try{if(await Go(r,i,l))return!0}catch{}return!1}case"darwin":return Go("pbcopy",[],e);case"linux":{let t=[["wl-copy",[]],["xclip",["-selection","clipboard"]],["xsel",["--clipboard","--input"]]];for(let[r,i]of t)try{if(await Go(r,i,e))return!0}catch{}return!1}default:return!1}}a(_s,"tryNativeClipboard");async function Ga(e,o){if(!o.TMUX)return!1;let n=o.LC_TERMINAL==="iTerm2"?["load-buffer","-"]:["load-buffer","-w","-"];try{return await Go("tmux",n,e)}catch{return!1}}a(Ga,"tryTmuxClipboard");async function Ps(e,o={}){let n=o.env??Cs.env,t=o.platform??Cs.platform,r=e.trimEnd(),i=Ha(r,n);if(!r)throw new Error("Nothing to copy.");if(Is(n,t))try{if(await _s(r,n,t))return{path:"native"}}catch{}if(await Ga(r,n))return{path:"tmux-buffer"};if(o.terminalWrite?.(i))return{path:"osc52"};if(!Is(n,t))try{if(await _s(r,n,t))return{path:"native"}}catch{}throw new Error("Unable to access any clipboard path.")}a(Ps,"copyTextToClipboard");var Jn;(function(e){e.Idle="idle",e.Responding="responding",e.WaitingForConfirmation="waiting_for_confirmation"})(Jn||(Jn={}));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 Xf={[G.Scheduled]:"\u25CB",[G.Validating]:"\u25CC",[G.AwaitingApproval]:"?",[G.Executing]:"\u25CB",[G.Success]:"\u2713",[G.Error]:"\u2717",[G.Cancelled]:"-"},Ls;(function(e){e[e.Low=-100]="Low",e[e.Normal=0]="Normal",e[e.High=100]="High",e[e.Critical=200]="Critical"})(Ls||(Ls={}));var Vf={streamingState:Jn.Idle,currentResponse:"",history:[],pendingToolCalls:[],sessionId:"",provider:"",model:"",isLoading:!1};var za="[redacted]",Ws="[truncated]";function re(e,o=2e3){return e.length>o?`${e.slice(0,o-3)}...`:e}a(re,"truncateToolReplayText");function qa(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(qa,"isSensitiveToolInputKey");function Ns(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(Ns,"isRecord");function Zn(e,o=0,n=new WeakSet){if(e===null||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="string")return re(e);if(o>=6)return Ws;if(typeof e=="object"&&e!==null){if(n.has(e))return Ws;if(n.add(e),Array.isArray(e))return e.slice(0,50).map(r=>Zn(r,o+1,n));if(!Ns(e))return re(String(e));let t={};for(let[r,i]of Object.entries(e).slice(0,50))t[r]=qa(r)?za:Zn(i,o+1,n);return t}return re(String(e))}a(Zn,"sanitizeToolJsonValue");function Os(e){if(!e)return;let o=Zn(e);return Ns(o)?o:void 0}a(Os,"sanitizeToolInput");function Ds(e){if(e!==void 0){if(typeof e=="string")return re(e);try{return re(JSON.stringify(e))}catch{return re(String(e))}}}a(Ds,"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(el)}:e}a(om,"seedToHistoryItem");var Ka="[Thinking]",Xa="[/Thinking]",Va="Untitled Session",Us=50,Ya=60,Fs="...",Hs=["[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:"],Bs=[/(?:^|\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:/],Ja=/(^|\r?\n)\[Thinking\]\r?\n([\s\S]*?)\r?\n\[\/Thinking\](?=\r?\n|$)/g,Za="Session ended before the tool completed.";function Qa(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(Qa,"toolCallSeedToHistoryToolStatus");function el(e){return{id:e.id,name:e.name,status:Qa(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(el,"toolCallSeedToHistoryToolCall");function ol(e){let o=-1;for(let n of Hs){let t=e.indexOf(n);t>=0&&(o===-1||t<o)&&(o=t)}for(let n of Bs){let t=n.exec(e);t&&t.index>=0&&(o===-1||t.index<o)&&(o=t.index)}return o}a(ol,"findControlPlaneCutIndex");function nl(e){return Hs.some(o=>e.includes(o))||Bs.some(o=>o.test(e))}a(nl,"hasControlPlaneSignal");function Gs(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(Gs,"collectTextBlocks");function qo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(qo,"isRecord");function tl(e){if(typeof e=="string")return re(e);if(e===void 0)return"";try{return Ds(e)??""}catch{return re(String(e))}}a(tl,"toolResultContentToString");function rl(e){let o=tl(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(rl,"inferToolResultSeed");function sl(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,rl(n));return o}a(sl,"collectToolResultSeeds");function il(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:Za};return{id:e.id,name:e.name,status:n.status,...e.input!==void 0?{input:Os(qo(e.input)?e.input:{})??{}}:{},...n.output!==void 0?{output:n.output}:{},...n.error!==void 0?{error:n.error}:{}}}a(il,"buildToolCallSeed");function al(e){return typeof e=="string"?e:Array.isArray(e)?Gs(e).join(`
3
- `):""}a(al,"extractAssistantTextOnly");function fo(e,o,n){n.trim().length!==0&&e.push({type:o,text:n})}a(fo,"pushSeed");function js(e){return e.replace(/^\n+/,"").replace(/\n+$/,"")}a(js,"stripLegacyTagBoundaryNewlines");function ll(e){let o=e.name,n=e.input;if(!n)return`\u26A1 ${o}`;let t=o==="bash"?uo(String(n.command??"")):o==="read"||o==="write"||o==="edit"?uo(String(n.file_path??n.path??"")):o==="grep"||o==="glob"?uo(String(n.pattern??"")):o==="web_search"||o==="web_fetch"?uo(String(n.query??n.url??"")):void 0;return t?`\u26A1 ${o}(${t})`:`\u26A1 ${o}`}a(ll,"formatToolUseSummary");function uo(e,o=60){let n=e.replace(/\s+/g," ").trim();return n.length>o?`${n.slice(0,o)}...`:n}a(uo,"truncateToolHint");function cl(e){if(!e.includes(Ka)||!e.includes(Xa))return e.trim().length>0?[{type:"assistant",text:e}]:[];let o=[],n=0;for(let t of e.matchAll(Ja)){let r=t.index??-1,i=t[1]??"",l=t[2]??"";if(r<0)continue;let c=r+i.length;fo(o,"assistant",js(e.slice(n,c))),fo(o,"thinking",l),n=r+t[0].length}return fo(o,"assistant",js(e.slice(n))),o.length===0?e.trim().length>0?[{type:"assistant",text:e}]:[]:o}a(cl,"parseLegacyAssistantContent");function zs(e,o){if(typeof e=="string")return cl(e);if(!Array.isArray(e))return[];let n=[],t=[],r=[],i=a(()=>{t.length!==0&&(fo(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&&fo(n,"thinking",String(c.thinking));break;case"tool_use":if(i(),o){let d=il(c,o);d&&r.push(d)}else if(typeof c.name=="string"){let d=ll({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(zs,"extractAssistantHistorySeeds");var dl=["You are the Scout role","You are the Generator role","You are the Planner role","You are the Evaluator role"],ul=/\r?\n?\`\`\`kodax[\w-]*[\s\S]*?\`\`\`\s*/g;function fl(e){return dl.some(o=>e.includes(o))}a(fl,"isManagedWorkerPrompt");function qs(e){return e.replace(ul,"").trim()}a(qs,"stripManagedProtocolBlocks");function ml(e){switch(e.role){case"assistant":return zs(e.content).flatMap(n=>{if(n.type!=="assistant")return[n];let t=qs(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||fl(o)?[]:[{type:"user",text:o}]}case"system":return[];default:return[]}}a(ml,"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=sl(e[n+1]),i=zs(t.content,r);o.push(...i.map(l=>l.type==="assistant"?{...l,text:qs(l.text)}:l).filter(l=>l.type!=="assistant"||l.text.length>0&&l.text.trim()!=="..."));continue}o.push(...ml(t))}}return o}a(nm,"extractHistorySeedsFromMessages");function zo(e){return typeof e=="string"?e:Array.isArray(e)?Gs(e).join(`
5
- `):""}a(zo,"extractTextContent");function pl(e){let o=e.replace(/\s+/g," ").trim();return o?o.length>Us?`${o.slice(0,Us)}${Fs}`:o:Va}a(pl,"formatSessionTitle");function gl(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(gl,"isPureToolResultUserMessage");function Qn(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(!gl(n))return""}}return""}a(Qn,"extractLastAssistantText");function tm(e,o,n,t){let r=[Qn(e),o.trim(),n?.trim()??"",t?.trim()??""];for(let i of r){let l=Ks(i);if(l)return l}return""}a(tm,"resolveCompletedAssistantText");function Ks(e){let o=e.trim();if(!o||o==="...")return"";let n=ol(o);return n===0?"":(n>0?o.slice(0,n):o).trim()}a(Ks,"sanitizeUserFacingAssistantText");function rm(e){let o=e.trim();return o.length>0&&Ks(o).length===0&&nl(o)}a(rm,"isControlPlaneOnlyAssistantText");function sm(e){let o=e.find(t=>t.role==="user"),n=o?zo(o.content):"";return pl(n)}a(sm,"extractTitle");function im(e,o=Ya){let n=e.replace(/\n/g," "),t=n.length>o?Fs:"";return n.slice(0,o)+t}a(im,"formatMessagePreview");var et={name:"copy",description:"Copy last assistant message to clipboard",usage:"/copy",handler:a(async(e,o)=>{let n=Qn(o.messages);if(!n){console.log(z.yellow(`
6
- No assistant message found to copy.`)),console.log(z.dim("The assistant needs to respond first before you can copy its message."));return}try{await Ps(n);let t=n.length>50?n.slice(0,50)+"...":n;console.log(z.green(`
2
+ import{a as Xr}from"./chunk-KIVYMSRH.js";import{B as No,F as ve,H as Gr,J as zr,K as qr,L as Kr,j as Dr,l as De,m as Pn,n as Ur,o as jr,p as Fr,q as Mn,t as Wo,v as Hr,x as Ln,y as Wn,z as Br}from"./chunk-2OEKUAV4.js";import{Aa as Wr,Ba as Nr,Ha as Or}from"./chunk-XHOPSZVL.js";import{i as Po}from"./chunk-CGGX3FXE.js";import{d as $r,e as Mo,f as Ne,h as to,i as Lo,j as br,k as xr,m as Ar,n as In,o as Rr,p as ro,q as Er,t as ke,z as Oe}from"./chunk-QCBKLNN5.js";import{ea as Tr,fa as Cr,h as Sr}from"./chunk-4NSOBQCU.js";import{Cc as te,Rc as Ir,Tc as _r,Uc as Pr,Xc as _n,_ as _o,kd as Mr,md as Lr,w as vr}from"./chunk-7COB3EKF.js";import{Ja as Rn,Ka as _e,La as Pe,s as An,z as sr}from"./chunk-S4GVQO3W.js";import{Ab as dr,Ba as ir,Bc as mr,Ca as ar,Cc as pr,Da as Tn,Dc as gr,Lb as To,Md as yr,Nb as Co,Ob as ur,Pd as Cn,Qb as fr,Qc as Me,Rc as Le,Wc as wr,Yd as Io,k as En,ne as kr,va as Eo,vb as lr,wa as H,wb as cr,wd as We,xd as hr}from"./chunk-NJW2LQOP.js";import{a,b as xn,c as sa}from"./chunk-V4WSBIXB.js";var ts=xn((Ku,ns)=>{"use strict";ns.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 ds=xn((Vu,cs)=>{"use strict";var ls="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",rs=new RegExp("^"+ls+"$"),ss="|&;()<> \\t",la='"((\\\\"|[^"])*?)"',ca="'((\\\\'|[^'])*?)'",da=/^#$/,is="'",as='"',Nn="$",Se="",ua=4294967296;for(On=0;On<4;On++)Se+=(ua*Math.random()).toString(16);var On,fa=new RegExp("^"+Se);function ma(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(ma,"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+Se+JSON.stringify(t)+Se:o+t}a(pa,"getVar");function ga(e,o,n){n||(n={});var t=n.escape||"\\",r="(\\"+t+`['"`+ss+`]|[^\\s'"`+ss+"])+",i=new RegExp(["("+ls+")","("+r+"|"+la+"|"+ca+")+"].join("|"),"g"),l=ma(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(rs.test(u))return{op:u};var f=!1,m=!1,h="",k=!1,y;function v(){y+=1;var I,M,X=u.charAt(y);if(X==="{"){if(y+=1,u.charAt(y)==="}")throw new Error("Bad substitution: "+u.slice(y-2,y+1));if(I=u.indexOf("}",y),I<0)throw new Error("Bad substitution: "+u.slice(y));M=u.slice(y,I),y=I}else if(/[*@#?$!_-]/.test(X))M=X,y+=1;else{var V=u.slice(y);I=V.match(/[^\w\d_]/),I?(M=V.slice(0,I.index),y+=I.index-1):(M=V,y=u.length)}return pa(o,"",M)}for(a(v,"parseEnvVar"),y=0;y<u.length;y++){var p=u.charAt(y);if(k=k||!f&&(p==="*"||p==="?"),m)h+=p,m=!1;else if(f)p===f?f=!1:f==is?h+=p:p===t?(y+=1,p=u.charAt(y),p===as||p===t||p===Nn?h+=p:h+=t+p):p===Nn?h+=v():h+=p;else if(p===as||p===is)f=p;else{if(rs.test(p))return{op:u};if(da.test(p)){c=!0;var R={comment:e.slice(d.index+y+1)};return h.length?[h,R]:[R]}else p===t?m=!0:p===Nn?h+=v():h+=p}}return k?{op:"glob",pattern:h}:h}).reduce(function(d,u){return typeof u>"u"?d:d.concat(u)},[])}a(ga,"parseInternal");cs.exports=a(function(o,n,t){var r=ga(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("("+Se+".*?"+Se+")","g"));return c.length===1?i.concat(c[0]):i.concat(c.filter(Boolean).map(function(d){return fa.test(d)?JSON.parse(d.split(Se)[1]):d}))},[])},"parse")});var us=xn(Dn=>{"use strict";Dn.quote=ts();Dn.parse=ds()});import*as hn from"fs";import*as xo from"path";import s from"chalk";var Oo=["plan","accept-edits","auto","auto-in-project"];function ju(e){return e==="auto"||e==="auto-in-project"}a(ju,"isAutoMode");function ia(e){switch(e){case"plan":return"Plan";case"accept-edits":return"Edits";case"auto":case"auto-in-project":return"Auto"}}a(ia,"permissionModeDisplayName");var aa='[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 Fu(e=console.warn){let o=!1;return()=>{o||(o=!0,e(aa))}}a(Fu,"createAutoInProjectDeprecationEmitter");var Vr=Mr(),so=new Set(Vr.filter(e=>e.sideEffect==="mutates-fs"&&e.requiredParams.includes("path")).map(e=>e.name)),Yr=new Set(Vr.filter(e=>e.sideEffect!=="readonly").map(e=>e.name)),Jr=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"]),Zr=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 Qr(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(Qr,"computeConfirmTools");function es(e){return e!==void 0&&Oo.includes(e)}a(es,"isPermissionMode");function io(e,o){return es(e)?e:o}a(io,"normalizePermissionMode");async function os(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?(ar(e.provider,e.model,t,"probed",e.now()),n.push({effort:t,status:"rejected"})):n.push({effort:t,status:"accepted"})}return n}a(os,"probeProviderReasoningEfforts");import Bo from"fs";import Rs from"path";import Do from"fs";import W from"path";import lo from"os";var ps=sa(us(),1);var fs=new Set(["/dev/null","nul","NUL"]);function Un(e){return fs.has(e)||fs.has(e.toLowerCase())}a(Un,"isNullDevice");function ao(e){let o=e.trim();if(!o)return{statements:[],unparseable:!1};if(o.includes("`"))return{statements:[],unparseable:!0};let n;try{n=(0,ps.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 h=n[m];if(typeof h=="string"){i.push(h);continue}if("op"in h){let k=h.op;if(k==="&&"||k==="||"||k===";"){f(k);continue}if(k==="|"){u();continue}if(k==="&"){let y=n[m+1];if(y!==void 0&&typeof y!="string"&&"op"in y&&(y.op===">"||y.op===">>")){let v=n[m+2];if(typeof v!="string"){d=!0,m+=1;continue}l.push(ms(`&${y.op}`,v)),m+=2;continue}d=!0;continue}if(ha(k)){let y=null,v=i[i.length-1];v!==void 0&&/^[0-9]+$/.test(v)&&(y=v,i.pop());let p=n[m+1];if(typeof p!="string"){d=!0;continue}l.push(ms(y?`${y}${k}`:k,p)),m+=1;continue}if(k==="glob"){let y=h.pattern;typeof y=="string"?i.push(y):d=!0;continue}d=!0;continue}if("comment"in h)break;d=!0}return f(null),{statements:t,unparseable:d}}a(ao,"parseBashCommand");var wa=new Set([">",">>","<","<<","<<<","&>","&>>"]),gs=/^([0-9]+|&)(>>?|<<?)$/;function ha(e){return wa.has(e)||gs.test(e)}a(ha,"isRedirectionOp");function ms(e,o){let n=null,t=e,r=gs.exec(e);return r&&(n=r[1],t=r[2]),{op:e,fd:n,append:t===">>"||e==="&>>",input:t==="<"||t==="<<"||e==="<<<",target:o}}a(ms,"parseRedirection");var ya=W.join(".agent","plan_mode_doc.md"),Uo=new Map,jo=null;function ka(e){if(!e||!e.trim())return!1;let o=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Zr)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(ka,"isSingleBashReadCommand");var va=/^[a-zA-Z0-9]+$/;function Sa(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(!va.test(t))return!1;return n}a(Sa,"isHelpCommand");function Fn(e){if(!e||!e.trim())return!1;if(Sa(e))return!0;let o=e.trim().replace(/\\\r?\n/g," "),n=ao(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||!Un(c.target))return!1;let l=i.argv.join(" ");if(l&&!(t&&i.argv[0]?.toLowerCase()==="cd"&&i.argv.length>=2)&&!ka(l))return!1}}return!0}a(Fn,"isBashReadCommand");function $a(e){let o=e.trim();return o?Fn(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($a,"getDirectShellBypassBlockReason");var hs=new Set(["remove-item","set-content","add-content","out-file","new-item","copy-item","move-item","rename-item","ni"]);function Hn(e){if(!e||!e.trim())return!1;let o=ao(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 Jr)if(c===i||l!==null&&c===l)return!0}for(let i of r)if(hs.has(i))return!0;for(let i of t.redirections)if(!i.input&&!Un(i.target))return!0}return!1}a(Hn,"isBashWriteCommand");function Bn(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(Bn,"parseAllowedToolPattern");function ba(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e.startsWith(n)}return e===o}a(ba,"matchesBashPatternLegacy");function xa(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e===n}return e===o}a(xa,"matchesBashPatternByExtractedPrefix");async function Gn(e,o,n,t,r){if(e.toLowerCase()!=="bash")return!1;let i=o.command??"",l=[];for(let c of n){let d=Bn(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&&xa(c.value,d))return!0;return!1}for(let{pattern:c}of l)if(c&&ba(i,c))return!0;return!1}a(Gn,"isToolCallAllowed");function zn(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(zn,"generateSavePattern");function co(e,o){try{let n=W.resolve(e),t=W.resolve(o),r=Eo(),i=W.join(t,".kodax");return Ue(n,i)||Ue(n,r)?!0:!(Ue(n,t)||vs().some(c=>Ue(n,c)))}catch{return!1}}a(co,"isAlwaysConfirmPath");function ws(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"&&Aa.test(e)):!!(e.startsWith(".")&&/[/\\]/.test(e))}a(ws,"looksLikePath");var Aa=/^\/[A-Za-z][A-Za-z0-9]*(?::[A-Za-z0-9]+)?$/;function Ra(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(Ra,"legacyRegexPathScan");function Ho(e){let o=new Set,n=ao(e);if(!n.unparseable)for(let t of n.statements)for(let r of t.stages){for(let i of r.argv)ws(i)&&o.add(i);for(let i of r.redirections)ws(i.target)&&o.add(i.target)}for(let t of Ra(e))o.add(t);return Array.from(o)}a(Ho,"extractPathsFromCommand");function Ea(e,o){let n=Ho(e);for(let t of n)if(co(t,o))return!0;return!1}a(Ea,"isCommandOnProtectedPath");function Fo(e){let o=W.normalize(e);return process.platform==="win32"?o.toLowerCase():o}a(Fo,"normalizePathForComparison");function Ta(e,o){return Fo(e)===Fo(o)}a(Ta,"pathsEqual");function Ue(e,o){let n=Fo(e),t=Fo(o);return n===t||n.startsWith(t+W.sep)}a(Ue,"isPathInsideDirectory");function qn(e,o){try{let n=W.resolve(o),t=W.resolve(n,ks(ys(e)));return Ue(t,n)}catch{return!1}}a(qn,"isPathInsideProject");function Ca(e){let o=e.match(/[A-Za-z]:[\\/][^\s;|&<>(){}'"]+|\/[^\s;|&<>(){}'"]+/g);return o?o.filter(n=>!/^(?:\/dev\/|\/proc\/)/i.test(n)):[]}a(Ca,"collectAbsolutePathCandidates");function Kn(e){let o=W.resolve(e),n=Uo.get(o);if(n)return n;if(Do.existsSync(o)){let c=Do.realpathSync.native(o);return Uo.set(o,c),c}let t=[],r=o;for(;!Do.existsSync(r);){let c=W.dirname(r);if(c===r)return Uo.set(o,o),o;t.unshift(W.basename(r)),r=c}let i=Do.realpathSync.native(r),l=W.join(i,...t);return Uo.set(o,l),l}a(Kn,"resolveExistingPathPrefix");function ys(e){return e==="~"?lo.homedir():e.startsWith(`~${W.sep}`)||e.startsWith("~/")||e.startsWith("~\\")?W.join(lo.homedir(),e.slice(2)):e}a(ys,"expandHomeDirectory");function ks(e){let o=lo.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(ks,"expandSystemTempAlias");function Ia(e,o){let n=W.resolve(o??process.cwd()),t=ks(ys(e)),r=W.isAbsolute(t)?W.resolve(t):W.resolve(n,t);return Kn(r)}a(Ia,"resolvePermissionPath");function vs(){if(jo)return jo;let e=new Set,o=[lo.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(Kn(n))}catch{}return jo=Array.from(e),jo}a(vs,"getSystemTempDirectories");function Xn(e){let o=Kn(e??process.cwd());return{projectPlanDoc:W.join(o,ya),systemTempDirs:vs()}}a(Xn,"getPlanModeAllowedWritablePaths");function jn(e,o){let n=Ia(e,o),{projectPlanDoc:t,systemTempDirs:r}=Xn(o);return Ta(n,t)?!0:r.some(i=>Ue(n,i))}a(jn,"isPlanModeAllowedPath");function _a(e){let{projectPlanDoc:o,systemTempDirs:n}=Xn(e),t=n[0]??lo.tmpdir();return`${o} or the system temp directory (${t})`}a(_a,"formatPlanModeAllowedLocations");var Pa=new Set(["-a","--append","-i","--ignore-interrupts"]);function Ma(e){let o=[];for(let n=1;n<e.argv.length;n+=1){let t=e.argv[n];Pa.has(t)||t.startsWith("-")||o.push(t)}return o}a(Ma,"collectTeeTargets");function La(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(La,"collectPowerShellWriteTargets");function je(e){let o=new Set,n=a(r=>{let i=r?.trim();i&&o.add(i)},"pushTarget");for(let r of Ho(e))n(r);let t=ao(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 Ma(i))n(c);else if(hs.has(l))for(let c of La(i))n(c)}}return Array.from(o)}a(je,"collectBashWriteTargets");function Ss(e,o){if(!Hn(e))return{dangerous:!1};let n=new Set([...je(e),...Ca(e)]);for(let t of n)if(!qn(t,o))return{dangerous:!0,reason:`Command may modify file outside project: ${t}`};return{dangerous:!1}}a(Ss,"getBashOutsideProjectWriteRisk");function $s(e,o,n){let t=_a(n);if(Lr(e))return null;if(so.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(!Hn(r))return null;let i=je(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($s,"getPlanModeBlockReason");import fe from"node:path";import Wa from"node:os";function Fe(e,o){try{let n=fe.resolve(e),t=fe.resolve(o);return n===t?!0:n.startsWith(t+fe.sep)}catch{return!1}}a(Fe,"isPathUnder");function Na(){try{return Eo()}catch{return}}a(Na,"safeGetAgentConfigHome");function bs(e,o){let n=Na();if(n&&Fe(e,n))return"user-kodax";let t=fe.join(fe.resolve(o),".kodax");if(Fe(e,t))return"project-kodax"}a(bs,"resolveProtectedZone");function Oa(){let e=new Set;try{e.add(Wa.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(Oa,"getSystemTempDirs");var Da=new Set(["bash"]),Ua={toolNames:Da,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=Oa(),c=fe.resolve(o);for(let d of Ho(n)){let u;try{u=fe.resolve(o,d)}catch{continue}let f=bs(u,o);if(f){r.has(u)||(r.add(u),t.push({kind:"protected_path",path:d,zone:f}));continue}if(co(d,o)){let m=l.some(k=>Fe(u,k)),h=Fe(u,c);!m&&!h&&!i.has(u)&&(i.add(u),t.push({kind:"outside_project",path:d}))}}for(let d of je(n)){let u;try{u=fe.resolve(o,d)}catch{continue}bs(u,o)||Fe(u,c)||l.some(h=>Fe(u,h))||t.push({kind:"shell_redirect_outside",target:d})}return t}};var Go=H("config.json");function Es(){return Rs.join(process.cwd(),".kodax","config.local.json")}a(Es,"getProjectConfigFile");function Wf(e=process.env){let n=uo(Go).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=As(n.classifierModel),d=As(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,h=typeof n.timeoutMs=="number"&&n.timeoutMs>0?Math.floor(n.timeoutMs):void 0,k=xs(e.KODAX_AUTO_SPECULATIVE_WINDOW_MS?.trim()),y=typeof n.speculativeWindowMs=="number"?xs(String(n.speculativeWindowMs)):void 0;return{engine:l,classifierModel:c,classifierModelEnv:d,timeoutMs:m??h,speculativeWindowMs:k??y}}a(Wf,"loadAutoModeSettings");function xs(e){if(e===void 0||e==="")return;let o=Number(e);if(Number.isFinite(o))return o<0?0:Math.floor(o)}a(xs,"parseSpeculativeWindow");function As(e){if(typeof e!="string")return;let o=e.trim();return o.length===0?void 0:o}a(As,"nonEmptyString");function uo(e){try{if(Bo.existsSync(e))return JSON.parse(Bo.readFileSync(e,"utf-8"))}catch{}return{}}a(uo,"readJsonFile");function Ts(e,o){Bo.mkdirSync(Rs.dirname(e),{recursive:!0}),Bo.writeFileSync(e,JSON.stringify(o,null,2))}a(Ts,"writeJsonFile");function Vn(e){let o=uo(Go);Ts(Go,{...o,permissionMode:e})}a(Vn,"savePermissionModeUser");function Nf(){let e=uo(Go),o=uo(Es()),n=e.alwaysAllowTools??[],t=o.alwaysAllowTools??[];return[...new Set([...n,...t])]}a(Nf,"loadAlwaysAllowTools");function Of(e,o,n=!1){let t=zn(e,o,n);if(!t)return;let r=Es(),i=uo(r),l=i.alwaysAllowTools??[];l.includes(t)||Ts(r,{...i,alwaysAllowTools:[...l,t]})}a(Of,"saveAlwaysAllowToolPattern");var Yn=["ama","amaw","sa"];function Cs(e){let o=Yn.indexOf(e);return Yn[(o+1)%Yn.length]??"ama"}a(Cs,"nextAgentMode");var He=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}},ja=new He;import z from"chalk";import{Buffer as Ms}from"node:buffer";import{spawn as Fa}from"node:child_process";import Is from"node:process";var $e="\x1B",Ha="\x07",Jn=`${$e}\\`;function _s(e,o){return e.SSH_CONNECTION?!1:o==="win32"||o==="darwin"||o==="linux"}a(_s,"shouldPreferNativeClipboard");function Ba(e,o){let n=Ms.from(e,"utf8").toString("base64"),t=o.TERM==="xterm-kitty"?Jn:Ha,r=`${$e}]52;c;${n}${t}`;return o.TMUX?`${$e}Ptmux;${r.replaceAll($e,`${$e}${$e}`)}${Jn}`:o.STY?`${$e}P${r}${Jn}`:r}a(Ba,"buildOscSequence");async function zo(e,o,n){return new Promise((t,r)=>{let i=Fa(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 Ga(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=Ms.from(e,"utf8");return[["powershell",["-NoProfile","-NonInteractive","-Command",o],n],["pwsh",["-NoProfile","-NonInteractive","-Command",o],n],["cmd",["/c","chcp 65001 >nul & clip"],n]]}a(Ga,"buildWindowsClipboardCandidates");async function Ps(e,o,n){if(o.SSH_CONNECTION)return!1;switch(n){case"win32":{let t=Ga(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(Ps,"tryNativeClipboard");async function za(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(za,"tryTmuxClipboard");async function Ls(e,o={}){let n=o.env??Is.env,t=o.platform??Is.platform,r=e.trimEnd(),i=Ba(r,n);if(!r)throw new Error("Nothing to copy.");if(_s(n,t))try{if(await Ps(r,n,t))return{path:"native"}}catch{}if(await za(r,n))return{path:"tmux-buffer"};if(o.terminalWrite?.(i))return{path:"osc52"};if(!_s(n,t))try{if(await Ps(r,n,t))return{path:"native"}}catch{}throw new Error("Unable to access any clipboard path.")}a(Ls,"copyTextToClipboard");var Zn;(function(e){e.Idle="idle",e.Responding="responding",e.WaitingForConfirmation="waiting_for_confirmation"})(Zn||(Zn={}));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 Vf={[G.Scheduled]:"\u25CB",[G.Validating]:"\u25CC",[G.AwaitingApproval]:"?",[G.Executing]:"\u25CB",[G.Success]:"\u2713",[G.Error]:"\u2717",[G.Cancelled]:"-"},Ws;(function(e){e[e.Low=-100]="Low",e[e.Normal=0]="Normal",e[e.High=100]="High",e[e.Critical=200]="Critical"})(Ws||(Ws={}));var Yf={streamingState:Zn.Idle,currentResponse:"",history:[],pendingToolCalls:[],sessionId:"",provider:"",model:"",isLoading:!1};var qa="[redacted]",Ns="[truncated]";function re(e,o=2e3){return e.length>o?`${e.slice(0,o-3)}...`:e}a(re,"truncateToolReplayText");function Ka(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(Ka,"isSensitiveToolInputKey");function Os(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(Os,"isRecord");function Qn(e,o=0,n=new WeakSet){if(e===null||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="string")return re(e);if(o>=6)return Ns;if(typeof e=="object"&&e!==null){if(n.has(e))return Ns;if(n.add(e),Array.isArray(e))return e.slice(0,50).map(r=>Qn(r,o+1,n));if(!Os(e))return re(String(e));let t={};for(let[r,i]of Object.entries(e).slice(0,50))t[r]=Ka(r)?qa:Qn(i,o+1,n);return t}return re(String(e))}a(Qn,"sanitizeToolJsonValue");function Ds(e){if(!e)return;let o=Qn(e);return Os(o)?o:void 0}a(Ds,"sanitizeToolInput");function Us(e){if(e!==void 0){if(typeof e=="string")return re(e);try{return re(JSON.stringify(e))}catch{return re(String(e))}}}a(Us,"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(ol)}:e}a(nm,"seedToHistoryItem");var Xa="[Thinking]",Va="[/Thinking]",Ya="Untitled Session",js=50,Ja=60,Hs="...",Bs=["[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:"],Gs=[/(?:^|\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:/],Za=/(^|\r?\n)\[Thinking\]\r?\n([\s\S]*?)\r?\n\[\/Thinking\](?=\r?\n|$)/g,Qa="Session ended before the tool completed.";function el(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(el,"toolCallSeedToHistoryToolStatus");function ol(e){return{id:e.id,name:e.name,status:el(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(ol,"toolCallSeedToHistoryToolCall");function nl(e){let o=-1;for(let n of Bs){let t=e.indexOf(n);t>=0&&(o===-1||t<o)&&(o=t)}for(let n of Gs){let t=n.exec(e);t&&t.index>=0&&(o===-1||t.index<o)&&(o=t.index)}return o}a(nl,"findControlPlaneCutIndex");function tl(e){return Bs.some(o=>e.includes(o))||Gs.some(o=>o.test(e))}a(tl,"hasControlPlaneSignal");function zs(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(zs,"collectTextBlocks");function Ko(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(Ko,"isRecord");function rl(e){if(typeof e=="string")return re(e);if(e===void 0)return"";try{return Us(e)??""}catch{return re(String(e))}}a(rl,"toolResultContentToString");function sl(e){let o=rl(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 il(e){let o=new Map;if(!e||e.role!=="user"||!Array.isArray(e.content))return o;for(let n of e.content)!Ko(n)||n.type!=="tool_result"||typeof n.tool_use_id!="string"||o.set(n.tool_use_id,sl(n));return o}a(il,"collectToolResultSeeds");function al(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:Qa};return{id:e.id,name:e.name,status:n.status,...e.input!==void 0?{input:Ds(Ko(e.input)?e.input:{})??{}}:{},...n.output!==void 0?{output:n.output}:{},...n.error!==void 0?{error:n.error}:{}}}a(al,"buildToolCallSeed");function ll(e){return typeof e=="string"?e:Array.isArray(e)?zs(e).join(`
3
+ `):""}a(ll,"extractAssistantTextOnly");function mo(e,o,n){n.trim().length!==0&&e.push({type:o,text:n})}a(mo,"pushSeed");function Fs(e){return e.replace(/^\n+/,"").replace(/\n+$/,"")}a(Fs,"stripLegacyTagBoundaryNewlines");function cl(e){let o=e.name,n=e.input;if(!n)return`\u26A1 ${o}`;let t=o==="bash"?fo(String(n.command??"")):o==="read"||o==="write"||o==="edit"?fo(String(n.file_path??n.path??"")):o==="grep"||o==="glob"?fo(String(n.pattern??"")):o==="web_search"||o==="web_fetch"?fo(String(n.query??n.url??"")):void 0;return t?`\u26A1 ${o}(${t})`:`\u26A1 ${o}`}a(cl,"formatToolUseSummary");function fo(e,o=60){let n=e.replace(/\s+/g," ").trim();return n.length>o?`${n.slice(0,o)}...`:n}a(fo,"truncateToolHint");function dl(e){if(!e.includes(Xa)||!e.includes(Va))return e.trim().length>0?[{type:"assistant",text:e}]:[];let o=[],n=0;for(let t of e.matchAll(Za)){let r=t.index??-1,i=t[1]??"",l=t[2]??"";if(r<0)continue;let c=r+i.length;mo(o,"assistant",Fs(e.slice(n,c))),mo(o,"thinking",l),n=r+t[0].length}return mo(o,"assistant",Fs(e.slice(n))),o.length===0?e.trim().length>0?[{type:"assistant",text:e}]:[]:o}a(dl,"parseLegacyAssistantContent");function qs(e,o){if(typeof e=="string")return dl(e);if(!Array.isArray(e))return[];let n=[],t=[],r=[],i=a(()=>{t.length!==0&&(mo(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(!(!Ko(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&&mo(n,"thinking",String(c.thinking));break;case"tool_use":if(i(),o){let d=al(c,o);d&&r.push(d)}else if(typeof c.name=="string"){let d=cl({name:c.name,...Ko(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(qs,"extractAssistantHistorySeeds");var ul=["You are the Scout role","You are the Generator role","You are the Planner role","You are the Evaluator role"],fl=/\r?\n?\`\`\`kodax[\w-]*[\s\S]*?\`\`\`\s*/g;function ml(e){return ul.some(o=>e.includes(o))}a(ml,"isManagedWorkerPrompt");function Ks(e){return e.replace(fl,"").trim()}a(Ks,"stripManagedProtocolBlocks");function pl(e){switch(e.role){case"assistant":return qs(e.content).flatMap(n=>{if(n.type!=="assistant")return[n];let t=Ks(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||ml(o)?[]:[{type:"user",text:o}]}case"system":return[];default:return[]}}a(pl,"extractHistorySeedsFromMessage");function tm(e){let o=[];for(let n=0;n<e.length;n+=1){let t=e[n];if(t){if(t.role==="assistant"){let r=il(e[n+1]),i=qs(t.content,r);o.push(...i.map(l=>l.type==="assistant"?{...l,text:Ks(l.text)}:l).filter(l=>l.type!=="assistant"||l.text.length>0&&l.text.trim()!=="..."));continue}o.push(...pl(t))}}return o}a(tm,"extractHistorySeedsFromMessages");function qo(e){return typeof e=="string"?e:Array.isArray(e)?zs(e).join(`
5
+ `):""}a(qo,"extractTextContent");function gl(e){let o=e.replace(/\s+/g," ").trim();return o?o.length>js?`${o.slice(0,js)}${Hs}`:o:Ya}a(gl,"formatSessionTitle");function wl(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(wl,"isPureToolResultUserMessage");function et(e){for(let o=e.length-1;o>=0;o--){let n=e[o];if(n){if(n.role==="assistant"){let t=ll(n.content);return t&&t.trim()!=="..."?t:""}if(!wl(n))return""}}return""}a(et,"extractLastAssistantText");function rm(e,o,n,t){let r=[et(e),o.trim(),n?.trim()??"",t?.trim()??""];for(let i of r){let l=Xs(i);if(l)return l}return""}a(rm,"resolveCompletedAssistantText");function Xs(e){let o=e.trim();if(!o||o==="...")return"";let n=nl(o);return n===0?"":(n>0?o.slice(0,n):o).trim()}a(Xs,"sanitizeUserFacingAssistantText");function sm(e){let o=e.trim();return o.length>0&&Xs(o).length===0&&tl(o)}a(sm,"isControlPlaneOnlyAssistantText");function im(e){let o=e.find(t=>t.role==="user"),n=o?qo(o.content):"";return gl(n)}a(im,"extractTitle");function am(e,o=Ja){let n=e.replace(/\n/g," "),t=n.length>o?Hs:"";return n.slice(0,o)+t}a(am,"formatMessagePreview");var ot={name:"copy",description:"Copy last assistant message to clipboard",usage:"/copy",handler:a(async(e,o)=>{let n=et(o.messages);if(!n){console.log(z.yellow(`
6
+ No assistant message found to copy.`)),console.log(z.dim("The assistant needs to respond first before you can copy its message."));return}try{await Ls(n);let t=n.length>50?n.slice(0,50)+"...":n;console.log(z.green(`
7
7
  Copied to clipboard!`)),console.log(z.dim(`Preview: ${t}`))}catch(t){let r=t instanceof Error?t.message:String(t);console.log(z.red(`
8
8
  Failed to copy to clipboard: ${r}`)),console.log(z.dim("You may need to check clipboard permissions or manually copy the message."))}},"handler"),detailedHelp:a(()=>{console.log(z.bold(`
9
9
  /copy - Copy Last Assistant Message
10
10
  `)),console.log("Usage:"),console.log(z.cyan(" /copy")+` - Copy the last assistant message to clipboard
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(z.dim(" User: Explain how async/await works")),console.log(z.dim(" AI: [responds with explanation]")),console.log(z.cyan(" /copy")+z.dim(` - Copies the explanation to clipboard
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 A from"chalk";function wl(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(wl,"resolveCwd");function hl(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(hl,"proposalLabel");function x(e=""){process.stdout.write(`${e}
14
- `)}a(x,"writeOutput");function yl(e){for(let o of e)x(A.yellow(`[learn] ${o}`))}a(yl,"printWarnings");function Xs(e){x(A.yellow(`
15
- Consumer impact:`)),x(A.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){x(A.dim(` ${n}:`));for(let r of t)x(A.dim(` - ${r}`))}}a(Xs,"printConsumerImpact");async function kl(e){let o=To(e),n=await Eo(o);return yl(n.warnings),{storePath:o,store:n}}a(kl,"readStore");function vl(e,o){return e.find(n=>n.proposalId===o)}a(vl,"findProposal");function Sl(e,o){let n=e.filter(t=>t.status==="pending");if(x(A.cyan(`
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 A from"chalk";function hl(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(hl,"resolveCwd");function yl(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(yl,"proposalLabel");function x(e=""){process.stdout.write(`${e}
14
+ `)}a(x,"writeOutput");function kl(e){for(let o of e)x(A.yellow(`[learn] ${o}`))}a(kl,"printWarnings");function Vs(e){x(A.yellow(`
15
+ Consumer impact:`)),x(A.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){x(A.dim(` ${n}:`));for(let r of t)x(A.dim(` - ${r}`))}}a(Vs,"printConsumerImpact");async function vl(e){let o=Co(e),n=await To(o);return kl(n.warnings),{storePath:o,store:n}}a(vl,"readStore");function Sl(e,o){return e.find(n=>n.proposalId===o)}a(Sl,"findProposal");function $l(e,o){let n=e.filter(t=>t.status==="pending");if(x(A.cyan(`
16
16
  [learn] pending learning suggestions`)),x(A.dim(` ${o}`)),n.length===0){x(A.dim(` (none)
17
- `));return}for(let t of n){let r=t.applyPlan?"apply-plan":"handoff";x(` ${A.cyan(t.proposalId)} ${A.dim(`[${r}]`)} ${hl(t)}`)}x(A.dim(`
17
+ `));return}for(let t of n){let r=t.applyPlan?"apply-plan":"handoff";x(` ${A.cyan(t.proposalId)} ${A.dim(`[${r}]`)} ${yl(t)}`)}x(A.dim(`
18
18
  Use /learn diff <id>, /learn approve <id>, or /learn reject <id>.
19
- `))}a(Sl,"printPending");function $l(e){if(x(A.cyan(`
19
+ `))}a($l,"printPending");function bl(e){if(x(A.cyan(`
20
20
  [learn] ${e.proposalId}`)),x(A.dim(` status: ${e.status}`)),x(A.dim(` kind : ${e.proposal.destination}`)),x(`
21
- Proposal:`),x(JSON.stringify(e.proposal,null,2)),e.proposal.destination==="workflow_handoff"&&Xs(e.proposal.consumerImpact),!e.applyPlan){x(A.dim(`
21
+ Proposal:`),x(JSON.stringify(e.proposal,null,2)),e.proposal.destination==="workflow_handoff"&&Vs(e.proposal.consumerImpact),!e.applyPlan){x(A.dim(`
22
22
  No F224 apply plan is attached. Approval records the handoff only.
23
23
  `));return}x(`
24
- Apply plan:`),x(A.dim(` kind : ${e.applyPlan.kind}`)),x(A.dim(` skillRoot: ${e.applyPlan.skillRoot}`));for(let o of e.applyPlan.changes)x(A.dim(` - ${o.kind} ${o.relativePath}`)),o.kind==="write"&&x(o.content);x()}a($l,"printDiff");async function bl(e,o,n={}){let t=await ur(e,o,n);switch(t.status){case"approved_already_applied":x(A.green(`
24
+ Apply plan:`),x(A.dim(` kind : ${e.applyPlan.kind}`)),x(A.dim(` skillRoot: ${e.applyPlan.skillRoot}`));for(let o of e.applyPlan.changes)x(A.dim(` - ${o.kind} ${o.relativePath}`)),o.kind==="write"&&x(o.content);x()}a(bl,"printDiff");async function xl(e,o,n={}){let t=await fr(e,o,n);switch(t.status){case"approved_already_applied":x(A.green(`
25
25
  [learn] approved ${o.proposalId}; files already match the apply plan.`)),x(A.dim(` recovered a pending proposal without applying it again.
26
26
  `));return;case"blocked_snapshot_conflict":x(A.red(`
27
27
  [learn] refusing to reapply ${o.proposalId}; ${t.relativePath} changed after the last snapshot.`)),x(A.dim(` snapshot: ${t.snapshotPath}`)),x(A.dim(` Review the file manually, then reject or recreate the learning proposal.
@@ -31,50 +31,50 @@ Apply plan:`),x(A.dim(` kind : ${e.applyPlan.kind}`)),x(A.dim(` skillRoot:
31
31
  [learn] ${o.proposalId} has no skill apply plan; nothing was applied.
32
32
  `));return;case"blocked_consumer_impact":x(A.yellow(`
33
33
  [learn] ${o.proposalId} requires manual consumer-impact review before approval.`)),x(A.dim(` Run /learn diff ${o.proposalId}, then /learn approve ${o.proposalId} --ack-impact after review.
34
- `)),Xs(t.impact),x();return;case"approved_handoff":x(A.green(`
34
+ `)),Vs(t.impact),x();return;case"approved_handoff":x(A.green(`
35
35
  [learn] approved ${o.proposalId} as a downstream handoff.`)),x(A.dim(` F224 does not mutate workflow, memory, or reasoning carriers directly.
36
36
  `));return;case"blocked_not_pending":x(A.dim(`
37
37
  [learn] ${o.proposalId} is already ${t.reviewStatus}.
38
- `));return}}a(bl,"approveProposal");function Ko(){x(A.cyan(`
38
+ `));return}}a(xl,"approveProposal");function Xo(){x(A.cyan(`
39
39
  /learn - Review procedural learning suggestions`)),x(A.dim(" /learn pending List pending suggestions")),x(A.dim(" /learn diff <proposalId> Preview proposal and apply plan")),x(A.dim(" /learn approve <proposalId> [--ack-impact]")),x(A.dim(" /learn reject <proposalId> [reason]")),x(A.dim(` /learn help
40
- `))}a(Ko,"printHelp");var ot={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=wl(o),t=(e[0]??"pending").toLowerCase();if(t==="help"||t==="-h"||t==="--help"){Ko();return}let{storePath:r,store:i}=await kl(n);if(t==="pending"||t==="list"){Sl(i.proposals,r);return}let l=e[1];if(!l){x(A.yellow(`
40
+ `))}a(Xo,"printHelp");var nt={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=hl(o),t=(e[0]??"pending").toLowerCase();if(t==="help"||t==="-h"||t==="--help"){Xo();return}let{storePath:r,store:i}=await vl(n);if(t==="pending"||t==="list"){$l(i.proposals,r);return}let l=e[1];if(!l){x(A.yellow(`
41
41
  [learn] missing proposal id for ${t}.
42
- `)),Ko();return}let c=vl(i.proposals,l);if(!c){x(A.yellow(`
42
+ `)),Xo();return}let c=Sl(i.proposals,l);if(!c){x(A.yellow(`
43
43
  [learn] proposal not found: ${l}
44
- `));return}if(t==="diff"){$l(c);return}if(t==="approve"){if(i.warnings.length>0){x(A.red(`
44
+ `));return}if(t==="diff"){bl(c);return}if(t==="approve"){if(i.warnings.length>0){x(A.red(`
45
45
  [learn] refusing to mutate a corrupt learning store.
46
46
  `));return}if(c.status!=="pending"){x(A.dim(`
47
47
  [learn] ${c.proposalId} is already ${c.status}.
48
- `));return}let d=new Set(e.slice(2));await bl(r,c,{acknowledgeImpact:d.has("--ack-impact")});return}if(t==="reject"){if(i.warnings.length>0){x(A.red(`
48
+ `));return}let d=new Set(e.slice(2));await xl(r,c,{acknowledgeImpact:d.has("--ack-impact")});return}if(t==="reject"){if(i.warnings.length>0){x(A.red(`
49
49
  [learn] refusing to mutate a corrupt learning store.
50
50
  `));return}if(c.status!=="pending"){x(A.dim(`
51
51
  [learn] ${c.proposalId} is already ${c.status}.
52
- `));return}let d=e.slice(2).join(" ").trim();await dr(r,l,"rejected",d.length>0?{rejectedReason:d}:{}),x(A.dim(`
52
+ `));return}let d=e.slice(2).join(" ").trim();await ur(r,l,"rejected",d.length>0?{rejectedReason:d}:{}),x(A.dim(`
53
53
  [learn] rejected ${l}.
54
54
  `));return}x(A.yellow(`
55
55
  [learn] unknown subcommand: ${t}
56
- `)),Ko()},"handler"),detailedHelp:Ko};import*as Z from"node:fs";import*as Vo from"node:path";import $ from"chalk";import be from"chalk";function Xo(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(Xo,"resolveLearningCommandCwd");function He(e=""){process.stdout.write(`${e}
57
- `)}a(He,"writeOutput");function xl(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"}a(xl,"matchesFilter");function Al(e){return e==="skill"?"pending method guides":e==="workflow"?"pending runnable workflows":"pending context notes"}a(Al,"headingForFilter");function Rl(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(Rl,"proposalLabel");async function Be(e,o){let n=To(e),t=await Eo(n);for(let i of t.warnings)He(be.yellow(`[learn] ${i}`));let r=t.proposals.filter(i=>i.status==="pending").filter(i=>xl(i,o));if(He(be.cyan(`
58
- [learn] ${Al(o)}`)),He(be.dim(` ${n}`)),r.length===0){He(be.dim(` (none)
59
- `));return}for(let i of r)He(` ${be.cyan(i.proposalId)} ${be.dim(`[${i.proposal.destination}]`)} ${Rl(i)}`);He(be.dim(`
56
+ `)),Xo()},"handler"),detailedHelp:Xo};import*as Z from"node:fs";import*as Yo from"node:path";import $ from"chalk";import be from"chalk";function Vo(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(Vo,"resolveLearningCommandCwd");function Be(e=""){process.stdout.write(`${e}
57
+ `)}a(Be,"writeOutput");function Al(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"}a(Al,"matchesFilter");function Rl(e){return e==="skill"?"pending method guides":e==="workflow"?"pending runnable workflows":"pending context notes"}a(Rl,"headingForFilter");function El(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(El,"proposalLabel");async function Ge(e,o){let n=Co(e),t=await To(n);for(let i of t.warnings)Be(be.yellow(`[learn] ${i}`));let r=t.proposals.filter(i=>i.status==="pending").filter(i=>Al(i,o));if(Be(be.cyan(`
58
+ [learn] ${Rl(o)}`)),Be(be.dim(` ${n}`)),r.length===0){Be(be.dim(` (none)
59
+ `));return}for(let i of r)Be(` ${be.cyan(i.proposalId)} ${be.dim(`[${i.proposal.destination}]`)} ${El(i)}`);Be(be.dim(`
60
60
  Use /learn diff <id>, /learn approve <id>, or /learn reject <id>.
61
- `))}a(Be,"printLearningPendingForFilter");function El(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(El,"resolveCwd");function Ys(e){let o;try{o=Z.readdirSync(e,{withFileTypes:!0})}catch(t){return t.code!=="ENOENT"&&console.error(`[memory] failed to read memory directory ${e}:`,t),[]}let n=[];for(let t of o){if(!t.isFile()||!t.name.endsWith(".md")||t.name==="MEMORY.md")continue;let r=Vo.join(e,t.name),i="",l=0;try{i=Z.readFileSync(r,"utf-8"),l=Z.statSync(r).mtimeMs}catch(m){console.error(`[memory] failed to read ${r}:`,m);continue}let d=cr(i).frontmatter,u=d.name!==void 0||d.description!==void 0||d.type!==void 0,f=Vo.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(Ys,"readTopicFiles");function Tl(e){return e.map(o=>`- [${o.title}](${o.filename}) \u2014 ${o.description}`)}a(Tl,"buildIndexLines");async function Cl(e,o){console.log($.cyan(`
62
- [memory] per-project memory directory`)),console.log($.dim(` ${e}`));let n=Ys(e),t=n.filter(l=>!l.parseOk);console.log($.dim(` ${n.length} topic file${n.length===1?"":"s"}`+(t.length>0?`, ${t.length} without parsable frontmatter`:"")));let r=!1,i="";try{i=Z.readFileSync(o,"utf-8"),r=!0}catch{r=!1}if(!r){console.log($.yellow(`
61
+ `))}a(Ge,"printLearningPendingForFilter");function Tl(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(Tl,"resolveCwd");function Js(e){let o;try{o=Z.readdirSync(e,{withFileTypes:!0})}catch(t){return t.code!=="ENOENT"&&console.error(`[memory] failed to read memory directory ${e}:`,t),[]}let n=[];for(let t of o){if(!t.isFile()||!t.name.endsWith(".md")||t.name==="MEMORY.md")continue;let r=Yo.join(e,t.name),i="",l=0;try{i=Z.readFileSync(r,"utf-8"),l=Z.statSync(r).mtimeMs}catch(m){console.error(`[memory] failed to read ${r}:`,m);continue}let d=dr(i).frontmatter,u=d.name!==void 0||d.description!==void 0||d.type!==void 0,f=Yo.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(Js,"readTopicFiles");function Cl(e){return e.map(o=>`- [${o.title}](${o.filename}) \u2014 ${o.description}`)}a(Cl,"buildIndexLines");async function Il(e,o){console.log($.cyan(`
62
+ [memory] per-project memory directory`)),console.log($.dim(` ${e}`));let n=Js(e),t=n.filter(l=>!l.parseOk);console.log($.dim(` ${n.length} topic file${n.length===1?"":"s"}`+(t.length>0?`, ${t.length} without parsable frontmatter`:"")));let r=!1,i="";try{i=Z.readFileSync(o,"utf-8"),r=!0}catch{r=!1}if(!r){console.log($.yellow(`
63
63
  MEMORY.md does not exist yet.`)),n.length>0?console.log($.dim(" Run `/memory rebuild` to seed it from existing topic files.")):console.log($.dim(" The LLM will create it on first save \u2014 no action needed.")),console.log();return}console.log($.cyan(`
64
64
  --- MEMORY.md ---`)),i.trim().length===0?console.log($.dim(" (empty)")):console.log(i.trimEnd()),console.log($.cyan(`--- end ---
65
- `))}a(Cl,"listMemory");async function Il(e,o){let n=!1;try{n=Z.statSync(e).isDirectory()}catch{n=!1}if(!n){console.log($.yellow(`
65
+ `))}a(Il,"listMemory");async function _l(e,o){let n=!1;try{n=Z.statSync(e).isDirectory()}catch{n=!1}if(!n){console.log($.yellow(`
66
66
  [memory] memory directory does not exist yet \u2014 nothing to rebuild.`)),console.log($.dim(` ${e}`)),console.log($.dim(` The LLM will create both the directory and MEMORY.md on first save.
67
- `));return}let t=Ys(e);if(t.length===0){console.log($.yellow(`
67
+ `));return}let t=Js(e);if(t.length===0){console.log($.yellow(`
68
68
  [memory] no topic files found \u2014 nothing to rebuild.`)),console.log($.dim(` ${e}
69
- `));return}let r=[...t].sort((d,u)=>u.mtimeMs-d.mtimeMs),l=Tl(r).join(`
69
+ `));return}let r=[...t].sort((d,u)=>u.mtimeMs-d.mtimeMs),l=Cl(r).join(`
70
70
  `)+`
71
71
  `;Z.writeFileSync(o,l,"utf-8"),console.log($.green(`
72
- [memory] rebuilt MEMORY.md with ${r.length} entries (newest first).`)),console.log($.dim(` ${o}`));let c=r.filter(d=>!d.parseOk);if(c.length>0){console.log($.yellow(` ${c.length} file(s) had no parsable frontmatter \u2014 used filename as fallback:`));for(let d of c)console.log($.dim(` - ${d.filename}`));console.log($.dim(" Tip: add `---\\nname: ...\\ndescription: ...\\ntype: ...\\n---` at the top of those files."))}console.log()}a(Il,"rebuildMemory");function _l(e,o){console.log($.cyan(`
72
+ [memory] rebuilt MEMORY.md with ${r.length} entries (newest first).`)),console.log($.dim(` ${o}`));let c=r.filter(d=>!d.parseOk);if(c.length>0){console.log($.yellow(` ${c.length} file(s) had no parsable frontmatter \u2014 used filename as fallback:`));for(let d of c)console.log($.dim(` - ${d.filename}`));console.log($.dim(" Tip: add `---\\nname: ...\\ndescription: ...\\ntype: ...\\n---` at the top of those files."))}console.log()}a(_l,"rebuildMemory");function Pl(e,o){console.log($.cyan(`
73
73
  [memory] open these paths in your editor:`)),console.log($.dim(" index :"),o),console.log($.dim(" dir :"),e),console.log($.dim(`
74
74
  (No in-REPL editor is provided \u2014 open the file in your usual editor.
75
75
  Use \`/memory rebuild\` after manual edits if you renamed any topic file.)
76
- `))}a(_l,"openMemory");function Vs(){console.log($.cyan(`
77
- /memory - Inspect or rebuild per-project memory`)),console.log($.dim(" /memory List MEMORY.md + memory directory")),console.log($.dim(" /memory list Same as `/memory`")),console.log($.dim(" /memory pending List pending context-note learning suggestions")),console.log($.dim(" /memory rebuild Regenerate MEMORY.md from topic frontmatter")),console.log($.dim(" /memory open Print paths so you can open them in your editor")),console.log($.dim(" /memory help Show this help")),console.log()}a(Vs,"printHelp");function Ml(){console.log($.bold(`
76
+ `))}a(Pl,"openMemory");function Ys(){console.log($.cyan(`
77
+ /memory - Inspect or rebuild per-project memory`)),console.log($.dim(" /memory List MEMORY.md + memory directory")),console.log($.dim(" /memory list Same as `/memory`")),console.log($.dim(" /memory pending List pending context-note learning suggestions")),console.log($.dim(" /memory rebuild Regenerate MEMORY.md from topic frontmatter")),console.log($.dim(" /memory open Print paths so you can open them in your editor")),console.log($.dim(" /memory help Show this help")),console.log()}a(Ys,"printHelp");function Ml(){console.log($.bold(`
78
78
  /memory - Inspect or rebuild project memory
79
79
  `)),console.log("Usage:"),console.log($.cyan(" /memory ")+$.dim("Show MEMORY.md + topic file count")),console.log($.cyan(" /memory list ")+$.dim("Alias for `/memory`")),console.log($.cyan(" /memory pending ")+$.dim("List pending context-note learning suggestions")),console.log($.cyan(" /memory rebuild ")+$.dim("Regenerate MEMORY.md (newest first by mtime)")),console.log($.cyan(" /memory open ")+$.dim("Print the index + dir paths for editor use")),console.log($.cyan(" /memory help ")+$.dim(`Show this help
80
80
  `)),console.log("Description:"),console.log($.dim(` Each project gets its own memory directory under your KodaX agent
@@ -82,8 +82,8 @@ Apply plan:`),x(A.dim(` kind : ${e.applyPlan.kind}`)),x(A.dim(` skillRoot:
82
82
  owns reads/writes; this command is your escape hatch when the
83
83
  MEMORY.md index drifts from the topic files on disk.
84
84
  `)),console.log("Notes:"),console.log($.dim(" \u2022 Rebuild ONLY rewrites MEMORY.md. Topic files are never touched.")),console.log($.dim(" \u2022 Rebuild sorts entries by file mtime descending \u2014 the same")),console.log($.dim(" natural-LRU order the LLM produces by prepending new entries.")),console.log($.dim(" \u2022 Files missing or with malformed frontmatter still appear in")),console.log($.dim(" the rebuilt index using their filename as fallback; the command")),console.log($.dim(` prints a warning so you can fix the frontmatter.
85
- `))}a(Ml,"printDetailedHelp");var nt={name:"memory",description:"Inspect or rebuild per-project memory (FEATURE_124)",usage:"/memory [list|pending|rebuild|open|help]",argumentHint:"list | pending | rebuild | open | help",handler:a(async(e,o)=>{let n=El(o),t=ar(n),r=lr(n),i=(e[0]??"list").toLowerCase();if(i==="help"||i==="--help"||i==="-h"){Vs();return}if(i==="list"){await Cl(t,r);return}if(i==="pending"){await Be(n,"memory");return}if(i==="rebuild"){await Il(t,r);return}if(i==="open"){_l(t,r);return}console.log($.yellow(`
86
- [memory] unknown subcommand: ${i}`)),Vs()},"handler"),detailedHelp:Ml};import T from"chalk";function Js(){console.log(`
85
+ `))}a(Ml,"printDetailedHelp");var tt={name:"memory",description:"Inspect or rebuild per-project memory (FEATURE_124)",usage:"/memory [list|pending|rebuild|open|help]",argumentHint:"list | pending | rebuild | open | help",handler:a(async(e,o)=>{let n=Tl(o),t=lr(n),r=cr(n),i=(e[0]??"list").toLowerCase();if(i==="help"||i==="--help"||i==="-h"){Ys();return}if(i==="list"){await Il(t,r);return}if(i==="pending"){await Ge(n,"memory");return}if(i==="rebuild"){await _l(t,r);return}if(i==="open"){Pl(t,r);return}console.log($.yellow(`
86
+ [memory] unknown subcommand: ${i}`)),Ys()},"handler"),detailedHelp:Ml};import T from"chalk";function Zs(){console.log(`
87
87
  ${T.bold("/goal")} \u2014 persistent session goal
88
88
 
89
89
  ${T.bold("Subcommands:")}
@@ -99,15 +99,15 @@ ${T.bold("Notes:")}
99
99
  - Token budget is optional; set it only when you want a hard ceiling.
100
100
  - update_goal({complete}) is verifier-gated; the agent cannot
101
101
  self-declare done without runtime confirmation.
102
- `.trim())}a(Js,"printHelp");function Pl(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(!In(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(!In(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(Pl,"parseCreateArgs");function Ll(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(`
103
- `)}a(Ll,"renderStatus");async function mo(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=wr(e.lineage,n,t),await o.saveSession()}a(mo,"persist");async function Wl(e,o,n){if(!o.lineage){console.log(T.red("[/goal] no active session lineage"));return}let t=Le(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=Pl(e);if("error"in r){console.log(T.red(`[/goal] ${r.error}`));return}try{t&&t.status==="complete"&&await mo(o,n,null,"cleared");let i=Cr(r.objective,r.tokenBudget);await mo(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(Wl,"doCreate");async function Nl(e){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let o=Le(e.lineage);console.log(Ll(o))}a(Nl,"doStatus");async function Ol(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let n=Le(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=Ir(n);await mo(e,o,t,"paused"),console.log(T.green("[/goal] paused"))}a(Ol,"doPause");async function Dl(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let n=Le(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=_r(n);await mo(e,o,t,"resumed"),console.log(T.green("[/goal] resumed"))}a(Dl,"doResume");async function Ul(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}if(!Le(e.lineage)){console.log(T.yellow("[/goal] no goal to clear"));return}await mo(e,o,null,"cleared"),console.log(T.green("[/goal] cleared"))}a(Ul,"doClear");var Zs={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"){Js();return}if(t==="status"){await Nl(o);return}if(t==="pause"){await Ol(o,n);return}if(t==="resume"){await Dl(o,n);return}if(t==="clear"){await Ul(o,n);return}await Wl(e,o,n)},"handler"),detailedHelp:Js};import{existsSync as $i}from"node:fs";import{join as ee}from"node:path";import g from"chalk";import st from"path";import{createHash as zl}from"crypto";import{execFile as jl}from"child_process";import Fl from"fs";import tt from"path";import{promisify as Hl}from"util";var Bl=Hl(jl);function me(e){if(!(!e||!e.trim()))return tt.resolve(e).replace(/\\/g,"/")}a(me,"normalizePath");async function po(e,o){try{let{stdout:n}=await Bl("git",o,{cwd:e,windowsHide:!0,maxBuffer:1048576}),t=n.trim();return t||void 0}catch{return}}a(po,"gitStdout");function Gl(e){let o=me(e);if(o)return tt.posix.basename(o)===".git"?tt.posix.dirname(o):o}a(Gl,"deriveCanonicalRepoRoot");async function Nm(e={}){let o=me(e.cwd??process.cwd())??process.cwd().replace(/\\/g,"/"),n=me(await po(o,["rev-parse","--show-toplevel"])),t=await po(n??o,["rev-parse","--path-format=absolute","--git-common-dir"])??await po(n??o,["rev-parse","--git-common-dir"]),r=await po(n??o,["branch","--show-current"])??await po(n??o,["rev-parse","--abbrev-ref","HEAD"]);return{canonicalRepoRoot:Gl(t)??n,workspaceRoot:n,executionCwd:o,branch:r&&r!=="HEAD"?r:void 0,workspaceKind:e.workspaceKind??"detected"}}a(Nm,"inspectWorkspaceRuntime");function Om(e,o){return!e?.canonicalRepoRoot||!o?.canonicalRepoRoot?!1:me(e.canonicalRepoRoot)===me(o.canonicalRepoRoot)}a(Om,"isSameCanonicalRepo");function Dm(e){return!!(e?.workspaceRoot&&Fl.existsSync(e.workspaceRoot))}a(Dm,"workspaceExists");function Qs(e){let o=me(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=me(e.runtimeInfo?.executionCwd??o),t=me(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(Qs,"resolveSessionRuntimeInfo");function rt(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(rt,"formatWorkspaceTruth");var ei="_unknown",oi=80;function ql(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}a(ql,"caseFold");function Kl(e){return ql(st.resolve(e).replace(/\\/g,"/"))}a(Kl,"normalizeRoot");function ni(e){return zl("sha256").update(e).digest("hex").slice(0,10)}a(ni,"shortHash");function Xl(e){let o=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return o.length>oi?o.slice(o.length-oi):o}a(Xl,"slugify");function xe(e){if(!e||!e.trim())return{key:ei,canonicalRoot:null,displayName:ei};let o=Kl(e),n=Xl(o),t=n?`${n}-${ni(o)}`:ni(o),r=st.basename(st.resolve(e).replace(/\\/g,"/"))||e;return{key:t,canonicalRoot:o,displayName:r}}a(xe,"deriveProjectKeyFromRoot");function Gm(e){let o=Qs({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=o?.canonicalRepoRoot??o?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return xe(n)}a(Gm,"deriveProjectKeyFromData");import{join as Lc}from"node:path";import ln from"chalk";import{existsSync as se,readdirSync as ac,readFileSync as Qo,writeFileSync as ep}from"node:fs";import{dirname as lc,join as Q}from"node:path";import E from"chalk";import{existsSync as Vl,readFileSync as Yl}from"node:fs";var ti=4,ri=180,si=6e3,ii=360,it="[truncated]";function Ae(e){return/[\u3400-\u9fff]/u.test(e)?"zh":"en"}a(Ae,"detectWorkflowLocale");function go(...e){return Ae(e.filter(o=>typeof o=="string").join(`
104
- `))}a(go,"inferWorkflowLocaleFromParts");function pe(e,o={}){let n=e.trim();return o.full===!0||n.length<=si?n:`${n.slice(0,si).trimEnd()}
102
+ `.trim())}a(Zs,"printHelp");function Ll(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(!_n(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(!_n(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(Ll,"parseCreateArgs");function Wl(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(`
103
+ `)}a(Wl,"renderStatus");async function po(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=hr(e.lineage,n,t),await o.saveSession()}a(po,"persist");async function Nl(e,o,n){if(!o.lineage){console.log(T.red("[/goal] no active session lineage"));return}let t=We(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=Ll(e);if("error"in r){console.log(T.red(`[/goal] ${r.error}`));return}try{t&&t.status==="complete"&&await po(o,n,null,"cleared");let i=Ir(r.objective,r.tokenBudget);await po(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(Nl,"doCreate");async function Ol(e){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let o=We(e.lineage);console.log(Wl(o))}a(Ol,"doStatus");async function Dl(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let n=We(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=_r(n);await po(e,o,t,"paused"),console.log(T.green("[/goal] paused"))}a(Dl,"doPause");async function Ul(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let n=We(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=Pr(n);await po(e,o,t,"resumed"),console.log(T.green("[/goal] resumed"))}a(Ul,"doResume");async function jl(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}if(!We(e.lineage)){console.log(T.yellow("[/goal] no goal to clear"));return}await po(e,o,null,"cleared"),console.log(T.green("[/goal] cleared"))}a(jl,"doClear");var Qs={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"){Zs();return}if(t==="status"){await Ol(o);return}if(t==="pause"){await Dl(o,n);return}if(t==="resume"){await Ul(o,n);return}if(t==="clear"){await jl(o,n);return}await Nl(e,o,n)},"handler"),detailedHelp:Zs};import{existsSync as bi}from"node:fs";import{join as ee}from"node:path";import g from"chalk";import it from"path";import{createHash as ql}from"crypto";import{execFile as Fl}from"child_process";import Hl from"fs";import rt from"path";import{promisify as Bl}from"util";var Gl=Bl(Fl);function me(e){if(!(!e||!e.trim()))return rt.resolve(e).replace(/\\/g,"/")}a(me,"normalizePath");async function go(e,o){try{let{stdout:n}=await Gl("git",o,{cwd:e,windowsHide:!0,maxBuffer:1048576}),t=n.trim();return t||void 0}catch{return}}a(go,"gitStdout");function zl(e){let o=me(e);if(o)return rt.posix.basename(o)===".git"?rt.posix.dirname(o):o}a(zl,"deriveCanonicalRepoRoot");async function Om(e={}){let o=me(e.cwd??process.cwd())??process.cwd().replace(/\\/g,"/"),n=me(await go(o,["rev-parse","--show-toplevel"])),t=await go(n??o,["rev-parse","--path-format=absolute","--git-common-dir"])??await go(n??o,["rev-parse","--git-common-dir"]),r=await go(n??o,["branch","--show-current"])??await go(n??o,["rev-parse","--abbrev-ref","HEAD"]);return{canonicalRepoRoot:zl(t)??n,workspaceRoot:n,executionCwd:o,branch:r&&r!=="HEAD"?r:void 0,workspaceKind:e.workspaceKind??"detected"}}a(Om,"inspectWorkspaceRuntime");function Dm(e,o){return!e?.canonicalRepoRoot||!o?.canonicalRepoRoot?!1:me(e.canonicalRepoRoot)===me(o.canonicalRepoRoot)}a(Dm,"isSameCanonicalRepo");function Um(e){return!!(e?.workspaceRoot&&Hl.existsSync(e.workspaceRoot))}a(Um,"workspaceExists");function ei(e){let o=me(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=me(e.runtimeInfo?.executionCwd??o),t=me(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(ei,"resolveSessionRuntimeInfo");function st(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(st,"formatWorkspaceTruth");var oi="_unknown",ni=80;function Kl(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}a(Kl,"caseFold");function Xl(e){return Kl(it.resolve(e).replace(/\\/g,"/"))}a(Xl,"normalizeRoot");function ti(e){return ql("sha256").update(e).digest("hex").slice(0,10)}a(ti,"shortHash");function Vl(e){let o=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return o.length>ni?o.slice(o.length-ni):o}a(Vl,"slugify");function xe(e){if(!e||!e.trim())return{key:oi,canonicalRoot:null,displayName:oi};let o=Xl(e),n=Vl(o),t=n?`${n}-${ti(o)}`:ti(o),r=it.basename(it.resolve(e).replace(/\\/g,"/"))||e;return{key:t,canonicalRoot:o,displayName:r}}a(xe,"deriveProjectKeyFromRoot");function zm(e){let o=ei({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=o?.canonicalRepoRoot??o?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return xe(n)}a(zm,"deriveProjectKeyFromData");import{join as Wc}from"node:path";import cn from"chalk";import{existsSync as se,readdirSync as lc,readFileSync as en,writeFileSync as op}from"node:fs";import{dirname as cc,join as Q}from"node:path";import E from"chalk";import{existsSync as Yl,readFileSync as Jl}from"node:fs";var ri=4,si=180,ii=6e3,ai=360,at="[truncated]";function Ae(e){return/[\u3400-\u9fff]/u.test(e)?"zh":"en"}a(Ae,"detectWorkflowLocale");function wo(...e){return Ae(e.filter(o=>typeof o=="string").join(`
104
+ `))}a(wo,"inferWorkflowLocaleFromParts");function pe(e,o={}){let n=e.trim();return o.full===!0||n.length<=ii?n:`${n.slice(0,ii).trimEnd()}
105
105
 
106
- ${it}`}a(pe,"trimResultPreview");function at(e){return e.includes(it)}a(at,"isWorkflowResultPreviewTruncated");function Jl(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(Jl,"formatWorkflowResultTruncationHint");function Ge(e,o,n){let t=e.lastIndexOf(it);return t<0?e:`${e.slice(0,t).trimEnd()}
106
+ ${at}`}a(pe,"trimResultPreview");function lt(e){return e.includes(at)}a(lt,"isWorkflowResultPreviewTruncated");function Zl(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(Zl,"formatWorkflowResultTruncationHint");function ze(e,o,n){let t=e.lastIndexOf(at);return t<0?e:`${e.slice(0,t).trimEnd()}
107
107
 
108
- ${Jl(o,n)}`}a(Ge,"replaceWorkflowResultTruncationMarker");function Zl(e){let o=e.replace(/\s+/g," ").trim();return o.length<=ii?o:`${o.slice(0,ii).trimEnd()}...`}a(Zl,"trimWorkflowLaunchSummary");function ge(e,o={}){if(typeof e=="string"&&e.trim().length>0)return pe(e,o);if(e&&typeof e=="object"&&"synthesis"in e){let n=e.synthesis;if(typeof n=="string"&&n.trim().length>0)return pe(n,o);if(n&&typeof n=="object"&&"text"in n){let t=n.text;if(typeof t=="string"&&t.trim().length>0)return pe(t,o)}}if(e&&typeof e=="object")for(let n of["summary","report","text","result"]){let t=e[n];if(typeof t=="string"&&t.trim().length>0)return pe(t,o)}if(e!=null)try{let n=JSON.stringify(e,null,2);if(typeof n=="string"){let t=n.trim();if(t.length>0&&t!=="{}"&&t!=="[]"&&t!=='""')return pe(n,o)}}catch{}}a(ge,"formatResult");function wo(e,o={}){let n=[...e].reverse().filter(d=>d.type==="agent_completed"&&K(d,"status")==="completed"||d.type==="agent_unverified"),r=n.find(d=>K(d,"name")==="synthesize")??n[0],i=r?K(r,"summary"):void 0;if(i)return pe(i,o);let l=[...e].reverse().find(d=>d.type==="agent_failed"),c=l?K(l,"summary")??K(l,"error"):void 0;return c?pe(c,o):void 0}a(wo,"formatFinalEventSummary");function Ql(e,o={}){if(!(!e.path||!Vl(e.path)))try{let n=JSON.parse(Yl(e.path,"utf8")),t=ge(n,o);if(t)return t;let r=JSON.stringify(n,null,2);return typeof r=="string"&&r.trim().length>0?pe(r,o):void 0}catch(n){return`artifact preview unavailable: ${n instanceof Error?n.message:String(n)}`}}a(Ql,"formatArtifactPreview");function ze(e,o,n={}){for(let r=e.length-1;r>=0;r-=1){let i=e[r];if(!i)continue;let l=Ql(i,n);if(l)return o==="zh"?`\u4EA7\u7269 ${i.name}:
108
+ ${Zl(o,n)}`}a(ze,"replaceWorkflowResultTruncationMarker");function Ql(e){let o=e.replace(/\s+/g," ").trim();return o.length<=ai?o:`${o.slice(0,ai).trimEnd()}...`}a(Ql,"trimWorkflowLaunchSummary");function ge(e,o={}){if(typeof e=="string"&&e.trim().length>0)return pe(e,o);if(e&&typeof e=="object"&&"synthesis"in e){let n=e.synthesis;if(typeof n=="string"&&n.trim().length>0)return pe(n,o);if(n&&typeof n=="object"&&"text"in n){let t=n.text;if(typeof t=="string"&&t.trim().length>0)return pe(t,o)}}if(e&&typeof e=="object")for(let n of["summary","report","text","result"]){let t=e[n];if(typeof t=="string"&&t.trim().length>0)return pe(t,o)}if(e!=null)try{let n=JSON.stringify(e,null,2);if(typeof n=="string"){let t=n.trim();if(t.length>0&&t!=="{}"&&t!=="[]"&&t!=='""')return pe(n,o)}}catch{}}a(ge,"formatResult");function ho(e,o={}){let n=[...e].reverse().filter(d=>d.type==="agent_completed"&&K(d,"status")==="completed"||d.type==="agent_unverified"),r=n.find(d=>K(d,"name")==="synthesize")??n[0],i=r?K(r,"summary"):void 0;if(i)return pe(i,o);let l=[...e].reverse().find(d=>d.type==="agent_failed"),c=l?K(l,"summary")??K(l,"error"):void 0;return c?pe(c,o):void 0}a(ho,"formatFinalEventSummary");function ec(e,o={}){if(!(!e.path||!Yl(e.path)))try{let n=JSON.parse(Jl(e.path,"utf8")),t=ge(n,o);if(t)return t;let r=JSON.stringify(n,null,2);return typeof r=="string"&&r.trim().length>0?pe(r,o):void 0}catch(n){return`artifact preview unavailable: ${n instanceof Error?n.message:String(n)}`}}a(ec,"formatArtifactPreview");function qe(e,o,n={}){for(let r=e.length-1;r>=0;r-=1){let i=e[r];if(!i)continue;let l=ec(i,n);if(l)return o==="zh"?`\u4EA7\u7269 ${i.name}:
109
109
  ${l}`:`Artifact ${i.name}:
110
- ${l}`}if(e.length===0)return;let t=e.map(r=>r.name).join(", ");return o==="zh"?`\u5DF2\u751F\u6210\u4EA7\u7269: ${t}`:`Artifacts created: ${t}`}a(ze,"formatArtifactResult");function lt(e){let o=e.resultText?Ge(e.resultText,e.runId,e.locale):void 0;if(e.locale==="zh"){let t=e.resultText&&e.isFallbackPreview!==!0?`Workflow \u5DF2\u5B8C\u6210\uFF08${e.totalSpawned} \u4E2A\u667A\u80FD\u4F53\uFF0Crun ${e.runId}\uFF09\u3002`:`Workflow \u8FD0\u884C\u7ED3\u675F\uFF0C\u4F46\u7ED3\u679C\u5951\u7EA6\u5931\u8D25\uFF08${e.totalSpawned} \u4E2A\u667A\u80FD\u4F53\uFF0Crun ${e.runId}\uFF09\u3002`;if(o){let r=e.isFallbackPreview===!0?"\u7ED3\u679C\u5951\u7EA6\u5F02\u5E38\uFF1Aworkflow \u8FD0\u884C\u7ED3\u675F\uFF0C\u4F46\u6CA1\u6709\u8FD4\u56DE\u5B8C\u6574\u6700\u7EC8\u7ED3\u679C\u3002\u4EE5\u4E0B\u662F\u6700\u540E\u7EFC\u5408\u8F93\u51FA\uFF1A":"\u6700\u7EC8\u7ED3\u679C\uFF1A";return`${t}
110
+ ${l}`}if(e.length===0)return;let t=e.map(r=>r.name).join(", ");return o==="zh"?`\u5DF2\u751F\u6210\u4EA7\u7269: ${t}`:`Artifacts created: ${t}`}a(qe,"formatArtifactResult");function ct(e){let o=e.resultText?ze(e.resultText,e.runId,e.locale):void 0;if(e.locale==="zh"){let t=e.resultText&&e.isFallbackPreview!==!0?`Workflow \u5DF2\u5B8C\u6210\uFF08${e.totalSpawned} \u4E2A\u667A\u80FD\u4F53\uFF0Crun ${e.runId}\uFF09\u3002`:`Workflow \u8FD0\u884C\u7ED3\u675F\uFF0C\u4F46\u7ED3\u679C\u5951\u7EA6\u5931\u8D25\uFF08${e.totalSpawned} \u4E2A\u667A\u80FD\u4F53\uFF0Crun ${e.runId}\uFF09\u3002`;if(o){let r=e.isFallbackPreview===!0?"\u7ED3\u679C\u5951\u7EA6\u5F02\u5E38\uFF1Aworkflow \u8FD0\u884C\u7ED3\u675F\uFF0C\u4F46\u6CA1\u6709\u8FD4\u56DE\u5B8C\u6574\u6700\u7EC8\u7ED3\u679C\u3002\u4EE5\u4E0B\u662F\u6700\u540E\u7EFC\u5408\u8F93\u51FA\uFF1A":"\u6700\u7EC8\u7ED3\u679C\uFF1A";return`${t}
111
111
 
112
112
  ${r}
113
113
 
@@ -117,79 +117,79 @@ ${o}`}return[t,"","\u8FD9\u6B21 workflow \u8FD0\u884C\u7ED3\u675F\uFF0C\u4F46\u7
117
117
  ${t}
118
118
 
119
119
  ${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(`
120
- `)}a(lt,"formatWorkflowCompletionAnswer");function ct(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=Zl(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(`
120
+ `)}a(ct,"formatWorkflowCompletionAnswer");function dt(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=Ql(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(`
121
121
  `)}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(`
122
- `)}a(ct,"formatWorkflowLaunchAnswer");function K(e,o){let n=e.data?.[o];return typeof n=="string"&&n.trim().length>0?n.trim():void 0}a(K,"readEventString");function dt(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"&&K(e,"status")!=="completed")return;let t=K(e,"summary")??K(e,"error");if(!t)return;let r=K(e,"summaryKind");if(r==="pending")return;let i=r==="digest"?"digest":r==="digest-failed"?"digest-failed":"excerpt",l=K(e,"name")??K(e,"taskId")??"agent";return ic(l,t,o,n,i)}a(dt,"formatWorkflowAgentDigest");function ec(e){let o=e.replace(/\s+/g," ").trim();return o.length<=ri?o:`${o.slice(0,ri).trimEnd()}...`}a(ec,"trimWorkflowAgentDigestExcerpt");function oc(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(oc,"isHighSignalWorkflowAgentDigestLine");function nc(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(nc,"isLowInformationWorkflowAgentDigestLine");function tc(e){return e.replace(/\s+/g," ").trim()}a(tc,"compactWorkflowAgentDigestLine");function rc(e,o={}){let n=e.replace(/^#{1,6}\s+/,"").replace(/^[-*]\s+/,"").replace(/^\d+[.)]\s+/,"").replace(/^`{3,}.*$/,"").replace(/^[`"'“”‘’)\]},,、。;;::.\s]+/,"").trim(),t=tc(n);if(!(t.length<12)&&!/^[-*_`#\s]+$/.test(t)&&!nc(t))return o.truncateLines===!1?t:ec(t)}a(rc,"normalizeWorkflowAgentDigestLine");function sc(e,o={}){let n=[],t=[];for(let r of e.split(/\r?\n+/)){let i=rc(r,o);if(!i)continue;let l=oc(i)?n:t;n.includes(i)||t.includes(i)||l.push(i)}return n.length>0?n.slice(0,ti):t.length>0?t.slice(0,ti):[]}a(sc,"extractWorkflowAgentDigestExcerpts");function ic(e,o,n,t,r="excerpt"){let i=r==="digest",c=sc(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(`
122
+ `)}a(dt,"formatWorkflowLaunchAnswer");function K(e,o){let n=e.data?.[o];return typeof n=="string"&&n.trim().length>0?n.trim():void 0}a(K,"readEventString");function ut(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"&&K(e,"status")!=="completed")return;let t=K(e,"summary")??K(e,"error");if(!t)return;let r=K(e,"summaryKind");if(r==="pending")return;let i=r==="digest"?"digest":r==="digest-failed"?"digest-failed":"excerpt",l=K(e,"name")??K(e,"taskId")??"agent";return ac(l,t,o,n,i)}a(ut,"formatWorkflowAgentDigest");function oc(e){let o=e.replace(/\s+/g," ").trim();return o.length<=si?o:`${o.slice(0,si).trimEnd()}...`}a(oc,"trimWorkflowAgentDigestExcerpt");function nc(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(nc,"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 rc(e){return e.replace(/\s+/g," ").trim()}a(rc,"compactWorkflowAgentDigestLine");function sc(e,o={}){let n=e.replace(/^#{1,6}\s+/,"").replace(/^[-*]\s+/,"").replace(/^\d+[.)]\s+/,"").replace(/^`{3,}.*$/,"").replace(/^[`"'“”‘’)\]},,、。;;::.\s]+/,"").trim(),t=rc(n);if(!(t.length<12)&&!/^[-*_`#\s]+$/.test(t)&&!tc(t))return o.truncateLines===!1?t:oc(t)}a(sc,"normalizeWorkflowAgentDigestLine");function ic(e,o={}){let n=[],t=[];for(let r of e.split(/\r?\n+/)){let i=sc(r,o);if(!i)continue;let l=nc(i)?n:t;n.includes(i)||t.includes(i)||l.push(i)}return n.length>0?n.slice(0,ri):t.length>0?t.slice(0,ri):[]}a(ic,"extractWorkflowAgentDigestExcerpts");function ac(e,o,n,t,r="excerpt"){let i=r==="digest",c=ic(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(`
123
123
  `):[u,...c,d].join(`
124
- `)}a(ic,"formatWorkflowAgentLongDigest");function Yo(e){return(o,n="en")=>dt(o,n,e)}a(Yo,"createWorkflowAgentDigestLimiter");import _ from"chalk";function ut(){return[`${_.bold("/workflow")} - dynamic multi-agent workflow harness`,"",`${_.bold("Subcommands:")}`,` ${_.cyan("/workflow list")} List built-in, pattern, and saved workflows. Alias: /workflow`,` ${_.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.`,` ${_.cyan("/workflow <request>")} Shorthand for create when the first word isn't a known workflow name or subcommand.`,` ${_.cyan("/workflow <name> [args]")} Run a built-in or saved workflow by name. Args may be JSON or bare text.`,` ${_.cyan("/workflow runs [--all|--limit N]")} List active and recent workflow runs for this project.`,` ${_.cyan("/workflow show [--full] [runId]")} Show the latest run; use --full for complete result artifacts.`,` ${_.cyan("/workflow pause <runId>")} Pause future child launches for an active run.`,` ${_.cyan("/workflow resume <runId>")} Resume a paused run.`,` ${_.cyan("/workflow stop [runId]")} Stop an active run through abort propagation. Defaults to the active run.`,` ${_.cyan("/workflow delete [--force] [--run|--saved] <runId|savedName>")} Delete one persisted run record or generated saved capsule; --force removes stale non-terminal run records.`,` ${_.cyan("/workflow prune --dry-run|--keep N|--older-than Nd")}`," Preview or delete old terminal run records.",` ${_.cyan("/workflow rerun <runId|savedName> [args]")} Rerun a historical generated run, or run the current saved workflow by name.`,` ${_.cyan("/workflow save <runId> <name>")} Save a generated run as a workflow capsule.`,` ${_.cyan("/workflow rename <runId|alias|savedName> <newName>")} Rename a run display name or generated saved capsule.`,` ${_.cyan("/workflow revise [--replace] <runId|alias|savedName> <change>")} Generate and save a capsule revision.`,` ${_.cyan("/workflow help")} Show this help. Also available as /help workflow.`,"",`${_.bold("Examples:")}`,` ${_.dim("/workflow create Compare three flaky-test hypotheses and verify each one")}`,` ${_.dim('/workflow parallel-investigation {"question":"\u8BF7\u68C0\u67E5\u8FD9\u4E2A\u7ADE\u6001\u5728\u54EA\u91CC","targets":["packages/agent"]}')}`,` ${_.dim('/workflow rerun run-lx3 {"request":"\u8BF7\u7528\u540C\u6837\u6D41\u7A0B\u590D\u67E5 packages/repl"}')}`,` ${_.dim('/workflow rerun generated-audit {"request":"reuse the saved workflow for packages/repl"}')}`,` ${_.dim("/workflow prune --dry-run")}`,` ${_.dim("/workflow save run-lx3 generated-audit")}`,"",`${_.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(`
125
- `)}a(ut,"renderWorkflowHelp");function Jo(){console.log(`
126
- ${ut()}
127
- `)}a(Jo,"printWorkflowHelp");var cc=new Set(["completed","failed","stopped","denied","cancelled"]);function ft(e){return e.length===0?" (no built-in workflows)":e.map(o=>` ${E.cyan(o.name)} \u2014 ${o.description}`).join(`
128
- `)}a(ft,"formatWorkflowList");var dc=6,uc=900;function fc(e){let o=e.replace(/\r\n/g,`
124
+ `)}a(ac,"formatWorkflowAgentLongDigest");function Jo(e){return(o,n="en")=>ut(o,n,e)}a(Jo,"createWorkflowAgentDigestLimiter");import _ from"chalk";function ft(){return[`${_.bold("/workflow")} - dynamic multi-agent workflow harness`,"",`${_.bold("Subcommands:")}`,` ${_.cyan("/workflow list")} List built-in, pattern, and saved workflows. Alias: /workflow`,` ${_.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.`,` ${_.cyan("/workflow <request>")} Shorthand for create when the first word isn't a known workflow name or subcommand.`,` ${_.cyan("/workflow <name> [args]")} Run a built-in or saved workflow by name. Args may be JSON or bare text.`,` ${_.cyan("/workflow runs [--all|--limit N]")} List active and recent workflow runs for this project.`,` ${_.cyan("/workflow show [--full] [runId]")} Show the latest run; use --full for complete result artifacts.`,` ${_.cyan("/workflow pause <runId>")} Pause future child launches for an active run.`,` ${_.cyan("/workflow resume <runId>")} Resume a paused run.`,` ${_.cyan("/workflow stop [runId]")} Stop an active run through abort propagation. Defaults to the active run.`,` ${_.cyan("/workflow delete [--force] [--run|--saved] <runId|savedName>")} Delete one persisted run record or generated saved capsule; --force removes stale non-terminal run records.`,` ${_.cyan("/workflow prune --dry-run|--keep N|--older-than Nd")}`," Preview or delete old terminal run records.",` ${_.cyan("/workflow rerun <runId|savedName> [args]")} Rerun a historical generated run, or run the current saved workflow by name.`,` ${_.cyan("/workflow save <runId> <name>")} Save a generated run as a workflow capsule.`,` ${_.cyan("/workflow rename <runId|alias|savedName> <newName>")} Rename a run display name or generated saved capsule.`,` ${_.cyan("/workflow revise [--replace] <runId|alias|savedName> <change>")} Generate and save a capsule revision.`,` ${_.cyan("/workflow help")} Show this help. Also available as /help workflow.`,"",`${_.bold("Examples:")}`,` ${_.dim("/workflow create Compare three flaky-test hypotheses and verify each one")}`,` ${_.dim('/workflow parallel-investigation {"question":"\u8BF7\u68C0\u67E5\u8FD9\u4E2A\u7ADE\u6001\u5728\u54EA\u91CC","targets":["packages/agent"]}')}`,` ${_.dim('/workflow rerun run-lx3 {"request":"\u8BF7\u7528\u540C\u6837\u6D41\u7A0B\u590D\u67E5 packages/repl"}')}`,` ${_.dim('/workflow rerun generated-audit {"request":"reuse the saved workflow for packages/repl"}')}`,` ${_.dim("/workflow prune --dry-run")}`,` ${_.dim("/workflow save run-lx3 generated-audit")}`,"",`${_.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(`
125
+ `)}a(ft,"renderWorkflowHelp");function Zo(){console.log(`
126
+ ${ft()}
127
+ `)}a(Zo,"printWorkflowHelp");var dc=new Set(["completed","failed","stopped","denied","cancelled"]);function mt(e){return e.length===0?" (no built-in workflows)":e.map(o=>` ${E.cyan(o.name)} \u2014 ${o.description}`).join(`
128
+ `)}a(mt,"formatWorkflowList");var uc=6,fc=900;function mc(e){let o=e.replace(/\r\n/g,`
129
129
  `).replace(/\r/g,`
130
130
  `).split(`
131
- `),n=[],t=0,r=!1;for(let l of o){if(n.length>=dc)break;let c=` ${l}`,d=uc-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(fc,"renderApprovalScriptPreview");function ie(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:",...fc(o.rawScript)]:[]]:[]].join(`
132
- `)}a(ie,"renderApprovalPrompt");function yo(e){if(!se(e))return[];let o=[];for(let n of ac(e)){let t=Q(e,n,"run.json");if(se(t))try{let r=JSON.parse(Qo(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(yo,"readWorkflowRuns");function mc(e){let o=Q(e,"events.jsonl");if(!se(o))return[];let n=Qo(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(mc,"readWorkflowEvents");function pc(e){return Array.isArray(e)?e.filter(o=>typeof o=="string"):[]}a(pc,"readStringArray");function Zo(e){return typeof e=="string"&&e.trim().length>0?e:void 0}a(Zo,"readNonEmptyString");function ai(e,o){let n=o?Zo(o.scriptSnapshotPath):Q(e,"script.js"),t=o?Zo(o.manifestSnapshotPath):Q(e,"manifest.json");return!n||!t?!1:se(n)&&se(t)}a(ai,"hasGeneratedWorkflowSnapshot");function ci(e,o){if(o)return ai(e,o);let n=Q(e,"run.json");if(!se(n))return!1;try{let t=JSON.parse(Qo(n,"utf8"));return typeof t=="object"&&t!==null?ai(e,t):!1}catch{return!1}}a(ci,"hasRerunnableGeneratedWorkflowRun");function gc(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(gc,"readWorkflowFailure");function ko(e,o){let n=Q(e,o),t=Q(n,"run.json"),r=mc(n),i=gc(r);if(!(!se(t)&&r.length===0)){if(!se(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(Qo(t,"utf8")),c=Zo(l.scriptSnapshotPath),d=Zo(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:ci(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:pc(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(ko,"readWorkflowRunDetail");function ho(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(ho,"statusIcon");function mt(e){return cc.has(e)}a(mt,"isTerminalWorkflowStatus");function di(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(di,"formatProcessListMeta");function pt(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=di(o.processSnapshots?.get(l.runId));return` ${ho(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(`
133
- `)}let r=t.map(i=>` ${ho(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(`
134
- `)}a(pt,"formatRunsList");function gt(e,o={}){return e.length===0?" (no active workflow runs)":o.processSnapshots?e.map(n=>{let t=di(o.processSnapshots?.get(n.runId));return` ${ho(n.status)} ${E.cyan(n.workflow)} ${E.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)${t?E.dim(` [${t}]`):""}`}).join(`
135
- `):e.map(n=>` ${ho(n.status)} ${E.cyan(n.workflow)} ${E.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)`).join(`
136
- `)}a(gt,"formatManagedRunsList");function qe(e){return e.status==="running"||e.status==="paused"}a(qe,"isActiveManagedWorkflowRun");function wt(e){return e.length===0?" (no workflow runs match the cleanup rule)":e.map(o=>` ${ho(o.status)} ${E.cyan(o.workflow)} ${E.dim(o.runId)} - ${o.status}`).join(`
137
- `)}a(wt,"formatWorkflowPruneCandidates");function ht(e,o){return e.filter(qe)[0]?.runId??e[0]?.runId??o[0]?.runId}a(ht,"selectDefaultWorkflowRunId");function yt(e){return e.find(qe)?.runId}a(yt,"selectDefaultActiveWorkflowRunId");function li(e){if(e!==void 0)return typeof e=="number"?new Date(e).toLocaleString():e}a(li,"formatTime");function wc(e,o=10){let n=e.map(tn).filter(t=>t!==void 0);return n.slice(Math.max(0,n.length-o))}a(wc,"formatRecentWorkflowEvents");function kt(e,o){return o?.canRerun??(e?.runDir?ci(e.runDir):!1)}a(kt,"canRerunWorkflowRun");function hc(e){return e?e.artifacts.map(o=>({name:o,path:Q(e.runDir,"artifacts",`${Rr(o)}.json`)})):[]}a(hc,"workflowArtifactRefs");function vt(e,o){return o?`/workflow show ${e} | /workflow rerun ${e}`:`/workflow show ${e}`}a(vt,"formatWorkflowNextActions");function ui(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(ui,"formatWorkflowFailureAction");function St(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=li(e?.startedAt??o?.startedAt??t?.startedAt),m=t&&t.status!=="running"&&t.status!=="paused"?t.updatedAt:void 0,h=li(e?.endedAt??o?.endedAt??m),k=t?.error??e?.error??o?.error,y=o?.artifacts??t?.artifacts?.map(ce=>ce.name)??[],v=hc(o),p=e?.resultText,R=n.full===!0||p===void 0?ze(v,Ae(r),{full:n.full===!0}):void 0,I=n.full===!0?R??p??t?.resultSummary:p!==void 0?ge(p):t?.resultSummary!==void 0?ge(t.resultSummary):R,P=I?Ge(I,i,Ae(I)):void 0,X=n.full===!0||!I||!at(I)?"result:":"result preview:",V=o?wc(o.events):[],Qe=kt(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}`]:[],...h?[` ended: ${h}`]:[],...u?[` run dir: ${u}`]:[],...y.length>0?[` artifacts: ${y.join(", ")}`]:[],...k?[` error: ${k}`]:[],...P?["",` ${X}`,...P.split(`
138
- `).map(ce=>` ${ce}`)]:[],...V.length>0?[""," recent events:",...V.map(ce=>` ${ce.trimEnd()}`)]:[],"",` next: ${vt(i,Qe)}`].join(`
139
- `)}a(St,"formatWorkflowRunSnapshot");function $t(e){return{project:Q(e,".kodax","workflows"),personal:H("workflows")}}a($t,"savedWorkflowDirs");async function fi(e,o){return new Set((await We(e)).map(t=>t.name)).has(o)?`${o}-revision-${Date.now().toString(36)}`:o}a(fi,"nextRevisionWorkflowName");function mi(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:Or}}a(mi,"buildWorkflowRevisionProvenance");function bt(e){return e.length===0?" (no saved workflows)":e.map(o=>` ${E.cyan(o.name)} ${E.dim(`(${o.source}, ${o.execution}: ${o.path})`)}`).join(`
140
- `)}a(bt,"formatSavedList");function pi(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(pi,"isSafeWorkflowRunId");function Re(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(Re,"resolveConfirm");function yc(e){console.log(E.red(`
131
+ `),n=[],t=0,r=!1;for(let l of o){if(n.length>=uc)break;let c=` ${l}`,d=fc-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(mc,"renderApprovalScriptPreview");function ie(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:",...mc(o.rawScript)]:[]]:[]].join(`
132
+ `)}a(ie,"renderApprovalPrompt");function ko(e){if(!se(e))return[];let o=[];for(let n of lc(e)){let t=Q(e,n,"run.json");if(se(t))try{let r=JSON.parse(en(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(ko,"readWorkflowRuns");function pc(e){let o=Q(e,"events.jsonl");if(!se(o))return[];let n=en(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(pc,"readWorkflowEvents");function gc(e){return Array.isArray(e)?e.filter(o=>typeof o=="string"):[]}a(gc,"readStringArray");function Qo(e){return typeof e=="string"&&e.trim().length>0?e:void 0}a(Qo,"readNonEmptyString");function li(e,o){let n=o?Qo(o.scriptSnapshotPath):Q(e,"script.js"),t=o?Qo(o.manifestSnapshotPath):Q(e,"manifest.json");return!n||!t?!1:se(n)&&se(t)}a(li,"hasGeneratedWorkflowSnapshot");function di(e,o){if(o)return li(e,o);let n=Q(e,"run.json");if(!se(n))return!1;try{let t=JSON.parse(en(n,"utf8"));return typeof t=="object"&&t!==null?li(e,t):!1}catch{return!1}}a(di,"hasRerunnableGeneratedWorkflowRun");function wc(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(wc,"readWorkflowFailure");function vo(e,o){let n=Q(e,o),t=Q(n,"run.json"),r=pc(n),i=wc(r);if(!(!se(t)&&r.length===0)){if(!se(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(en(t,"utf8")),c=Qo(l.scriptSnapshotPath),d=Qo(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:di(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:gc(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(vo,"readWorkflowRunDetail");function yo(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(yo,"statusIcon");function pt(e){return dc.has(e)}a(pt,"isTerminalWorkflowStatus");function ui(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(ui,"formatProcessListMeta");function gt(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=ui(o.processSnapshots?.get(l.runId));return` ${yo(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(`
133
+ `)}let r=t.map(i=>` ${yo(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(`
134
+ `)}a(gt,"formatRunsList");function wt(e,o={}){return e.length===0?" (no active workflow runs)":o.processSnapshots?e.map(n=>{let t=ui(o.processSnapshots?.get(n.runId));return` ${yo(n.status)} ${E.cyan(n.workflow)} ${E.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)${t?E.dim(` [${t}]`):""}`}).join(`
135
+ `):e.map(n=>` ${yo(n.status)} ${E.cyan(n.workflow)} ${E.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)`).join(`
136
+ `)}a(wt,"formatManagedRunsList");function Ke(e){return e.status==="running"||e.status==="paused"}a(Ke,"isActiveManagedWorkflowRun");function ht(e){return e.length===0?" (no workflow runs match the cleanup rule)":e.map(o=>` ${yo(o.status)} ${E.cyan(o.workflow)} ${E.dim(o.runId)} - ${o.status}`).join(`
137
+ `)}a(ht,"formatWorkflowPruneCandidates");function yt(e,o){return e.filter(Ke)[0]?.runId??e[0]?.runId??o[0]?.runId}a(yt,"selectDefaultWorkflowRunId");function kt(e){return e.find(Ke)?.runId}a(kt,"selectDefaultActiveWorkflowRunId");function ci(e){if(e!==void 0)return typeof e=="number"?new Date(e).toLocaleString():e}a(ci,"formatTime");function hc(e,o=10){let n=e.map(rn).filter(t=>t!==void 0);return n.slice(Math.max(0,n.length-o))}a(hc,"formatRecentWorkflowEvents");function vt(e,o){return o?.canRerun??(e?.runDir?di(e.runDir):!1)}a(vt,"canRerunWorkflowRun");function yc(e){return e?e.artifacts.map(o=>({name:o,path:Q(e.runDir,"artifacts",`${Er(o)}.json`)})):[]}a(yc,"workflowArtifactRefs");function St(e,o){return o?`/workflow show ${e} | /workflow rerun ${e}`:`/workflow show ${e}`}a(St,"formatWorkflowNextActions");function fi(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(fi,"formatWorkflowFailureAction");function $t(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=ci(e?.startedAt??o?.startedAt??t?.startedAt),m=t&&t.status!=="running"&&t.status!=="paused"?t.updatedAt:void 0,h=ci(e?.endedAt??o?.endedAt??m),k=t?.error??e?.error??o?.error,y=o?.artifacts??t?.artifacts?.map(ce=>ce.name)??[],v=yc(o),p=e?.resultText,R=n.full===!0||p===void 0?qe(v,Ae(r),{full:n.full===!0}):void 0,I=n.full===!0?R??p??t?.resultSummary:p!==void 0?ge(p):t?.resultSummary!==void 0?ge(t.resultSummary):R,M=I?ze(I,i,Ae(I)):void 0,X=n.full===!0||!I||!lt(I)?"result:":"result preview:",V=o?hc(o.events):[],eo=vt(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}`]:[],...h?[` ended: ${h}`]:[],...u?[` run dir: ${u}`]:[],...y.length>0?[` artifacts: ${y.join(", ")}`]:[],...k?[` error: ${k}`]:[],...M?["",` ${X}`,...M.split(`
138
+ `).map(ce=>` ${ce}`)]:[],...V.length>0?[""," recent events:",...V.map(ce=>` ${ce.trimEnd()}`)]:[],"",` next: ${St(i,eo)}`].join(`
139
+ `)}a($t,"formatWorkflowRunSnapshot");function bt(e){return{project:Q(e,".kodax","workflows"),personal:H("workflows")}}a(bt,"savedWorkflowDirs");async function mi(e,o){return new Set((await Ne(e)).map(t=>t.name)).has(o)?`${o}-revision-${Date.now().toString(36)}`:o}a(mi,"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:Dr}}a(pi,"buildWorkflowRevisionProvenance");function xt(e){return e.length===0?" (no saved workflows)":e.map(o=>` ${E.cyan(o.name)} ${E.dim(`(${o.source}, ${o.execution}: ${o.path})`)}`).join(`
140
+ `)}a(xt,"formatSavedList");function gi(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(gi,"isSafeWorkflowRunId");function Re(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(Re,"resolveConfirm");function kc(e){console.log(E.red(`
141
141
  [workflow] invalid run id: ${e||"<empty>"}
142
- `))}a(yc,"printInvalidRunId");function we(e){return pi(e)?!0:(yc(e),!1)}a(we,"ensureSafeRunId");function en(){let e=kc(process.cwd());return{isGitRepo:e,worktreeCapable:e}}a(en,"currentWorkflowPreflightEnv");function kc(e){let o=e;for(;;){if(se(Q(o,".git")))return!0;let n=lc(o);if(n===o)return!1;o=n}}a(kc,"hasGitMarker");function on(e){console.log(E.red(`
143
- [workflow] capsule preflight failed:`));for(let o of e.issues)console.log(E.red(` - ${o.requirement}: ${o.message}`));console.log()}a(on,"printPreflightFailure");function nn(e){let o=e.issues.filter(n=>n.severity==="warning");if(o.length!==0){console.log(E.yellow(`
144
- [workflow] capsule preflight warnings:`));for(let n of o)console.log(E.yellow(` - ${n.requirement}: ${n.message}`));console.log()}}a(nn,"printPreflightWarnings");async function gi(e,o){if(e.execution==="trusted-local"&&!await o(`Run local workflow file? This EXECUTES local code:
142
+ `))}a(kc,"printInvalidRunId");function we(e){return gi(e)?!0:(kc(e),!1)}a(we,"ensureSafeRunId");function on(){let e=vc(process.cwd());return{isGitRepo:e,worktreeCapable:e}}a(on,"currentWorkflowPreflightEnv");function vc(e){let o=e;for(;;){if(se(Q(o,".git")))return!0;let n=cc(o);if(n===o)return!1;o=n}}a(vc,"hasGitMarker");function nn(e){console.log(E.red(`
143
+ [workflow] capsule preflight failed:`));for(let o of e.issues)console.log(E.red(` - ${o.requirement}: ${o.message}`));console.log()}a(nn,"printPreflightFailure");function tn(e){let o=e.issues.filter(n=>n.severity==="warning");if(o.length!==0){console.log(E.yellow(`
144
+ [workflow] capsule preflight warnings:`));for(let n of o)console.log(E.yellow(` - ${n.requirement}: ${n.message}`));console.log()}}a(tn,"printPreflightWarnings");async function wi(e,o){if(e.execution==="trusted-local"&&!await o(`Run local workflow file? This EXECUTES local code:
145
145
  ${e.path}`)){console.log(E.dim(`Workflow cancelled.
146
- `));return}try{let n={source:`saved:${e.source}`,sandbox:e.execution,mayUseWorktree:!1},t,r;if(e.execution==="capability-generated"){let l=await no(e.path),c=to(l,en());if(!c.ok){on(c);return}nn(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 Po(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(`
146
+ `));return}try{let n={source:`saved:${e.source}`,sandbox:e.execution,mayUseWorktree:!1},t,r;if(e.execution==="capability-generated"){let l=await to(e.path),c=ro(l,on());if(!c.ok){nn(c);return}tn(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 Lo(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(`
147
147
  [workflow] failed to load ${e.path}: ${t}
148
- `));return}}a(gi,"prepareSavedWorkflow");function xt(e){let o=e.data?.status;return typeof o=="string"?o:void 0}a(xt,"workflowEventStatus");function tn(e){let o=e.data?.name??e.data?.taskId??"",n=xt(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(tn,"formatWorkflowEvent");function wi(e){let o=tn(e);o&&console.log(E.dim(o))}a(wi,"renderWorkflowEvent");import sn from"chalk";import vc from"string-width";var Sc=9;function $c(e,o=Sc){let n=vc(e);return n>=o?e:`${e}${" ".repeat(o-n)}`}a($c,"padWorkflowLiveSymbol");function ki(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(ki,"workflowLiveSnapshotFromProcess");function fp(e){return!e.shouldRender||e.rows.length===0?[]:e.rows.map(o=>`${$c(o.symbol)}${o.text}`)}a(fp,"formatWorkflowLiveViewModelForTranscript");var bc=6,hi={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")}},xc={shouldRender:!1,workflow:"",runId:"",activeCount:0,totalSpawned:0,completedAgents:0,failedAgents:0,stoppedAgents:0,rows:[]};function Ac(e){return e.length>14?`${e.slice(0,14)}...`:e}a(Ac,"shortRunId");function rn(e){return e==="zh"?hi.zh:hi.en}a(rn,"workflowLiveLabels");function Rc(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(Rc,"formatElapsedMs");function yi(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(yi,"formatTokenCount");function Ec(e){if(e.tokenBudgetSpent===void 0)return;let o=rn(e.locale),n=yi(e.tokenBudgetSpent);if(e.tokenBudgetTotal!==void 0&&Number.isFinite(e.tokenBudgetTotal)){let t=yi(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(Ec,"formatWorkflowTokenUsage");function Tc(e,o){let n=[],t=e.startedAt===void 0?e.elapsedMs:o-e.startedAt;t!==void 0&&n.push(Rc(t,e.locale));let r=Ec(e);return r!==void 0&&n.push(r),n}a(Tc,"formatWorkflowHeaderMetrics");function Cc(e){let o=rn(e.locale),n=e.completedAgents+e.failedAgents+e.stoppedAgents;if(e.totalSpawned===0&&n===0)return;let t=vi(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(Cc,"formatWorkflowProgress");function Ic(e){let o=rn(e.locale);if(e.totalSpawned===0)return o.waiting;let n=e.activeAgents.length,t=vi(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(Ic,"formatWorkflowCounter");function vi(e,o){let n=o??e.completedAgents+e.failedAgents+e.stoppedAgents;return Math.max(e.plannedAgents??0,e.totalSpawned,n)}a(vi,"workflowProgressDenominator");function _c(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(_c,"formatWorkflowPhase");function mp(e,o=Date.now()){if(!e||e.status!=="running")return xc;let n=[],t=rn(e.locale),r=Tc(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} (${Ac(e.runId)}) - ${t.activeAgents(e.activeAgents.length)}${i}`,isActive:!0});let l=_c(e);l&&n.push({kind:"phase",id:"phase",symbol:t.phase,symbolColor:"cyan",text:l,isActive:!0});let c=Cc(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,bc);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:Ic(e),rows:d}}a(mp,"buildWorkflowLiveViewModel");function Mc(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(Mc,"isWorkflowHarnessFailure");function At(e){let o=ui(e.runId,e.canRerun),n=e.partialResultText?Ge(e.partialResultText,e.runId,e.locale??"en"):void 0,t=n?["","Partial results before failure:",n]:[];return Mc(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(`
148
+ `));return}}a(wi,"prepareSavedWorkflow");function At(e){let o=e.data?.status;return typeof o=="string"?o:void 0}a(At,"workflowEventStatus");function rn(e){let o=e.data?.name??e.data?.taskId??"",n=At(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(rn,"formatWorkflowEvent");function hi(e){let o=rn(e);o&&console.log(E.dim(o))}a(hi,"renderWorkflowEvent");import an from"chalk";import Sc from"string-width";var $c=9;function bc(e,o=$c){let n=Sc(e);return n>=o?e:`${e}${" ".repeat(o-n)}`}a(bc,"padWorkflowLiveSymbol");function vi(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(vi,"workflowLiveSnapshotFromProcess");function mp(e){return!e.shouldRender||e.rows.length===0?[]:e.rows.map(o=>`${bc(o.symbol)}${o.text}`)}a(mp,"formatWorkflowLiveViewModelForTranscript");var xc=6,yi={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")}},Ac={shouldRender:!1,workflow:"",runId:"",activeCount:0,totalSpawned:0,completedAgents:0,failedAgents:0,stoppedAgents:0,rows:[]};function Rc(e){return e.length>14?`${e.slice(0,14)}...`:e}a(Rc,"shortRunId");function sn(e){return e==="zh"?yi.zh:yi.en}a(sn,"workflowLiveLabels");function Ec(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(Ec,"formatElapsedMs");function ki(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(ki,"formatTokenCount");function Tc(e){if(e.tokenBudgetSpent===void 0)return;let o=sn(e.locale),n=ki(e.tokenBudgetSpent);if(e.tokenBudgetTotal!==void 0&&Number.isFinite(e.tokenBudgetTotal)){let t=ki(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(Tc,"formatWorkflowTokenUsage");function Cc(e,o){let n=[],t=e.startedAt===void 0?e.elapsedMs:o-e.startedAt;t!==void 0&&n.push(Ec(t,e.locale));let r=Tc(e);return r!==void 0&&n.push(r),n}a(Cc,"formatWorkflowHeaderMetrics");function Ic(e){let o=sn(e.locale),n=e.completedAgents+e.failedAgents+e.stoppedAgents;if(e.totalSpawned===0&&n===0)return;let t=Si(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(Ic,"formatWorkflowProgress");function _c(e){let o=sn(e.locale);if(e.totalSpawned===0)return o.waiting;let n=e.activeAgents.length,t=Si(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(_c,"formatWorkflowCounter");function Si(e,o){let n=o??e.completedAgents+e.failedAgents+e.stoppedAgents;return Math.max(e.plannedAgents??0,e.totalSpawned,n)}a(Si,"workflowProgressDenominator");function Pc(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(Pc,"formatWorkflowPhase");function pp(e,o=Date.now()){if(!e||e.status!=="running")return Ac;let n=[],t=sn(e.locale),r=Cc(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} (${Rc(e.runId)}) - ${t.activeAgents(e.activeAgents.length)}${i}`,isActive:!0});let l=Pc(e);l&&n.push({kind:"phase",id:"phase",symbol:t.phase,symbolColor:"cyan",text:l,isActive:!0});let c=Ic(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,xc);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:_c(e),rows:d}}a(pp,"buildWorkflowLiveViewModel");function Mc(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(Mc,"isWorkflowHarnessFailure");function Rt(e){let o=fi(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 Mc(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(`
149
149
  `):[`Workflow failed (${e.runId}): ${e.error.message}`,...t,o].join(`
150
- `)}a(At,"formatWorkflowFailedMessage");function Pc(e,o,n){return ze(e.artifacts,o,n)??wo(e.events,n)}a(Pc,"formatWorkflowFailurePartialResult");function an(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(an,"readWorkflowEventUsageTokens");function D(e,o){if(e.onWorkflowRunMessage){e.onWorkflowRunMessage(o);return}if(o.type==="error"){console.log(sn.red(`
150
+ `)}a(Rt,"formatWorkflowFailedMessage");function Lc(e,o,n){return qe(e.artifacts,o,n)??ho(e.events,n)}a(Lc,"formatWorkflowFailurePartialResult");function ln(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(ln,"readWorkflowEventUsageTokens");function D(e,o){if(e.onWorkflowRunMessage){e.onWorkflowRunMessage(o);return}if(o.type==="error"){console.log(an.red(`
151
151
  ${o.text}
152
- `));return}if(o.type==="success"){console.log(sn.green(`
152
+ `));return}if(o.type==="success"){console.log(an.green(`
153
153
  ${o.text}
154
- `));return}if(o.type==="event"){console.log(sn.dim(o.text));return}if(o.type==="assistant"){console.log(`
154
+ `));return}if(o.type==="event"){console.log(an.dim(o.text));return}if(o.type==="assistant"){console.log(`
155
155
  ${o.text}
156
- `);return}console.log(sn.dim(`
156
+ `);return}console.log(an.dim(`
157
157
  ${o.text}
158
- `))}a(D,"emitWorkflowRunMessage");function Ke(e,o,n={}){let t=n.presentation==="agentic"?Yo(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=tn(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&&wi(i)}}a(Ke,"workflowEventSink");function Xe(e,o,n){return e.subscribeWorkflowProcess(t=>{t.snapshot.runId===n&&o.onProcessEvent(t)})}a(Xe,"subscribeWorkflowLiveProcess");function Ee(e,o,n,t="en"){let r=Date.now(),i=new Map,l,c=0,d=0,u=0,f=0,m=0,h=!1,k=n.phases??[],y=n.tokenBudget!==void 0&&Number.isFinite(n.tokenBudget)?n.tokenBudget:void 0,v=a((p,R)=>{let I=l===void 0?-1:k.indexOf(l),P=I>=0?I+1:void 0,X=k.length>0?k.length:void 0;e.onWorkflowRunUpdate?.({runId:o,workflow:n.name,status:p,...l!==void 0?{phase:l}:{},...P!==void 0?{phaseIndex:P}:{},...X!==void 0?{phaseTotal:X}:{},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,...y!==void 0?{tokenBudgetTotal:y}:{},completedAgents:d,failedAgents:u,stoppedAgents:f,...R!==void 0?{message:R}:{},locale:t})},"emit");return{running:a(p=>{h||v("running",p)},"running"),onProcessEvent:a(p=>{if(h&&p.type!=="workflow_finished")return;let R=p.snapshot.status;(p.type==="workflow_finished"||R==="completed"||R==="failed"||R==="cancelled")&&(h=!0);let I=p.type==="workflow_updated"?p.message:void 0;e.onWorkflowRunUpdate?.(ki(p.snapshot,I===void 0?{locale:t}:{locale:t,message:I}))},"onProcessEvent"),onEvent:a(p=>{if(!h)switch(p.type){case"phase_started":{let R=p.data?.name;l=typeof R=="string"?R:l,v("running");break}case"agent_spawned":{let R=typeof p.data?.taskId=="string"?p.data.taskId:`task-${c+1}`,I=typeof p.data?.name=="string"?p.data.name:R;i.set(R,I),c+=1,v("running");break}case"agent_completed":{let R=typeof p.data?.taskId=="string"?p.data.taskId:void 0;R&&i.delete(R),m+=an(p.data),xt(p)==="failed"?u+=1:d+=1,v("running");break}case"agent_unverified":{let R=typeof p.data?.taskId=="string"?p.data.taskId:void 0;R&&i.delete(R),m+=an(p.data),d+=1,v("running");break}case"agent_failed":{let R=typeof p.data?.taskId=="string"?p.data.taskId:void 0;R&&i.delete(R),m+=an(p.data),u+=1,v("running");break}case"agent_stopped":{let R=typeof p.data?.taskId=="string"?p.data.taskId:void 0;R&&i.delete(R),m+=an(p.data),f+=1,v("running");break}case"synthesis_completed":{v("running","synthesis complete");break}default:break}},"onEvent"),complete:a((p,R)=>{h||(h=!0,v(p,R))},"complete")}}a(Ee,"createWorkflowLiveUpdateEmitter");function Te(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=Pc(i.state,l,c),u=At({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?At({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=ge(i.result,c)??ze(i.state.artifacts,l,c),u=d===void 0?wo(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:lt({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(`
158
+ `))}a(D,"emitWorkflowRunMessage");function Xe(e,o,n={}){let t=n.presentation==="agentic"?Jo(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=rn(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&&hi(i)}}a(Xe,"workflowEventSink");function Ve(e,o,n){return e.subscribeWorkflowProcess(t=>{t.snapshot.runId===n&&o.onProcessEvent(t)})}a(Ve,"subscribeWorkflowLiveProcess");function Ee(e,o,n,t="en"){let r=Date.now(),i=new Map,l,c=0,d=0,u=0,f=0,m=0,h=!1,k=n.phases??[],y=n.tokenBudget!==void 0&&Number.isFinite(n.tokenBudget)?n.tokenBudget:void 0,v=a((p,R)=>{let I=l===void 0?-1:k.indexOf(l),M=I>=0?I+1:void 0,X=k.length>0?k.length:void 0;e.onWorkflowRunUpdate?.({runId:o,workflow:n.name,status:p,...l!==void 0?{phase:l}:{},...M!==void 0?{phaseIndex:M}:{},...X!==void 0?{phaseTotal:X}:{},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,...y!==void 0?{tokenBudgetTotal:y}:{},completedAgents:d,failedAgents:u,stoppedAgents:f,...R!==void 0?{message:R}:{},locale:t})},"emit");return{running:a(p=>{h||v("running",p)},"running"),onProcessEvent:a(p=>{if(h&&p.type!=="workflow_finished")return;let R=p.snapshot.status;(p.type==="workflow_finished"||R==="completed"||R==="failed"||R==="cancelled")&&(h=!0);let I=p.type==="workflow_updated"?p.message:void 0;e.onWorkflowRunUpdate?.(vi(p.snapshot,I===void 0?{locale:t}:{locale:t,message:I}))},"onProcessEvent"),onEvent:a(p=>{if(!h)switch(p.type){case"phase_started":{let R=p.data?.name;l=typeof R=="string"?R:l,v("running");break}case"agent_spawned":{let R=typeof p.data?.taskId=="string"?p.data.taskId:`task-${c+1}`,I=typeof p.data?.name=="string"?p.data.name:R;i.set(R,I),c+=1,v("running");break}case"agent_completed":{let R=typeof p.data?.taskId=="string"?p.data.taskId:void 0;R&&i.delete(R),m+=ln(p.data),At(p)==="failed"?u+=1:d+=1,v("running");break}case"agent_unverified":{let R=typeof p.data?.taskId=="string"?p.data.taskId:void 0;R&&i.delete(R),m+=ln(p.data),d+=1,v("running");break}case"agent_failed":{let R=typeof p.data?.taskId=="string"?p.data.taskId:void 0;R&&i.delete(R),m+=ln(p.data),u+=1,v("running");break}case"agent_stopped":{let R=typeof p.data?.taskId=="string"?p.data.taskId:void 0;R&&i.delete(R),m+=ln(p.data),f+=1,v("running");break}case"synthesis_completed":{v("running","synthesis complete");break}default:break}},"onEvent"),complete:a((p,R)=>{h||(h=!0,v(p,R))},"complete")}}a(Ee,"createWorkflowLiveUpdateEmitter");function Te(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=Lc(i.state,l,c),u=Rt({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?Rt({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=ge(i.result,c)??qe(i.state.artifacts,l,c),u=d===void 0?ho(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:ct({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(`
159
159
  `)}),f&&D(o,{type:"info",text:`Workflow result:
160
- ${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:At({runId:n,error:i instanceof Error?i:new Error(l),canRerun:r.canRerun===!0})})})}a(Te,"observeManagedWorkflowDone");function he(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(ln.dim(`
160
+ ${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:Rt({runId:n,error:i instanceof Error?i:new Error(l),canRerun:r.canRerun===!0})})})}a(Te,"observeManagedWorkflowDone");function Ce(e,o){e.done.finally(()=>{try{o()}catch{}}).catch(()=>{})}a(Ce,"unsubscribeWorkflowLiveProcessOnDone");function he(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(cn.dim(`
161
161
  [workflow] ${o.message}
162
- `))}a(he,"emitWorkflowBuilderEvent");function vo(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(vo,"buildWorkflowProcessMetadata");async function Wc(e){let o=e.approval==="required"?Re(e.callbacks):void 0;if(e.approval==="required"&&!o)return console.log(ln.red(`
162
+ `))}a(he,"emitWorkflowBuilderEvent");function So(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(So,"buildWorkflowProcessMetadata");async function Nc(e){let o=e.approval==="required"?Re(e.callbacks):void 0;if(e.approval==="required"&&!o)return console.log(cn.red(`
163
163
  [workflow] refusing to generate a workflow without an interactive approval channel.
164
- `)),"failed";let n=e.callbacks.createKodaXOptions;if(!n)return console.log(ln.red(`
164
+ `)),"failed";let n=e.callbacks.createKodaXOptions;if(!n)return console.log(cn.red(`
165
165
  [workflow] cannot generate - REPL options unavailable in this context.
166
- `)),"failed";let t=Ae(e.request),r,i;try{he(e,{stage:"started",message:"Workflow builder started"}),he(e,{stage:"generating",message:"Workflow - generating harness"}),r=n(),i=await(e.generateWorkflow??_o)({request:e.request,options:r}),he(e,{stage:"validating",message:"Workflow - validating harness"})}catch(p){let R=p instanceof Error?p.message:String(p);return he(e,{stage:"failed",message:R}),"failed"}if(i.kind==="declined")return he(e,{stage:"declined",message:i.reason}),console.log(ln.dim(`
166
+ `)),"failed";let t=Ae(e.request),r,i;try{he(e,{stage:"started",message:"Workflow builder started"}),he(e,{stage:"generating",message:"Workflow - generating harness"}),r=n(),i=await(e.generateWorkflow??Po)({request:e.request,options:r}),he(e,{stage:"validating",message:"Workflow - validating harness"})}catch(p){let R=p instanceof Error?p.message:String(p);return he(e,{stage:"failed",message:R}),"failed"}if(i.kind==="declined")return he(e,{stage:"declined",message:i.reason}),console.log(cn.dim(`
167
167
  Workflow not created: ${i.reason}
168
- `)),"declined";he(e,{stage:"ready",message:"Workflow - harness ready"});let l=e.presentation??"command",c=ke(i.module);l!=="agentic"&&D(e.callbacks,{type:"info",text:`Generated workflow: ${i.approvalSummary}`});let d=xe(process.cwd()).key,u=e.runBaseDir??H("workflow-runs",d),f=e.runManager??Ne(),m=`run-${Date.now().toString(36)}`,h=Lc(u,m);if(o){if(!await o(ie(c,{source:e.sourceLabel??"generated",sandbox:"capability-generated",mayUseWorktree:i.manifest.mayUseWorktree===!0,rawScript:i.scriptSnapshot.source})))return he(e,{stage:"cancelled",message:"Workflow cancelled"}),D(e.callbacks,{type:"info",text:"Workflow cancelled."}),"cancelled"}else l!=="agentic"&&(D(e.callbacks,{type:"info",text:ie(c,{source:e.sourceLabel??"generated",sandbox:"capability-generated",mayUseWorktree:i.manifest.mayUseWorktree===!0})}),D(e.callbacks,{type:"info",text:"Auto-started generated workflow (capability-isolated); normal permission gates still apply."}));l==="agentic"?D(e.callbacks,{type:"assistant",text:ct({runId:m,summary:c,approvalSummary:i.approvalSummary,locale:t}),final:!1}):D(e.callbacks,{type:"info",text:`Started workflow ${i.module.meta.name} (${m}). Use /workflow show ${m} for status.`});let k=Ee(e.callbacks,m,i.module.meta,t);k.running(`Use /workflow show ${m} for status or /workflow stop ${m} to stop.`);let y=Xe(f,k,m),v=f.startFromOptions({module:i.module,args:{request:e.request},options:r,runId:m,runDir:h,scriptSnapshot:i.scriptSnapshot,processMetadata:vo({source:e.processSource??"command",displayName:i.module.meta.name,goal:e.request}),onEvent:Ke(e.callbacks,void 0,{presentation:e.presentation??"command",locale:t,runId:m})});return v.done.finally(y),he(e,{stage:"launched",message:`Workflow ${i.module.meta.name} started`}),Te(v,e.callbacks,m,k,{canRerun:!0,presentation:l,locale:t}),"started"}a(Wc,"startGeneratedWorkflowFromRequest");function Rt(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(Rt,"parseWorkflowInvocation");function So(e){let o=e.trim();if(!o)return{};if(o.startsWith("{"))try{return JSON.parse(o)}catch{return{question:o}}return{question:o}}a(So,"parseWorkflowArgs");function Et(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(`
169
- `)}a(Et,"buildWorkflowRevisionRequest");function Si(e){if(!e)return;let o=Number(e);return Number.isInteger(o)&&o>=0?o:void 0}a(Si,"parseNonNegativeInteger");function Tt(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=Si(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(Tt,"parseWorkflowRunsOptions");function Nc(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(Nc,"parseOlderThanMs");function Ct(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=Si(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=Nc(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(Ct,"parseWorkflowPruneOptions");var Oc=1440*60*1e3;function Dc(e){return new Map(e.map(o=>[o.runId,o]))}a(Dc,"processSnapshotsByRunId");function Uc(e){return{dryRun:e.dryRun,...e.keep!==void 0?{keep:e.keep}:{},...e.olderThanMs!==void 0?{olderThanDays:e.olderThanMs/Oc}:{}}}a(Uc,"workflowPruneRetentionOptions");function jc(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(jc,"workflowPruneCandidateSummaries");function bi(e){return vo({source:"capsule",displayName:e.displayName,savedWorkflowName:e.savedWorkflowName,sourceRunId:e.provenance?.fromRunId,sourceWorkflowName:e.provenance?.fromWorkflowName??e.savedWorkflowName,revisionOf:e.provenance?.revisionOf})}a(bi,"buildSavedWorkflowProcessMetadata");var xi={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:Jo,handler:a(async(e,o,n,t)=>{if((e[0]??"").toLowerCase()==="pending"){await Be(Xo(o),"workflow");return}let r=Rt(e);if(t.agentMode==="sa"&&(r.kind==="create"||r.kind==="rerun"||r.kind==="start")){console.log(g.yellow(`
168
+ `)),"declined";he(e,{stage:"ready",message:"Workflow - harness ready"});let l=e.presentation??"command",c=ke(i.module);l!=="agentic"&&D(e.callbacks,{type:"info",text:`Generated workflow: ${i.approvalSummary}`});let d=xe(process.cwd()).key,u=e.runBaseDir??H("workflow-runs",d),f=e.runManager??Oe(),m=`run-${Date.now().toString(36)}`,h=Wc(u,m);if(o){if(!await o(ie(c,{source:e.sourceLabel??"generated",sandbox:"capability-generated",mayUseWorktree:i.manifest.mayUseWorktree===!0,rawScript:i.scriptSnapshot.source})))return he(e,{stage:"cancelled",message:"Workflow cancelled"}),D(e.callbacks,{type:"info",text:"Workflow cancelled."}),"cancelled"}else l!=="agentic"&&(D(e.callbacks,{type:"info",text:ie(c,{source:e.sourceLabel??"generated",sandbox:"capability-generated",mayUseWorktree:i.manifest.mayUseWorktree===!0})}),D(e.callbacks,{type:"info",text:"Auto-started generated workflow (capability-isolated); normal permission gates still apply."}));l==="agentic"?D(e.callbacks,{type:"assistant",text:dt({runId:m,summary:c,approvalSummary:i.approvalSummary,locale:t}),final:!1}):D(e.callbacks,{type:"info",text:`Started workflow ${i.module.meta.name} (${m}). Use /workflow show ${m} for status.`});let k=Ee(e.callbacks,m,i.module.meta,t);k.running(`Use /workflow show ${m} for status or /workflow stop ${m} to stop.`);let y=Ve(f,k,m),v=f.startFromOptions({module:i.module,args:{request:e.request},options:r,runId:m,runDir:h,scriptSnapshot:i.scriptSnapshot,processMetadata:So({source:e.processSource??"command",displayName:i.module.meta.name,goal:e.request}),onEvent:Xe(e.callbacks,void 0,{presentation:e.presentation??"command",locale:t,runId:m})});return Ce(v,y),he(e,{stage:"launched",message:`Workflow ${i.module.meta.name} started`}),Te(v,e.callbacks,m,k,{canRerun:!0,presentation:l,locale:t}),"started"}a(Nc,"startGeneratedWorkflowFromRequest");function Et(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(Et,"parseWorkflowInvocation");function $o(e){let o=e.trim();if(!o)return{};if(o.startsWith("{"))try{return JSON.parse(o)}catch{return{question:o}}return{question:o}}a($o,"parseWorkflowArgs");function Tt(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(`
169
+ `)}a(Tt,"buildWorkflowRevisionRequest");function $i(e){if(!e)return;let o=Number(e);return Number.isInteger(o)&&o>=0?o:void 0}a($i,"parseNonNegativeInteger");function Ct(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=$i(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(Ct,"parseWorkflowRunsOptions");function Oc(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(Oc,"parseOlderThanMs");function It(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=$i(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=Oc(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(It,"parseWorkflowPruneOptions");var Dc=1440*60*1e3;function Uc(e){return new Map(e.map(o=>[o.runId,o]))}a(Uc,"processSnapshotsByRunId");function jc(e){return{dryRun:e.dryRun,...e.keep!==void 0?{keep:e.keep}:{},...e.olderThanMs!==void 0?{olderThanDays:e.olderThanMs/Dc}:{}}}a(jc,"workflowPruneRetentionOptions");function Fc(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(Fc,"workflowPruneCandidateSummaries");function xi(e){return So({source:"capsule",displayName:e.displayName,savedWorkflowName:e.savedWorkflowName,sourceRunId:e.provenance?.fromRunId,sourceWorkflowName:e.provenance?.fromWorkflowName??e.savedWorkflowName,revisionOf:e.provenance?.revisionOf})}a(xi,"buildSavedWorkflowProcessMetadata");var Ai={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:Zo,handler:a(async(e,o,n,t)=>{if((e[0]??"").toLowerCase()==="pending"){await Ge(Vo(o),"workflow");return}let r=Et(e);if(t.agentMode==="sa"&&(r.kind==="create"||r.kind==="rerun"||r.kind==="start")){console.log(g.yellow(`
170
170
  [workflow] Workflows run multiple agents, which Solo (SA) mode does not support.
171
171
  Switch with /agent-mode ama to author and run one via /workflow, or /agent-mode amaw to
172
172
  also let the agent start one from natural language.
173
- `));return}let i=xe(process.cwd()).key,l=H("workflow-runs",i),c=Ne(),d=$t(process.cwd()),u=Lr({runManager:c,runBaseDir:l,savedWorkflowDirs:d}),f=a(async w=>({invocation:{source:"prompt",displayName:"workflow create",disableModelInvocation:!1,...t.agentMode==="ama"?{agentModeOverride:"amaw"}:{},prompt:Nr(w)}}),"createWorkflowFromText");if(r.kind==="help"){Jo();return}if(r.kind==="list"){console.log(g.bold(`
174
- Built-in workflows:`)),console.log(ft(Mo())),console.log(g.bold(`
175
- Pattern templates:`));for(let b of Wr())console.log(` ${g.cyan(b.name)} ${g.dim(`(${b.pattern})`)} - ${b.description}`);let w=await We(d);w.length>0&&(console.log(g.bold(`
176
- Saved workflows:`)),console.log(bt(w))),console.log(g.dim(`
173
+ `));return}let i=xe(process.cwd()).key,l=H("workflow-runs",i),c=Oe(),d=bt(process.cwd()),u=Wr({runManager:c,runBaseDir:l,savedWorkflowDirs:d}),f=a(async w=>({invocation:{source:"prompt",displayName:"workflow create",disableModelInvocation:!1,...t.agentMode==="ama"?{agentModeOverride:"amaw"}:{},prompt:Or(w)}}),"createWorkflowFromText");if(r.kind==="help"){Zo();return}if(r.kind==="list"){console.log(g.bold(`
174
+ Built-in workflows:`)),console.log(mt(Mo())),console.log(g.bold(`
175
+ Pattern templates:`));for(let b of Nr())console.log(` ${g.cyan(b.name)} ${g.dim(`(${b.pattern})`)} - ${b.description}`);let w=await Ne(d);w.length>0&&(console.log(g.bold(`
176
+ Saved workflows:`)),console.log(xt(w))),console.log(g.dim(`
177
177
  Run one with: /workflow <name> <question or JSON args>`)),console.log(g.dim(` Show usage with: /workflow help
178
- `));return}if(r.kind==="runs"){let w=Tt(r.rawArgs);if(w.error){console.log(g.yellow(`
178
+ `));return}if(r.kind==="runs"){let w=Ct(r.rawArgs);if(w.error){console.log(g.yellow(`
179
179
  Usage: /workflow runs [--all] [--limit N]
180
180
  ${w.error}
181
- `));return}let b=Dc(u.listWorkflowProcessSnapshots({activeOnly:!1})),S=c.list().filter(qe);S.length>0&&(console.log(g.bold(`
182
- Active workflow runs:`)),console.log(gt(S,{processSnapshots:b}))),console.log(g.bold(`
183
- Workflow runs:`)),console.log(pt(yo(l),{limit:w.all?void 0:w.limit,showLimitHint:!w.all,processSnapshots:b})),console.log();return}if(r.kind==="show"){let w=yo(l),b=r.runId||ht(c.list(),w);if(!b){console.log(g.yellow(`
181
+ `));return}let b=Uc(u.listWorkflowProcessSnapshots({activeOnly:!1})),S=c.list().filter(Ke);S.length>0&&(console.log(g.bold(`
182
+ Active workflow runs:`)),console.log(wt(S,{processSnapshots:b}))),console.log(g.bold(`
183
+ Workflow runs:`)),console.log(gt(ko(l),{limit:w.all?void 0:w.limit,showLimitHint:!w.all,processSnapshots:b})),console.log();return}if(r.kind==="show"){let w=ko(l),b=r.runId||yt(c.list(),w);if(!b){console.log(g.yellow(`
184
184
  No workflow runs yet. Start one with /workflow create <request>.
185
- `));return}if(!we(b))return;let S=c.get(b),M=ko(l,b),C=u.getWorkflowProcessSnapshot(b);console.log(g.bold(`
186
- Workflow run:`)),console.log(St(S,M,{full:r.full===!0,...C?{processSnapshot:C}:{}})),console.log();return}if(r.kind==="pause"){if(!we(r.runId))return;let w=c.pause(r.runId);console.log(w?g.dim(`Paused workflow ${r.runId}.
185
+ `));return}if(!we(b))return;let S=c.get(b),P=vo(l,b),C=u.getWorkflowProcessSnapshot(b);console.log(g.bold(`
186
+ Workflow run:`)),console.log($t(S,P,{full:r.full===!0,...C?{processSnapshot:C}:{}})),console.log();return}if(r.kind==="pause"){if(!we(r.runId))return;let w=c.pause(r.runId);console.log(w?g.dim(`Paused workflow ${r.runId}.
187
187
  `):g.yellow(`No running workflow ${r.runId}.
188
188
  `));return}if(r.kind==="resume"){if(!we(r.runId))return;let w=c.resume(r.runId);console.log(w?g.dim(`Resumed workflow ${r.runId}.
189
189
  `):g.yellow(`No paused workflow ${r.runId}.
190
- `));return}if(r.kind==="stop"){let w=r.runId||yt(c.list());if(!w){console.log(g.yellow(`
190
+ `));return}if(r.kind==="stop"){let w=r.runId||kt(c.list());if(!w){console.log(g.yellow(`
191
191
  No active workflow to stop.
192
- `));return}if(!we(w))return;let b=await u.stopWorkflow(w,"stopped by user"),S=c.get(w),M=ko(l,w),C=u.getWorkflowProcessSnapshot(w),U=S?.status??M?.status??C?.status,q=S?!qe(S):M?mt(M.status):C!==void 0&&Co(C.status),O=vt(w,kt(S,M));console.log(b?g.dim(`Stopped workflow ${w}.
192
+ `));return}if(!we(w))return;let b=await u.stopWorkflow(w,"stopped by user"),S=c.get(w),P=vo(l,w),C=u.getWorkflowProcessSnapshot(w),U=S?.status??P?.status??C?.status,q=S?!Ke(S):P?pt(P.status):C!==void 0&&Io(C.status),O=St(w,vt(S,P));console.log(b?g.dim(`Stopped workflow ${w}.
193
193
  `):U&&q?g.yellow(`Workflow ${w} is already ${U}. Next: ${O}.
194
194
  `):g.yellow(`No active workflow ${w}.
195
195
  `));return}if(r.kind==="delete"){if(!r.target){console.log(g.yellow(`
@@ -202,38 +202,38 @@ Usage: /workflow delete [--force] [--run|--saved] <runId|savedName>
202
202
  Deleted saved workflow ${ue.name}.
203
203
  `))}catch(ue){let j=ue instanceof Error?ue.message:String(ue);console.log(g.red(`
204
204
  [workflow] delete failed: ${j}
205
- `))}},"deleteSavedWorkflowTarget");if(r.scope==="saved"){await w(r.target);return}let b=c.getWorkflowProcessSnapshot(r.target),S=b?void 0:await u.resolveWorkflowIdentity(r.target),M;if(S?.kind==="ambiguous")if(S.run)M=S.run.runId;else{console.log(g.red(`
205
+ `))}},"deleteSavedWorkflowTarget");if(r.scope==="saved"){await w(r.target);return}let b=c.getWorkflowProcessSnapshot(r.target),S=b?void 0:await u.resolveWorkflowIdentity(r.target),P;if(S?.kind==="ambiguous")if(S.run)P=S.run.runId;else{console.log(g.red(`
206
206
  [workflow] ambiguous delete target: ${r.target} matches multiple workflow run/display names${S.matches.includes("saved")?" and a saved workflow name":""}. Use the concrete run id, or --saved when deleting a generated saved capsule.
207
207
  `));return}if(S?.kind==="saved"){if(r.scope==="run"){console.log(g.yellow(`
208
208
  No persisted workflow run ${r.target}. Use --saved to delete the saved workflow.
209
209
  `));return}await w(S.savedWorkflow.name,S.savedWorkflow.source);return}if(S?.kind==="missing"){console.log(g.yellow(`
210
210
  No persisted workflow run or generated saved workflow ${r.target}.
211
- `));return}let C=S?.kind==="run"?S.runId:M??r.target;if(!we(C))return;if(await u.deleteWorkflowRun(C,{force:r.force})){console.log(g.dim(`
211
+ `));return}let C=S?.kind==="run"?S.runId:P??r.target;if(!we(C))return;if(await u.deleteWorkflowRun(C,{force:r.force})){console.log(g.dim(`
212
212
  Deleted workflow run ${C}${r.force?" with --force":""}.
213
- `));return}let q=b??c.getWorkflowProcessSnapshot(C),O=u.getWorkflowProcessSnapshot(C);if(!O&&!$i(ee(l,C,"run.json"))){console.log(g.yellow(`
213
+ `));return}let q=b??c.getWorkflowProcessSnapshot(C),O=u.getWorkflowProcessSnapshot(C);if(!O&&!bi(ee(l,C,"run.json"))){console.log(g.yellow(`
214
214
  No persisted workflow run or generated saved workflow ${r.target}.
215
- `));return}if(q&&!Co(q.status)){console.log(g.yellow(`
215
+ `));return}if(q&&!Io(q.status)){console.log(g.yellow(`
216
216
  Workflow ${C} is ${q.status}. Stop it before deleting the run record.
217
- `));return}if(O&&!Co(O.status)){console.log(g.yellow(`
217
+ `));return}if(O&&!Io(O.status)){console.log(g.yellow(`
218
218
  Workflow ${C} is a non-terminal persisted ${O.status} record. If it is stale, run /workflow delete --force ${C}.
219
219
  `));return}console.log(g.yellow(`
220
220
  Workflow ${C} is not a deletable terminal run.
221
- `));return}if(r.kind==="prune"){let w=Ct(r.rawArgs);if(w.error){console.log(g.yellow(`
221
+ `));return}if(r.kind==="prune"){let w=It(r.rawArgs);if(w.error){console.log(g.yellow(`
222
222
  Usage: /workflow prune --dry-run | --keep N | --older-than Nd
223
223
  ${w.error}
224
224
  `));return}if(!w.dryRun&&w.keep===void 0&&w.olderThanMs===void 0){console.log(g.yellow(`
225
225
  Usage: /workflow prune --dry-run | --keep N | --older-than Nd
226
226
  No cleanup rule was provided.
227
- `));return}let b=yo(l),S=await u.pruneWorkflowRuns(Uc(w)),M=jc(b,S.candidates);console.log(g.bold(w.dryRun?`
227
+ `));return}let b=ko(l),S=await u.pruneWorkflowRuns(jc(w)),P=Fc(b,S.candidates);console.log(g.bold(w.dryRun?`
228
228
  Workflow prune preview:`:`
229
- Workflow prune:`)),console.log(wt(M)),S.protectedRuns>0&&console.log(g.dim(`
229
+ Workflow prune:`)),console.log(ht(P)),S.protectedRuns>0&&console.log(g.dim(`
230
230
  Protected ${S.protectedRuns} active workflow run${S.protectedRuns===1?"":"s"} from pruning.`)),w.dryRun?console.log(g.dim(`
231
231
  Dry run only. Add --keep N or --older-than Nd without --dry-run to delete.
232
232
  `)):console.log(g.dim(`
233
233
  Deleted ${S.deleted} workflow run${S.deleted===1?"":"s"}.
234
234
  `));return}if(r.kind==="save"){if(!r.runId||!r.name){console.log(g.yellow(`
235
235
  Usage: /workflow save <runId> <name>
236
- `));return}if(!we(r.runId))return;try{let w=await Ar({runDir:ee(l,r.runId),targetDir:d.project??ee(process.cwd(),".kodax","workflows"),name:r.name});console.log(g.green(`
236
+ `));return}if(!we(r.runId))return;try{let w=await Rr({runDir:ee(l,r.runId),targetDir:d.project??ee(process.cwd(),".kodax","workflows"),name:r.name});console.log(g.green(`
237
237
  Saved workflow ${w.name} to ${w.path}
238
238
  `))}catch(w){let b=w instanceof Error?w.message:String(w);console.log(g.red(`
239
239
  [workflow] save failed: ${b}
@@ -247,7 +247,7 @@ Usage: /workflow rename <runId|alias|savedName> <newName>
247
247
  [workflow] rename failed: ${w.runId}
248
248
  `));return}console.log(g.green(`
249
249
  Renamed workflow run ${w.runId} to ${r.newName.trim()}.
250
- `));return}try{let b=await br({dirs:d,name:w.savedWorkflow.name,newName:r.newName,source:w.savedWorkflow.source});console.log(g.green(`
250
+ `));return}try{let b=await xr({dirs:d,name:w.savedWorkflow.name,newName:r.newName,source:w.savedWorkflow.source});console.log(g.green(`
251
251
  Renamed saved workflow ${r.target} to ${b.name}.
252
252
  `))}catch(b){let S=b instanceof Error?b.message:String(b);console.log(g.red(`
253
253
  [workflow] rename failed: ${S}
@@ -263,51 +263,51 @@ Usage: /workflow revise [--replace] <runId|alias|savedName> <change request>
263
263
  [workflow] revise target not found: ${r.target}
264
264
  `));return}if(r.replace===!0&&S.kind!=="saved"){console.log(g.red(`
265
265
  [workflow] revise --replace requires a saved workflow name target.
266
- `));return}let M;try{if(S.kind==="run")M=(await Cn({runDir:S.runDir})).capsule;else{if(S.savedWorkflow.execution!=="capability-generated"){console.log(g.red(`
266
+ `));return}let P;try{if(S.kind==="run")P=(await In({runDir:S.runDir})).capsule;else{if(S.savedWorkflow.execution!=="capability-generated"){console.log(g.red(`
267
267
  [workflow] only generated workflow capsules can be revised.
268
- `));return}M=await no(S.savedWorkflow.path)}}catch(F){let eo=F instanceof Error?F.message:String(F);console.log(g.red(`
269
- [workflow] revise failed: ${eo}
270
- `));return}let C=Et({target:r.target,capsule:M,changeRequest:r.request}),U;try{U=await _o({request:C,options:b()})}catch(F){let eo=F instanceof Error?F.message:String(F);console.log(g.red(`
271
- [workflow] revise generation failed: ${eo}
268
+ `));return}P=await to(S.savedWorkflow.path)}}catch(F){let oo=F instanceof Error?F.message:String(F);console.log(g.red(`
269
+ [workflow] revise failed: ${oo}
270
+ `));return}let C=Tt({target:r.target,capsule:P,changeRequest:r.request}),U;try{U=await Po({request:C,options:b()})}catch(F){let oo=F instanceof Error?F.message:String(F);console.log(g.red(`
271
+ [workflow] revise generation failed: ${oo}
272
272
  `));return}if(U.kind==="declined"){console.log(g.dim(`
273
273
  Workflow revision not created: ${U.reason}
274
- `));return}let q=r.replace===!0&&S.kind==="saved"?S:void 0,O=q?.savedWorkflow.name,de=O??await fi(d,U.manifest.name),Y=de===U.manifest.name?U.manifest:{...U.manifest,name:de};if(!await w(ie(ke({meta:Y,run:U.module.run}),{source:O?`revision-replace:${O}`:`revision:${r.target}`,sandbox:"capability-generated",mayUseWorktree:Y.mayUseWorktree===!0,rawScript:U.source}))){console.log(g.dim(`Workflow revision cancelled.
275
- `));return}let j={name:de,manifest:Y,source:U.source,intent:yr(Y,{originalRequest:r.request}),...M.inputs!==void 0?{inputs:M.inputs}:{},...M.requires!==void 0?{requires:M.requires}:{},provenance:mi({capsule:M,resolution:S,...O!==void 0?{replacesWorkflowName:O}:{}})};if(q){let F=await xr({...j,dirs:d,savedSource:q.savedWorkflow.source});console.log(g.green(`
274
+ `));return}let q=r.replace===!0&&S.kind==="saved"?S:void 0,O=q?.savedWorkflow.name,de=O??await mi(d,U.manifest.name),Y=de===U.manifest.name?U.manifest:{...U.manifest,name:de};if(!await w(ie(ke({meta:Y,run:U.module.run}),{source:O?`revision-replace:${O}`:`revision:${r.target}`,sandbox:"capability-generated",mayUseWorktree:Y.mayUseWorktree===!0,rawScript:U.source}))){console.log(g.dim(`Workflow revision cancelled.
275
+ `));return}let j={name:de,manifest:Y,source:U.source,intent:kr(Y,{originalRequest:r.request}),...P.inputs!==void 0?{inputs:P.inputs}:{},...P.requires!==void 0?{requires:P.requires}:{},provenance:pi({capsule:P,resolution:S,...O!==void 0?{replacesWorkflowName:O}:{}})};if(q){let F=await Ar({...j,dirs:d,savedSource:q.savedWorkflow.source});console.log(g.green(`
276
276
  Replaced saved workflow ${F.name} with revised capsule at ${F.path}
277
277
  `)),console.log(g.dim(`Previous capsule archived at ${F.previousPath}
278
- `));return}let Ao=await $r({...j,dir:d.project??ee(process.cwd(),".kodax","workflows")});console.log(g.green(`
279
- Saved workflow revision ${Ao.name} to ${Ao.path}
278
+ `));return}let Ro=await br({...j,dir:d.project??ee(process.cwd(),".kodax","workflows")});console.log(g.green(`
279
+ Saved workflow revision ${Ro.name} to ${Ro.path}
280
280
  `));return}if(r.kind==="rerun"){if(!r.runId){console.log(g.yellow(`
281
281
  Usage: /workflow rerun <runId|savedName> [args]
282
282
  `));return}if(!we(r.runId))return;let w=Re(n);if(!w){console.log(g.red(`
283
283
  [workflow] refusing to rerun a workflow without an interactive approval channel.
284
284
  `));return}let b=n.createKodaXOptions;if(!b){console.log(g.red(`
285
285
  [workflow] cannot start \u2014 REPL options unavailable in this context.
286
- `));return}let S=(await We(d)).find(L=>L.name===r.runId),M=c.list().some(L=>L.runId===r.runId)||$i(ee(l,r.runId,"run.json"));if(S&&M){console.log(g.red(`
286
+ `));return}let S=(await Ne(d)).find(L=>L.name===r.runId),P=c.list().some(L=>L.runId===r.runId)||bi(ee(l,r.runId,"run.json"));if(S&&P){console.log(g.red(`
287
287
  [workflow] ambiguous rerun target: ${r.runId} matches both a workflow run id and a saved workflow name.
288
288
  `)),console.log(g.yellow(`Use /workflow ${r.runId} to run the saved workflow, or rerun a unique run id/name.
289
- `));return}if(S&&!M){let L=await gi(S,w);if(!L)return;let oo=go(r.rawArgs,L.module.meta.name,L.module.meta.description,L.scriptSnapshot?.source),nr="agentic";if(!await w(ie(ke(L.module),L.approvalContext))){console.log(g.dim(`Workflow cancelled.
290
- `));return}let J=`run-${Date.now().toString(36)}`,na=ee(l,J);console.log(g.dim(`
289
+ `));return}if(S&&!P){let L=await wi(S,w);if(!L)return;let no=wo(r.rawArgs,L.module.meta.name,L.module.meta.description,L.scriptSnapshot?.source),tr="agentic";if(!await w(ie(ke(L.module),L.approvalContext))){console.log(g.dim(`Workflow cancelled.
290
+ `));return}let J=`run-${Date.now().toString(36)}`,ta=ee(l,J);console.log(g.dim(`
291
291
  Started workflow ${L.module.meta.name} (${J}). Use /workflow show ${J} for status.
292
- `));let $n=Ee(n,J,L.module.meta,oo);$n.running(`Use /workflow show ${J} for status or /workflow stop ${J} to stop.`);let ta=Xe(c,$n,J),tr=c.startFromOptions({module:L.module,args:So(r.rawArgs),options:b(),runId:J,runDir:na,...L.scriptSnapshot?{scriptSnapshot:L.scriptSnapshot}:{},processMetadata:bi({displayName:L.module.meta.name,savedWorkflowName:S.name,provenance:L.provenance}),onEvent:Ke(n,void 0,{presentation:nr,locale:oo,runId:J})});tr.done.finally(ta),Te(tr,n,J,$n,{canRerun:L.scriptSnapshot!==void 0,presentation:nr,locale:oo});return}let C;try{C=await Cn({runDir:ee(l,r.runId)})}catch(L){let oo=L instanceof Error?L.message:String(L);console.log(g.red(`
293
- [workflow] rerun failed: ${oo}
294
- `));return}let q=ko(l,r.runId)?.scriptSnapshotPath??ee(l,r.runId,"script.js"),O=go(r.rawArgs,C.capsule.manifest.name,C.capsule.manifest.description,C.capsule.source),de="agentic",Y=to(C.capsule,en());if(!Y.ok){on(Y);return}if(nn(Y),!await w(ie(ke(C.module),{source:`run:${r.runId}`,sandbox:"capability-generated",mayUseWorktree:C.capsule.manifest.mayUseWorktree===!0,rawScriptPath:q,rawScript:C.capsule.source}))){console.log(g.dim(`Workflow cancelled.
295
- `));return}let j=`run-${Date.now().toString(36)}`,Ao=ee(l,j);console.log(g.dim(`
292
+ `));let bn=Ee(n,J,L.module.meta,no);bn.running(`Use /workflow show ${J} for status or /workflow stop ${J} to stop.`);let ra=Ve(c,bn,J),rr=c.startFromOptions({module:L.module,args:$o(r.rawArgs),options:b(),runId:J,runDir:ta,...L.scriptSnapshot?{scriptSnapshot:L.scriptSnapshot}:{},processMetadata:xi({displayName:L.module.meta.name,savedWorkflowName:S.name,provenance:L.provenance}),onEvent:Xe(n,void 0,{presentation:tr,locale:no,runId:J})});Ce(rr,ra),Te(rr,n,J,bn,{canRerun:L.scriptSnapshot!==void 0,presentation:tr,locale:no});return}let C;try{C=await In({runDir:ee(l,r.runId)})}catch(L){let no=L instanceof Error?L.message:String(L);console.log(g.red(`
293
+ [workflow] rerun failed: ${no}
294
+ `));return}let q=vo(l,r.runId)?.scriptSnapshotPath??ee(l,r.runId,"script.js"),O=wo(r.rawArgs,C.capsule.manifest.name,C.capsule.manifest.description,C.capsule.source),de="agentic",Y=ro(C.capsule,on());if(!Y.ok){nn(Y);return}if(tn(Y),!await w(ie(ke(C.module),{source:`run:${r.runId}`,sandbox:"capability-generated",mayUseWorktree:C.capsule.manifest.mayUseWorktree===!0,rawScriptPath:q,rawScript:C.capsule.source}))){console.log(g.dim(`Workflow cancelled.
295
+ `));return}let j=`run-${Date.now().toString(36)}`,Ro=ee(l,j);console.log(g.dim(`
296
296
  Started workflow ${C.module.meta.name} (${j}). Use /workflow show ${j} for status.
297
- `));let F=Ee(n,j,C.module.meta,O);F.running(`Use /workflow show ${j} for status or /workflow stop ${j} to stop.`);let eo=Xe(c,F,j),or=c.startFromOptions({module:C.module,args:So(r.rawArgs),options:b(),runId:j,runDir:Ao,scriptSnapshot:{manifest:C.capsule.manifest,source:C.capsule.source},processMetadata:vo({source:"command",displayName:C.module.meta.name,sourceRunId:r.runId}),onEvent:Ke(n,void 0,{presentation:de,locale:O,runId:j})});or.done.finally(eo),Te(or,n,j,F,{canRerun:!0,presentation:de,locale:O});return}if(r.kind==="create"){if(!r.request){console.log(g.yellow(`
297
+ `));let F=Ee(n,j,C.module.meta,O);F.running(`Use /workflow show ${j} for status or /workflow stop ${j} to stop.`);let oo=Ve(c,F,j),nr=c.startFromOptions({module:C.module,args:$o(r.rawArgs),options:b(),runId:j,runDir:Ro,scriptSnapshot:{manifest:C.capsule.manifest,source:C.capsule.source},processMetadata:So({source:"command",displayName:C.module.meta.name,sourceRunId:r.runId}),onEvent:Xe(n,void 0,{presentation:de,locale:O,runId:j})});Ce(nr,oo),Te(nr,n,j,F,{canRerun:!0,presentation:de,locale:O});return}if(r.kind==="create"){if(!r.request){console.log(g.yellow(`
298
298
  Usage: /workflow create <request>
299
299
  `));return}return await f(r.request)}let m=Re(n);if(!m){console.log(g.red(`
300
300
  [workflow] refusing to start a workflow without an interactive approval channel.
301
- `));return}let h={source:"built-in",sandbox:"trusted package",mayUseWorktree:!1},k,y=Sr(r.name),v,p;if(!y){let w=(await We(d)).find(b=>b.name===r.name);if(!w){let b=[r.name,r.rawArgs].filter(S=>S&&S.length>0).join(" ").trim();return await f(b)}if(v=w,w.execution==="trusted-local"&&!await m(`Run local workflow file? This EXECUTES local code:
301
+ `));return}let h={source:"built-in",sandbox:"trusted package",mayUseWorktree:!1},k,y=$r(r.name),v,p;if(!y){let w=(await Ne(d)).find(b=>b.name===r.name);if(!w){let b=[r.name,r.rawArgs].filter(S=>S&&S.length>0).join(" ").trim();return await f(b)}if(v=w,w.execution==="trusted-local"&&!await m(`Run local workflow file? This EXECUTES local code:
302
302
  ${w.path}`)){console.log(g.dim(`Workflow cancelled.
303
- `));return}try{if(w.execution==="capability-generated"){let b=await no(w.path),S=to(b,en());if(!S.ok){on(S);return}nn(S),h={source:`saved:${w.source}`,sandbox:w.execution,mayUseWorktree:b.manifest.mayUseWorktree===!0,rawScriptPath:w.path,rawScript:b.source},k={manifest:b.manifest,source:b.source},p=b.provenance}y=await Po(w.path),w.execution==="trusted-local"&&(h={source:`saved:${w.source}`,sandbox:w.execution,mayUseWorktree:!1})}catch(b){let S=b instanceof Error?b.message:String(b);console.log(g.red(`
303
+ `));return}try{if(w.execution==="capability-generated"){let b=await to(w.path),S=ro(b,on());if(!S.ok){nn(S);return}tn(S),h={source:`saved:${w.source}`,sandbox:w.execution,mayUseWorktree:b.manifest.mayUseWorktree===!0,rawScriptPath:w.path,rawScript:b.source},k={manifest:b.manifest,source:b.source},p=b.provenance}y=await Lo(w.path),w.execution==="trusted-local"&&(h={source:`saved:${w.source}`,sandbox:w.execution,mayUseWorktree:!1})}catch(b){let S=b instanceof Error?b.message:String(b);console.log(g.red(`
304
304
  [workflow] failed to load ${w.path}: ${S}
305
305
  `));return}}let R=n.createKodaXOptions;if(!R){console.log(g.red(`
306
306
  [workflow] cannot start \u2014 REPL options unavailable in this context.
307
307
  `));return}if(!await m(ie(ke(y),h))){console.log(g.dim(`Workflow cancelled.
308
- `));return}let P=`run-${Date.now().toString(36)}`,X=ee(l,P);console.log(g.dim(`
309
- Started workflow ${y.meta.name} (${P}). Use /workflow show ${P} for status.
310
- `));let V=go(r.rawArgs,y.meta.name,y.meta.description,k?.source),Qe=Ee(n,P,y.meta,V);Qe.running(`Use /workflow show ${P} for status or /workflow stop ${P} to stop.`);let ce="agentic",oa=Xe(c,Qe,P),er=c.startFromOptions({module:y,args:So(r.rawArgs),options:R(),runId:P,runDir:X,...k?{scriptSnapshot:k}:{},processMetadata:v?bi({displayName:y.meta.name,savedWorkflowName:v.name,provenance:p}):vo({source:"command",displayName:y.meta.name}),onEvent:Ke(n,void 0,{presentation:ce,locale:V,runId:P})});er.done.finally(oa),Te(er,n,P,Qe,{canRerun:k!==void 0,presentation:ce,locale:V})},"handler")};import B from"chalk";var It={name:"new",description:"Start a new conversation session",usage:"/new",handler:a(async(e,o,n)=>{if(o.messages.length===0){console.log(B.yellow(`
308
+ `));return}let M=`run-${Date.now().toString(36)}`,X=ee(l,M);console.log(g.dim(`
309
+ Started workflow ${y.meta.name} (${M}). Use /workflow show ${M} for status.
310
+ `));let V=wo(r.rawArgs,y.meta.name,y.meta.description,k?.source),eo=Ee(n,M,y.meta,V);eo.running(`Use /workflow show ${M} for status or /workflow stop ${M} to stop.`);let ce="agentic",na=Ve(c,eo,M),or=c.startFromOptions({module:y,args:$o(r.rawArgs),options:R(),runId:M,runDir:X,...k?{scriptSnapshot:k}:{},processMetadata:v?xi({displayName:y.meta.name,savedWorkflowName:v.name,provenance:p}):So({source:"command",displayName:y.meta.name}),onEvent:Xe(n,void 0,{presentation:ce,locale:V,runId:M})});Ce(or,na),Te(or,n,M,eo,{canRerun:k!==void 0,presentation:ce,locale:V})},"handler")};import B from"chalk";var _t={name:"new",description:"Start a new conversation session",usage:"/new",handler:a(async(e,o,n)=>{if(o.messages.length===0){console.log(B.yellow(`
311
311
  Current session is already empty.`)),console.log(B.dim("You can start a new conversation directly."));return}if(n.confirm&&!await n.confirm("Start a new session? This will clear the current conversation history.")){console.log(B.dim(`
312
312
  Cancelled. Current session preserved.`));return}try{await n.saveSession(),console.log(B.dim(`
313
313
  [Previous session saved]`))}catch{console.log(B.yellow(`
@@ -317,11 +317,11 @@ Cancelled. Current session preserved.`));return}try{await n.saveSession(),consol
317
317
  `)),console.log("Usage:"),console.log(B.cyan(" /new")+` - Clear current session and start fresh
318
318
  `),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.
319
319
  `),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]
320
- `)),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 rg="The provider may be rejecting the current session history. Create a new session from a safe summary and continue there?",sg="The current LLM API may be rejecting this session history. Run /recover [prompt] to continue in a fresh session from safe memory.";function ig(e){return vr(e.error,e.messageCount)}a(ig,"shouldOfferSessionRecovery");var _t={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(`
320
+ `)),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 dg="The provider may be rejecting the current session history. Create a new session from a safe summary and continue there?",ug="The current LLM API may be rejecting this session history. Run /recover [prompt] to continue in a fresh session from safe memory.";function fg(e){return Sr(e.error,e.messageCount)}a(fg,"shouldOfferSessionRecovery");var Pt={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(`
321
321
  Current session is empty. Start a normal message instead.`));return}if(!n.recoverSession){console.log(N.red(`
322
322
  [Recover is not available in this host]
323
323
  `));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(`
324
- Cancelled. Current session preserved.`));return}let t;try{t=await n.recoverSession(Tn(e.join(" ")))}catch(r){let i=r instanceof Error?r.message:String(r);console.log(N.red(`
324
+ Cancelled. Current session preserved.`));return}let t;try{t=await n.recoverSession(Cn(e.join(" ")))}catch(r){let i=r instanceof Error?r.message:String(r);console.log(N.red(`
325
325
  [Recover failed] ${i}
326
326
  `));return}t==="blocked"?console.log(N.yellow(`
327
327
  [Recover blocked by the current session transition guard]
@@ -331,13 +331,13 @@ Cancelled. Current session preserved.`));return}let t;try{t=await n.recoverSessi
331
331
  [Nothing to recover from this session]
332
332
  `))},"handler"),detailedHelp:a(()=>{console.log(N.cyan(`
333
333
  /recover - Continue in a Fresh Session
334
- `)),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 Fc}from"node:child_process";import{promisify as Hc}from"node:util";import oe from"chalk";var Bc=Hc(Fc),Mt=1e5;async function cn(e,o){let{stdout:n}=await Bc("git",e,{cwd:o,maxBuffer:67108864});return n}a(cn,"git");async function Gc(e){for(let o of["main","master","develop"])try{return await cn(["rev-parse","--verify",o],e),o}catch{}return"HEAD"}a(Gc,"detectBaseBranch");async function zc(e,o){let n=e[0];if(n==="base"){let t=await Gc(o);return{diff:await cn(["diff",`${t}...HEAD`],o),label:`changes against ${t}`}}if(n==="sha"&&e[1])return{diff:await cn(["show",e[1]],o),label:`commit ${e[1]}`};if(n==="sha")throw new Error("missing commit hash for sha scope; use /review sha <hash>");return{diff:await cn(["diff","HEAD"],o),label:"uncommitted changes"}}a(zc,"getDiff");function qc(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 h=e[f+1];if(h===void 0)break;if(h==="--"){r=!0,f+=1;break}if(c(h)){f+=1;continue}i.push(h),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(qc,"parseReviewInvocation");function Kc(e,o={}){let n=[`Review ${e} with a dynamic workflow.`,"Create independent reviewers for correctness, security, performance, and design.","Have each reviewer inspect the relevant git diff evidence independently, then synthesize findings.","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}`),n.join(`
335
- `)}a(Kc,"buildReviewWorkflowRequest");function Xc(e){return e.length<=Mt?e:`${e.slice(0,Mt)}
334
+ `)),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 Hc}from"node:child_process";import{promisify as Bc}from"node:util";import oe from"chalk";var Gc=Bc(Hc),Mt=1e5;async function dn(e,o){let{stdout:n}=await Gc("git",e,{cwd:o,maxBuffer:67108864});return n}a(dn,"git");async function zc(e){for(let o of["main","master","develop"])try{return await dn(["rev-parse","--verify",o],e),o}catch{}return"HEAD"}a(zc,"detectBaseBranch");async function qc(e,o){let n=e[0];if(n==="base"){let t=await zc(o);return{diff:await dn(["diff",`${t}...HEAD`],o),label:`changes against ${t}`}}if(n==="sha"&&e[1])return{diff:await dn(["show",e[1]],o),label:`commit ${e[1]}`};if(n==="sha")throw new Error("missing commit hash for sha scope; use /review sha <hash>");return{diff:await dn(["diff","HEAD"],o),label:"uncommitted changes"}}a(qc,"getDiff");function Kc(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 h=e[f+1];if(h===void 0)break;if(h==="--"){r=!0,f+=1;break}if(c(h)){f+=1;continue}i.push(h),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(Kc,"parseReviewInvocation");function Xc(e,o={}){let n=[`Review ${e} with a dynamic workflow.`,"Create independent reviewers for correctness, security, performance, and design.","Have each reviewer inspect the relevant git diff evidence independently, then synthesize findings.","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}`),n.join(`
335
+ `)}a(Xc,"buildReviewWorkflowRequest");function Vc(e){return e.length<=Mt?e:`${e.slice(0,Mt)}
336
336
 
337
- [diff truncated to ${Mt} chars - review the rest with a narrower scope]`}a(Xc,"truncateDiff");function Vc(e){let o=Xc(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(`
338
- `)}a(Vc,"buildReviewPrompt");function Ai(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(Ai,"buildDisplayName");function Yc(){console.log(oe.bold(`
337
+ [diff truncated to ${Mt} chars - review the rest with a narrower scope]`}a(Vc,"truncateDiff");function Yc(e){let o=Vc(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(`
338
+ `)}a(Yc,"buildReviewPrompt");function Ri(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(Ri,"buildDisplayName");function Jc(){console.log(oe.bold(`
339
339
  /review - Review Git Changes
340
- `)),console.log("Usage:"),console.log(oe.cyan(" /review [--lean] [--workflow] [base | sha <hash>] [prompt...]")),console.log(),console.log("Scopes:"),console.log(oe.dim(" default ")+"Review uncommitted changes against HEAD"),console.log(oe.dim(" base ")+"Review changes against the detected base branch"),console.log(oe.dim(" sha <hash> ")+"Review a specific commit"),console.log(),console.log("Options:"),console.log(oe.dim(" --lean ")+"Add a minimal-diff/YAGNI review pass"),console.log(oe.dim(" --workflow ")+"Generate a dynamic multi-reviewer workflow"),console.log(),console.log("Examples:"),console.log(oe.dim(" /review --lean")),console.log(oe.dim(" /review base focus on auth and data loss")),console.log(oe.dim(" /review sha abc123 --lean -- check for native platform replacements"))}a(Yc,"printReviewHelp");var Ri={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:Yc,handler:a(async(e,o)=>{let n=o.gitRoot??process.cwd(),t=qc(e);if(t.error)return{success:!1,message:`/review: ${t.error}`};let r,i;try{({diff:r,label:i}=await zc(t.diffArgs,n))}catch(l){return{success:!1,message:`/review: git failed - ${l instanceof Error?l.message:String(l)}`}}return r.trim()?t.workflow?{success:!0,workflow:{request:Kc(i,{lean:t.lean,customPrompt:t.prompt}),source:"command",displayName:Ai(t),processSource:"review"}}:{success:!0,invocation:{prompt:Vc({label:i,diff:r,lean:t.lean,customPrompt:t.prompt}),source:"prompt",displayName:Ai(t)}}:{success:!0,message:"No changes to review."}},"handler")};import{constants as Jc}from"node:fs";import{access as Zc,readFile as Qc,writeFile as ed}from"node:fs/promises";import{join as od}from"node:path";import ne from"chalk";var Ii=`# KodaX Lean Mode
340
+ `)),console.log("Usage:"),console.log(oe.cyan(" /review [--lean] [--workflow] [base | sha <hash>] [prompt...]")),console.log(),console.log("Scopes:"),console.log(oe.dim(" default ")+"Review uncommitted changes against HEAD"),console.log(oe.dim(" base ")+"Review changes against the detected base branch"),console.log(oe.dim(" sha <hash> ")+"Review a specific commit"),console.log(),console.log("Options:"),console.log(oe.dim(" --lean ")+"Add a minimal-diff/YAGNI review pass"),console.log(oe.dim(" --workflow ")+"Generate a dynamic multi-reviewer workflow"),console.log(),console.log("Examples:"),console.log(oe.dim(" /review --lean")),console.log(oe.dim(" /review base focus on auth and data loss")),console.log(oe.dim(" /review sha abc123 --lean -- check for native platform replacements"))}a(Jc,"printReviewHelp");var Ei={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:Jc,handler:a(async(e,o)=>{let n=o.gitRoot??process.cwd(),t=Kc(e);if(t.error)return{success:!1,message:`/review: ${t.error}`};let r,i;try{({diff:r,label:i}=await qc(t.diffArgs,n))}catch(l){return{success:!1,message:`/review: git failed - ${l instanceof Error?l.message:String(l)}`}}return r.trim()?t.workflow?{success:!0,workflow:{request:Xc(i,{lean:t.lean,customPrompt:t.prompt}),source:"command",displayName:Ri(t),processSource:"review"}}:{success:!0,invocation:{prompt:Yc({label:i,diff:r,lean:t.lean,customPrompt:t.prompt}),source:"prompt",displayName:Ri(t)}}:{success:!0,message:"No changes to review."}},"handler")};import{constants as Zc}from"node:fs";import{access as Qc,readFile as ed,writeFile as od}from"node:fs/promises";import{join as nd}from"node:path";import ne from"chalk";var _i=`# KodaX Lean Mode
341
341
 
342
342
  Before writing code:
343
343
  1. Do we need to build this at all?
@@ -357,10 +357,10 @@ Never cut:
357
357
  After coding:
358
358
  - explain what was skipped
359
359
  - say when to add it back
360
- `;function nd(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??e.gitRoot??process.cwd()}a(nd,"resolveTargetRoot");async function _i(e){try{return await Zc(e,Jc.F_OK),!0}catch(o){if(o.code==="ENOENT")return!1;throw o}}a(_i,"pathExists");function Ei(e){return console.log(ne.dim(`AGENTS.md already exists at ${e}; left unchanged.`)),{success:!0,message:`AGENTS.md already exists and was left unchanged: ${e}`}}a(Ei,"existingAgentsResult");function dn(e){return e instanceof Error?e.message:String(e)}a(dn,"errorMessage");async function Ti(e,o){let n;try{n=await _i(e)}catch(t){return{success:!1,message:`/agents init: failed to inspect ${e}: ${dn(t)}`}}if(n)return Ei(e);try{await ed(e,Ii,{encoding:"utf8",flag:"wx"})}catch(t){return t.code==="EEXIST"?Ei(e):{success:!1,message:`/agents init: failed to write ${e}: ${dn(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: ${dn(t)}`}}return console.log(ne.green(`Created ${e}`)),{success:!0,message:`Created ${e}`}}a(Ti,"initializeAgentsFile");function td(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",Ii.trimEnd(),"```","","Current AGENTS.md content:","","```markdown",o,"```"].join(`
361
- `)}a(td,"buildLeanReviewPrompt");function Ci(){console.log(ne.bold(`
360
+ `;function td(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??e.gitRoot??process.cwd()}a(td,"resolveTargetRoot");async function Pi(e){try{return await Qc(e,Zc.F_OK),!0}catch(o){if(o.code==="ENOENT")return!1;throw o}}a(Pi,"pathExists");function Ti(e){return console.log(ne.dim(`AGENTS.md already exists at ${e}; left unchanged.`)),{success:!0,message:`AGENTS.md already exists and was left unchanged: ${e}`}}a(Ti,"existingAgentsResult");function un(e){return e instanceof Error?e.message:String(e)}a(un,"errorMessage");async function Ci(e,o){let n;try{n=await Pi(e)}catch(t){return{success:!1,message:`/agents init: failed to inspect ${e}: ${un(t)}`}}if(n)return Ti(e);try{await od(e,_i,{encoding:"utf8",flag:"wx"})}catch(t){return t.code==="EEXIST"?Ti(e):{success:!1,message:`/agents init: failed to write ${e}: ${un(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: ${un(t)}`}}return console.log(ne.green(`Created ${e}`)),{success:!0,message:`Created ${e}`}}a(Ci,"initializeAgentsFile");function rd(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",_i.trimEnd(),"```","","Current AGENTS.md content:","","```markdown",o,"```"].join(`
361
+ `)}a(rd,"buildLeanReviewPrompt");function Ii(){console.log(ne.bold(`
362
362
  /agents - Manage Target Project Instructions
363
- `)),console.log("Usage:"),console.log(ne.cyan(" /agents init")),console.log(ne.cyan(" /agents lean")),console.log(),console.log("Commands:"),console.log(ne.dim(" init ")+"Create AGENTS.md in the target project if it is absent"),console.log(ne.dim(" lean ")+"Initialize or LLM-review AGENTS.md for Lean Mode guidance"),console.log(),console.log("Notes:"),console.log(ne.dim(" - Existing AGENTS.md files are never overwritten.")),console.log(ne.dim(" - /agents lean asks the LLM to merge missing lean guidance without duplicates.")),console.log(ne.dim(" - The generated file belongs to the target project, not KodaX itself."))}a(Ci,"printAgentsHelp");var Pt={name:"agents",description:"Initialize target-project AGENTS.md instructions",usage:"/agents init | lean",argumentHint:"init | lean",detailedHelp:Ci,handler:a(async(e,o,n)=>{let t=e[0]?.toLowerCase()??"help";if(t!=="init"&&t!=="lean")return Ci(),!0;let r=nd(o),i=od(r,"AGENTS.md");if(t==="init")return await Ti(i,n);let l;try{l=await _i(i)}catch(d){return{success:!1,message:`/agents lean: failed to inspect ${i}: ${dn(d)}`}}if(!l)return await Ti(i,n);let c;try{c=await Qc(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:td(i,c),source:"prompt",displayName:"/agents lean"}}},"handler")};function fn(e){let o=e.match(/\r\n|\r|\n/g);return o?o.length:0}a(fn,"getPastedTextRefNumLines");function rd(e,o){return o===0?`[Pasted text #${e}]`:`[Pasted text #${e} +${o} lines]`}a(rd,"formatPastedTextRef");function sd(e,o){return`[...Truncated text #${e} +${o} lines...]`}a(sd,"formatTruncatedTextRef");var id=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/g;function ad(e){let o=[],n=new RegExp(id.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(ad,"parseReferences");function ld(e,o){let n=ad(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(ld,"expandPastedTextRefs");var cd=/\[(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 fd(e,o){if(o===0)return!0;let n=e[o-1];return!n||/\s/.test(n)}a(fd,"isAtWordBoundaryBefore");function xg(e,o){if(o<=0||!ud(e,o))return null;let t=e.slice(0,o).match(cd);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(xg,"findPlaceholderBeforeCursor");function Ag(e,o){if(o>=e.length||!fd(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(Ag,"findPlaceholderAfterCursor");function Rg(e){return e.length>800||fn(e)>2}a(Rg,"shouldReplacePasteWithPlaceholder");function Eg(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=fn(l),d=sd(o,c);return{truncatedText:r+d+i,placeholderContent:l}}a(Eg,"maybeTruncateLongInput");var Lt=class{static{a(this,"PasteStore")}contents=new Map;nextId=1;registerText(o){let n=this.nextId++,t=fn(o);return this.contents.set(n,{id:n,type:"text",content:o}),{id:n,placeholder:rd(n,t),numLines:t}}registerTruncatedText(o){let n=this.nextId++,t=fn(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 ld(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())}},un=null;function Tg(){return un===null&&(un=new Lt),un}a(Tg,"getOrCreateModulePasteStore");function Mi(){return un??void 0}a(Mi,"getActivePasteStore");import{createHash as md}from"node:crypto";import{mkdir as pd,readdir as gd,readFile as wd,stat as hd,unlink as yd,writeFile as kd}from"node:fs/promises";import*as Wt from"node:path";var vd="paste-cache",Sd=720*60*60*1e3;function Nt(){return H(vd)}a(Nt,"getPasteCacheDir");function Pi(e){return Wt.join(Nt(),`${e}.txt`)}a(Pi,"getPastePath");function Lg(e){return md("sha256").update(e).digest("hex").slice(0,16)}a(Lg,"hashPastedText");async function Wg(e,o){try{let n=Nt();return await pd(n,{recursive:!0}),await kd(Pi(e),o,{encoding:"utf8",mode:384}),!0}catch{return!1}}a(Wg,"storePastedText");async function Li(e){try{return await wd(Pi(e),{encoding:"utf8"})}catch{return null}}a(Li,"retrievePastedText");async function Ng(e=Sd){let o=Nt(),n=Date.now()-e,t=0,r=0,i;try{i=await gd(o)}catch{return{scanned:t,removed:r}}for(let l of i){if(!l.endsWith(".txt"))continue;t+=1;let c=Wt.join(o,l);try{(await hd(c)).mtimeMs<n&&(await yd(c),r+=1)}catch{}}return{scanned:t,removed:r}}a(Ng,"cleanupOldPastes");import*as Ft from"path";import*as Ni from"os";function $d(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}a($d,"escapeRegExp");function bd(e,o){if(!e)return;let n=e.trim();if(!n.startsWith("/"))return;let t=new RegExp(`^/${$d(o)}(?:\\s+)?`,"i"),r=n.replace(t,"").trim();return r.length>0?r:void 0}a(bd,"deriveArgumentHintFromUsage");function Ot(e,o="builtin"){return{...e,source:e.source??o,userInvocable:e.userInvocable??!0,disableModelInvocation:e.disableModelInvocation??!1,argumentHint:e.argumentHint??bd(e.usage,e.name)}}a(Ot,"toCommandDefinition");function Dt(e){for(let o of Wi)try{let n=Ot(o,"builtin");e.register(n)}catch(n){console.error(`Failed to register command "${o.name}":`,n)}}a(Dt,"registerBuiltinCommands");import*as ae from"fs";import*as Ce from"path";function xd(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(xd,"normalizeAliases");function Ad(e){if(e==="critical"||e==="high"||e==="medium"||e==="low")return e}a(Ad,"normalizePriority");function Rd(e){return{disableModelInvocation:e["disable-model-invocation"]===!0,userInvocable:e["user-invocable"]!==!1,allowedTools:mr(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:pr(e.hooks),frontmatter:e}}a(Rd,"buildExecutionMetadata");function Ed(e,o){try{let n=ae.readFileSync(e,"utf-8"),[t,r]=fr(n),i=t??{},l=Ce.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:xd(i.aliases),priority:Ad(i.priority),content:r.trim(),location:o,path:e,frontmatter:i,execution:Rd(i)}}catch(n){console.error(`Error parsing command file ${e}:`,n);return}}a(Ed,"parseCommandFile");function Ut(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(!ae.existsSync(i))continue;let c=Ce.resolve(i);try{c=ae.realpathSync.native?.(i)??ae.realpathSync(i)}catch{c=Ce.resolve(i)}if(!n.has(c)){n.add(c);try{let d=ae.readdirSync(i);for(let u of d){if(!u.endsWith(".md"))continue;let f=Ce.join(i,u),m=Ed(f,l);m&&o.push(m)}}catch(d){console.error(`Error scanning directory ${i}:`,d)}}}return o}a(Ut,"discoverCommands");function jt(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){console.error(`Error registering command ${n.name}:`,t)}}a(jt,"registerDiscoveredCommands");function Oi(e,o){Dt(e);try{let n=Ni.homedir(),t=o??process.cwd(),r=Ut([{path:Ft.join(t,".kodax","commands"),location:"project"},{path:H("commands"),location:"user"},{path:Ft.join(n,".agents","commands"),location:"user"}]);jt(r,e)}catch(n){console.error("Failed to discover commands:",n)}}a(Oi,"registerAllCommands");function Td(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(Td,"summarizeAgentsFiles");function Cd(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(Cd,"createManualCompactionConfig");function Ht(e){e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace unchanged: ${rt(e.runtimeInfo)}`)):console.log(s.dim(" Workspace unchanged."))}a(Ht,"printWorkspaceUnchangedNote");var Wi=[{name:"help",aliases:["h","?"],description:"Show all available commands",usage:"/help [command]",handler:a(async e=>{if(e.length>0){let o=e[0];le.size===0&&mn(),le.has(o.toLowerCase())||!!pn(o)?zt(o):Hd(o)}else Fd()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
363
+ `)),console.log("Usage:"),console.log(ne.cyan(" /agents init")),console.log(ne.cyan(" /agents lean")),console.log(),console.log("Commands:"),console.log(ne.dim(" init ")+"Create AGENTS.md in the target project if it is absent"),console.log(ne.dim(" lean ")+"Initialize or LLM-review AGENTS.md for Lean Mode guidance"),console.log(),console.log("Notes:"),console.log(ne.dim(" - Existing AGENTS.md files are never overwritten.")),console.log(ne.dim(" - /agents lean asks the LLM to merge missing lean guidance without duplicates.")),console.log(ne.dim(" - The generated file belongs to the target project, not KodaX itself."))}a(Ii,"printAgentsHelp");var Lt={name:"agents",description:"Initialize target-project AGENTS.md instructions",usage:"/agents init | lean",argumentHint:"init | lean",detailedHelp:Ii,handler:a(async(e,o,n)=>{let t=e[0]?.toLowerCase()??"help";if(t!=="init"&&t!=="lean")return Ii(),!0;let r=td(o),i=nd(r,"AGENTS.md");if(t==="init")return await Ci(i,n);let l;try{l=await Pi(i)}catch(d){return{success:!1,message:`/agents lean: failed to inspect ${i}: ${un(d)}`}}if(!l)return await Ci(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:rd(i,c),source:"prompt",displayName:"/agents lean"}}},"handler")};function mn(e){let o=e.match(/\r\n|\r|\n/g);return o?o.length:0}a(mn,"getPastedTextRefNumLines");function sd(e,o){return o===0?`[Pasted text #${e}]`:`[Pasted text #${e} +${o} lines]`}a(sd,"formatPastedTextRef");function id(e,o){return`[...Truncated text #${e} +${o} lines...]`}a(id,"formatTruncatedTextRef");var ad=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/g;function ld(e){let o=[],n=new RegExp(ad.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(ld,"parseReferences");function cd(e,o){let n=ld(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(cd,"expandPastedTextRefs");var dd=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]$/,ud=/^\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/;function fd(e,o){if(o>=e.length)return!0;let n=e[o];return!n||/\s/.test(n)}a(fd,"isAtWordBoundaryAfter");function md(e,o){if(o===0)return!0;let n=e[o-1];return!n||/\s/.test(n)}a(md,"isAtWordBoundaryBefore");function Ig(e,o){if(o<=0||!fd(e,o))return null;let t=e.slice(0,o).match(dd);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(Ig,"findPlaceholderBeforeCursor");function _g(e,o){if(o>=e.length||!md(e,o))return null;let t=e.slice(o).match(ud);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(_g,"findPlaceholderAfterCursor");function Pg(e){return e.length>800||mn(e)>2}a(Pg,"shouldReplacePasteWithPlaceholder");function Mg(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=mn(l),d=id(o,c);return{truncatedText:r+d+i,placeholderContent:l}}a(Mg,"maybeTruncateLongInput");var Wt=class{static{a(this,"PasteStore")}contents=new Map;nextId=1;registerText(o){let n=this.nextId++,t=mn(o);return this.contents.set(n,{id:n,type:"text",content:o}),{id:n,placeholder:sd(n,t),numLines:t}}registerTruncatedText(o){let n=this.nextId++,t=mn(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 cd(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())}},fn=null;function Lg(){return fn===null&&(fn=new Wt),fn}a(Lg,"getOrCreateModulePasteStore");function Mi(){return fn??void 0}a(Mi,"getActivePasteStore");import{createHash as pd}from"node:crypto";import{mkdir as gd,readdir as wd,readFile as hd,stat as yd,unlink as kd,writeFile as vd}from"node:fs/promises";import*as Nt from"node:path";var Sd="paste-cache",$d=720*60*60*1e3;function Ot(){return H(Sd)}a(Ot,"getPasteCacheDir");function Li(e){return Nt.join(Ot(),`${e}.txt`)}a(Li,"getPastePath");function jg(e){return pd("sha256").update(e).digest("hex").slice(0,16)}a(jg,"hashPastedText");async function Fg(e,o){try{let n=Ot();return await gd(n,{recursive:!0}),await vd(Li(e),o,{encoding:"utf8",mode:384}),!0}catch{return!1}}a(Fg,"storePastedText");async function Wi(e){try{return await hd(Li(e),{encoding:"utf8"})}catch{return null}}a(Wi,"retrievePastedText");async function Hg(e=$d){let o=Ot(),n=Date.now()-e,t=0,r=0,i;try{i=await wd(o)}catch{return{scanned:t,removed:r}}for(let l of i){if(!l.endsWith(".txt"))continue;t+=1;let c=Nt.join(o,l);try{(await yd(c)).mtimeMs<n&&(await kd(c),r+=1)}catch{}}return{scanned:t,removed:r}}a(Hg,"cleanupOldPastes");import*as Ht from"path";import*as Oi from"os";function bd(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}a(bd,"escapeRegExp");function xd(e,o){if(!e)return;let n=e.trim();if(!n.startsWith("/"))return;let t=new RegExp(`^/${bd(o)}(?:\\s+)?`,"i"),r=n.replace(t,"").trim();return r.length>0?r:void 0}a(xd,"deriveArgumentHintFromUsage");function Dt(e,o="builtin"){return{...e,source:e.source??o,userInvocable:e.userInvocable??!0,disableModelInvocation:e.disableModelInvocation??!1,argumentHint:e.argumentHint??xd(e.usage,e.name)}}a(Dt,"toCommandDefinition");function Ut(e){for(let o of Ni)try{let n=Dt(o,"builtin");e.register(n)}catch(n){console.error(`Failed to register command "${o.name}":`,n)}}a(Ut,"registerBuiltinCommands");import*as ae from"fs";import*as Ie from"path";function Ad(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(Ad,"normalizeAliases");function Rd(e){if(e==="critical"||e==="high"||e==="medium"||e==="low")return e}a(Rd,"normalizePriority");function Ed(e){return{disableModelInvocation:e["disable-model-invocation"]===!0,userInvocable:e["user-invocable"]!==!1,allowedTools:pr(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:gr(e.hooks),frontmatter:e}}a(Ed,"buildExecutionMetadata");function Td(e,o){try{let n=ae.readFileSync(e,"utf-8"),[t,r]=mr(n),i=t??{},l=Ie.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:Ad(i.aliases),priority:Rd(i.priority),content:r.trim(),location:o,path:e,frontmatter:i,execution:Ed(i)}}catch(n){console.error(`Error parsing command file ${e}:`,n);return}}a(Td,"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(!ae.existsSync(i))continue;let c=Ie.resolve(i);try{c=ae.realpathSync.native?.(i)??ae.realpathSync(i)}catch{c=Ie.resolve(i)}if(!n.has(c)){n.add(c);try{let d=ae.readdirSync(i);for(let u of d){if(!u.endsWith(".md"))continue;let f=Ie.join(i,u),m=Td(f,l);m&&o.push(m)}}catch(d){console.error(`Error scanning directory ${i}:`,d)}}}return o}a(jt,"discoverCommands");function Ft(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){console.error(`Error registering command ${n.name}:`,t)}}a(Ft,"registerDiscoveredCommands");function Di(e,o){Ut(e);try{let n=Oi.homedir(),t=o??process.cwd(),r=jt([{path:Ht.join(t,".kodax","commands"),location:"project"},{path:H("commands"),location:"user"},{path:Ht.join(n,".agents","commands"),location:"user"}]);Ft(r,e)}catch(n){console.error("Failed to discover commands:",n)}}a(Di,"registerAllCommands");function Cd(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(Cd,"summarizeAgentsFiles");function Id(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(Id,"createManualCompactionConfig");function Bt(e){e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace unchanged: ${st(e.runtimeInfo)}`)):console.log(s.dim(" Workspace unchanged."))}a(Bt,"printWorkspaceUnchangedNote");var Ni=[{name:"help",aliases:["h","?"],description:"Show all available commands",usage:"/help [command]",handler:a(async e=>{if(e.length>0){let o=e[0];le.size===0&&pn(),le.has(o.toLowerCase())||!!gn(o)?qt(o):Bd(o)}else Hd()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
364
364
  /help - Show Command Help
365
365
  `)),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(`
366
366
  Session saved. Goodbye!`)),await n.exit()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
@@ -379,15 +379,15 @@ Session saved. Goodbye!`)),await n.exit()},"handler"),detailedHelp:a(()=>{consol
379
379
  Pasted content in this session:
380
380
  `));for(let r of t){let i=r.content?.length??0,l=r.contentHash?` (hash ${r.contentHash.slice(0,8)})`:"";console.log(` ${s.cyan(`#${r.id}`)} ${r.type} ${i} chars${l}`)}console.log();return}if(o==="show"){let t=e[1],r=t?Number.parseInt(t,10):NaN;if(!Number.isFinite(r)||r<=0){console.log(s.yellow(`
381
381
  Usage: /paste show <id>`));return}let i=n.get(r);if(!i){console.log(s.dim(`
382
- [No paste registered with id #${r}]`));return}let l=i.content??"";if(!l&&i.contentHash){let c=await Li(i.contentHash);c&&(l=c)}if(!l){console.log(s.yellow(`
382
+ [No paste registered with id #${r}]`));return}let l=i.content??"";if(!l&&i.contentHash){let c=await Wi(i.contentHash);c&&(l=c)}if(!l){console.log(s.yellow(`
383
383
  [Paste #${r} has no stored content (hash ${i.contentHash??"n/a"})]`));return}console.log(s.bold(`
384
384
  Pasted text #${r} (${l.length} chars):
385
385
  `)),console.log(l),console.log();return}console.log(s.yellow(`
386
386
  [Unknown /paste subcommand: ${o}]`)),console.log(s.dim(" Try /paste show <id> or /paste list"))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
387
387
  /paste - Inspect stored paste contents
388
- `)),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 Kr(o.gitRoot),i=t.provider,l=An(i);if(!l){console.log(s.red(`
389
- [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??Rn(o.messages),f=Cd(r,u,d);console.log(s.dim(`
390
- [Compacting conversation...]`)),n.startCompacting?.();try{let m=await hr(o.messages,f,l,d,c,void 0,u,Er,Tr,t.model);if(!m.compacted){console.log(s.green(`
388
+ `)),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 Xr(o.gitRoot),i=t.provider,l=Rn(i);if(!l){console.log(s.red(`
389
+ [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??En(o.messages),f=Id(r,u,d);console.log(s.dim(`
390
+ [Compacting conversation...]`)),n.startCompacting?.();try{let m=await yr(o.messages,f,l,d,c,void 0,u,Tr,Cr,t.model);if(!m.compacted){console.log(s.green(`
391
391
  [No compaction needed]`)),console.log(s.dim(`Current token usage: ${m.tokensBefore.toLocaleString()}
392
392
  `));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(`
393
393
  [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(`
@@ -396,33 +396,33 @@ Pasted text #${r} (${l.length} chars):
396
396
  /compact - Manual Context Compaction
397
397
  `)),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 and active extensions",handler:a(async(e,o,n,t)=>{console.log(s.cyan(`
398
398
  Reloading project rule files and runtime extensions...
399
- `));try{let r=await n.reloadAgentsFiles?.()??[],i=Td(r),l=te(),c=l?Ve(l).loadedExtensions.length:0,d=l?Ve(l).failures.length:0,u=0,f=0;if(l){await l.reloadExtensions({continueOnError:!0});let m=Ve(l);u=c||m.loadedExtensions.length,f=Math.max(0,m.failures.length-d)}if(r.length===0&&u===0){console.log(s.yellow(`No project rule files or active extensions found.
399
+ `));try{let r=await n.reloadAgentsFiles?.()??[],i=Cd(r),l=te(),c=l?Ye(l).loadedExtensions.length:0,d=l?Ye(l).failures.length:0,u=0,f=0;if(l){await l.reloadExtensions({continueOnError:!0});let m=Ye(l);u=c||m.loadedExtensions.length,f=Math.max(0,m.failures.length-d)}if(r.length===0&&u===0){console.log(s.yellow(`No project rule files or active extensions found.
400
400
  `)),console.log(s.dim(" Create AGENTS.md or CLAUDE.md in your project, or load extensions with --extension.")),console.log();return}console.log(s.green(`Rules reloaded successfully:
401
401
  `)),i.global>0&&console.log(s.dim(` - Global: ${i.global} file(s)`)),i.directory>0&&console.log(s.dim(` - Directory: ${i.directory} file(s)`)),i.project>0&&console.log(s.dim(` - Project: ${i.project} file(s)`)),u>0&&console.log(s.dim(` - Extensions: ${u} module(s)`)),f>0&&console.log(s.yellow(` - Failures: ${f} recorded (run /extensions for details)`)),console.log(s.dim(" Updated rules will apply to subsequent requests in this session.")),console.log();return}catch(r){console.log(s.red(`Failed to reload rules.
402
402
  `)),console.log(s.dim(` Error: ${r instanceof Error?r.message:String(r)}`)),console.log()}},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
403
403
  /reload - Reload Project Rules
404
404
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /reload ")+"Reload project rule files and active extensions"),console.log(),console.log(s.bold("Description:")),console.log(" Reloads project-level context rules from AGENTS.md, CLAUDE.md, and .kodax/AGENTS.md files."),console.log(" If a runtime extension host is active, it also hot-reloads loaded extensions."),console.log(),console.log(s.bold("Rule Priority:")),console.log(s.dim(" 1. Global: ")+"~/.kodax/AGENTS.md"),console.log(s.dim(" 2. Directory: ")+"AGENTS.md or CLAUDE.md from project root to current directory"),console.log(s.dim(" 3. Project: ")+".kodax/AGENTS.md at the project root"),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /reload ")+"# Reload and show loaded rules"),console.log()},"detailedHelp")},{name:"extensions",aliases:["ext"],description:"Show active extension runtime diagnostics",usage:"/extensions",handler:a(async()=>{let e=te();if(!e){console.log(s.yellow(`
405
405
  [No active extension runtime]
406
- `));return}let o=Ve(e),n=o.tools.filter(t=>t.source.kind==="extension");if(console.log(s.bold(`
406
+ `));return}let o=Ye(e),n=o.tools.filter(t=>t.source.kind==="extension");if(console.log(s.bold(`
407
407
  Extension Runtime:
408
- `)),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=Vd(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 Bd(o,t,e)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
408
+ `)),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=Yd(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 Gd(o,t,e)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
409
409
  /status - Show Session Status
410
410
  `)),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(" /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=te();if(!o){console.log(s.yellow(`
411
- [No extension runtime active \u2014 MCP is not available]`));return}let t=Ve(o).capabilityProviders.find(c=>c.id==="mcp");if((e[0]?.toLowerCase()??"status")==="refresh"){console.log(s.dim(`
411
+ [No extension runtime active \u2014 MCP is not available]`));return}let t=Ye(o).capabilityProviders.find(c=>c.id==="mcp");if((e[0]?.toLowerCase()??"status")==="refresh"){console.log(s.dim(`
412
412
  Refreshing MCP catalogs...`));try{await o.refreshCapabilityProviders("mcp"),console.log(s.green("MCP catalogs refreshed."))}catch(c){console.log(s.red(`Refresh failed: ${c instanceof Error?c.message:String(c)}`))}return}if(console.log(s.cyan(`
413
413
  MCP Status
414
414
  `)),!t){console.log(s.yellow(" No MCP provider registered.")),console.log(s.dim(` Add mcpServers to ~/.kodax/config.json to enable MCP.
415
415
  `));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(`
416
416
  /mcp - MCP Server Management
417
- `)),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 Io({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace,probe:!0,workspaceRoot:Gt(o)});Fi(i);return}if(r==="mode"){if(e.length===1){console.log(s.dim(`
417
+ `)),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 _o({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace,probe:!0,workspaceRoot:zt(o)});Hi(i);return}if(r==="mode"){if(e.length===1){console.log(s.dim(`
418
418
  Current repo-intelligence mode: ${s.cyan(t.repoIntelligenceMode??"auto")}`)),console.log(s.dim(`Usage: /repo-intel mode [auto|full|light|off]
419
- `));return}let i=Pd(e[1]);if(!i){console.log(s.red(`
419
+ `));return}let i=Ld(e[1]);if(!i){console.log(s.red(`
420
420
  [Invalid repo-intelligence mode: ${e[1]}]`)),console.log(s.dim(`Usage: /repo-intel mode [auto|full|light|off]
421
- `));return}let l=ji({mode:i},{repoIntelligenceMode:i},n,t);ye(`Repo intelligence mode: ${i}`,l);return}if(r==="trace"){let i=e[1]?.toLowerCase();if(!i){console.log(s.dim(`
421
+ `));return}let l=Fi({mode:i},{repoIntelligenceMode:i},n,t);ye(`Repo intelligence mode: ${i}`,l);return}if(r==="trace"){let i=e[1]?.toLowerCase();if(!i){console.log(s.dim(`
422
422
  Current repo-intelligence trace: ${s.cyan(t.repoIntelligenceTrace?"on":"off")}`)),console.log(s.dim(`Usage: /repo-intel trace [on|off|toggle]
423
- `));return}let l=Ld(i,t.repoIntelligenceTrace??!1);if(l===null){console.log(s.red(`
423
+ `));return}let l=Wd(i,t.repoIntelligenceTrace??!1);if(l===null){console.log(s.red(`
424
424
  [Invalid trace value: ${e[1]}]`)),console.log(s.dim(`Usage: /repo-intel trace [on|off|toggle]
425
- `));return}let c=ji({trace:l},{repoIntelligenceTrace:l},n,t);ye(`Repo intelligence trace: ${l?"on":"off"}`,c);return}if(r==="refresh"){console.log(s.yellow(`
425
+ `));return}let c=Fi({trace:l},{repoIntelligenceTrace:l},n,t);ye(`Repo intelligence trace: ${l?"on":"off"}`,c);return}if(r==="refresh"){console.log(s.yellow(`
426
426
  [Repo intelligence refresh is automatic in this build]`)),console.log(s.dim(`Use /repo-intel status to inspect the current engine state.
427
427
  `));return}console.log(s.red(`
428
428
  [Unknown /repo-intel subcommand: ${e[0]}]`)),console.log(s.dim(`Usage: /repo-intel [status|mode|trace]
@@ -430,7 +430,7 @@ Current repo-intelligence trace: ${s.cyan(t.repoIntelligenceTrace?"on":"off")}`)
430
430
  /repo-intel - Built-in Repo Intelligence
431
431
  `)),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(`
432
432
  [/repointel is deprecated; use /repo-intel status]
433
- `)),r==="status"){let i=await Io({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace,probe:!0,workspaceRoot:Gt(o)});Fi(i);return}if(r==="mode"){console.log(s.dim(`Use /repo-intel mode [auto|full|light|off] to change repo-intelligence mode.
433
+ `)),r==="status"){let i=await _o({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace,probe:!0,workspaceRoot:zt(o)});Hi(i);return}if(r==="mode"){console.log(s.dim(`Use /repo-intel mode [auto|full|light|off] to change repo-intelligence mode.
434
434
  `));return}if(r==="trace"){console.log(s.dim(`Use /repo-intel trace [on|off|toggle] to change repo-intelligence trace output.
435
435
  `));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.
436
436
  `));return}console.log(s.dim(`Usage: /repointel [status]
@@ -446,8 +446,8 @@ Child-task provider fallback: `)+s.green("on")),console.log(s.dim(" Order: ")+s
446
446
  [/fallback: no provider ids given]`)),console.log(s.dim(`Usage: /fallback ark-coding,kimi-code (or /fallback off)
447
447
  `));return}ve({fallbackProviders:l}),process.env.KODAX_FALLBACK_PROVIDERS=l.join(","),console.log(s.green(`
448
448
  \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).
449
- `))},"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=so(t.permissionMode,"accept-edits")??"accept-edits";console.log(s.dim(`
450
- Current mode: ${s.cyan(i)}`)),console.log(s.dim("Usage: /mode [plan|accept-edits|auto]"));return}let r=e[0];No.includes(r)?(t.permissionMode=r,n.setPermissionMode?.(r),Xn(r),console.log(s.cyan(`
449
+ `))},"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=io(t.permissionMode,"accept-edits")??"accept-edits";console.log(s.dim(`
450
+ Current mode: ${s.cyan(i)}`)),console.log(s.dim("Usage: /mode [plan|accept-edits|auto]"));return}let r=e[0];Oo.includes(r)?(t.permissionMode=r,n.setPermissionMode?.(r),Vn(r),console.log(s.cyan(`
451
451
  [Switched to ${r} mode] (saved)`))):console.log(s.red(`
452
452
  [Unknown mode: ${e[0]}. Use: plan | accept-edits | auto]`))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
453
453
  /mode - Switch Permission Mode
@@ -462,7 +462,7 @@ Classifier engine: ${s.cyan(t.engine)}`)),console.log(s.dim(` consecutive denia
462
462
  [auto-mode classifier stats]`)),console.log(s.dim(` engine: ${s.cyan(t.engine)}`)),console.log(s.dim(" Denial tracker:")),console.log(s.dim(` consecutive blocks: ${t.denials.consecutive} / 3`)),console.log(s.dim(` cumulative blocks: ${t.denials.cumulative} / 20`)),console.log(s.dim(" Circuit breaker:")),console.log(s.dim(` errors in window: ${t.breaker.timestamps.filter(r=>r>=Date.now()-600*1e3).length} / 5 (10 min)`)),console.log(),t.engine==="rules"&&console.log(s.yellow(" \u21AA engine has downgraded to rules. /auto-engine llm to flip back.")),console.log()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
463
463
  /auto-denials - Auto-Mode Classifier Diagnostic Dump
464
464
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /auto-denials ")+"Print engine + tracker + breaker counters"),console.log(),console.log(s.bold("Thresholds (FEATURE_092):")),console.log(s.dim(" - 3 consecutive blocks \u2192 engine downgrade to rules")),console.log(s.dim(" - 20 cumulative blocks \u2192 engine downgrade to rules")),console.log(s.dim(" - 5 errors in 10-min \u2192 circuit breaker trips \u2192 engine downgrade")),console.log()},"detailedHelp")},{name:"save",description:"Save current session",handler:a(async(e,o,n)=>{await n.saveSession(),console.log(s.green(`
465
- [Session saved]`)),Ht(o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
465
+ [Session saved]`)),Bt(o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
466
466
  /save - Save Current Session
467
467
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /save ")+"Save current conversation to session storage"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" Manually saves the current conversation session.")),console.log(s.dim(" Sessions are auto-saved after each message, but you can")),console.log(s.dim(" use this to ensure the session is persisted.")),console.log(s.dim(" Saving updates session storage only; the current workspace stays untouched.")),console.log(),console.log(s.dim(" See also: /help load, /help sessions")),console.log()},"detailedHelp")},{name:"load",aliases:["resume"],description:"Load a session",usage:"/load <session-id>",handler:a(async(e,o,n)=>{if(e.length===0){console.log(s.red(`
468
468
  [Usage: /load <session-id>]`)),await n.listSessions();return}await n.loadSession(e[0])==="missing"&&console.log(s.red(`
@@ -487,114 +487,114 @@ Classifier engine: ${s.cyan(t.engine)}`)),console.log(s.dim(` consecutive denia
487
487
  /history - Show Conversation History
488
488
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /history ")+"Display recent messages in current session"),console.log(s.dim(" /hist ")+"Alias for /history"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" Shows the last 20 messages in the current conversation.")),console.log(s.dim(" Useful for reviewing what has been discussed.")),console.log()},"detailedHelp")},{name:"delete",aliases:["rm","del"],description:"Delete a session",usage:"/delete <session-id> or /delete all",handler:a(async(e,o,n)=>{if(e.length===0){console.log(s.red(`
489
489
  [Usage: /delete <session-id> or /delete all]`)),await n.listSessions?.();return}e[0]==="all"?(await n.deleteAllSessions?.(),console.log(s.green(`
490
- [All sessions deleted]`)),Ht(o)):(await n.deleteSession?.(e[0]),console.log(s.green(`
491
- [Session deleted: ${e[0]}]`)),Ht(o))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
490
+ [All sessions deleted]`)),Bt(o)):(await n.deleteSession?.(e[0]),console.log(s.green(`
491
+ [Session deleted: ${e[0]}]`)),Bt(o))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
492
492
  /delete - Delete Saved Sessions
493
- `)),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=Wo().providerModels;if(e.length===0){console.log(s.bold(`
493
+ `)),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=No().providerModels;if(e.length===0){console.log(s.bold(`
494
494
  Available Providers:
495
- `));let c=Hr(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,h=m?s.cyan(" *"):"";console.log(` ${s.bold(d.name)}${h} ${u}${f}`),d.capabilityProfile.transport==="cli-bridge"&&console.log(s.yellow(` ! ${Mn(d.capabilityProfile)}`));let k=Oe(d.name,r),y=m?t.model:null;for(let v of k){let R=m&&(y===v||!y&&v===d.model)?s.cyan(">"):" ";console.log(` ${R} ${v}`)}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
495
+ `));let c=Br(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,h=m?s.cyan(" *"):"";console.log(` ${s.bold(d.name)}${h} ${u}${f}`),d.capabilityProfile.transport==="cli-bridge"&&console.log(s.yellow(` ! ${Mn(d.capabilityProfile)}`));let k=De(d.name,r),y=m?t.model:null;for(let v of k){let R=m&&(y===v||!y&&v===d.model)?s.cyan(">"):" ";console.log(` ${R} ${v}`)}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
496
496
  `));return}let i=(e[0]??"").trim();if(!i)return;if(i.startsWith("/")){let c=i.slice(1);if(!c){console.log(s.red(`
497
- [Missing model name after /]`));return}let d=Oe(t.provider,r);if(!d.includes(c)){console.log(s.red(`
497
+ [Missing model name after /]`));return}let d=De(t.provider,r);if(!d.includes(c)){console.log(s.red(`
498
498
  [Unknown model: ${c}]`)),console.log(s.dim(`Available models for ${t.provider}: ${d.join(", ")}
499
499
  `));return}ve({model:c}),n.switchProvider?.(t.provider,c),console.log(s.cyan(`
500
500
  [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(`
501
- [Invalid format. Use: /model <provider>/<model>]`));return}if(!Ie(d)){console.log(s.red(`
502
- [Unknown provider: ${d}]`)),console.log(s.dim(`Available: ${_e().join(", ")}
503
- `));return}let f=Oe(d,r);if(!f.includes(u)){console.log(s.red(`
501
+ [Invalid format. Use: /model <provider>/<model>]`));return}if(!_e(d)){console.log(s.red(`
502
+ [Unknown provider: ${d}]`)),console.log(s.dim(`Available: ${Pe().join(", ")}
503
+ `));return}let f=De(d,r);if(!f.includes(u)){console.log(s.red(`
504
504
  [Unknown model: ${u}]`)),console.log(s.dim(`Available models for ${d}: ${f.join(", ")}
505
505
  `));return}ve({provider:d,model:u}),n.switchProvider?.(d,u),console.log(s.cyan(`
506
- [Switched to ${d}/${u}] (saved)`));return}let l=i;Ie(l)?(ve({provider:l,model:void 0}),n.switchProvider?.(l),console.log(s.cyan(`
506
+ [Switched to ${d}/${u}] (saved)`));return}let l=i;_e(l)?(ve({provider:l,model:void 0}),n.switchProvider?.(l),console.log(s.cyan(`
507
507
  [Switched to ${l}] (saved)`))):(console.log(s.red(`
508
- [Unknown provider: ${l}]`)),console.log(s.dim(`Available: ${_e().join(", ")}
508
+ [Unknown provider: ${l}]`)),console.log(s.dim(`Available: ${Pe().join(", ")}
509
509
  `)))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
510
510
  /model - Switch LLM Provider/Model
511
- `)),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){En(),console.log(s.dim(`
511
+ `)),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){Tn(),console.log(s.dim(`
512
512
  [Cleared all learned capability overrides]
513
- `));return}let m=f.indexOf("/"),h=m===-1?f:f.slice(0,m),k=m===-1?void 0:f.slice(m+1)||void 0;En(h,k),console.log(s.dim(`
513
+ `));return}let m=f.indexOf("/"),h=m===-1?f:f.slice(0,m),k=m===-1?void 0:f.slice(m+1)||void 0;Tn(h,k),console.log(s.dim(`
514
514
  [Cleared learned capability overrides for ${h}${k?`/${k}`:""}]
515
- `));return}if(r==="probe"){let f=Lo(t.provider,t.model).filter(h=>h!=="auto"&&h!=="off"),m=`${t.provider}/${t.model??"(default)"}`;console.log(s.dim(`
516
- [Probing ${m} \u2014 ${f.length} efforts, minimal requests\u2026]`));try{let h=await es({provider:t.provider,model:t.model,efforts:f,resolve:An,now:a(()=>new Date().toISOString(),"now")});for(let k of h){let y=k.status==="accepted"?s.green("\u2713"):k.status==="rejected"?s.red("\u2717"):s.yellow("!");console.log(s.dim(` ${y} ${k.effort}${k.error?` \u2014 ${k.error}`:""}`))}console.log(s.dim(` (rejections recorded; undo with /provider forget-capability)
515
+ `));return}if(r==="probe"){let f=Wo(t.provider,t.model).filter(h=>h!=="auto"&&h!=="off"),m=`${t.provider}/${t.model??"(default)"}`;console.log(s.dim(`
516
+ [Probing ${m} \u2014 ${f.length} efforts, minimal requests\u2026]`));try{let h=await os({provider:t.provider,model:t.model,efforts:f,resolve:Rn,now:a(()=>new Date().toISOString(),"now")});for(let k of h){let y=k.status==="accepted"?s.green("\u2713"):k.status==="rejected"?s.red("\u2717"):s.yellow("!");console.log(s.dim(` ${y} ${k.effort}${k.error?` \u2014 ${k.error}`:""}`))}console.log(s.dim(` (rejections recorded; undo with /provider forget-capability)
517
517
  `))}catch(h){let k=h instanceof Error?h.message:String(h);console.log(s.red(`
518
518
  [Probe failed: ${k}]
519
- `))}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(!Ie(i)){console.log(s.red(`
520
- [Unknown provider: ${i}]`)),console.log(s.dim(`Available: ${_e().join(", ")}
521
- `));return}let c=Ur(i,l);if(!c){console.log(s.red(`
522
- [Provider details unavailable: ${i}]`)),console.log();return}let d=qr(i,l,t.reasoningMode);console.log(s.bold(`
519
+ `))}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(!_e(i)){console.log(s.red(`
520
+ [Unknown provider: ${i}]`)),console.log(s.dim(`Available: ${Pe().join(", ")}
521
+ `));return}let c=jr(i,l);if(!c){console.log(s.red(`
522
+ [Provider details unavailable: ${i}]`)),console.log();return}let d=Kr(i,l,t.reasoningMode);console.log(s.bold(`
523
523
  Provider Details:
524
- `)),console.log(s.dim(` Provider: ${s.cyan(c.provider)}${c.model?` / ${s.cyan(c.model)}`:""}`)),console.log(s.dim(` Source: ${Gr(c.sourceKind)}`)),console.log(),console.log(s.bold("Capability Matrix:"));for(let f of zr(c))console.log(s.dim(` - ${f}`));console.log(s.dim(` - Session effort: ${Gi(t.effort)}`));let u=sr(i,l);if(u.length>0&&console.log(s.dim(` - Learned unsupported: ${u.join(", ")} (clear with /provider forget-capability)`)),console.log(),d.length>0){console.log(s.bold("Common Scenarios:"));for(let f of d){let m=f.decision.status==="block"?s.red:f.decision.status==="warn"?s.yellow:s.green;console.log(m(` - ${f.label}: ${f.decision.status.toUpperCase()}`)),console.log(s.dim(` ${f.decision.summary}`))}console.log()}},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
524
+ `)),console.log(s.dim(` Provider: ${s.cyan(c.provider)}${c.model?` / ${s.cyan(c.model)}`:""}`)),console.log(s.dim(` Source: ${zr(c.sourceKind)}`)),console.log(),console.log(s.bold("Capability Matrix:"));for(let f of qr(c))console.log(s.dim(` - ${f}`));console.log(s.dim(` - Session effort: ${zi(t.effort)}`));let u=ir(i,l);if(u.length>0&&console.log(s.dim(` - Learned unsupported: ${u.join(", ")} (clear with /provider forget-capability)`)),console.log(),d.length>0){console.log(s.bold("Common Scenarios:"));for(let f of d){let m=f.decision.status==="block"?s.red:f.decision.status==="warn"?s.yellow:s.green;console.log(m(` - ${f.label}: ${f.decision.status.toUpperCase()}`)),console.log(s.dim(` ${f.decision.summary}`))}console.log()}},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
525
525
  /provider - Inspect Provider Semantics
526
- `)),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=_n(t.provider,t.model),l=t.thinking?s.green("ON"):s.dim("OFF");console.log(s.dim(`
527
- Thinking: ${l}`)),console.log(s.dim(`Reasoning mode: ${s.cyan(t.reasoningMode)}`)),console.log(s.dim(`Effective control: ${s.cyan(Pn(i))}`)),console.log(s.dim(`Actual execution: ${Ln(t.reasoningMode,i)}`)),console.log(s.dim(`Usage: /thinking on|off|auto|quick|balanced|deep
528
- `));return}let r=e[0].toLowerCase();if(r==="on"||r==="off"||xn.includes(r)){let i=r==="on"?"auto":r==="off"?"off":r,l=Ui(i,n,t);ye(`Reasoning mode: ${i}`,l);return}console.log(s.red(`
526
+ `)),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=Pn(t.provider,t.model),l=t.thinking?s.green("ON"):s.dim("OFF");console.log(s.dim(`
527
+ Thinking: ${l}`)),console.log(s.dim(`Reasoning mode: ${s.cyan(t.reasoningMode)}`)),console.log(s.dim(`Effective control: ${s.cyan(Ln(i))}`)),console.log(s.dim(`Actual execution: ${Wn(t.reasoningMode,i)}`)),console.log(s.dim(`Usage: /thinking on|off|auto|quick|balanced|deep
528
+ `));return}let r=e[0].toLowerCase();if(r==="on"||r==="off"||An.includes(r)){let i=r==="on"?"auto":r==="off"?"off":r,l=ji(i,n,t);ye(`Reasoning mode: ${i}`,l);return}console.log(s.red(`
529
529
  [Invalid value: ${e[0]}]`)),console.log(s.dim(`Usage: /thinking on|off|auto|quick|balanced|deep
530
530
  `))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
531
531
  /thinking - Legacy Alias for Reasoning Mode
532
- `)),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=_n(t.provider,t.model);console.log(s.dim(`
533
- 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(Pn(l))}`)),console.log(s.dim(`Actual execution: ${Ln(t.reasoningMode,l)}`)),console.log(s.dim(`Usage: /reasoning off|auto|quick|balanced|deep
534
- `));return}let r=e[0].toLowerCase();if(!xn.includes(r)){console.log(s.red(`
532
+ `)),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=Pn(t.provider,t.model);console.log(s.dim(`
533
+ 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(Ln(l))}`)),console.log(s.dim(`Actual execution: ${Wn(t.reasoningMode,l)}`)),console.log(s.dim(`Usage: /reasoning off|auto|quick|balanced|deep
534
+ `));return}let r=e[0].toLowerCase();if(!An.includes(r)){console.log(s.red(`
535
535
  [Invalid reasoning mode: ${e[0]}]`)),console.log(s.dim(`Usage: /reasoning off|auto|quick|balanced|deep
536
- `));return}let i=Ui(r,n,t);ye(`Reasoning mode: ${r}`,i)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
536
+ `));return}let i=ji(r,n,t);ye(`Reasoning mode: ${r}`,i)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
537
537
  /reasoning - Set Reasoning Mode
538
- `)),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=Md(t);if(e.length===0){let f=Di(t);console.log(s.dim(`
539
- Reasoning effort: ${s.cyan(f)}`)),console.log(s.dim(`Compatibility: ${s.cyan(t.reasoningMode)}`)),console.log(s.dim(`Available: ${Lo(t.provider,t.model).join(", ")}`)),console.log(s.dim(`${r}
538
+ `)),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=Md(t);if(e.length===0){let f=Ui(t);console.log(s.dim(`
539
+ Reasoning effort: ${s.cyan(f)}`)),console.log(s.dim(`Compatibility: ${s.cyan(t.reasoningMode)}`)),console.log(s.dim(`Available: ${Wo(t.provider,t.model).join(", ")}`)),console.log(s.dim(`${r}
540
540
  `));return}if(e.length>1){console.log(s.red(`
541
541
  [Reasoning effort accepts exactly one value]`)),console.log(s.dim(`${r}
542
- `));return}let i=e[0],l;try{l=rr(i)}catch(f){let m=f instanceof Error?f.message:String(f);console.log(s.red(`
542
+ `));return}let i=e[0],l;try{l=sr(i)}catch(f){let m=f instanceof Error?f.message:String(f);console.log(s.red(`
543
543
  [Invalid reasoning effort: ${m}]`)),console.log(s.dim(`${r}
544
- `));return}let c=l==="auto"||l==="unset"||l==="clear"||l==="reset"?void 0:l,d=Wd(c,t),u=Nd(c,n,t);ye(`Reasoning effort: ${Di(d)}`,u)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
544
+ `));return}let c=l==="auto"||l==="unset"||l==="clear"||l==="reset"?void 0:l,d=Nd(c,t),u=Od(c,n,t);ye(`Reasoning effort: ${Ui(d)}`,u)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
545
545
  /effort - Set Native Reasoning Effort
546
546
  `)),console.log(s.bold("Usage:")),console.log(s.dim(" /effort ")+"Show current native reasoning effort"),console.log(s.dim(" /effort auto ")+"Clear the explicit effort override"),console.log(s.dim(" /effort off ")+"Disable reasoning effort"),console.log(s.dim(" /effort low ")+"Use low native reasoning effort"),console.log(s.dim(" /effort medium ")+"Use medium native reasoning effort"),console.log(s.dim(" /effort high ")+"Use high native reasoning effort"),console.log(s.dim(" /effort xhigh ")+"Use extra-high effort when the model supports it"),console.log(s.dim(" /effort max ")+"Use max effort when the model supports it"),console.log(s.dim(" /effort none ")+"Legacy alias for /effort off"),console.log(s.dim(`
547
547
  Run /effort to see the active model's supported values.`)),console.log()},"detailedHelp")},{name:"agent-mode",aliases:["am"],description:"Show or set agent mode",usage:"/agent-mode [ama|amaw|ama-workflow|sa|toggle]",handler:a(async(e,o,n,t)=>{if(e.length===0){console.log(s.dim(`
548
548
  Agent mode: ${s.cyan(t.agentMode.toUpperCase())}`)),console.log(s.dim(`Usage: /agent-mode [ama|amaw|ama-workflow|sa|toggle]
549
- `));return}let r=e[0]?.toLowerCase(),i=r==="toggle"?Ts(t.agentMode):r==="ama"||r==="sa"||r==="amaw"?r:r==="ama-workflow"?"amaw":void 0;if(!i){console.log(s.red(`
549
+ `));return}let r=e[0]?.toLowerCase(),i=r==="toggle"?Cs(t.agentMode):r==="ama"||r==="sa"||r==="amaw"?r:r==="ama-workflow"?"amaw":void 0;if(!i){console.log(s.red(`
550
550
  [Invalid agent mode: ${e[0]}]`)),console.log(s.dim(`Usage: /agent-mode [ama|amaw|ama-workflow|sa|toggle]
551
- `));return}let l=Od(i,n,t);ye(`Agent mode: ${i.toUpperCase()}`,l)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
551
+ `));return}let l=Dd(i,n,t);ye(`Agent mode: ${i.toUpperCase()}`,l)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
552
552
  /agent-mode - Adaptive Multi-Agent Mode Control
553
- `)),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"),Xn("auto"),console.log(s.cyan(`
553
+ `)),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"),Vn("auto"),console.log(s.cyan(`
554
554
  [Switched to auto mode] (saved)`))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
555
555
  /auto - Quick Switch to Auto Mode
556
- `)),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 Be(Xo(o),"skill");return}await Gd(e,o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
556
+ `)),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 Ge(Vo(o),"skill");return}await zd(e,o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
557
557
  /skill - Skill Namespace
558
- `)),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 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(" /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=Wo().verifierLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
558
+ `)),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 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(" /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=No().verifierLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
559
559
  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]
560
560
  `));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(`
561
561
  [Invalid value: ${e[0]}]`)),console.log(s.dim(`Usage: /verifier-log [on|off]
562
- `));return}t?process.env.KODAX_VERIFIER_LOG="1":delete process.env.KODAX_VERIFIER_LOG;let r=Ye({verifierLog:t});ye(`Sidecar Verifier log: ${t?"on":"off"}`,r)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
562
+ `));return}t?process.env.KODAX_VERIFIER_LOG="1":delete process.env.KODAX_VERIFIER_LOG;let r=Je({verifierLog:t});ye(`Sidecar Verifier log: ${t?"on":"off"}`,r)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
563
563
  /verifier-log - Sidecar Verifier Log Toggle
564
- `)),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=Wo().stallLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
564
+ `)),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=No().stallLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
565
565
  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]
566
566
  `));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(`
567
567
  [Invalid value: ${e[0]}]`)),console.log(s.dim(`Usage: /stall-log [on|off]
568
- `));return}t?process.env.KODAX_STALL_LOG="1":delete process.env.KODAX_STALL_LOG;let r=Ye({stallLog:t});ye(`Stall Sidecar log: ${t?"on":"off"}`,r)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
568
+ `));return}t?process.env.KODAX_STALL_LOG="1":delete process.env.KODAX_STALL_LOG;let r=Je({stallLog:t});ye(`Stall Sidecar log: ${t?"on":"off"}`,r)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
569
569
  /stall-log - Stall Sidecar Log Toggle
570
- `)),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")},et,ot,nt,Zs,xi,It,_t,Ri,Pt],Id={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 _d(e){let o=$o();return e.map(n=>o.get(n)).filter(n=>n!==void 0).filter(n=>n.userInvocable!==!1)}a(_d,"getCommandsForCategory");function qt(e){return e!=="off"}a(qt,"reasoningModeToLegacyThinking");function Gi(e){return e==="none"?"off":e??"auto"}a(Gi,"formatReasoningEffortDisplay");function Md(e){return`Usage: /effort ${Lo(e.provider,e.model).join("|")}|<provider-value>`}a(Md,"formatReasoningEffortUsage");function Di(e){let o=Br(e);return Fr({provider:e.provider,model:e.model,effort:o,effortOverride:e.effortOverride,thinking:e.thinking,reasoningMode:e.reasoningMode})}a(Di,"formatCurrentReasoningEffortStatus");function Pd(e){let o=e?.trim().toLowerCase();return o==="auto"?"auto":o==="full"?"full":o==="light"?"light":o==="off"?"off":null}a(Pd,"normalizeRepoIntelPublicMode");function Ld(e,o){return e?e==="toggle"?!o:e==="on"||e==="true"||e==="1"?!0:e==="off"||e==="false"||e==="0"?!1:null:null}a(Ld,"resolveToggleFlag");function Ye(e){try{return ve(e),{saved:!0}}catch(o){return{saved:!1,error:o instanceof Error?o:new Error(String(o))}}}a(Ye,"persistUserConfig");function ye(e,o){if(o.saved){console.log(s.cyan(`
570
+ `)),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")},ot,nt,tt,Qs,Ai,_t,Pt,Ei,Lt],_d={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 Pd(e){let o=bo();return e.map(n=>o.get(n)).filter(n=>n!==void 0).filter(n=>n.userInvocable!==!1)}a(Pd,"getCommandsForCategory");function Kt(e){return e!=="off"}a(Kt,"reasoningModeToLegacyThinking");function zi(e){return e==="none"?"off":e??"auto"}a(zi,"formatReasoningEffortDisplay");function Md(e){return`Usage: /effort ${Wo(e.provider,e.model).join("|")}|<provider-value>`}a(Md,"formatReasoningEffortUsage");function Ui(e){let o=Gr(e);return Hr({provider:e.provider,model:e.model,effort:o,effortOverride:e.effortOverride,thinking:e.thinking,reasoningMode:e.reasoningMode})}a(Ui,"formatCurrentReasoningEffortStatus");function Ld(e){let o=e?.trim().toLowerCase();return o==="auto"?"auto":o==="full"?"full":o==="light"?"light":o==="off"?"off":null}a(Ld,"normalizeRepoIntelPublicMode");function Wd(e,o){return e?e==="toggle"?!o:e==="on"||e==="true"||e==="1"?!0:e==="off"||e==="false"||e==="0"?!1:null:null}a(Wd,"resolveToggleFlag");function Je(e){try{return ve(e),{saved:!0}}catch(o){return{saved:!1,error:o instanceof Error?o:new Error(String(o))}}}a(Je,"persistUserConfig");function ye(e,o){if(o.saved){console.log(s.cyan(`
571
571
  [${e}] (saved)`));return}console.log(s.yellow(`
572
- [${e}]`)),console.log(s.red(`[Config save failed: ${o.error.message}]`))}a(ye,"printPersistedCommandStatus");function Ui(e,o,n){let t=qt(e),r=e!=="off"&&n.effort==="none",i=Ye({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(Ui,"applyReasoningMode");function zi(e){return e==="none"?"off":"auto"}a(zi,"resolveReasoningModeAfterEffort");function Wd(e,o){let n=zi(e);return{...o,effort:e,effortOverride:e!==void 0,reasoningMode:n,thinking:qt(n)}}a(Wd,"resolveConfigAfterReasoningEffort");function Nd(e,o,n){let t=zi(e),r=qt(t),i=Ye({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(Nd,"applyReasoningEffort");function Od(e,o,n){let t=Ye({agentMode:e});return o.setAgentMode?o.setAgentMode(e):n.agentMode=e,t}a(Od,"applyAgentMode");function ji(e,o,n,t){let r=Ye(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(ji,"applyRepoIntelligenceRuntimeConfig");function Dd(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(Dd,"formatRepoIntelligenceSummary");function Gt(e){return e.runtimeInfo?.workspaceRoot??e.gitRoot??e.runtimeInfo?.executionCwd}a(Gt,"getRepoIntelInspectionWorkspaceRoot");function Ud(e){return e.status}a(Ud,"formatRepoIntelStatusLabel");function jd(e){return e.effectiveEngine==="off"?"off":e.effectiveEngine}a(jd,"formatRepoIntelActiveEngine");function Fi(e){console.log(s.bold(`
572
+ [${e}]`)),console.log(s.red(`[Config save failed: ${o.error.message}]`))}a(ye,"printPersistedCommandStatus");function ji(e,o,n){let t=Kt(e),r=e!=="off"&&n.effort==="none",i=Je({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(ji,"applyReasoningMode");function qi(e){return e==="none"?"off":"auto"}a(qi,"resolveReasoningModeAfterEffort");function Nd(e,o){let n=qi(e);return{...o,effort:e,effortOverride:e!==void 0,reasoningMode:n,thinking:Kt(n)}}a(Nd,"resolveConfigAfterReasoningEffort");function Od(e,o,n){let t=qi(e),r=Kt(t),i=Je({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(Od,"applyReasoningEffort");function Dd(e,o,n){let t=Je({agentMode:e});return o.setAgentMode?o.setAgentMode(e):n.agentMode=e,t}a(Dd,"applyAgentMode");function Fi(e,o,n,t){let r=Je(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(Fi,"applyRepoIntelligenceRuntimeConfig");function Ud(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(Ud,"formatRepoIntelligenceSummary");function zt(e){return e.runtimeInfo?.workspaceRoot??e.gitRoot??e.runtimeInfo?.executionCwd}a(zt,"getRepoIntelInspectionWorkspaceRoot");function jd(e){return e.status}a(jd,"formatRepoIntelStatusLabel");function Fd(e){return e.effectiveEngine==="off"?"off":e.effectiveEngine}a(Fd,"formatRepoIntelActiveEngine");function Hi(e){console.log(s.bold(`
573
573
  Repo Intelligence:
574
- `)),console.log(s.dim(` Mode: ${s.cyan(e.configuredMode)}`)),console.log(s.dim(` Engine: ${s.cyan(jd(e))}`)),console.log(s.dim(` Status: ${s.cyan(Ud(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(Fi,"printRepoIntelStatus");function Hi(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(Hi,"printCommandSection");function Fd(){console.log(s.bold(`
574
+ `)),console.log(s.dim(` Mode: ${s.cyan(e.configuredMode)}`)),console.log(s.dim(` Engine: ${s.cyan(Fd(e))}`)),console.log(s.dim(` Status: ${s.cyan(jd(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(Hi,"printRepoIntelStatus");function Bi(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(Bi,"printCommandSection");function Hd(){console.log(s.bold(`
575
575
  Available Commands:
576
- `));let e=$o(),o=new Set;for(let[t,r]of Object.entries(Id)){let i=_d(r);if(i.length!==0){for(let l of i)o.add(l.name.toLowerCase());Hi(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 qd()){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"])Hi(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(Fd,"printHelp");function Hd(e){let o=kr({topic:e});console.log(`
576
+ `));let e=bo(),o=new Set;for(let[t,r]of Object.entries(_d)){let i=Pd(r);if(i.length!==0){for(let l of i)o.add(l.name.toLowerCase());Bi(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 Kd()){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"])Bi(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(Hd,"printHelp");function Bd(e){let o=vr({topic:e});console.log(`
577
577
  ${s.cyan(o.title)}`),console.log(o.content),o.nextTopics.length>0&&console.log(s.dim(`
578
- Related topics: ${o.nextTopics.join(", ")}`)),console.log()}a(Hd,"printManualTopic");function zt(e){le.size===0&&mn();let o=le.get(e.toLowerCase());if(!o){let n=pn(e);if(!n){console.log(s.yellow(`
578
+ Related topics: ${o.nextTopics.join(", ")}`)),console.log()}a(Bd,"printManualTopic");function qt(e){le.size===0&&pn();let o=le.get(e.toLowerCase());if(!o){let n=gn(e);if(!n){console.log(s.yellow(`
579
579
  [Unknown command: /${e}. Type /help for available commands]`));return}console.log(s.cyan(`
580
580
  /${n.name}`)),n.aliases?.length&&console.log(s.dim(`Aliases: ${n.aliases.join(", ")}`)),console.log(s.dim(`
581
581
  ${n.description}`)),console.log(s.dim(`
582
- Usage: ${Kd(n)}`)),console.log();return}o.detailedHelp?o.detailedHelp():(console.log(s.cyan(`
582
+ Usage: ${Xd(n)}`)),console.log();return}o.detailedHelp?o.detailedHelp():(console.log(s.cyan(`
583
583
  /${o.name}`)),o.aliases?.length&&console.log(s.dim(`Aliases: ${o.aliases.join(", ")}`)),console.log(s.dim(`
584
584
  ${o.description}`)),o.usage&&console.log(s.dim(`
585
- Usage: ${o.usage}`)),console.log())}a(zt,"printDetailedHelp");async function Bd(e,o,n=[]){let t=n[0]?.toLowerCase(),r=e.contextTokenSnapshot?.currentTokens??Rn(e.messages),i=e.contextTokenSnapshot?.source??"estimate",l=Dr(o.provider),c=jr(o.provider,o.model,o.reasoningMode);if(console.log(s.bold(`
585
+ Usage: ${o.usage}`)),console.log())}a(qt,"printDetailedHelp");async function Gd(e,o,n=[]){let t=n[0]?.toLowerCase(),r=e.contextTokenSnapshot?.currentTokens??En(e.messages),i=e.contextTokenSnapshot?.source??"estimate",l=Ur(o.provider),c=Fr(o.provider,o.model,o.reasoningMode);if(console.log(s.bold(`
586
586
  Session Status:
587
- `)),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(Gi(o.effort))}`)),console.log(s.dim(` Agent Mode: ${s.cyan(o.agentMode.toUpperCase())}`)),l){let u=Mn(l),f=l.transport==="cli-bridge"?s.yellow(u):s.cyan(u);console.log(s.dim(` Provider Cap: ${f}`))}if(c&&c.status!=="allow"){let u=c.status==="block"?s.red:s.yellow;console.log(s.dim(` Provider Policy: ${u(c.summary)}`))}console.log(s.dim(` Session ID: ${e.sessionId}`)),console.log(s.dim(` Messages: ${e.messages.length}`)),console.log(s.dim(` Tokens: ~${r} (${i})`));let d=await Io({mode:o.repoIntelligenceMode,trace:o.repoIntelligenceTrace,probe:!0,workspaceRoot:Gt(e)});console.log(s.dim(` Repo Intel: ${s.cyan(Dd(d))}`)),e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace: ${s.cyan(rt(e.runtimeInfo))}`)):e.gitRoot&&console.log(s.dim(` Workspace: ${s.cyan(e.gitRoot)}`)),(t==="workspace"||t==="worktree"||t==="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}`))),console.log(s.dim(` Created: ${e.createdAt}`)),console.log(s.dim(` Last Active: ${e.lastAccessed}`)),console.log()}a(Bd,"printStatus");async function Gd(e,o){let n=Me(o.gitRoot);n.size===0&&await Pe(o.gitRoot),zd(n.listUserInvocable())}a(Gd,"handleSkillNamespaceCommand");function zd(e){if(console.log(s.bold(`
587
+ `)),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(zi(o.effort))}`)),console.log(s.dim(` Agent Mode: ${s.cyan(o.agentMode.toUpperCase())}`)),l){let u=Mn(l),f=l.transport==="cli-bridge"?s.yellow(u):s.cyan(u);console.log(s.dim(` Provider Cap: ${f}`))}if(c&&c.status!=="allow"){let u=c.status==="block"?s.red:s.yellow;console.log(s.dim(` Provider Policy: ${u(c.summary)}`))}console.log(s.dim(` Session ID: ${e.sessionId}`)),console.log(s.dim(` Messages: ${e.messages.length}`)),console.log(s.dim(` Tokens: ~${r} (${i})`));let d=await _o({mode:o.repoIntelligenceMode,trace:o.repoIntelligenceTrace,probe:!0,workspaceRoot:zt(e)});console.log(s.dim(` Repo Intel: ${s.cyan(Ud(d))}`)),e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace: ${s.cyan(st(e.runtimeInfo))}`)):e.gitRoot&&console.log(s.dim(` Workspace: ${s.cyan(e.gitRoot)}`)),(t==="workspace"||t==="worktree"||t==="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}`))),console.log(s.dim(` Created: ${e.createdAt}`)),console.log(s.dim(` Last Active: ${e.lastAccessed}`)),console.log()}a(Gd,"printStatus");async function zd(e,o){let n=Me(o.gitRoot);n.size===0&&await Le(o.gitRoot),qd(n.listUserInvocable())}a(zd,"handleSkillNamespaceCommand");function qd(e){if(console.log(s.bold(`
588
588
  Available Skills:
589
589
  `)),e.length===0){console.log(s.dim(" No skills found.")),console.log(s.dim(`
590
- 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=$o(),n=e.map(r=>{let i=o.get(r.name)!==void 0||pn(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(zd,"printSkillsListPiMonoStyle");var le=new Fe;function mn(e){le.size>0||Oi(le,e)}a(mn,"initCommandRegistry");function $o(e){return mn(e),le}a($o,"getCommandRegistry");function qd(){return te()?.listCommands().filter(o=>o.metadata?.userInvocable!==!1)??[]}a(qd,"getActiveExtensionCommands");function pn(e){let o=te(),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(pn,"getActiveExtensionCommand");function Kd(e){return e.usage??`/${e.name}`}a(Kd,"formatExtensionCommandUsage");function Xd(e){return Array.isArray(e)?e.map(o=>String(o)).join(", "):e&&typeof e=="object"?JSON.stringify(e):String(e)}a(Xd,"formatExtensionDiagnosticValue");function Vd(e){if(!e)return;let o=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>`${n}=${Xd(t)}`);return o.length>0?o.join(" | "):void 0}a(Vd,"formatExtensionDiagnosticMetadata");function Ve(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(Ve,"getExtensionRuntimeDiagnostics");function Yd(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(Yd,"toExtensionInvocationRequest");async function Jd(e,o,n){let t=te();if(!t)return console.log(s.yellow(`
591
- [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(()=>Ve(t),"getDiagnostics"),logger:{debug:a((...l)=>console.debug(`[kodax:extension-command:${e.name}]`,...l),"debug"),info:a((...l)=>console.info(`[kodax:extension-command:${e.name}]`,...l),"info"),warn:a((...l)=>console.warn(`[kodax:extension-command:${e.name}]`,...l),"warn"),error:a((...l)=>console.error(`[kodax:extension-command:${e.name}]`,...l),"error")}});if(!r)return!0;r.message&&console.log(r.message);let i=Yd(e,r);return i?{invocation:i}:!0}a(Jd,"executeExtensionCommand");function Ww(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(Ww,"parseCommand");function Bi(e){let o=e[0]?.trim().toLowerCase();return o==="help"||o==="--help"||o==="-h"}a(Bi,"isCommandHelpRequest");async function Nw(e,o,n,t){if(le.size===0&&mn(o.gitRoot),e.skillInvocation)return await Bt({command:e.skillInvocation.name,args:e.args},o);let r=le.get(e.command);if(r){if(r.userInvocable===!1)return console.log(s.yellow(`
592
- [Command /${r.name} is not user-invocable]`)),!1;if(Bi(e.args))return zt(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(`
593
- [Command failed: ${d instanceof Error?d.message:String(d)}]`)),!1}}let i=pn(e.command);if(i){if(Bi(e.args))return zt(e.command),!0;try{return await Jd(i,e.args,o)}catch(d){return console.log(s.red(`
594
- [Extension command failed: ${d instanceof Error?d.message:String(d)}]`)),!1}}let l=await Zd(e,o);if(l)return await Bt({command:l.skill.name,args:l.args},o);let c=await qi(e.command,o);return c?await Bt({command:c.name,args:e.args},o):(console.log(s.yellow(`
595
- [Unknown command: /${e.command}. Type /help for available commands]`)),!1)}a(Nw,"executeCommand");async function Zd(e,o){let n=e.args[0];if(!n)return;let t=`${e.command}:${n}`,r=await qi(t,o);if(r)return{skill:r,args:e.args.slice(1)}}a(Zd,"resolveNamespacedDirectSkillCommand");async function qi(e,o){let n=Me(o.gitRoot);n.size===0&&await Pe(o.gitRoot);let t=n.get(e);return t?.userInvocable?t:void 0}a(qi,"resolveDirectSkillCommand");async function Bt(e,o){let n=Me(o.gitRoot),t=e.command,r=e.args.join(" ");n.size===0&&await Pe(o.gitRoot);try{let i=n.get(t);if(!i)return console.log(s.red(`
590
+ 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=bo(),n=e.map(r=>{let i=o.get(r.name)!==void 0||gn(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(qd,"printSkillsListPiMonoStyle");var le=new He;function pn(e){le.size>0||Di(le,e)}a(pn,"initCommandRegistry");function bo(e){return pn(e),le}a(bo,"getCommandRegistry");function Kd(){return te()?.listCommands().filter(o=>o.metadata?.userInvocable!==!1)??[]}a(Kd,"getActiveExtensionCommands");function gn(e){let o=te(),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(gn,"getActiveExtensionCommand");function Xd(e){return e.usage??`/${e.name}`}a(Xd,"formatExtensionCommandUsage");function Vd(e){return Array.isArray(e)?e.map(o=>String(o)).join(", "):e&&typeof e=="object"?JSON.stringify(e):String(e)}a(Vd,"formatExtensionDiagnosticValue");function Yd(e){if(!e)return;let o=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>`${n}=${Vd(t)}`);return o.length>0?o.join(" | "):void 0}a(Yd,"formatExtensionDiagnosticMetadata");function Ye(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(Ye,"getExtensionRuntimeDiagnostics");function Jd(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(Jd,"toExtensionInvocationRequest");async function Zd(e,o,n){let t=te();if(!t)return console.log(s.yellow(`
591
+ [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(()=>Ye(t),"getDiagnostics"),logger:{debug:a((...l)=>console.debug(`[kodax:extension-command:${e.name}]`,...l),"debug"),info:a((...l)=>console.info(`[kodax:extension-command:${e.name}]`,...l),"info"),warn:a((...l)=>console.warn(`[kodax:extension-command:${e.name}]`,...l),"warn"),error:a((...l)=>console.error(`[kodax:extension-command:${e.name}]`,...l),"error")}});if(!r)return!0;r.message&&console.log(r.message);let i=Jd(e,r);return i?{invocation:i}:!0}a(Zd,"executeExtensionCommand");function Fw(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(Fw,"parseCommand");function Gi(e){let o=e[0]?.trim().toLowerCase();return o==="help"||o==="--help"||o==="-h"}a(Gi,"isCommandHelpRequest");async function Hw(e,o,n,t){if(le.size===0&&pn(o.gitRoot),e.skillInvocation)return await Gt({command:e.skillInvocation.name,args:e.args},o);let r=le.get(e.command);if(r){if(r.userInvocable===!1)return console.log(s.yellow(`
592
+ [Command /${r.name} is not user-invocable]`)),!1;if(Gi(e.args))return qt(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(`
593
+ [Command failed: ${d instanceof Error?d.message:String(d)}]`)),!1}}let i=gn(e.command);if(i){if(Gi(e.args))return qt(e.command),!0;try{return await Zd(i,e.args,o)}catch(d){return console.log(s.red(`
594
+ [Extension command failed: ${d instanceof Error?d.message:String(d)}]`)),!1}}let l=await Qd(e,o);if(l)return await Gt({command:l.skill.name,args:l.args},o);let c=await Ki(e.command,o);return c?await Gt({command:c.name,args:e.args},o):(console.log(s.yellow(`
595
+ [Unknown command: /${e.command}. Type /help for available commands]`)),!1)}a(Hw,"executeCommand");async function Qd(e,o){let n=e.args[0];if(!n)return;let t=`${e.command}:${n}`,r=await Ki(t,o);if(r)return{skill:r,args:e.args.slice(1)}}a(Qd,"resolveNamespacedDirectSkillCommand");async function Ki(e,o){let n=Me(o.gitRoot);n.size===0&&await Le(o.gitRoot);let t=n.get(e);return t?.userInvocable?t:void 0}a(Ki,"resolveDirectSkillCommand");async function Gt(e,o){let n=Me(o.gitRoot),t=e.command,r=e.args.join(" ");n.size===0&&await Le(o.gitRoot);try{let i=n.get(t);if(!i)return console.log(s.red(`
596
596
  [Skill not found: ${t}]`)),!1;if(!i.userInvocable)return console.log(s.yellow(`
597
597
  [Skill "${t}" is not user-invocable]`)),!1;console.log(s.cyan(`
598
- [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 gr(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(`
599
- [Error invoking skill: ${i instanceof Error?i.message:String(i)}]`)),!1}}a(Bt,"executeSkillCommand");var gn=class{static{a(this,"SkillCompleter")}gitRoot;skillsCache=null;cacheTimestamp=0;cacheTtlMs=5e3;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,this.skillsCache=null)}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(){let o=Date.now();if(this.skillsCache&&o-this.cacheTimestamp<this.cacheTtlMs)return this.skillsCache;try{let n=Me(this.gitRoot);return n.size===0&&await Pe(this.gitRoot),this.skillsCache=n.listUserInvocable(),this.cacheTimestamp=o,this.skillsCache}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 Qd}from"node:child_process";import*as Je from"node:path";import{promisify as eu}from"node:util";var Ki=eu(Qd);function ou(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(ou,"pathFromPorcelainLine");async function Xi(e,o=10){try{let[{stdout:n},{stdout:t}]=await Promise.all([Ki("git rev-parse --show-toplevel",{cwd:e}),Ki("git status --porcelain=v1 -uall",{cwd:e})]),r=n.trim(),i=[],l=new Set;for(let c of t.split(`
600
- `)){if(!c.trim())continue;let d=ou(c);if(!d)continue;let u=Je.resolve(r,d),f=Je.relative(e,u).split(Je.sep).join("/");if(!(!f||f.startsWith("..")||l.has(f))&&(l.add(f),i.push(f),i.length>=o))break}return i}catch{return[]}}a(Xi,"getRecentWorkingSetFiles");function Ze(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(Ze,"findCommandSlashIndex");var Kt=class{static{a(this,"FileCompleter")}cwdSource;cache=new Map;cacheTimeout=5e3;recentCache=new Map;recentFilesProvider;constructor(o,n=Xi){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:bo.join(c,i.slice(0,d)),f=d===-1?i:i.slice(d+1);try{let h=(await this.readdir(u)).filter(k=>k.toLowerCase().startsWith(f.toLowerCase()));for(let k of h){let y=bo.join(u,k),v=await this.isDirectory(y),p=d===-1?k:i.slice(0,d+1)+k;l.push({text:"@"+p+(v?"/":""),display:k+(v?"/":""),description:v?"directory":"file",type:"file"})}}catch{}if(d===-1){let m=await this.getRecentFiles(c),h=new Set(l.map(v=>v.text)),k=f.toLowerCase(),y=[];for(let v of m){if(f&&!bo.basename(v).toLowerCase().startsWith(k))continue;let p="@"+v;h.has(p)||(h.add(p),y.push({text:p,display:v,description:"recent",type:"file"}))}l.unshift(...y)}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=>{wn.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=>{wn.stat(o,(t,r)=>{n(!t&&r.isDirectory())})})}},Xt=class{static{a(this,"CommandCompleter")}commands;constructor(){this.commands=new Map,this.loadCommands()}loadCommands(){for(let n of $o().getAll())n.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]});let o=te();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=Ze(t);return r===-1?!1:!t.slice(r).includes(" ")}async getCompletions(o,n){let t=o.slice(0,n),r=Ze(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 Yw(e){let o=new Kt(e),n=new gn,t=new Xt;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=>tu(r,u)),r]}}a(Yw,"createCompleter");async function nu(e,o){let{ArgumentCompleter:n}=await import("./argument-completer-BQDAYT7W.js"),t=new n;return t.canComplete(e,o)?t.getCompletions(e,o):[]}a(nu,"getArgumentCompletions");function tu(e,o){if(o.type!=="argument")return o.text;let n=Ze(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(tu,"formatReadlineCompletion");import{existsSync as yn,readdirSync as Qi,readFileSync as ea}from"node:fs";import{join as kn}from"node:path";var ru=[{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"}],hn=[{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"}],Vi=hn.slice(2).concat([{name:"off",description:"Disable reasoning",type:"enum"}]);function su(e){if(e&&e.includes("/")){let o=e.indexOf("/"),n=e.slice(0,o),t=e.slice(o+1);if(Ie(n))try{return Oe(n).filter(i=>!t||i.toLowerCase().includes(t.toLowerCase())).map(i=>({name:`${n}/${i}`,description:i,type:"enum"}))}catch{}return[]}return _e().map(o=>({name:o,description:`Switch to ${o} provider`,type:"enum"}))}a(su,"getModelArgs");var Vt=[{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"}],Yt=[{name:"all",description:"Delete ALL sessions",type:"enum"}],iu=[{name:"status",description:"Show MCP server status",type:"enum"},{name:"refresh",description:"Refresh MCP server catalogs",type:"enum"}],au=[{name:"status",description:"Show child-task fallback order",type:"enum"},{name:"off",description:"Disable child-task fallback providers",type:"enum"}],lu=[{name:"llm",description:"Use LLM classifier for auto mode",type:"enum"},{name:"rules",description:"Use rules-only auto mode",type:"enum"}],Yi=[{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"}],Ji=[{name:"on",description:"Enable logging",type:"enum"},{name:"off",description:"Disable logging",type:"enum"}],cu=[{name:"list",description:"List project memory files",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"}],du=[{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"}],uu=[{name:"show",description:"Show a captured paste by id",type:"enum"},{name:"list",description:"List captured pastes",type:"enum"}],fu=[{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"}],mu=[{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"}],pu=[{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"}],gu=[{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"}],wu=[{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"}],hu=[{name:"status",description:"Deprecated alias for /repo-intel status",type:"enum"}],yu=[{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"}],ku=new Set(["show","pause","resume","stop","delete","rerun","save","rename","revise"]),vu=new Set(["show","delete","rerun","save","rename","revise"]),Su=[{name:"--all",description:"Show all persisted workflow runs",type:"enum"},{name:"--limit",description:"Show at most N persisted workflow runs",type:"enum"}],$u=[{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"}],bu=[{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"}],xu=[".workflow.json",".ts",".mjs",".js"];function Au(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(Au,"workflowRunMatchesSubcommand");function vn(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(vn,"isWorkflowRunEntryName");function Ru(e,o){let n=kn(e,"workflow-metadata.json");if(yn(n))try{let r=JSON.parse(ea(n,"utf8"));if(typeof r=="object"&&r!==null){let i=r.displayName;if(typeof i=="string"&&vn(i.trim()))return i.trim()}}catch{}let t=o.displayName;return typeof t=="string"&&vn(t.trim())?t.trim():void 0}a(Ru,"readWorkflowRunDisplayName");function Eu(){let e=xe(process.cwd()).key,o=H("workflow-runs",e);if(!yn(o))return[];let n=[];for(let t of Qi(o)){if(!vn(t))continue;let r=kn(o,t,"run.json");if(yn(r))try{let i=JSON.parse(ea(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=Ru(kn(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(Eu,"getPersistedWorkflowRunIdArgs");function Sn(e){let o=Ne().list().filter(r=>Au(e,r.status)).map(r=>({name:r.runId,description:`${r.workflow} - ${r.status}`,type:"string"})),n=vu.has(e)?Eu():[],t=new Set;return[...o,...n].filter(r=>t.has(r.name)?!1:(t.add(r.name),!0))}a(Sn,"getWorkflowRunIdArgs");function Tu(e){for(let o of xu)if(e.endsWith(o)){let n=e.slice(0,-o.length);return vn(n)?n:void 0}}a(Tu,"savedWorkflowNameFromFile");function xo(e={}){let o=[{path:H("workflows"),source:"personal"},{path:kn(process.cwd(),".kodax","workflows"),source:"project"}],n=new Map;for(let t of o)if(yn(t.path))try{for(let r of Qi(t.path)){if(e.generatedOnly===!0&&!r.endsWith(".workflow.json"))continue;let i=Tu(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(xo,"getSavedWorkflowNameArgs");function Cu(){let e=new Map;for(let o of Sn("rerun"))e.set(o.name,{...o,description:`recent run: ${o.description}`,type:"string"});for(let o of xo()){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(Cu,"getWorkflowRerunArgs");function Jt(e){let o=new Map;for(let n of Sn(e))o.set(n.name,{...n,description:`workflow run: ${n.description}`,type:"string"});for(let n of xo({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(Jt,"getWorkflowRunOrSavedNameArgs");function Zi(e){let o=new Set(e.slice(1).filter(n=>n.startsWith("--")));return o.has("--saved")?xo({generatedOnly:!0}):o.has("--run")?Sn("delete"):Jt("delete")}a(Zi,"getWorkflowDeleteTargetArgs");function Iu(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;if(t<=1)return[...yu,...Mo().map(r=>({name:r.name,description:r.description,type:"enum"})),...xo()];if(n==="rerun"&&t<=2)return Cu();if(n==="rename"&&t<=2)return Jt("rename");if(n==="delete"&&t<=2)return[...bu,...Zi(e)];if(n==="delete"&&t<=3&&e.slice(1).some(r=>r.startsWith("--")))return Zi(e);if(n==="revise"){if(t<=2)return[{name:"--replace",description:"Replace a saved workflow after confirmation",type:"enum"},...Jt("revise")];if(e[1]==="--replace"&&t<=3)return xo()}return ku.has(n)&&t<=2?Sn(n):n==="runs"&&t<=2?Su:n==="prune"&&t<=2?$u:[]}a(Iu,"getWorkflowArgs");function _u(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;return t<=1?pu:t>2?[]:n==="mode"?gu:n==="trace"?wu:[]}a(_u,"getRepoIntelArgs");var Mu=new Map([["mode",ru],["thinking",hn],["think",hn],["t",hn],["reasoning",Vi],["reason",Vi],["status",Vt],["info",Vt],["ctx",Vt],["mcp",iu],["fallback",au],["auto-engine",lu],["agent-mode",Yi],["am",Yi],["verifier-log",Ji],["stall-log",Ji],["memory",cu],["goal",du],["paste",uu],["review",fu],["agents",mu],["delete",Yt],["rm",Yt],["del",Yt]]),Pu=new Set(["model","m","provider"]),Lu=new Set(["repo-intel"]),Wu=new Set(["repointel","ri"]),Nu=new Set(["workflow"]);function Zt(e,o,n=[]){let t=e.toLowerCase();return Pu.has(t)?su(o):Lu.has(t)?_u(n):Wu.has(t)?n.length<=1?hu:[]:Nu.has(t)?Iu(n):Mu.get(t)??[]}a(Zt,"getCommandArguments");var Qt=class{static{a(this,"ArgumentCompleter")}canComplete(o,n){let t=o.slice(0,n),r=Ze(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 Zt(c).length>0}async getCompletions(o,n){let t=o.slice(0,n),r=Ze(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(),h=Zt(c,m,u);if(!h||h.length===0)return[];let k=new Set(u.slice(0,-1).map(v=>v.toLowerCase()));return h.filter(v=>!k.has(v.name.toLowerCase())).filter(v=>!m||v.name.includes("/")?!0:v.name.toLowerCase().includes(m)).map(v=>({text:v.name,display:v.name,description:v.description,type:"argument"})).sort((v,p)=>{if(!m)return 0;let R=v.display.toLowerCase().startsWith(m),I=p.display.toLowerCase().startsWith(m);return R&&!I?-1:!R&&I?1:v.display.length-p.display.length})}};function ch(){return new Qt}a(ch,"createArgumentCompleter");export{Jn as a,G as b,Xf as c,Ls as d,Vf as e,No as f,Uu as g,sa as h,ju as i,ro as j,Zr as k,Qr as l,so as m,jn as n,Sa as o,Fn as p,Bn as q,Gn as r,lo as s,Ra as t,zn as u,Ue as v,vs as w,Ss as x,Da as y,Lf as z,Xn as A,Wf as B,Nf as C,Ts as D,Ps as E,re as F,Os as G,Ds as H,om as I,el as J,ml as K,nm as L,zo as M,Qn as N,tm as O,Ks as P,rm as Q,sm as R,im as S,Nm as T,Om as U,Dm as V,Qs as W,rt as X,ei as Y,xe as Z,Gm as _,go as $,dt as aa,Re as ba,Sc as ca,$c as da,ki as ea,fp as fa,mp as ga,Wc as ha,rg as ia,sg as ja,ig as ka,xg as la,Ag as ma,Rg as na,Eg as oa,Tg as pa,Mi as qa,Lg as ra,Wg as sa,Li as ta,Ng as ua,Wi as va,Ww as wa,Nw as xa,gn as ya,Qt as za,ch as Aa,Ze as Ba,Kt as Ca,Xt as Da,Yw as Ea};
598
+ [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 wr(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(`
599
+ [Error invoking skill: ${i instanceof Error?i.message:String(i)}]`)),!1}}a(Gt,"executeSkillCommand");var wn=class{static{a(this,"SkillCompleter")}gitRoot;skillsCache=null;cacheTimestamp=0;cacheTtlMs=5e3;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,this.skillsCache=null)}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(){let o=Date.now();if(this.skillsCache&&o-this.cacheTimestamp<this.cacheTtlMs)return this.skillsCache;try{let n=Me(this.gitRoot);return n.size===0&&await Le(this.gitRoot),this.skillsCache=n.listUserInvocable(),this.cacheTimestamp=o,this.skillsCache}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 eu}from"node:child_process";import*as Ze from"node:path";import{promisify as ou}from"node:util";var Xi=ou(eu);function nu(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(nu,"pathFromPorcelainLine");async function Vi(e,o=10){try{let[{stdout:n},{stdout:t}]=await Promise.all([Xi("git rev-parse --show-toplevel",{cwd:e}),Xi("git status --porcelain=v1 -uall",{cwd:e})]),r=n.trim(),i=[],l=new Set;for(let c of t.split(`
600
+ `)){if(!c.trim())continue;let d=nu(c);if(!d)continue;let u=Ze.resolve(r,d),f=Ze.relative(e,u).split(Ze.sep).join("/");if(!(!f||f.startsWith("..")||l.has(f))&&(l.add(f),i.push(f),i.length>=o))break}return i}catch{return[]}}a(Vi,"getRecentWorkingSetFiles");function Qe(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(Qe,"findCommandSlashIndex");var Xt=class{static{a(this,"FileCompleter")}cwdSource;cache=new Map;cacheTimeout=5e3;recentCache=new Map;recentFilesProvider;constructor(o,n=Vi){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:xo.join(c,i.slice(0,d)),f=d===-1?i:i.slice(d+1);try{let h=(await this.readdir(u)).filter(k=>k.toLowerCase().startsWith(f.toLowerCase()));for(let k of h){let y=xo.join(u,k),v=await this.isDirectory(y),p=d===-1?k:i.slice(0,d+1)+k;l.push({text:"@"+p+(v?"/":""),display:k+(v?"/":""),description:v?"directory":"file",type:"file"})}}catch{}if(d===-1){let m=await this.getRecentFiles(c),h=new Set(l.map(v=>v.text)),k=f.toLowerCase(),y=[];for(let v of m){if(f&&!xo.basename(v).toLowerCase().startsWith(k))continue;let p="@"+v;h.has(p)||(h.add(p),y.push({text:p,display:v,description:"recent",type:"file"}))}l.unshift(...y)}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=>{hn.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=>{hn.stat(o,(t,r)=>{n(!t&&r.isDirectory())})})}},Vt=class{static{a(this,"CommandCompleter")}commands;constructor(){this.commands=new Map,this.loadCommands()}loadCommands(){for(let n of bo().getAll())n.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]});let o=te();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=Qe(t);return r===-1?!1:!t.slice(r).includes(" ")}async getCompletions(o,n){let t=o.slice(0,n),r=Qe(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 nh(e){let o=new Xt(e),n=new wn,t=new Vt;return async r=>{let i=r.includes("@"),l=r.includes("/");if(!i&&!l)return[[],r];let c=[];if(l){let u=await tu(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=>ru(r,u)),r]}}a(nh,"createCompleter");async function tu(e,o){let{ArgumentCompleter:n}=await import("./argument-completer-BBFYCVTM.js"),t=new n;return t.canComplete(e,o)?t.getCompletions(e,o):[]}a(tu,"getArgumentCompletions");function ru(e,o){if(o.type!=="argument")return o.text;let n=Qe(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(ru,"formatReadlineCompletion");import{existsSync as kn,readdirSync as ea,readFileSync as oa}from"node:fs";import{join as vn}from"node:path";var su=[{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"}],yn=[{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"}],Yi=yn.slice(2).concat([{name:"off",description:"Disable reasoning",type:"enum"}]);function iu(e){if(e&&e.includes("/")){let o=e.indexOf("/"),n=e.slice(0,o),t=e.slice(o+1);if(_e(n))try{return De(n).filter(i=>!t||i.toLowerCase().includes(t.toLowerCase())).map(i=>({name:`${n}/${i}`,description:i,type:"enum"}))}catch{}return[]}return Pe().map(o=>({name:o,description:`Switch to ${o} provider`,type:"enum"}))}a(iu,"getModelArgs");var Yt=[{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"}],Jt=[{name:"all",description:"Delete ALL sessions",type:"enum"}],au=[{name:"status",description:"Show MCP server status",type:"enum"},{name:"refresh",description:"Refresh MCP server catalogs",type:"enum"}],lu=[{name:"status",description:"Show child-task fallback order",type:"enum"},{name:"off",description:"Disable child-task fallback providers",type:"enum"}],cu=[{name:"llm",description:"Use LLM classifier for auto mode",type:"enum"},{name:"rules",description:"Use rules-only auto mode",type:"enum"}],Ji=[{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"}],Zi=[{name:"on",description:"Enable logging",type:"enum"},{name:"off",description:"Disable logging",type:"enum"}],du=[{name:"list",description:"List project memory files",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"}],uu=[{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"}],fu=[{name:"show",description:"Show a captured paste by id",type:"enum"},{name:"list",description:"List captured pastes",type:"enum"}],mu=[{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"}],pu=[{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"}],gu=[{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"}],wu=[{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"}],hu=[{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"}],yu=[{name:"status",description:"Deprecated alias for /repo-intel status",type:"enum"}],ku=[{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"}],vu=new Set(["show","pause","resume","stop","delete","rerun","save","rename","revise"]),Su=new Set(["show","delete","rerun","save","rename","revise"]),$u=[{name:"--all",description:"Show all persisted workflow runs",type:"enum"},{name:"--limit",description:"Show at most N persisted workflow runs",type:"enum"}],bu=[{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"}],xu=[{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"}],Au=[".workflow.json",".ts",".mjs",".js"];function Ru(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(Ru,"workflowRunMatchesSubcommand");function Sn(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(Sn,"isWorkflowRunEntryName");function Eu(e,o){let n=vn(e,"workflow-metadata.json");if(kn(n))try{let r=JSON.parse(oa(n,"utf8"));if(typeof r=="object"&&r!==null){let i=r.displayName;if(typeof i=="string"&&Sn(i.trim()))return i.trim()}}catch{}let t=o.displayName;return typeof t=="string"&&Sn(t.trim())?t.trim():void 0}a(Eu,"readWorkflowRunDisplayName");function Tu(){let e=xe(process.cwd()).key,o=H("workflow-runs",e);if(!kn(o))return[];let n=[];for(let t of ea(o)){if(!Sn(t))continue;let r=vn(o,t,"run.json");if(kn(r))try{let i=JSON.parse(oa(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=Eu(vn(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(Tu,"getPersistedWorkflowRunIdArgs");function $n(e){let o=Oe().list().filter(r=>Ru(e,r.status)).map(r=>({name:r.runId,description:`${r.workflow} - ${r.status}`,type:"string"})),n=Su.has(e)?Tu():[],t=new Set;return[...o,...n].filter(r=>t.has(r.name)?!1:(t.add(r.name),!0))}a($n,"getWorkflowRunIdArgs");function Cu(e){for(let o of Au)if(e.endsWith(o)){let n=e.slice(0,-o.length);return Sn(n)?n:void 0}}a(Cu,"savedWorkflowNameFromFile");function Ao(e={}){let o=[{path:H("workflows"),source:"personal"},{path:vn(process.cwd(),".kodax","workflows"),source:"project"}],n=new Map;for(let t of o)if(kn(t.path))try{for(let r of ea(t.path)){if(e.generatedOnly===!0&&!r.endsWith(".workflow.json"))continue;let i=Cu(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(Ao,"getSavedWorkflowNameArgs");function Iu(){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 Ao()){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(Iu,"getWorkflowRerunArgs");function Zt(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 Ao({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(Zt,"getWorkflowRunOrSavedNameArgs");function Qi(e){let o=new Set(e.slice(1).filter(n=>n.startsWith("--")));return o.has("--saved")?Ao({generatedOnly:!0}):o.has("--run")?$n("delete"):Zt("delete")}a(Qi,"getWorkflowDeleteTargetArgs");function _u(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;if(t<=1)return[...ku,...Mo().map(r=>({name:r.name,description:r.description,type:"enum"})),...Ao()];if(n==="rerun"&&t<=2)return Iu();if(n==="rename"&&t<=2)return Zt("rename");if(n==="delete"&&t<=2)return[...xu,...Qi(e)];if(n==="delete"&&t<=3&&e.slice(1).some(r=>r.startsWith("--")))return Qi(e);if(n==="revise"){if(t<=2)return[{name:"--replace",description:"Replace a saved workflow after confirmation",type:"enum"},...Zt("revise")];if(e[1]==="--replace"&&t<=3)return Ao()}return vu.has(n)&&t<=2?$n(n):n==="runs"&&t<=2?$u:n==="prune"&&t<=2?bu:[]}a(_u,"getWorkflowArgs");function Pu(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;return t<=1?gu:t>2?[]:n==="mode"?wu:n==="trace"?hu:[]}a(Pu,"getRepoIntelArgs");var Mu=new Map([["mode",su],["thinking",yn],["think",yn],["t",yn],["reasoning",Yi],["reason",Yi],["status",Yt],["info",Yt],["ctx",Yt],["mcp",au],["fallback",lu],["auto-engine",cu],["agent-mode",Ji],["am",Ji],["verifier-log",Zi],["stall-log",Zi],["memory",du],["goal",uu],["paste",fu],["review",mu],["agents",pu],["delete",Jt],["rm",Jt],["del",Jt]]),Lu=new Set(["model","m","provider"]),Wu=new Set(["repo-intel"]),Nu=new Set(["repointel","ri"]),Ou=new Set(["workflow"]);function Qt(e,o,n=[]){let t=e.toLowerCase();return Lu.has(t)?iu(o):Wu.has(t)?Pu(n):Nu.has(t)?n.length<=1?yu:[]:Ou.has(t)?_u(n):Mu.get(t)??[]}a(Qt,"getCommandArguments");var er=class{static{a(this,"ArgumentCompleter")}canComplete(o,n){let t=o.slice(0,n),r=Qe(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 Qt(c).length>0}async getCompletions(o,n){let t=o.slice(0,n),r=Qe(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(),h=Qt(c,m,u);if(!h||h.length===0)return[];let k=new Set(u.slice(0,-1).map(v=>v.toLowerCase()));return h.filter(v=>!k.has(v.name.toLowerCase())).filter(v=>!m||v.name.includes("/")?!0:v.name.toLowerCase().includes(m)).map(v=>({text:v.name,display:v.name,description:v.description,type:"argument"})).sort((v,p)=>{if(!m)return 0;let R=v.display.toLowerCase().startsWith(m),I=p.display.toLowerCase().startsWith(m);return R&&!I?-1:!R&&I?1:v.display.length-p.display.length})}};function gh(){return new er}a(gh,"createArgumentCompleter");export{Zn as a,G as b,Vf as c,Ws as d,Yf as e,Oo as f,ju as g,ia as h,Fu as i,so as j,Qr as k,es as l,io as m,Fn as n,$a as o,Hn as p,Gn as q,zn as r,co as s,Ea as t,qn as u,je as v,Ss as w,$s as x,Ua as y,Wf as z,Vn as A,Nf as B,Of as C,Cs as D,Ls as E,re as F,Ds as G,Us as H,nm as I,ol as J,pl as K,tm as L,qo as M,et as N,rm as O,Xs as P,sm as Q,im as R,am as S,Om as T,Dm as U,Um as V,ei as W,st as X,oi as Y,xe as Z,zm as _,wo as $,ut as aa,Re as ba,$c as ca,bc as da,vi as ea,mp as fa,pp as ga,Nc as ha,dg as ia,ug as ja,fg as ka,Ig as la,_g as ma,Pg as na,Mg as oa,Lg as pa,Mi as qa,jg as ra,Fg as sa,Wi as ta,Hg as ua,Ni as va,Fw as wa,Hw as xa,wn as ya,er as za,gh as Aa,Qe as Ba,Xt as Ca,Vt as Da,nh as Ea};