@kodax-ai/kodax 0.7.51 → 0.7.53

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 (49) hide show
  1. package/CHANGELOG.md +1838 -1800
  2. package/README.md +6 -0
  3. package/README_CN.md +4 -0
  4. package/dist/chunks/{agent-EFA7BSE7.js → agent-DZ37KWZI.js} +1 -1
  5. package/dist/chunks/argument-completer-OFPM36IZ.js +2 -0
  6. package/dist/chunks/{chunk-JJTUBNQX.js → chunk-5YQDGVDB.js} +1 -1
  7. package/dist/chunks/chunk-67HVIUEO.js +307 -0
  8. package/dist/chunks/chunk-CLIRXPAJ.js +425 -0
  9. package/dist/chunks/{chunk-CCZMQE3Q.js → chunk-D4MGMUDL.js} +1 -1
  10. package/dist/chunks/chunk-LE6STNVN.js +31 -0
  11. package/dist/chunks/{chunk-WQTVG2T5.js → chunk-OQL4ISVD.js} +170 -170
  12. package/dist/chunks/{chunk-ODVA5VTE.js → chunk-RFE5EC7W.js} +215 -215
  13. package/dist/chunks/{chunk-HMATTIU6.js → chunk-XFCAXDSD.js} +2 -2
  14. package/dist/chunks/{compaction-config-UBPCNGC2.js → compaction-config-OF2T45MC.js} +1 -1
  15. package/dist/chunks/{construction-bootstrap-WY5MDXRX.js → construction-bootstrap-JIE7LYNN.js} +1 -1
  16. package/dist/chunks/dist-BOHLKKR5.js +2 -0
  17. package/dist/chunks/{dist-B73FQEAA.js → dist-Z6U7TWKJ.js} +1 -1
  18. package/dist/chunks/{utils-HVOJRR5C.js → utils-AB4DNRZC.js} +1 -1
  19. package/dist/index.d.ts +10 -10
  20. package/dist/index.js +1 -1
  21. package/dist/kodax_cli.js +991 -932
  22. package/dist/sdk-agent.d.ts +8 -8
  23. package/dist/sdk-agent.js +1 -1
  24. package/dist/sdk-coding.d.ts +12 -12
  25. package/dist/sdk-coding.js +1 -1
  26. package/dist/sdk-llm.d.ts +3 -3
  27. package/dist/sdk-llm.js +1 -1
  28. package/dist/sdk-mcp.js +1 -1
  29. package/dist/sdk-repl.d.ts +47 -12
  30. package/dist/sdk-repl.js +2 -2
  31. package/dist/sdk-session.d.ts +5 -5
  32. package/dist/sdk-session.js +1 -1
  33. package/dist/sdk-skills.js +1 -1
  34. package/dist/types-chunks/{base.d-GZ6jvICS.d.ts → base.d-BBNUF9nz.d.ts} +1 -0
  35. package/dist/types-chunks/{bash-prefix-extractor.d-DTOiDMlG.d.ts → bash-prefix-extractor.d-BpNoRkSD.d.ts} +57 -4
  36. package/dist/types-chunks/{capsule.d-CXGdLGAn.d.ts → capsule.d-CNonpwAZ.d.ts} +3 -3
  37. package/dist/types-chunks/{guardrail.d-D47yu9AO.d.ts → guardrail.d-B18oO1gt.d.ts} +3 -3
  38. package/dist/types-chunks/{process.d-B8kEBnQD.d.ts → process.d-Bj82oJhD.d.ts} +1 -1
  39. package/dist/types-chunks/{resolver.d-D75XFRH2.d.ts → resolver.d-CCX9NXWP.d.ts} +2 -1
  40. package/dist/types-chunks/{sdk-session-BKQJN9oH.d.ts → sdk-session-BkaGuIC6.d.ts} +4 -4
  41. package/dist/types-chunks/{storage.d-BN1xIn8R.d.ts → storage.d-BUIiD4gq.d.ts} +2 -2
  42. package/dist/types-chunks/{types.d-DQ_hdN70.d.ts → types.d-D4jL-gAA.d.ts} +1 -1
  43. package/dist/types-chunks/{utils.d-ZfRDo-kX.d.ts → utils.d-B3fwJEMd.d.ts} +26 -20
  44. package/package.json +2 -2
  45. package/dist/chunks/argument-completer-MAJVHSE7.js +0 -2
  46. package/dist/chunks/chunk-E3HENKTX.js +0 -420
  47. package/dist/chunks/chunk-FAIGYAEX.js +0 -301
  48. package/dist/chunks/chunk-PEWH3AAL.js +0 -31
  49. package/dist/chunks/dist-BTWS2ENP.js +0 -2
@@ -1,32 +1,32 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{A as mr,B as gr,C as pr,j as lr,l as Ie,m as mn,n as cr,o as dr,p as ur,q as gn,s as pn,t as wn,u as fr,w as ko,y as pe}from"./chunk-CCZMQE3Q.js";import{a as wr}from"./chunk-JJTUBNQX.js";import{Ja as er,Ma as ge,Qa as Te,Sa as Be,Ta as ho,Ua as or,Va as nr,Xa as tr,Ya as fn,Za as rr,_a as qe,ab as Ee,cb as sr,lb as yo,mb as ir,sb as ar,tb as ze}from"./chunk-E3HENKTX.js";import{Hd as Zt,Jd as Qt,Wc as Z,Yc as Gt,Z as zt,Zc as Xt,aa as He,ba as Kt,nd as Vt,pd as Yt,qd as Jt,td as un,v as qt}from"./chunk-WQTVG2T5.js";import{j as an,sa as Wt,ta as xe,ua as Ae}from"./chunk-PEWH3AAL.js";import{Zc as Re,_c as Ht,cc as Dt,dc as Ut,ec as Ft,k as ln,nd as Bt,rc as cn,sb as Lt,sc as dn,tb as Ot,va as po,wa as N,xb as Nt,xc as jt,xd as wo}from"./chunk-HMATTIU6.js";import{a,b as sn,c as wi}from"./chunk-V4WSBIXB.js";var xr=sn((yd,br)=>{"use strict";br.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 _r=sn((vd,Cr)=>{"use strict";var Ir="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",Ar=new RegExp("^"+Ir+"$"),Rr="|&;()<> \\t",ki='"((\\\\"|[^"])*?)"',vi="'((\\\\'|[^'])*?)'",Si=/^#$/,Tr="'",Er='"',hn="$",we="",$i=4294967296;for(yn=0;yn<4;yn++)we+=($i*Math.random()).toString(16);var yn,bi=new RegExp("^"+we);function xi(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(xi,"matchAll");function Ai(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+we+JSON.stringify(t)+we:o+t}a(Ai,"getVar");function Ri(e,o,n){n||(n={});var t=n.escape||"\\",r="(\\"+t+`['"`+Rr+`]|[^\\s'"`+Rr+"])+",i=new RegExp(["("+Ir+")","("+r+"|"+ki+"|"+vi+")+"].join("|"),"g"),l=xi(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(Ar.test(u))return{op:u};var w=!1,f=!1,k="",v=!1,h;function y(){h+=1;var A,j,H=u.charAt(h);if(H==="{"){if(h+=1,u.charAt(h)==="}")throw new Error("Bad substitution: "+u.slice(h-2,h+1));if(A=u.indexOf("}",h),A<0)throw new Error("Bad substitution: "+u.slice(h));j=u.slice(h,A),h=A}else if(/[*@#?$!_-]/.test(H))j=H,h+=1;else{var G=u.slice(h);A=G.match(/[^\w\d_]/),A?(j=G.slice(0,A.index),h+=A.index-1):(j=G,h=u.length)}return Ai(o,"",j)}for(a(y,"parseEnvVar"),h=0;h<u.length;h++){var m=u.charAt(h);if(v=v||!w&&(m==="*"||m==="?"),f)k+=m,f=!1;else if(w)m===w?w=!1:w==Tr?k+=m:m===t?(h+=1,m=u.charAt(h),m===Er||m===t||m===hn?k+=m:k+=t+m):m===hn?k+=y():k+=m;else if(m===Er||m===Tr)w=m;else{if(Ar.test(m))return{op:u};if(Si.test(m)){c=!0;var x={comment:e.slice(d.index+h+1)};return k.length?[k,x]:[x]}else m===t?f=!0:m===hn?k+=y():k+=m}}return v?{op:"glob",pattern:k}:k}).reduce(function(d,u){return typeof u>"u"?d:d.concat(u)},[])}a(Ri,"parseInternal");Cr.exports=a(function(o,n,t){var r=Ri(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("("+we+".*?"+we+")","g"));return c.length===1?i.concat(c[0]):i.concat(c.filter(Boolean).map(function(d){return bi.test(d)?JSON.parse(d.split(we)[1]):d}))},[])},"parse")});var Pr=sn(kn=>{"use strict";kn.quote=xr();kn.parse=_r()});import*as Zo from"fs";import*as uo from"path";import s from"chalk";var vo=["plan","accept-edits","auto","auto-in-project"];function gd(e){return e==="auto"||e==="auto-in-project"}a(gd,"isAutoMode");function hi(e){switch(e){case"plan":return"Plan";case"accept-edits":return"Edits";case"auto":case"auto-in-project":return"Auto"}}a(hi,"permissionModeDisplayName");var yi='[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 pd(e=console.warn){let o=!1;return()=>{o||(o=!0,e(yi))}}a(pd,"createAutoInProjectDeprecationEmitter");var hr=Zt(),Ke=new Set(hr.filter(e=>e.sideEffect==="mutates-fs"&&e.requiredParams.includes("path")).map(e=>e.name)),yr=new Set(hr.filter(e=>e.sideEffect!=="readonly").map(e=>e.name)),kr=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"]),vr=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 Sr(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(Sr,"computeConfirmTools");function $r(e){return e!==void 0&&vo.includes(e)}a($r,"isPermissionMode");function Ge(e,o){return $r(e)?e:o}a(Ge,"normalizePermissionMode");import Ro from"fs";import Kr from"path";import So from"fs";import P from"path";import Ve from"os";var Lr=wi(Pr(),1);var Mr=new Set(["/dev/null","nul","NUL"]);function vn(e){return Mr.has(e)||Mr.has(e.toLowerCase())}a(vn,"isNullDevice");function Xe(e){let o=e.trim();if(!o)return{statements:[],unparseable:!1};if(o.includes("`"))return{statements:[],unparseable:!0};let n;try{n=(0,Lr.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"),w=a(f=>{u(),r.length>0&&(t.push({precedingOp:c,stages:r}),r=[]),c=f},"flushStatement");for(let f=0;f<n.length;f+=1){let k=n[f];if(typeof k=="string"){i.push(k);continue}if("op"in k){let v=k.op;if(v==="&&"||v==="||"||v===";"){w(v);continue}if(v==="|"){u();continue}if(v==="&"){let h=n[f+1];if(h!==void 0&&typeof h!="string"&&"op"in h&&(h.op===">"||h.op===">>")){let y=n[f+2];if(typeof y!="string"){d=!0,f+=1;continue}l.push(Wr(`&${h.op}`,y)),f+=2;continue}d=!0;continue}if(Ei(v)){let h=null,y=i[i.length-1];y!==void 0&&/^[0-9]+$/.test(y)&&(h=y,i.pop());let m=n[f+1];if(typeof m!="string"){d=!0;continue}l.push(Wr(h?`${h}${v}`:v,m)),f+=1;continue}if(v==="glob"){let h=k.pattern;typeof h=="string"?i.push(h):d=!0;continue}d=!0;continue}if("comment"in k)break;d=!0}return w(null),{statements:t,unparseable:d}}a(Xe,"parseBashCommand");var Ti=new Set([">",">>","<","<<","<<<","&>","&>>"]),Or=/^([0-9]+|&)(>>?|<<?)$/;function Ei(e){return Ti.has(e)||Or.test(e)}a(Ei,"isRedirectionOp");function Wr(e,o){let n=null,t=e,r=Or.exec(e);return r&&(n=r[1],t=r[2]),{op:e,fd:n,append:t===">>"||e==="&>>",input:t==="<"||t==="<<"||e==="<<<",target:o}}a(Wr,"parseRedirection");var Ii=P.join(".agent","plan_mode_doc.md"),$o=new Map,bo=null;function Ci(e){if(!e||!e.trim())return!1;let o=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of vr)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(Ci,"isSingleBashReadCommand");var _i=/^[a-zA-Z0-9]+$/;function Pi(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(!_i.test(t))return!1;return n}a(Pi,"isHelpCommand");function $n(e){if(!e||!e.trim())return!1;if(Pi(e))return!0;let o=e.trim().replace(/\\\r?\n/g," "),n=Xe(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||!vn(c.target))return!1;let l=i.argv.join(" ");if(l&&!(t&&i.argv[0]?.toLowerCase()==="cd"&&i.argv.length>=2)&&!Ci(l))return!1}}return!0}a($n,"isBashReadCommand");function Mi(e){let o=e.trim();return o?$n(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(Mi,"getDirectShellBypassBlockReason");var Dr=new Set(["remove-item","set-content","add-content","out-file","new-item","copy-item","move-item","rename-item","ni"]);function bn(e){if(!e||!e.trim())return!1;let o=Xe(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 kr)if(c===i||l!==null&&c===l)return!0}for(let i of r)if(Dr.has(i))return!0;for(let i of t.redirections)if(!i.input&&!vn(i.target))return!0}return!1}a(bn,"isBashWriteCommand");function xn(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(xn,"parseAllowedToolPattern");function Wi(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e.startsWith(n)}return e===o}a(Wi,"matchesBashPatternLegacy");function Li(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e===n}return e===o}a(Li,"matchesBashPatternByExtractedPrefix");async function An(e,o,n,t,r){if(e.toLowerCase()!=="bash")return!1;let i=o.command??"",l=[];for(let c of n){let d=xn(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&&Li(c.value,d))return!0;return!1}for(let{pattern:c}of l)if(c&&Wi(i,c))return!0;return!1}a(An,"isToolCallAllowed");function Rn(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(Rn,"generateSavePattern");function Ye(e,o){try{let n=P.resolve(e),t=P.resolve(o),r=po(),i=P.join(t,".kodax");return Ce(n,i)||Ce(n,r)?!0:!(Ce(n,t)||jr().some(c=>Ce(n,c)))}catch{return!1}}a(Ye,"isAlwaysConfirmPath");function Nr(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"&&Oi.test(e)):!!(e.startsWith(".")&&/[/\\]/.test(e))}a(Nr,"looksLikePath");var Oi=/^\/[A-Za-z][A-Za-z0-9]*(?::[A-Za-z0-9]+)?$/;function Ni(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(Ni,"legacyRegexPathScan");function Ao(e){let o=new Set,n=Xe(e);if(!n.unparseable)for(let t of n.statements)for(let r of t.stages){for(let i of r.argv)Nr(i)&&o.add(i);for(let i of r.redirections)Nr(i.target)&&o.add(i.target)}for(let t of Ni(e))o.add(t);return Array.from(o)}a(Ao,"extractPathsFromCommand");function Di(e,o){let n=Ao(e);for(let t of n)if(Ye(t,o))return!0;return!1}a(Di,"isCommandOnProtectedPath");function xo(e){let o=P.normalize(e);return process.platform==="win32"?o.toLowerCase():o}a(xo,"normalizePathForComparison");function Ui(e,o){return xo(e)===xo(o)}a(Ui,"pathsEqual");function Ce(e,o){let n=xo(e),t=xo(o);return n===t||n.startsWith(t+P.sep)}a(Ce,"isPathInsideDirectory");function Tn(e,o){try{let n=P.resolve(o),t=P.resolve(n,Fr(Ur(e)));return Ce(t,n)}catch{return!1}}a(Tn,"isPathInsideProject");function Fi(e){let o=e.match(/[A-Za-z]:[\\/][^\s;|&<>(){}'"]+|\/[^\s;|&<>(){}'"]+/g);return o?o.filter(n=>!/^(?:\/dev\/|\/proc\/)/i.test(n)):[]}a(Fi,"collectAbsolutePathCandidates");function En(e){let o=P.resolve(e),n=$o.get(o);if(n)return n;if(So.existsSync(o)){let c=So.realpathSync.native(o);return $o.set(o,c),c}let t=[],r=o;for(;!So.existsSync(r);){let c=P.dirname(r);if(c===r)return $o.set(o,o),o;t.unshift(P.basename(r)),r=c}let i=So.realpathSync.native(r),l=P.join(i,...t);return $o.set(o,l),l}a(En,"resolveExistingPathPrefix");function Ur(e){return e==="~"?Ve.homedir():e.startsWith(`~${P.sep}`)||e.startsWith("~/")||e.startsWith("~\\")?P.join(Ve.homedir(),e.slice(2)):e}a(Ur,"expandHomeDirectory");function Fr(e){let o=Ve.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(Fr,"expandSystemTempAlias");function ji(e,o){let n=P.resolve(o??process.cwd()),t=Fr(Ur(e)),r=P.isAbsolute(t)?P.resolve(t):P.resolve(n,t);return En(r)}a(ji,"resolvePermissionPath");function jr(){if(bo)return bo;let e=new Set,o=[Ve.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(En(n))}catch{}return bo=Array.from(e),bo}a(jr,"getSystemTempDirectories");function In(e){let o=En(e??process.cwd());return{projectPlanDoc:P.join(o,Ii),systemTempDirs:jr()}}a(In,"getPlanModeAllowedWritablePaths");function Sn(e,o){let n=ji(e,o),{projectPlanDoc:t,systemTempDirs:r}=In(o);return Ui(n,t)?!0:r.some(i=>Ce(n,i))}a(Sn,"isPlanModeAllowedPath");function Hi(e){let{projectPlanDoc:o,systemTempDirs:n}=In(e),t=n[0]??Ve.tmpdir();return`${o} or the system temp directory (${t})`}a(Hi,"formatPlanModeAllowedLocations");var Bi=new Set(["-a","--append","-i","--ignore-interrupts"]);function qi(e){let o=[];for(let n=1;n<e.argv.length;n+=1){let t=e.argv[n];Bi.has(t)||t.startsWith("-")||o.push(t)}return o}a(qi,"collectTeeTargets");function zi(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(zi,"collectPowerShellWriteTargets");function _e(e){let o=new Set,n=a(r=>{let i=r?.trim();i&&o.add(i)},"pushTarget");for(let r of Ao(e))n(r);let t=Xe(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 qi(i))n(c);else if(Dr.has(l))for(let c of zi(i))n(c)}}return Array.from(o)}a(_e,"collectBashWriteTargets");function Hr(e,o){if(!bn(e))return{dangerous:!1};let n=new Set([..._e(e),...Fi(e)]);for(let t of n)if(!Tn(t,o))return{dangerous:!0,reason:`Command may modify file outside project: ${t}`};return{dangerous:!1}}a(Hr,"getBashOutsideProjectWriteRisk");function Br(e,o,n){let t=Hi(n);if(Qt(e))return null;if(Ke.has(e)){let r=typeof o.path=="string"?o.path:"";return r?Sn(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(!bn(r))return null;let i=_e(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=>!Sn(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(Br,"getPlanModeBlockReason");import ae from"node:path";import Ki from"node:os";function Pe(e,o){try{let n=ae.resolve(e),t=ae.resolve(o);return n===t?!0:n.startsWith(t+ae.sep)}catch{return!1}}a(Pe,"isPathUnder");function Gi(){try{return po()}catch{return}}a(Gi,"safeGetAgentConfigHome");function qr(e,o){let n=Gi();if(n&&Pe(e,n))return"user-kodax";let t=ae.join(ae.resolve(o),".kodax");if(Pe(e,t))return"project-kodax"}a(qr,"resolveProtectedZone");function Xi(){let e=new Set;try{e.add(Ki.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(Xi,"getSystemTempDirs");var Vi=new Set(["bash"]),Yi={toolNames:Vi,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=Xi(),c=ae.resolve(o);for(let d of Ao(n)){let u;try{u=ae.resolve(o,d)}catch{continue}let w=qr(u,o);if(w){r.has(u)||(r.add(u),t.push({kind:"protected_path",path:d,zone:w}));continue}if(Ye(d,o)){let f=l.some(v=>Pe(u,v)),k=Pe(u,c);!f&&!k&&!i.has(u)&&(i.add(u),t.push({kind:"outside_project",path:d}))}}for(let d of _e(n)){let u;try{u=ae.resolve(o,d)}catch{continue}qr(u,o)||Pe(u,c)||l.some(k=>Pe(u,k))||t.push({kind:"shell_redirect_outside",target:d})}return t}};var To=N("config.json");function Gr(){return Kr.join(process.cwd(),".kodax","config.local.json")}a(Gr,"getProjectConfigFile");function su(e=process.env){let n=Je(To).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=zr(n.classifierModel),d=zr(e.KODAX_AUTO_MODE_CLASSIFIER_MODEL),u=e.KODAX_AUTO_MODE_TIMEOUT_MS?.trim(),w=u!==void 0?Number(u):NaN,f=Number.isFinite(w)&&w>0?Math.floor(w):void 0,k=typeof n.timeoutMs=="number"&&n.timeoutMs>0?Math.floor(n.timeoutMs):void 0;return{engine:l,classifierModel:c,classifierModelEnv:d,timeoutMs:f??k}}a(su,"loadAutoModeSettings");function zr(e){if(typeof e!="string")return;let o=e.trim();return o.length===0?void 0:o}a(zr,"nonEmptyString");function Je(e){try{if(Ro.existsSync(e))return JSON.parse(Ro.readFileSync(e,"utf-8"))}catch{}return{}}a(Je,"readJsonFile");function Xr(e,o){Ro.mkdirSync(Kr.dirname(e),{recursive:!0}),Ro.writeFileSync(e,JSON.stringify(o,null,2))}a(Xr,"writeJsonFile");function Cn(e){let o=Je(To);Xr(To,{...o,permissionMode:e})}a(Cn,"savePermissionModeUser");function iu(){let e=Je(To),o=Je(Gr()),n=e.alwaysAllowTools??[],t=o.alwaysAllowTools??[];return[...new Set([...n,...t])]}a(iu,"loadAlwaysAllowTools");function au(e,o,n=!1){let t=Rn(e,o,n);if(!t)return;let r=Gr(),i=Je(r),l=i.alwaysAllowTools??[];l.includes(t)||Xr(r,{...i,alwaysAllowTools:[...l,t]})}a(au,"saveAlwaysAllowToolPattern");var _n=["ama","amaw","sa"];function Vr(e){let o=_n.indexOf(e);return _n[(o+1)%_n.length]??"ama"}a(Vr,"nextAgentMode");var Me=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}},Ji=new Me;import q from"chalk";import{Buffer as Qr}from"node:buffer";import{spawn as Zi}from"node:child_process";import Yr from"node:process";var he="\x1B",Qi="\x07",Pn=`${he}\\`;function Jr(e,o){return e.SSH_CONNECTION?!1:o==="win32"||o==="darwin"||o==="linux"}a(Jr,"shouldPreferNativeClipboard");function ea(e,o){let n=Qr.from(e,"utf8").toString("base64"),t=o.TERM==="xterm-kitty"?Pn:Qi,r=`${he}]52;c;${n}${t}`;return o.TMUX?`${he}Ptmux;${r.replaceAll(he,`${he}${he}`)}${Pn}`:o.STY?`${he}P${r}${Pn}`:r}a(ea,"buildOscSequence");async function Eo(e,o,n){return new Promise((t,r)=>{let i=Zi(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(Eo,"execClipboardCommand");function oa(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=Qr.from(e,"utf8");return[["powershell",["-NoProfile","-NonInteractive","-Command",o],n],["pwsh",["-NoProfile","-NonInteractive","-Command",o],n],["cmd",["/c","chcp 65001 >nul & clip"],n]]}a(oa,"buildWindowsClipboardCandidates");async function Zr(e,o,n){if(o.SSH_CONNECTION)return!1;switch(n){case"win32":{let t=oa(e);for(let[r,i,l]of t)try{if(await Eo(r,i,l))return!0}catch{}return!1}case"darwin":return Eo("pbcopy",[],e);case"linux":{let t=[["wl-copy",[]],["xclip",["-selection","clipboard"]],["xsel",["--clipboard","--input"]]];for(let[r,i]of t)try{if(await Eo(r,i,e))return!0}catch{}return!1}default:return!1}}a(Zr,"tryNativeClipboard");async function na(e,o){if(!o.TMUX)return!1;let n=o.LC_TERMINAL==="iTerm2"?["load-buffer","-"]:["load-buffer","-w","-"];try{return await Eo("tmux",n,e)}catch{return!1}}a(na,"tryTmuxClipboard");async function es(e,o={}){let n=o.env??Yr.env,t=o.platform??Yr.platform,r=e.trimEnd(),i=ea(r,n);if(!r)throw new Error("Nothing to copy.");if(Jr(n,t))try{if(await Zr(r,n,t))return{path:"native"}}catch{}if(await na(r,n))return{path:"tmux-buffer"};if(o.terminalWrite?.(i))return{path:"osc52"};if(!Jr(n,t))try{if(await Zr(r,n,t))return{path:"native"}}catch{}throw new Error("Unable to access any clipboard path.")}a(es,"copyTextToClipboard");var Mn;(function(e){e.Idle="idle",e.Responding="responding",e.WaitingForConfirmation="waiting_for_confirmation"})(Mn||(Mn={}));var F;(function(e){e.Scheduled="scheduled",e.Validating="validating",e.AwaitingApproval="awaiting_approval",e.Executing="executing",e.Success="success",e.Error="error",e.Cancelled="cancelled"})(F||(F={}));var ku={[F.Scheduled]:"\u25CB",[F.Validating]:"\u25CC",[F.AwaitingApproval]:"?",[F.Executing]:"\u25CB",[F.Success]:"\u2713",[F.Error]:"\u2717",[F.Cancelled]:"-"},os;(function(e){e[e.Low=-100]="Low",e[e.Normal=0]="Normal",e[e.High=100]="High",e[e.Critical=200]="Critical"})(os||(os={}));var vu={streamingState:Mn.Idle,currentResponse:"",history:[],pendingToolCalls:[],sessionId:"",provider:"",model:"",isLoading:!1};var ta="[redacted]",ns="[truncated]";function Q(e,o=2e3){return e.length>o?`${e.slice(0,o-3)}...`:e}a(Q,"truncateToolReplayText");function ra(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(ra,"isSensitiveToolInputKey");function ts(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(ts,"isRecord");function Wn(e,o=0,n=new WeakSet){if(e===null||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="string")return Q(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=>Wn(r,o+1,n));if(!ts(e))return Q(String(e));let t={};for(let[r,i]of Object.entries(e).slice(0,50))t[r]=ra(r)?ta:Wn(i,o+1,n);return t}return Q(String(e))}a(Wn,"sanitizeToolJsonValue");function rs(e){if(!e)return;let o=Wn(e);return ts(o)?o:void 0}a(rs,"sanitizeToolInput");function ss(e){if(e!==void 0){if(typeof e=="string")return Q(e);try{return Q(JSON.stringify(e))}catch{return Q(String(e))}}}a(ss,"stringifyToolReplayValue");function Ru(e){return e.type==="tool_summary"?{type:"event",text:e.text,icon:"tool"}:e.type==="tool_group"?{type:"tool_group",tools:e.tools.map(fa)}:e}a(Ru,"seedToHistoryItem");var sa="[Thinking]",ia="[/Thinking]",aa="Untitled Session",is=50,la=60,ls="...",cs=["[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:"],ds=[/(?:^|\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:/],ca=/(^|\r?\n)\[Thinking\]\r?\n([\s\S]*?)\r?\n\[\/Thinking\](?=\r?\n|$)/g,da="Session ended before the tool completed.";function ua(e){switch(e){case"success":return F.Success;case"error":return F.Error;case"cancelled":return F.Cancelled;case"awaiting_approval":return F.AwaitingApproval;default:return e}}a(ua,"toolCallSeedToHistoryToolStatus");function fa(e){return{id:e.id,name:e.name,status:ua(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(fa,"toolCallSeedToHistoryToolCall");function ma(e){let o=-1;for(let n of cs){let t=e.indexOf(n);t>=0&&(o===-1||t<o)&&(o=t)}for(let n of ds){let t=n.exec(e);t&&t.index>=0&&(o===-1||t.index<o)&&(o=t.index)}return o}a(ma,"findControlPlaneCutIndex");function ga(e){return cs.some(o=>e.includes(o))||ds.some(o=>o.test(e))}a(ga,"hasControlPlaneSignal");function us(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(us,"collectTextBlocks");function Io(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(Io,"isRecord");function pa(e){if(typeof e=="string")return Q(e);if(e===void 0)return"";try{return ss(e)??""}catch{return Q(String(e))}}a(pa,"toolResultContentToString");function wa(e){let o=pa(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(wa,"inferToolResultSeed");function ha(e){let o=new Map;if(!e||e.role!=="user"||!Array.isArray(e.content))return o;for(let n of e.content)!Io(n)||n.type!=="tool_result"||typeof n.tool_use_id!="string"||o.set(n.tool_use_id,wa(n));return o}a(ha,"collectToolResultSeeds");function ya(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:da};return{id:e.id,name:e.name,status:n.status,...e.input!==void 0?{input:rs(Io(e.input)?e.input:{})??{}}:{},...n.output!==void 0?{output:n.output}:{},...n.error!==void 0?{error:n.error}:{}}}a(ya,"buildToolCallSeed");function ka(e){return typeof e=="string"?e:Array.isArray(e)?us(e).join(`
3
- `):""}a(ka,"extractAssistantTextOnly");function Qe(e,o,n){n.trim().length!==0&&e.push({type:o,text:n})}a(Qe,"pushSeed");function as(e){return e.replace(/^\n+/,"").replace(/\n+$/,"")}a(as,"stripLegacyTagBoundaryNewlines");function va(e){let o=e.name,n=e.input;if(!n)return`\u26A1 ${o}`;let t=o==="bash"?Ze(String(n.command??"")):o==="read"||o==="write"||o==="edit"?Ze(String(n.file_path??n.path??"")):o==="grep"||o==="glob"?Ze(String(n.pattern??"")):o==="web_search"||o==="web_fetch"?Ze(String(n.query??n.url??"")):void 0;return t?`\u26A1 ${o}(${t})`:`\u26A1 ${o}`}a(va,"formatToolUseSummary");function Ze(e,o=60){let n=e.replace(/\s+/g," ").trim();return n.length>o?`${n.slice(0,o)}...`:n}a(Ze,"truncateToolHint");function Sa(e){if(!e.includes(sa)||!e.includes(ia))return e.trim().length>0?[{type:"assistant",text:e}]:[];let o=[],n=0;for(let t of e.matchAll(ca)){let r=t.index??-1,i=t[1]??"",l=t[2]??"";if(r<0)continue;let c=r+i.length;Qe(o,"assistant",as(e.slice(n,c))),Qe(o,"thinking",l),n=r+t[0].length}return Qe(o,"assistant",as(e.slice(n))),o.length===0?e.trim().length>0?[{type:"assistant",text:e}]:[]:o}a(Sa,"parseLegacyAssistantContent");function fs(e,o){if(typeof e=="string")return Sa(e);if(!Array.isArray(e))return[];let n=[],t=[],r=[],i=a(()=>{t.length!==0&&(Qe(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(!(!Io(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&&Qe(n,"thinking",String(c.thinking));break;case"tool_use":if(i(),o){let d=ya(c,o);d&&r.push(d)}else if(typeof c.name=="string"){let d=va({name:c.name,...Io(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(fs,"extractAssistantHistorySeeds");var $a=["You are the Scout role","You are the Generator role","You are the Planner role","You are the Evaluator role"],ba=/\r?\n?\`\`\`kodax[\w-]*[\s\S]*?\`\`\`\s*/g;function xa(e){return $a.some(o=>e.includes(o))}a(xa,"isManagedWorkerPrompt");function ms(e){return e.replace(ba,"").trim()}a(ms,"stripManagedProtocolBlocks");function Aa(e){switch(e.role){case"assistant":return fs(e.content).flatMap(n=>{if(n.type!=="assistant")return[n];let t=ms(n.text);return t.length>0?[{...n,text:t}]:[]});case"user":{if(e._synthetic)return[];let o=gs(e.content);return o.trim().length===0||xa(o)?[]:[{type:"user",text:o}]}case"system":return[];default:return[]}}a(Aa,"extractHistorySeedsFromMessage");function Tu(e){let o=[];for(let n=0;n<e.length;n+=1){let t=e[n];if(t){if(t.role==="assistant"){let r=ha(e[n+1]),i=fs(t.content,r);o.push(...i.map(l=>l.type==="assistant"?{...l,text:ms(l.text)}:l).filter(l=>l.type!=="assistant"||l.text.length>0));continue}o.push(...Aa(t))}}return o}a(Tu,"extractHistorySeedsFromMessages");function gs(e){return typeof e=="string"?e:Array.isArray(e)?us(e).join(`
5
- `):""}a(gs,"extractTextContent");function Ra(e){let o=e.replace(/\s+/g," ").trim();return o?o.length>is?`${o.slice(0,is)}${ls}`:o:aa}a(Ra,"formatSessionTitle");function Ln(e){for(let o=e.length-1;o>=0;o--){let n=e[o];if(n?.role!=="assistant")continue;let t=ka(n.content);if(t)return t}return""}a(Ln,"extractLastAssistantText");function Eu(e,o,n,t){let r=[Ln(e),o.trim(),n?.trim()??"",t?.trim()??""];for(let i of r){let l=ps(i);if(l)return l}return""}a(Eu,"resolveCompletedAssistantText");function ps(e){let o=e.trim();if(!o)return"";let n=ma(o);return n===0?"":(n>0?o.slice(0,n):o).trim()}a(ps,"sanitizeUserFacingAssistantText");function Iu(e){let o=e.trim();return o.length>0&&ps(o).length===0&&ga(o)}a(Iu,"isControlPlaneOnlyAssistantText");function Cu(e){let o=e.find(t=>t.role==="user"),n=o?gs(o.content):"";return Ra(n)}a(Cu,"extractTitle");function _u(e,o=la){let n=e.replace(/\n/g," "),t=n.length>o?ls:"";return n.slice(0,o)+t}a(_u,"formatMessagePreview");var On={name:"copy",description:"Copy last assistant message to clipboard",usage:"/copy",handler:a(async(e,o)=>{let n=Ln(o.messages);if(!n){console.log(q.yellow(`
6
- No assistant message found to copy.`)),console.log(q.dim("The assistant needs to respond first before you can copy its message."));return}try{await es(n);let t=n.length>50?n.slice(0,50)+"...":n;console.log(q.green(`
7
- Copied to clipboard!`)),console.log(q.dim(`Preview: ${t}`))}catch(t){let r=t instanceof Error?t.message:String(t);console.log(q.red(`
8
- Failed to copy to clipboard: ${r}`)),console.log(q.dim("You may need to check clipboard permissions or manually copy the message."))}},"handler"),detailedHelp:a(()=>{console.log(q.bold(`
2
+ import{A as pr,B as gr,C as wr,j as cr,l as Ce,m as pn,n as dr,o as ur,p as fr,q as gn,s as wn,t as hn,u as mr,w as So,y as ge}from"./chunk-D4MGMUDL.js";import{a as hr}from"./chunk-5YQDGVDB.js";import{Ja as or,Ma as pe,Qa as Te,Sa as ze,Ta as ko,Ua as nr,Va as tr,Xa as rr,Ya as mn,Za as sr,_a as qe,ab as Ee,cb as ir,lb as vo,mb as ar,sb as lr,tb as Ke}from"./chunk-CLIRXPAJ.js";import{$c as Xt,Nd as Qt,Pd as er,Xc as Z,_ as qt,ad as Vt,ba as Ge,ca as Kt,td as Yt,vd as Jt,w as zt,wd as Zt,zd as fn}from"./chunk-OQL4ISVD.js";import{j as dn,sa as Lt,ta as xe,ua as Ae}from"./chunk-LE6STNVN.js";import{Zc as Re,_c as Bt,cc as Ut,dc as Ft,ec as jt,k as un,nd as Gt,rc as He,sb as Ot,sc as Be,tb as Nt,va as ho,wa as N,xb as Dt,xc as Ht,xd as yo}from"./chunk-XFCAXDSD.js";import{a,b as cn,c as yi}from"./chunk-V4WSBIXB.js";var Ar=cn((Td,xr)=>{"use strict";xr.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 Pr=cn((Cd,_r)=>{"use strict";var Ir="(?:"+["\\|\\|","\\&\\&",";;","\\|\\&","\\<\\(","\\<\\<\\<",">>",">\\&","<\\&","[&;()|<>]"].join("|")+")",Rr=new RegExp("^"+Ir+"$"),Tr="|&;()<> \\t",Si='"((\\\\"|[^"])*?)"',$i="'((\\\\'|[^'])*?)'",bi=/^#$/,Er="'",Cr='"',yn="$",we="",xi=4294967296;for(kn=0;kn<4;kn++)we+=(xi*Math.random()).toString(16);var kn,Ai=new RegExp("^"+we);function Ri(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(Ri,"matchAll");function Ti(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+we+JSON.stringify(t)+we:o+t}a(Ti,"getVar");function Ei(e,o,n){n||(n={});var t=n.escape||"\\",r="(\\"+t+`['"`+Tr+`]|[^\\s'"`+Tr+"])+",i=new RegExp(["("+Ir+")","("+r+"|"+Si+"|"+$i+")+"].join("|"),"g"),l=Ri(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(Rr.test(u))return{op:u};var g=!1,f=!1,k="",v=!1,h;function y(){h+=1;var A,j,H=u.charAt(h);if(H==="{"){if(h+=1,u.charAt(h)==="}")throw new Error("Bad substitution: "+u.slice(h-2,h+1));if(A=u.indexOf("}",h),A<0)throw new Error("Bad substitution: "+u.slice(h));j=u.slice(h,A),h=A}else if(/[*@#?$!_-]/.test(H))j=H,h+=1;else{var K=u.slice(h);A=K.match(/[^\w\d_]/),A?(j=K.slice(0,A.index),h+=A.index-1):(j=K,h=u.length)}return Ti(o,"",j)}for(a(y,"parseEnvVar"),h=0;h<u.length;h++){var m=u.charAt(h);if(v=v||!g&&(m==="*"||m==="?"),f)k+=m,f=!1;else if(g)m===g?g=!1:g==Er?k+=m:m===t?(h+=1,m=u.charAt(h),m===Cr||m===t||m===yn?k+=m:k+=t+m):m===yn?k+=y():k+=m;else if(m===Cr||m===Er)g=m;else{if(Rr.test(m))return{op:u};if(bi.test(m)){c=!0;var x={comment:e.slice(d.index+h+1)};return k.length?[k,x]:[x]}else m===t?f=!0:m===yn?k+=y():k+=m}}return v?{op:"glob",pattern:k}:k}).reduce(function(d,u){return typeof u>"u"?d:d.concat(u)},[])}a(Ei,"parseInternal");_r.exports=a(function(o,n,t){var r=Ei(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("("+we+".*?"+we+")","g"));return c.length===1?i.concat(c[0]):i.concat(c.filter(Boolean).map(function(d){return Ai.test(d)?JSON.parse(d.split(we)[1]):d}))},[])},"parse")});var Mr=cn(vn=>{"use strict";vn.quote=Ar();vn.parse=Pr()});import*as on from"fs";import*as mo from"path";import s from"chalk";var $o=["plan","accept-edits","auto","auto-in-project"];function bd(e){return e==="auto"||e==="auto-in-project"}a(bd,"isAutoMode");function ki(e){switch(e){case"plan":return"Plan";case"accept-edits":return"Edits";case"auto":case"auto-in-project":return"Auto"}}a(ki,"permissionModeDisplayName");var vi='[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 xd(e=console.warn){let o=!1;return()=>{o||(o=!0,e(vi))}}a(xd,"createAutoInProjectDeprecationEmitter");var yr=Qt(),Xe=new Set(yr.filter(e=>e.sideEffect==="mutates-fs"&&e.requiredParams.includes("path")).map(e=>e.name)),kr=new Set(yr.filter(e=>e.sideEffect!=="readonly").map(e=>e.name)),vr=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"]),Sr=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 $r(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($r,"computeConfirmTools");function br(e){return e!==void 0&&$o.includes(e)}a(br,"isPermissionMode");function Ve(e,o){return br(e)?e:o}a(Ve,"normalizePermissionMode");import Eo from"fs";import Kr from"path";import bo from"fs";import P from"path";import Je from"os";var Or=yi(Mr(),1);var Wr=new Set(["/dev/null","nul","NUL"]);function Sn(e){return Wr.has(e)||Wr.has(e.toLowerCase())}a(Sn,"isNullDevice");function Ye(e){let o=e.trim();if(!o)return{statements:[],unparseable:!1};if(o.includes("`"))return{statements:[],unparseable:!0};let n;try{n=(0,Or.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"),g=a(f=>{u(),r.length>0&&(t.push({precedingOp:c,stages:r}),r=[]),c=f},"flushStatement");for(let f=0;f<n.length;f+=1){let k=n[f];if(typeof k=="string"){i.push(k);continue}if("op"in k){let v=k.op;if(v==="&&"||v==="||"||v===";"){g(v);continue}if(v==="|"){u();continue}if(v==="&"){let h=n[f+1];if(h!==void 0&&typeof h!="string"&&"op"in h&&(h.op===">"||h.op===">>")){let y=n[f+2];if(typeof y!="string"){d=!0,f+=1;continue}l.push(Lr(`&${h.op}`,y)),f+=2;continue}d=!0;continue}if(Ii(v)){let h=null,y=i[i.length-1];y!==void 0&&/^[0-9]+$/.test(y)&&(h=y,i.pop());let m=n[f+1];if(typeof m!="string"){d=!0;continue}l.push(Lr(h?`${h}${v}`:v,m)),f+=1;continue}if(v==="glob"){let h=k.pattern;typeof h=="string"?i.push(h):d=!0;continue}d=!0;continue}if("comment"in k)break;d=!0}return g(null),{statements:t,unparseable:d}}a(Ye,"parseBashCommand");var Ci=new Set([">",">>","<","<<","<<<","&>","&>>"]),Nr=/^([0-9]+|&)(>>?|<<?)$/;function Ii(e){return Ci.has(e)||Nr.test(e)}a(Ii,"isRedirectionOp");function Lr(e,o){let n=null,t=e,r=Nr.exec(e);return r&&(n=r[1],t=r[2]),{op:e,fd:n,append:t===">>"||e==="&>>",input:t==="<"||t==="<<"||e==="<<<",target:o}}a(Lr,"parseRedirection");var _i=P.join(".agent","plan_mode_doc.md"),xo=new Map,Ao=null;function Pi(e){if(!e||!e.trim())return!1;let o=e.trim().replace(/\s+/g," ").toLowerCase();for(let n of Sr)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(Pi,"isSingleBashReadCommand");var Mi=/^[a-zA-Z0-9]+$/;function Wi(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(!Mi.test(t))return!1;return n}a(Wi,"isHelpCommand");function bn(e){if(!e||!e.trim())return!1;if(Wi(e))return!0;let o=e.trim().replace(/\\\r?\n/g," "),n=Ye(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||!Sn(c.target))return!1;let l=i.argv.join(" ");if(l&&!(t&&i.argv[0]?.toLowerCase()==="cd"&&i.argv.length>=2)&&!Pi(l))return!1}}return!0}a(bn,"isBashReadCommand");function Li(e){let o=e.trim();return o?bn(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(Li,"getDirectShellBypassBlockReason");var Ur=new Set(["remove-item","set-content","add-content","out-file","new-item","copy-item","move-item","rename-item","ni"]);function xn(e){if(!e||!e.trim())return!1;let o=Ye(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 vr)if(c===i||l!==null&&c===l)return!0}for(let i of r)if(Ur.has(i))return!0;for(let i of t.redirections)if(!i.input&&!Sn(i.target))return!0}return!1}a(xn,"isBashWriteCommand");function An(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(An,"parseAllowedToolPattern");function Oi(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e.startsWith(n)}return e===o}a(Oi,"matchesBashPatternLegacy");function Ni(e,o){if(o==="*")return!1;if(o.endsWith(":*")){let n=o.slice(0,-2);return e===n}return e===o}a(Ni,"matchesBashPatternByExtractedPrefix");async function Rn(e,o,n,t,r){if(e.toLowerCase()!=="bash")return!1;let i=o.command??"",l=[];for(let c of n){let d=An(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&&Ni(c.value,d))return!0;return!1}for(let{pattern:c}of l)if(c&&Oi(i,c))return!0;return!1}a(Rn,"isToolCallAllowed");function Tn(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(Tn,"generateSavePattern");function Ze(e,o){try{let n=P.resolve(e),t=P.resolve(o),r=ho(),i=P.join(t,".kodax");return Ie(n,i)||Ie(n,r)?!0:!(Ie(n,t)||Hr().some(c=>Ie(n,c)))}catch{return!1}}a(Ze,"isAlwaysConfirmPath");function Dr(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"&&Di.test(e)):!!(e.startsWith(".")&&/[/\\]/.test(e))}a(Dr,"looksLikePath");var Di=/^\/[A-Za-z][A-Za-z0-9]*(?::[A-Za-z0-9]+)?$/;function Ui(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(Ui,"legacyRegexPathScan");function To(e){let o=new Set,n=Ye(e);if(!n.unparseable)for(let t of n.statements)for(let r of t.stages){for(let i of r.argv)Dr(i)&&o.add(i);for(let i of r.redirections)Dr(i.target)&&o.add(i.target)}for(let t of Ui(e))o.add(t);return Array.from(o)}a(To,"extractPathsFromCommand");function Fi(e,o){let n=To(e);for(let t of n)if(Ze(t,o))return!0;return!1}a(Fi,"isCommandOnProtectedPath");function Ro(e){let o=P.normalize(e);return process.platform==="win32"?o.toLowerCase():o}a(Ro,"normalizePathForComparison");function ji(e,o){return Ro(e)===Ro(o)}a(ji,"pathsEqual");function Ie(e,o){let n=Ro(e),t=Ro(o);return n===t||n.startsWith(t+P.sep)}a(Ie,"isPathInsideDirectory");function En(e,o){try{let n=P.resolve(o),t=P.resolve(n,jr(Fr(e)));return Ie(t,n)}catch{return!1}}a(En,"isPathInsideProject");function Hi(e){let o=e.match(/[A-Za-z]:[\\/][^\s;|&<>(){}'"]+|\/[^\s;|&<>(){}'"]+/g);return o?o.filter(n=>!/^(?:\/dev\/|\/proc\/)/i.test(n)):[]}a(Hi,"collectAbsolutePathCandidates");function Cn(e){let o=P.resolve(e),n=xo.get(o);if(n)return n;if(bo.existsSync(o)){let c=bo.realpathSync.native(o);return xo.set(o,c),c}let t=[],r=o;for(;!bo.existsSync(r);){let c=P.dirname(r);if(c===r)return xo.set(o,o),o;t.unshift(P.basename(r)),r=c}let i=bo.realpathSync.native(r),l=P.join(i,...t);return xo.set(o,l),l}a(Cn,"resolveExistingPathPrefix");function Fr(e){return e==="~"?Je.homedir():e.startsWith(`~${P.sep}`)||e.startsWith("~/")||e.startsWith("~\\")?P.join(Je.homedir(),e.slice(2)):e}a(Fr,"expandHomeDirectory");function jr(e){let o=Je.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(jr,"expandSystemTempAlias");function Bi(e,o){let n=P.resolve(o??process.cwd()),t=jr(Fr(e)),r=P.isAbsolute(t)?P.resolve(t):P.resolve(n,t);return Cn(r)}a(Bi,"resolvePermissionPath");function Hr(){if(Ao)return Ao;let e=new Set,o=[Je.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(Cn(n))}catch{}return Ao=Array.from(e),Ao}a(Hr,"getSystemTempDirectories");function In(e){let o=Cn(e??process.cwd());return{projectPlanDoc:P.join(o,_i),systemTempDirs:Hr()}}a(In,"getPlanModeAllowedWritablePaths");function $n(e,o){let n=Bi(e,o),{projectPlanDoc:t,systemTempDirs:r}=In(o);return ji(n,t)?!0:r.some(i=>Ie(n,i))}a($n,"isPlanModeAllowedPath");function Gi(e){let{projectPlanDoc:o,systemTempDirs:n}=In(e),t=n[0]??Je.tmpdir();return`${o} or the system temp directory (${t})`}a(Gi,"formatPlanModeAllowedLocations");var zi=new Set(["-a","--append","-i","--ignore-interrupts"]);function qi(e){let o=[];for(let n=1;n<e.argv.length;n+=1){let t=e.argv[n];zi.has(t)||t.startsWith("-")||o.push(t)}return o}a(qi,"collectTeeTargets");function Ki(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(Ki,"collectPowerShellWriteTargets");function _e(e){let o=new Set,n=a(r=>{let i=r?.trim();i&&o.add(i)},"pushTarget");for(let r of To(e))n(r);let t=Ye(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 qi(i))n(c);else if(Ur.has(l))for(let c of Ki(i))n(c)}}return Array.from(o)}a(_e,"collectBashWriteTargets");function Br(e,o){if(!xn(e))return{dangerous:!1};let n=new Set([..._e(e),...Hi(e)]);for(let t of n)if(!En(t,o))return{dangerous:!0,reason:`Command may modify file outside project: ${t}`};return{dangerous:!1}}a(Br,"getBashOutsideProjectWriteRisk");function Gr(e,o,n){let t=Gi(n);if(er(e))return null;if(Xe.has(e)){let r=typeof o.path=="string"?o.path:"";return r?$n(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(!xn(r))return null;let i=_e(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=>!$n(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(Gr,"getPlanModeBlockReason");import ae from"node:path";import Xi from"node:os";function Pe(e,o){try{let n=ae.resolve(e),t=ae.resolve(o);return n===t?!0:n.startsWith(t+ae.sep)}catch{return!1}}a(Pe,"isPathUnder");function Vi(){try{return ho()}catch{return}}a(Vi,"safeGetAgentConfigHome");function zr(e,o){let n=Vi();if(n&&Pe(e,n))return"user-kodax";let t=ae.join(ae.resolve(o),".kodax");if(Pe(e,t))return"project-kodax"}a(zr,"resolveProtectedZone");function Yi(){let e=new Set;try{e.add(Xi.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(Yi,"getSystemTempDirs");var Ji=new Set(["bash"]),Zi={toolNames:Ji,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=Yi(),c=ae.resolve(o);for(let d of To(n)){let u;try{u=ae.resolve(o,d)}catch{continue}let g=zr(u,o);if(g){r.has(u)||(r.add(u),t.push({kind:"protected_path",path:d,zone:g}));continue}if(Ze(d,o)){let f=l.some(v=>Pe(u,v)),k=Pe(u,c);!f&&!k&&!i.has(u)&&(i.add(u),t.push({kind:"outside_project",path:d}))}}for(let d of _e(n)){let u;try{u=ae.resolve(o,d)}catch{continue}zr(u,o)||Pe(u,c)||l.some(k=>Pe(u,k))||t.push({kind:"shell_redirect_outside",target:d})}return t}};var Co=N("config.json");function Xr(){return Kr.join(process.cwd(),".kodax","config.local.json")}a(Xr,"getProjectConfigFile");function pu(e=process.env){let n=Qe(Co).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=qr(n.classifierModel),d=qr(e.KODAX_AUTO_MODE_CLASSIFIER_MODEL),u=e.KODAX_AUTO_MODE_TIMEOUT_MS?.trim(),g=u!==void 0?Number(u):NaN,f=Number.isFinite(g)&&g>0?Math.floor(g):void 0,k=typeof n.timeoutMs=="number"&&n.timeoutMs>0?Math.floor(n.timeoutMs):void 0;return{engine:l,classifierModel:c,classifierModelEnv:d,timeoutMs:f??k}}a(pu,"loadAutoModeSettings");function qr(e){if(typeof e!="string")return;let o=e.trim();return o.length===0?void 0:o}a(qr,"nonEmptyString");function Qe(e){try{if(Eo.existsSync(e))return JSON.parse(Eo.readFileSync(e,"utf-8"))}catch{}return{}}a(Qe,"readJsonFile");function Vr(e,o){Eo.mkdirSync(Kr.dirname(e),{recursive:!0}),Eo.writeFileSync(e,JSON.stringify(o,null,2))}a(Vr,"writeJsonFile");function _n(e){let o=Qe(Co);Vr(Co,{...o,permissionMode:e})}a(_n,"savePermissionModeUser");function gu(){let e=Qe(Co),o=Qe(Xr()),n=e.alwaysAllowTools??[],t=o.alwaysAllowTools??[];return[...new Set([...n,...t])]}a(gu,"loadAlwaysAllowTools");function wu(e,o,n=!1){let t=Tn(e,o,n);if(!t)return;let r=Xr(),i=Qe(r),l=i.alwaysAllowTools??[];l.includes(t)||Vr(r,{...i,alwaysAllowTools:[...l,t]})}a(wu,"saveAlwaysAllowToolPattern");var Pn=["ama","amaw","sa"];function Yr(e){let o=Pn.indexOf(e);return Pn[(o+1)%Pn.length]??"ama"}a(Yr,"nextAgentMode");var Me=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}},Qi=new Me;import G from"chalk";import{Buffer as es}from"node:buffer";import{spawn as ea}from"node:child_process";import Jr from"node:process";var he="\x1B",oa="\x07",Mn=`${he}\\`;function Zr(e,o){return e.SSH_CONNECTION?!1:o==="win32"||o==="darwin"||o==="linux"}a(Zr,"shouldPreferNativeClipboard");function na(e,o){let n=es.from(e,"utf8").toString("base64"),t=o.TERM==="xterm-kitty"?Mn:oa,r=`${he}]52;c;${n}${t}`;return o.TMUX?`${he}Ptmux;${r.replaceAll(he,`${he}${he}`)}${Mn}`:o.STY?`${he}P${r}${Mn}`:r}a(na,"buildOscSequence");async function Io(e,o,n){return new Promise((t,r)=>{let i=ea(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(Io,"execClipboardCommand");function ta(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=es.from(e,"utf8");return[["powershell",["-NoProfile","-NonInteractive","-Command",o],n],["pwsh",["-NoProfile","-NonInteractive","-Command",o],n],["cmd",["/c","chcp 65001 >nul & clip"],n]]}a(ta,"buildWindowsClipboardCandidates");async function Qr(e,o,n){if(o.SSH_CONNECTION)return!1;switch(n){case"win32":{let t=ta(e);for(let[r,i,l]of t)try{if(await Io(r,i,l))return!0}catch{}return!1}case"darwin":return Io("pbcopy",[],e);case"linux":{let t=[["wl-copy",[]],["xclip",["-selection","clipboard"]],["xsel",["--clipboard","--input"]]];for(let[r,i]of t)try{if(await Io(r,i,e))return!0}catch{}return!1}default:return!1}}a(Qr,"tryNativeClipboard");async function ra(e,o){if(!o.TMUX)return!1;let n=o.LC_TERMINAL==="iTerm2"?["load-buffer","-"]:["load-buffer","-w","-"];try{return await Io("tmux",n,e)}catch{return!1}}a(ra,"tryTmuxClipboard");async function os(e,o={}){let n=o.env??Jr.env,t=o.platform??Jr.platform,r=e.trimEnd(),i=na(r,n);if(!r)throw new Error("Nothing to copy.");if(Zr(n,t))try{if(await Qr(r,n,t))return{path:"native"}}catch{}if(await ra(r,n))return{path:"tmux-buffer"};if(o.terminalWrite?.(i))return{path:"osc52"};if(!Zr(n,t))try{if(await Qr(r,n,t))return{path:"native"}}catch{}throw new Error("Unable to access any clipboard path.")}a(os,"copyTextToClipboard");var Wn;(function(e){e.Idle="idle",e.Responding="responding",e.WaitingForConfirmation="waiting_for_confirmation"})(Wn||(Wn={}));var F;(function(e){e.Scheduled="scheduled",e.Validating="validating",e.AwaitingApproval="awaiting_approval",e.Executing="executing",e.Success="success",e.Error="error",e.Cancelled="cancelled"})(F||(F={}));var Eu={[F.Scheduled]:"\u25CB",[F.Validating]:"\u25CC",[F.AwaitingApproval]:"?",[F.Executing]:"\u25CB",[F.Success]:"\u2713",[F.Error]:"\u2717",[F.Cancelled]:"-"},ns;(function(e){e[e.Low=-100]="Low",e[e.Normal=0]="Normal",e[e.High=100]="High",e[e.Critical=200]="Critical"})(ns||(ns={}));var Cu={streamingState:Wn.Idle,currentResponse:"",history:[],pendingToolCalls:[],sessionId:"",provider:"",model:"",isLoading:!1};var sa="[redacted]",ts="[truncated]";function Q(e,o=2e3){return e.length>o?`${e.slice(0,o-3)}...`:e}a(Q,"truncateToolReplayText");function ia(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(ia,"isSensitiveToolInputKey");function rs(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(rs,"isRecord");function Ln(e,o=0,n=new WeakSet){if(e===null||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="string")return Q(e);if(o>=6)return ts;if(typeof e=="object"&&e!==null){if(n.has(e))return ts;if(n.add(e),Array.isArray(e))return e.slice(0,50).map(r=>Ln(r,o+1,n));if(!rs(e))return Q(String(e));let t={};for(let[r,i]of Object.entries(e).slice(0,50))t[r]=ia(r)?sa:Ln(i,o+1,n);return t}return Q(String(e))}a(Ln,"sanitizeToolJsonValue");function ss(e){if(!e)return;let o=Ln(e);return rs(o)?o:void 0}a(ss,"sanitizeToolInput");function is(e){if(e!==void 0){if(typeof e=="string")return Q(e);try{return Q(JSON.stringify(e))}catch{return Q(String(e))}}}a(is,"stringifyToolReplayValue");function Lu(e){return e.type==="tool_summary"?{type:"event",text:e.text,icon:"tool"}:e.type==="tool_group"?{type:"tool_group",tools:e.tools.map(pa)}:e}a(Lu,"seedToHistoryItem");var aa="[Thinking]",la="[/Thinking]",ca="Untitled Session",as=50,da=60,cs="...",ds=["[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:"],us=[/(?:^|\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:/],ua=/(^|\r?\n)\[Thinking\]\r?\n([\s\S]*?)\r?\n\[\/Thinking\](?=\r?\n|$)/g,fa="Session ended before the tool completed.";function ma(e){switch(e){case"success":return F.Success;case"error":return F.Error;case"cancelled":return F.Cancelled;case"awaiting_approval":return F.AwaitingApproval;default:return e}}a(ma,"toolCallSeedToHistoryToolStatus");function pa(e){return{id:e.id,name:e.name,status:ma(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(pa,"toolCallSeedToHistoryToolCall");function ga(e){let o=-1;for(let n of ds){let t=e.indexOf(n);t>=0&&(o===-1||t<o)&&(o=t)}for(let n of us){let t=n.exec(e);t&&t.index>=0&&(o===-1||t.index<o)&&(o=t.index)}return o}a(ga,"findControlPlaneCutIndex");function wa(e){return ds.some(o=>e.includes(o))||us.some(o=>o.test(e))}a(wa,"hasControlPlaneSignal");function fs(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(fs,"collectTextBlocks");function _o(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}a(_o,"isRecord");function ha(e){if(typeof e=="string")return Q(e);if(e===void 0)return"";try{return is(e)??""}catch{return Q(String(e))}}a(ha,"toolResultContentToString");function ya(e){let o=ha(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(ya,"inferToolResultSeed");function ka(e){let o=new Map;if(!e||e.role!=="user"||!Array.isArray(e.content))return o;for(let n of e.content)!_o(n)||n.type!=="tool_result"||typeof n.tool_use_id!="string"||o.set(n.tool_use_id,ya(n));return o}a(ka,"collectToolResultSeeds");function va(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:fa};return{id:e.id,name:e.name,status:n.status,...e.input!==void 0?{input:ss(_o(e.input)?e.input:{})??{}}:{},...n.output!==void 0?{output:n.output}:{},...n.error!==void 0?{error:n.error}:{}}}a(va,"buildToolCallSeed");function Sa(e){return typeof e=="string"?e:Array.isArray(e)?fs(e).join(`
3
+ `):""}a(Sa,"extractAssistantTextOnly");function oo(e,o,n){n.trim().length!==0&&e.push({type:o,text:n})}a(oo,"pushSeed");function ls(e){return e.replace(/^\n+/,"").replace(/\n+$/,"")}a(ls,"stripLegacyTagBoundaryNewlines");function $a(e){let o=e.name,n=e.input;if(!n)return`\u26A1 ${o}`;let t=o==="bash"?eo(String(n.command??"")):o==="read"||o==="write"||o==="edit"?eo(String(n.file_path??n.path??"")):o==="grep"||o==="glob"?eo(String(n.pattern??"")):o==="web_search"||o==="web_fetch"?eo(String(n.query??n.url??"")):void 0;return t?`\u26A1 ${o}(${t})`:`\u26A1 ${o}`}a($a,"formatToolUseSummary");function eo(e,o=60){let n=e.replace(/\s+/g," ").trim();return n.length>o?`${n.slice(0,o)}...`:n}a(eo,"truncateToolHint");function ba(e){if(!e.includes(aa)||!e.includes(la))return e.trim().length>0?[{type:"assistant",text:e}]:[];let o=[],n=0;for(let t of e.matchAll(ua)){let r=t.index??-1,i=t[1]??"",l=t[2]??"";if(r<0)continue;let c=r+i.length;oo(o,"assistant",ls(e.slice(n,c))),oo(o,"thinking",l),n=r+t[0].length}return oo(o,"assistant",ls(e.slice(n))),o.length===0?e.trim().length>0?[{type:"assistant",text:e}]:[]:o}a(ba,"parseLegacyAssistantContent");function ms(e,o){if(typeof e=="string")return ba(e);if(!Array.isArray(e))return[];let n=[],t=[],r=[],i=a(()=>{t.length!==0&&(oo(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(!(!_o(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&&oo(n,"thinking",String(c.thinking));break;case"tool_use":if(i(),o){let d=va(c,o);d&&r.push(d)}else if(typeof c.name=="string"){let d=$a({name:c.name,..._o(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(ms,"extractAssistantHistorySeeds");var xa=["You are the Scout role","You are the Generator role","You are the Planner role","You are the Evaluator role"],Aa=/\r?\n?\`\`\`kodax[\w-]*[\s\S]*?\`\`\`\s*/g;function Ra(e){return xa.some(o=>e.includes(o))}a(Ra,"isManagedWorkerPrompt");function ps(e){return e.replace(Aa,"").trim()}a(ps,"stripManagedProtocolBlocks");function Ta(e){switch(e.role){case"assistant":return ms(e.content).flatMap(n=>{if(n.type!=="assistant")return[n];let t=ps(n.text);return t.length>0?[{...n,text:t}]:[]});case"user":{if(e._synthetic)return[];let o=gs(e.content);return o.trim().length===0||Ra(o)?[]:[{type:"user",text:o}]}case"system":return[];default:return[]}}a(Ta,"extractHistorySeedsFromMessage");function Ou(e){let o=[];for(let n=0;n<e.length;n+=1){let t=e[n];if(t){if(t.role==="assistant"){let r=ka(e[n+1]),i=ms(t.content,r);o.push(...i.map(l=>l.type==="assistant"?{...l,text:ps(l.text)}:l).filter(l=>l.type!=="assistant"||l.text.length>0));continue}o.push(...Ta(t))}}return o}a(Ou,"extractHistorySeedsFromMessages");function gs(e){return typeof e=="string"?e:Array.isArray(e)?fs(e).join(`
5
+ `):""}a(gs,"extractTextContent");function Ea(e){let o=e.replace(/\s+/g," ").trim();return o?o.length>as?`${o.slice(0,as)}${cs}`:o:ca}a(Ea,"formatSessionTitle");function On(e){for(let o=e.length-1;o>=0;o--){let n=e[o];if(n?.role!=="assistant")continue;let t=Sa(n.content);if(t)return t}return""}a(On,"extractLastAssistantText");function Nu(e,o,n,t){let r=[On(e),o.trim(),n?.trim()??"",t?.trim()??""];for(let i of r){let l=ws(i);if(l)return l}return""}a(Nu,"resolveCompletedAssistantText");function ws(e){let o=e.trim();if(!o)return"";let n=ga(o);return n===0?"":(n>0?o.slice(0,n):o).trim()}a(ws,"sanitizeUserFacingAssistantText");function Du(e){let o=e.trim();return o.length>0&&ws(o).length===0&&wa(o)}a(Du,"isControlPlaneOnlyAssistantText");function Uu(e){let o=e.find(t=>t.role==="user"),n=o?gs(o.content):"";return Ea(n)}a(Uu,"extractTitle");function Fu(e,o=da){let n=e.replace(/\n/g," "),t=n.length>o?cs:"";return n.slice(0,o)+t}a(Fu,"formatMessagePreview");var Nn={name:"copy",description:"Copy last assistant message to clipboard",usage:"/copy",handler:a(async(e,o)=>{let n=On(o.messages);if(!n){console.log(G.yellow(`
6
+ No assistant message found to copy.`)),console.log(G.dim("The assistant needs to respond first before you can copy its message."));return}try{await os(n);let t=n.length>50?n.slice(0,50)+"...":n;console.log(G.green(`
7
+ Copied to clipboard!`)),console.log(G.dim(`Preview: ${t}`))}catch(t){let r=t instanceof Error?t.message:String(t);console.log(G.red(`
8
+ Failed to copy to clipboard: ${r}`)),console.log(G.dim("You may need to check clipboard permissions or manually copy the message."))}},"handler"),detailedHelp:a(()=>{console.log(G.bold(`
9
9
  /copy - Copy Last Assistant Message
10
- `)),console.log("Usage:"),console.log(q.cyan(" /copy")+` - Copy the last assistant message to clipboard
10
+ `)),console.log("Usage:"),console.log(G.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
- `),console.log("Examples:"),console.log(q.dim(" User: Explain how async/await works")),console.log(q.dim(" AI: [responds with explanation]")),console.log(q.cyan(" /copy")+q.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*as V from"node:fs";import*as Co from"node:path";import b from"chalk";function Ta(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(Ta,"resolveCwd");function hs(e){let o;try{o=V.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=Co.join(e,t.name),i="",l=0;try{i=V.readFileSync(r,"utf-8"),l=V.statSync(r).mtimeMs}catch(f){console.error(`[memory] failed to read ${r}:`,f);continue}let d=Nt(i).frontmatter,u=d.name!==void 0||d.description!==void 0||d.type!==void 0,w=Co.basename(t.name,".md");n.push({filename:t.name,absPath:r,mtimeMs:l,title:d.name?.trim()||w,description:d.description?.trim()||w,type:d.type,parseOk:u})}return n}a(hs,"readTopicFiles");function Ea(e){return e.map(o=>`- [${o.title}](${o.filename}) \u2014 ${o.description}`)}a(Ea,"buildIndexLines");async function Ia(e,o){console.log(b.cyan(`
14
- [memory] per-project memory directory`)),console.log(b.dim(` ${e}`));let n=hs(e),t=n.filter(l=>!l.parseOk);console.log(b.dim(` ${n.length} topic file${n.length===1?"":"s"}`+(t.length>0?`, ${t.length} without parsable frontmatter`:"")));let r=!1,i="";try{i=V.readFileSync(o,"utf-8"),r=!0}catch{r=!1}if(!r){console.log(b.yellow(`
12
+ `),console.log("Examples:"),console.log(G.dim(" User: Explain how async/await works")),console.log(G.dim(" AI: [responds with explanation]")),console.log(G.cyan(" /copy")+G.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*as V from"node:fs";import*as Po from"node:path";import b from"chalk";function Ca(e){return e.runtimeInfo?.workspaceRoot??e.runtimeInfo?.executionCwd??process.cwd()}a(Ca,"resolveCwd");function ys(e){let o;try{o=V.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=Po.join(e,t.name),i="",l=0;try{i=V.readFileSync(r,"utf-8"),l=V.statSync(r).mtimeMs}catch(f){console.error(`[memory] failed to read ${r}:`,f);continue}let d=Dt(i).frontmatter,u=d.name!==void 0||d.description!==void 0||d.type!==void 0,g=Po.basename(t.name,".md");n.push({filename:t.name,absPath:r,mtimeMs:l,title:d.name?.trim()||g,description:d.description?.trim()||g,type:d.type,parseOk:u})}return n}a(ys,"readTopicFiles");function Ia(e){return e.map(o=>`- [${o.title}](${o.filename}) \u2014 ${o.description}`)}a(Ia,"buildIndexLines");async function _a(e,o){console.log(b.cyan(`
14
+ [memory] per-project memory directory`)),console.log(b.dim(` ${e}`));let n=ys(e),t=n.filter(l=>!l.parseOk);console.log(b.dim(` ${n.length} topic file${n.length===1?"":"s"}`+(t.length>0?`, ${t.length} without parsable frontmatter`:"")));let r=!1,i="";try{i=V.readFileSync(o,"utf-8"),r=!0}catch{r=!1}if(!r){console.log(b.yellow(`
15
15
  MEMORY.md does not exist yet.`)),n.length>0?console.log(b.dim(" Run `/memory rebuild` to seed it from existing topic files.")):console.log(b.dim(" The LLM will create it on first save \u2014 no action needed.")),console.log();return}console.log(b.cyan(`
16
16
  --- MEMORY.md ---`)),i.trim().length===0?console.log(b.dim(" (empty)")):console.log(i.trimEnd()),console.log(b.cyan(`--- end ---
17
- `))}a(Ia,"listMemory");async function Ca(e,o){let n=!1;try{n=V.statSync(e).isDirectory()}catch{n=!1}if(!n){console.log(b.yellow(`
17
+ `))}a(_a,"listMemory");async function Pa(e,o){let n=!1;try{n=V.statSync(e).isDirectory()}catch{n=!1}if(!n){console.log(b.yellow(`
18
18
  [memory] memory directory does not exist yet \u2014 nothing to rebuild.`)),console.log(b.dim(` ${e}`)),console.log(b.dim(` The LLM will create both the directory and MEMORY.md on first save.
19
- `));return}let t=hs(e);if(t.length===0){console.log(b.yellow(`
19
+ `));return}let t=ys(e);if(t.length===0){console.log(b.yellow(`
20
20
  [memory] no topic files found \u2014 nothing to rebuild.`)),console.log(b.dim(` ${e}
21
- `));return}let r=[...t].sort((d,u)=>u.mtimeMs-d.mtimeMs),l=Ea(r).join(`
21
+ `));return}let r=[...t].sort((d,u)=>u.mtimeMs-d.mtimeMs),l=Ia(r).join(`
22
22
  `)+`
23
23
  `;V.writeFileSync(o,l,"utf-8"),console.log(b.green(`
24
- [memory] rebuilt MEMORY.md with ${r.length} entries (newest first).`)),console.log(b.dim(` ${o}`));let c=r.filter(d=>!d.parseOk);if(c.length>0){console.log(b.yellow(` ${c.length} file(s) had no parsable frontmatter \u2014 used filename as fallback:`));for(let d of c)console.log(b.dim(` - ${d.filename}`));console.log(b.dim(" Tip: add `---\\nname: ...\\ndescription: ...\\ntype: ...\\n---` at the top of those files."))}console.log()}a(Ca,"rebuildMemory");function _a(e,o){console.log(b.cyan(`
24
+ [memory] rebuilt MEMORY.md with ${r.length} entries (newest first).`)),console.log(b.dim(` ${o}`));let c=r.filter(d=>!d.parseOk);if(c.length>0){console.log(b.yellow(` ${c.length} file(s) had no parsable frontmatter \u2014 used filename as fallback:`));for(let d of c)console.log(b.dim(` - ${d.filename}`));console.log(b.dim(" Tip: add `---\\nname: ...\\ndescription: ...\\ntype: ...\\n---` at the top of those files."))}console.log()}a(Pa,"rebuildMemory");function Ma(e,o){console.log(b.cyan(`
25
25
  [memory] open these paths in your editor:`)),console.log(b.dim(" index :"),o),console.log(b.dim(" dir :"),e),console.log(b.dim(`
26
26
  (No in-REPL editor is provided \u2014 open the file in your usual editor.
27
27
  Use \`/memory rebuild\` after manual edits if you renamed any topic file.)
28
- `))}a(_a,"openMemory");function ws(){console.log(b.cyan(`
29
- /memory - Inspect or rebuild per-project memory`)),console.log(b.dim(" /memory List MEMORY.md + memory directory")),console.log(b.dim(" /memory list Same as `/memory`")),console.log(b.dim(" /memory rebuild Regenerate MEMORY.md from topic frontmatter")),console.log(b.dim(" /memory open Print paths so you can open them in your editor")),console.log(b.dim(" /memory help Show this help")),console.log()}a(ws,"printHelp");function Pa(){console.log(b.bold(`
28
+ `))}a(Ma,"openMemory");function hs(){console.log(b.cyan(`
29
+ /memory - Inspect or rebuild per-project memory`)),console.log(b.dim(" /memory List MEMORY.md + memory directory")),console.log(b.dim(" /memory list Same as `/memory`")),console.log(b.dim(" /memory rebuild Regenerate MEMORY.md from topic frontmatter")),console.log(b.dim(" /memory open Print paths so you can open them in your editor")),console.log(b.dim(" /memory help Show this help")),console.log()}a(hs,"printHelp");function Wa(){console.log(b.bold(`
30
30
  /memory - Inspect or rebuild project memory
31
31
  `)),console.log("Usage:"),console.log(b.cyan(" /memory ")+b.dim("Show MEMORY.md + topic file count")),console.log(b.cyan(" /memory list ")+b.dim("Alias for `/memory`")),console.log(b.cyan(" /memory rebuild ")+b.dim("Regenerate MEMORY.md (newest first by mtime)")),console.log(b.cyan(" /memory open ")+b.dim("Print the index + dir paths for editor use")),console.log(b.cyan(" /memory help ")+b.dim(`Show this help
32
32
  `)),console.log("Description:"),console.log(b.dim(` Each project gets its own memory directory under your KodaX agent
@@ -34,8 +34,8 @@ Failed to copy to clipboard: ${r}`)),console.log(q.dim("You may need to check cl
34
34
  owns reads/writes; this command is your escape hatch when the
35
35
  MEMORY.md index drifts from the topic files on disk.
36
36
  `)),console.log("Notes:"),console.log(b.dim(" \u2022 Rebuild ONLY rewrites MEMORY.md. Topic files are never touched.")),console.log(b.dim(" \u2022 Rebuild sorts entries by file mtime descending \u2014 the same")),console.log(b.dim(" natural-LRU order the LLM produces by prepending new entries.")),console.log(b.dim(" \u2022 Files missing or with malformed frontmatter still appear in")),console.log(b.dim(" the rebuilt index using their filename as fallback; the command")),console.log(b.dim(` prints a warning so you can fix the frontmatter.
37
- `))}a(Pa,"printDetailedHelp");var Nn={name:"memory",description:"Inspect or rebuild per-project memory (FEATURE_124)",usage:"/memory [list|rebuild|open|help]",argumentHint:"list | rebuild | open | help",handler:a(async(e,o)=>{let n=Ta(o),t=Lt(n),r=Ot(n),i=(e[0]??"list").toLowerCase();if(i==="help"||i==="--help"||i==="-h"){ws();return}if(i==="list"){await Ia(t,r);return}if(i==="rebuild"){await Ca(t,r);return}if(i==="open"){_a(t,r);return}console.log(b.yellow(`
38
- [memory] unknown subcommand: ${i}`)),ws()},"handler"),detailedHelp:Pa};import T from"chalk";function ys(){console.log(`
37
+ `))}a(Wa,"printDetailedHelp");var Dn={name:"memory",description:"Inspect or rebuild per-project memory (FEATURE_124)",usage:"/memory [list|rebuild|open|help]",argumentHint:"list | rebuild | open | help",handler:a(async(e,o)=>{let n=Ca(o),t=Ot(n),r=Nt(n),i=(e[0]??"list").toLowerCase();if(i==="help"||i==="--help"||i==="-h"){hs();return}if(i==="list"){await _a(t,r);return}if(i==="rebuild"){await Pa(t,r);return}if(i==="open"){Ma(t,r);return}console.log(b.yellow(`
38
+ [memory] unknown subcommand: ${i}`)),hs()},"handler"),detailedHelp:Wa};import T from"chalk";function ks(){console.log(`
39
39
  ${T.bold("/goal")} \u2014 persistent session goal
40
40
 
41
41
  ${T.bold("Subcommands:")}
@@ -51,15 +51,15 @@ ${T.bold("Notes:")}
51
51
  - Token budget is optional; set it only when you want a hard ceiling.
52
52
  - update_goal({complete}) is verifier-gated; the agent cannot
53
53
  self-declare done without runtime confirmation.
54
- `.trim())}a(ys,"printHelp");function Ma(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(!un(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(!un(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(Ma,"parseCreateArgs");function Wa(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(`
55
- `)}a(Wa,"renderStatus");async function eo(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=Ht(e.lineage,n,t),await o.saveSession()}a(eo,"persist");async function La(e,o,n){if(!o.lineage){console.log(T.red("[/goal] no active session lineage"));return}let t=Re(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=Ma(e);if("error"in r){console.log(T.red(`[/goal] ${r.error}`));return}try{t&&t.status==="complete"&&await eo(o,n,null,"cleared");let i=Vt(r.objective,r.tokenBudget);await eo(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(La,"doCreate");async function Oa(e){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let o=Re(e.lineage);console.log(Wa(o))}a(Oa,"doStatus");async function Na(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let n=Re(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=Yt(n);await eo(e,o,t,"paused"),console.log(T.green("[/goal] paused"))}a(Na,"doPause");async function Da(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let n=Re(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=Jt(n);await eo(e,o,t,"resumed"),console.log(T.green("[/goal] resumed"))}a(Da,"doResume");async function Ua(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}if(!Re(e.lineage)){console.log(T.yellow("[/goal] no goal to clear"));return}await eo(e,o,null,"cleared"),console.log(T.green("[/goal] cleared"))}a(Ua,"doClear");var ks={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"){ys();return}if(t==="status"){await Oa(o);return}if(t==="pause"){await Na(o,n);return}if(t==="resume"){await Da(o,n);return}if(t==="clear"){await Ua(o,n);return}await La(e,o,n)},"handler"),detailedHelp:ys};import{existsSync as qs}from"node:fs";import{join as J}from"node:path";import g from"chalk";import Fn from"path";import{createHash as za}from"crypto";import{execFile as Fa}from"child_process";import ja from"fs";import Dn from"path";import{promisify as Ha}from"util";var Ba=Ha(Fa);function le(e){if(!(!e||!e.trim()))return Dn.resolve(e).replace(/\\/g,"/")}a(le,"normalizePath");async function oo(e,o){try{let{stdout:n}=await Ba("git",o,{cwd:e,windowsHide:!0,maxBuffer:1048576}),t=n.trim();return t||void 0}catch{return}}a(oo,"gitStdout");function qa(e){let o=le(e);if(o)return Dn.posix.basename(o)===".git"?Dn.posix.dirname(o):o}a(qa,"deriveCanonicalRepoRoot");async function Zu(e={}){let o=le(e.cwd??process.cwd())??process.cwd().replace(/\\/g,"/"),n=le(await oo(o,["rev-parse","--show-toplevel"])),t=await oo(n??o,["rev-parse","--path-format=absolute","--git-common-dir"])??await oo(n??o,["rev-parse","--git-common-dir"]),r=await oo(n??o,["branch","--show-current"])??await oo(n??o,["rev-parse","--abbrev-ref","HEAD"]);return{canonicalRepoRoot:qa(t)??n,workspaceRoot:n,executionCwd:o,branch:r&&r!=="HEAD"?r:void 0,workspaceKind:e.workspaceKind??"detected"}}a(Zu,"inspectWorkspaceRuntime");function Qu(e,o){return!e?.canonicalRepoRoot||!o?.canonicalRepoRoot?!1:le(e.canonicalRepoRoot)===le(o.canonicalRepoRoot)}a(Qu,"isSameCanonicalRepo");function ef(e){return!!(e?.workspaceRoot&&ja.existsSync(e.workspaceRoot))}a(ef,"workspaceExists");function vs(e){let o=le(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=le(e.runtimeInfo?.executionCwd??o),t=le(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(vs,"resolveSessionRuntimeInfo");function Un(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(Un,"formatWorkspaceTruth");var Ss="_unknown",$s=80;function Ka(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}a(Ka,"caseFold");function Ga(e){return Ka(Fn.resolve(e).replace(/\\/g,"/"))}a(Ga,"normalizeRoot");function bs(e){return za("sha256").update(e).digest("hex").slice(0,10)}a(bs,"shortHash");function Xa(e){let o=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return o.length>$s?o.slice(o.length-$s):o}a(Xa,"slugify");function ye(e){if(!e||!e.trim())return{key:Ss,canonicalRoot:null,displayName:Ss};let o=Ga(e),n=Xa(o),t=n?`${n}-${bs(o)}`:bs(o),r=Fn.basename(Fn.resolve(e).replace(/\\/g,"/"))||e;return{key:t,canonicalRoot:o,displayName:r}}a(ye,"deriveProjectKeyFromRoot");function af(e){let o=vs({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=o?.canonicalRepoRoot??o?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return ye(n)}a(af,"deriveProjectKeyFromData");import{join as Ml}from"node:path";import zo from"chalk";import{existsSync as ee,readdirSync as al,readFileSync as Oo,writeFileSync as hf}from"node:fs";import{dirname as ll,join as Y}from"node:path";import R from"chalk";import{existsSync as Va,readFileSync as Ya}from"node:fs";var xs=4,As=180,Rs=6e3,Ts=360,jn="[truncated]";function ke(e){return/[\u3400-\u9fff]/u.test(e)?"zh":"en"}a(ke,"detectWorkflowLocale");function no(...e){return ke(e.filter(o=>typeof o=="string").join(`
56
- `))}a(no,"inferWorkflowLocaleFromParts");function ce(e,o={}){let n=e.trim();return o.full===!0||n.length<=Rs?n:`${n.slice(0,Rs).trimEnd()}
54
+ `.trim())}a(ks,"printHelp");function La(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(!fn(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(!fn(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(La,"parseCreateArgs");function Oa(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(`
55
+ `)}a(Oa,"renderStatus");async function no(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=Bt(e.lineage,n,t),await o.saveSession()}a(no,"persist");async function Na(e,o,n){if(!o.lineage){console.log(T.red("[/goal] no active session lineage"));return}let t=Re(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=La(e);if("error"in r){console.log(T.red(`[/goal] ${r.error}`));return}try{t&&t.status==="complete"&&await no(o,n,null,"cleared");let i=Yt(r.objective,r.tokenBudget);await no(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(Na,"doCreate");async function Da(e){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let o=Re(e.lineage);console.log(Oa(o))}a(Da,"doStatus");async function Ua(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let n=Re(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=Jt(n);await no(e,o,t,"paused"),console.log(T.green("[/goal] paused"))}a(Ua,"doPause");async function Fa(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}let n=Re(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=Zt(n);await no(e,o,t,"resumed"),console.log(T.green("[/goal] resumed"))}a(Fa,"doResume");async function ja(e,o){if(!e.lineage){console.log(T.red("[/goal] no active session lineage"));return}if(!Re(e.lineage)){console.log(T.yellow("[/goal] no goal to clear"));return}await no(e,o,null,"cleared"),console.log(T.green("[/goal] cleared"))}a(ja,"doClear");var vs={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"){ks();return}if(t==="status"){await Da(o);return}if(t==="pause"){await Ua(o,n);return}if(t==="resume"){await Fa(o,n);return}if(t==="clear"){await ja(o,n);return}await Na(e,o,n)},"handler"),detailedHelp:ks};import{existsSync as zs}from"node:fs";import{join as J}from"node:path";import p from"chalk";import jn from"path";import{createHash as Ka}from"crypto";import{execFile as Ha}from"child_process";import Ba from"fs";import Un from"path";import{promisify as Ga}from"util";var za=Ga(Ha);function le(e){if(!(!e||!e.trim()))return Un.resolve(e).replace(/\\/g,"/")}a(le,"normalizePath");async function to(e,o){try{let{stdout:n}=await za("git",o,{cwd:e,windowsHide:!0,maxBuffer:1048576}),t=n.trim();return t||void 0}catch{return}}a(to,"gitStdout");function qa(e){let o=le(e);if(o)return Un.posix.basename(o)===".git"?Un.posix.dirname(o):o}a(qa,"deriveCanonicalRepoRoot");async function lf(e={}){let o=le(e.cwd??process.cwd())??process.cwd().replace(/\\/g,"/"),n=le(await to(o,["rev-parse","--show-toplevel"])),t=await to(n??o,["rev-parse","--path-format=absolute","--git-common-dir"])??await to(n??o,["rev-parse","--git-common-dir"]),r=await to(n??o,["branch","--show-current"])??await to(n??o,["rev-parse","--abbrev-ref","HEAD"]);return{canonicalRepoRoot:qa(t)??n,workspaceRoot:n,executionCwd:o,branch:r&&r!=="HEAD"?r:void 0,workspaceKind:e.workspaceKind??"detected"}}a(lf,"inspectWorkspaceRuntime");function cf(e,o){return!e?.canonicalRepoRoot||!o?.canonicalRepoRoot?!1:le(e.canonicalRepoRoot)===le(o.canonicalRepoRoot)}a(cf,"isSameCanonicalRepo");function df(e){return!!(e?.workspaceRoot&&Ba.existsSync(e.workspaceRoot))}a(df,"workspaceExists");function Ss(e){let o=le(e.runtimeInfo?.workspaceRoot??e.gitRoot),n=le(e.runtimeInfo?.executionCwd??o),t=le(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(Ss,"resolveSessionRuntimeInfo");function Fn(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(Fn,"formatWorkspaceTruth");var $s="_unknown",bs=80;function Xa(e){return process.platform==="win32"||process.platform==="darwin"?e.toLowerCase():e}a(Xa,"caseFold");function Va(e){return Xa(jn.resolve(e).replace(/\\/g,"/"))}a(Va,"normalizeRoot");function xs(e){return Ka("sha256").update(e).digest("hex").slice(0,10)}a(xs,"shortHash");function Ya(e){let o=e.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"");return o.length>bs?o.slice(o.length-bs):o}a(Ya,"slugify");function ye(e){if(!e||!e.trim())return{key:$s,canonicalRoot:null,displayName:$s};let o=Va(e),n=Ya(o),t=n?`${n}-${xs(o)}`:xs(o),r=jn.basename(jn.resolve(e).replace(/\\/g,"/"))||e;return{key:t,canonicalRoot:o,displayName:r}}a(ye,"deriveProjectKeyFromRoot");function wf(e){let o=Ss({gitRoot:e.gitRoot??"",runtimeInfo:e.runtimeInfo}),n=o?.canonicalRepoRoot??o?.executionCwd??(e.gitRoot&&e.gitRoot.trim()?e.gitRoot:void 0);return ye(n)}a(wf,"deriveProjectKeyFromData");import{join as Ll}from"node:path";import Ko from"chalk";import{existsSync as ee,readdirSync as cl,readFileSync as Do,writeFileSync as Rf}from"node:fs";import{dirname as dl,join as Y}from"node:path";import R from"chalk";import{existsSync as Ja,readFileSync as Za}from"node:fs";var As=4,Rs=180,Ts=6e3,Es=360,Hn="[truncated]";function ke(e){return/[\u3400-\u9fff]/u.test(e)?"zh":"en"}a(ke,"detectWorkflowLocale");function ro(...e){return ke(e.filter(o=>typeof o=="string").join(`
56
+ `))}a(ro,"inferWorkflowLocaleFromParts");function ce(e,o={}){let n=e.trim();return o.full===!0||n.length<=Ts?n:`${n.slice(0,Ts).trimEnd()}
57
57
 
58
- ${jn}`}a(ce,"trimResultPreview");function Hn(e){return e.includes(jn)}a(Hn,"isWorkflowResultPreviewTruncated");function Ja(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(Ja,"formatWorkflowResultTruncationHint");function _o(e,o,n){let t=e.lastIndexOf(jn);return t<0?e:`${e.slice(0,t).trimEnd()}
58
+ ${Hn}`}a(ce,"trimResultPreview");function Bn(e){return e.includes(Hn)}a(Bn,"isWorkflowResultPreviewTruncated");function Qa(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(Qa,"formatWorkflowResultTruncationHint");function Mo(e,o,n){let t=e.lastIndexOf(Hn);return t<0?e:`${e.slice(0,t).trimEnd()}
59
59
 
60
- ${Ja(o,n)}`}a(_o,"replaceWorkflowResultTruncationMarker");function Za(e){let o=e.replace(/\s+/g," ").trim();return o.length<=Ts?o:`${o.slice(0,Ts).trimEnd()}...`}a(Za,"trimWorkflowLaunchSummary");function de(e,o={}){if(typeof e=="string"&&e.trim().length>0)return ce(e,o);if(e&&typeof e=="object"&&"synthesis"in e){let n=e.synthesis;if(typeof n=="string"&&n.trim().length>0)return ce(n,o);if(n&&typeof n=="object"&&"text"in n){let t=n.text;if(typeof t=="string"&&t.trim().length>0)return ce(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 ce(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 ce(n,o)}}catch{}}a(de,"formatResult");function Po(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 ce(i,o);let l=[...e].reverse().find(d=>d.type==="agent_failed"),c=l?K(l,"summary")??K(l,"error"):void 0;return c?ce(c,o):void 0}a(Po,"formatFinalEventSummary");function Qa(e,o={}){if(!(!e.path||!Va(e.path)))try{let n=JSON.parse(Ya(e.path,"utf8")),t=de(n,o);if(t)return t;let r=JSON.stringify(n,null,2);return typeof r=="string"&&r.trim().length>0?ce(r,o):void 0}catch(n){return`artifact preview unavailable: ${n instanceof Error?n.message:String(n)}`}}a(Qa,"formatArtifactPreview");function to(e,o,n={}){for(let r=e.length-1;r>=0;r-=1){let i=e[r];if(!i)continue;let l=Qa(i,n);if(l)return o==="zh"?`\u4EA7\u7269 ${i.name}:
60
+ ${Qa(o,n)}`}a(Mo,"replaceWorkflowResultTruncationMarker");function el(e){let o=e.replace(/\s+/g," ").trim();return o.length<=Es?o:`${o.slice(0,Es).trimEnd()}...`}a(el,"trimWorkflowLaunchSummary");function de(e,o={}){if(typeof e=="string"&&e.trim().length>0)return ce(e,o);if(e&&typeof e=="object"&&"synthesis"in e){let n=e.synthesis;if(typeof n=="string"&&n.trim().length>0)return ce(n,o);if(n&&typeof n=="object"&&"text"in n){let t=n.text;if(typeof t=="string"&&t.trim().length>0)return ce(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 ce(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 ce(n,o)}}catch{}}a(de,"formatResult");function Wo(e,o={}){let n=[...e].reverse().filter(d=>d.type==="agent_completed"&&q(d,"status")==="completed"||d.type==="agent_unverified"),r=n.find(d=>q(d,"name")==="synthesize")??n[0],i=r?q(r,"summary"):void 0;if(i)return ce(i,o);let l=[...e].reverse().find(d=>d.type==="agent_failed"),c=l?q(l,"summary")??q(l,"error"):void 0;return c?ce(c,o):void 0}a(Wo,"formatFinalEventSummary");function ol(e,o={}){if(!(!e.path||!Ja(e.path)))try{let n=JSON.parse(Za(e.path,"utf8")),t=de(n,o);if(t)return t;let r=JSON.stringify(n,null,2);return typeof r=="string"&&r.trim().length>0?ce(r,o):void 0}catch(n){return`artifact preview unavailable: ${n instanceof Error?n.message:String(n)}`}}a(ol,"formatArtifactPreview");function so(e,o,n={}){for(let r=e.length-1;r>=0;r-=1){let i=e[r];if(!i)continue;let l=ol(i,n);if(l)return o==="zh"?`\u4EA7\u7269 ${i.name}:
61
61
  ${l}`:`Artifact ${i.name}:
62
- ${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(to,"formatArtifactResult");function Bn(e){let o=e.resultText?_o(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}
62
+ ${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(so,"formatArtifactResult");function Gn(e){let o=e.resultText?Mo(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}
63
63
 
64
64
  ${r}
65
65
 
@@ -69,194 +69,194 @@ ${o}`}return[t,"","\u8FD9\u6B21 workflow \u8FD0\u884C\u7ED3\u675F\uFF0C\u4F46\u7
69
69
  ${t}
70
70
 
71
71
  ${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(`
72
- `)}a(Bn,"formatWorkflowCompletionAnswer");function qn(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=Za(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(`
72
+ `)}a(Gn,"formatWorkflowCompletionAnswer");function zn(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=el(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(`
73
73
  `)}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(`
74
- `)}a(qn,"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 zn(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 il(l,t,o,n,i)}a(zn,"formatWorkflowAgentDigest");function el(e){let o=e.replace(/\s+/g," ").trim();return o.length<=As?o:`${o.slice(0,As).trimEnd()}...`}a(el,"trimWorkflowAgentDigestExcerpt");function ol(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(ol,"isHighSignalWorkflowAgentDigestLine");function nl(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(nl,"isLowInformationWorkflowAgentDigestLine");function tl(e){return e.replace(/\s+/g," ").trim()}a(tl,"compactWorkflowAgentDigestLine");function rl(e,o={}){let n=e.replace(/^#{1,6}\s+/,"").replace(/^[-*]\s+/,"").replace(/^\d+[.)]\s+/,"").replace(/^`{3,}.*$/,"").replace(/^[`"'“”‘’)\]},,、。;;::.\s]+/,"").trim(),t=tl(n);if(!(t.length<12)&&!/^[-*_`#\s]+$/.test(t)&&!nl(t))return o.truncateLines===!1?t:el(t)}a(rl,"normalizeWorkflowAgentDigestLine");function sl(e,o={}){let n=[],t=[];for(let r of e.split(/\r?\n+/)){let i=rl(r,o);if(!i)continue;let l=ol(i)?n:t;n.includes(i)||t.includes(i)||l.push(i)}return n.length>0?n.slice(0,xs):t.length>0?t.slice(0,xs):[]}a(sl,"extractWorkflowAgentDigestExcerpts");function il(e,o,n,t,r="excerpt"){let i=r==="digest",c=sl(o,{truncateLines:!i}).map(w=>`- ${w}`),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(`
74
+ `)}a(zn,"formatWorkflowLaunchAnswer");function q(e,o){let n=e.data?.[o];return typeof n=="string"&&n.trim().length>0?n.trim():void 0}a(q,"readEventString");function qn(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"&&q(e,"status")!=="completed")return;let t=q(e,"summary")??q(e,"error");if(!t)return;let r=q(e,"summaryKind");if(r==="pending")return;let i=r==="digest"?"digest":r==="digest-failed"?"digest-failed":"excerpt",l=q(e,"name")??q(e,"taskId")??"agent";return ll(l,t,o,n,i)}a(qn,"formatWorkflowAgentDigest");function nl(e){let o=e.replace(/\s+/g," ").trim();return o.length<=Rs?o:`${o.slice(0,Rs).trimEnd()}...`}a(nl,"trimWorkflowAgentDigestExcerpt");function tl(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(tl,"isHighSignalWorkflowAgentDigestLine");function rl(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(rl,"isLowInformationWorkflowAgentDigestLine");function sl(e){return e.replace(/\s+/g," ").trim()}a(sl,"compactWorkflowAgentDigestLine");function il(e,o={}){let n=e.replace(/^#{1,6}\s+/,"").replace(/^[-*]\s+/,"").replace(/^\d+[.)]\s+/,"").replace(/^`{3,}.*$/,"").replace(/^[`"'“”‘’)\]},,、。;;::.\s]+/,"").trim(),t=sl(n);if(!(t.length<12)&&!/^[-*_`#\s]+$/.test(t)&&!rl(t))return o.truncateLines===!1?t:nl(t)}a(il,"normalizeWorkflowAgentDigestLine");function al(e,o={}){let n=[],t=[];for(let r of e.split(/\r?\n+/)){let i=il(r,o);if(!i)continue;let l=tl(i)?n:t;n.includes(i)||t.includes(i)||l.push(i)}return n.length>0?n.slice(0,As):t.length>0?t.slice(0,As):[]}a(al,"extractWorkflowAgentDigestExcerpts");function ll(e,o,n,t,r="excerpt"){let i=r==="digest",c=al(o,{truncateLines:!i}).map(g=>`- ${g}`),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(`
75
75
  `):[u,...c,d].join(`
76
- `)}a(il,"formatWorkflowAgentLongDigest");function Mo(e){return(o,n="en")=>zn(o,n,e)}a(Mo,"createWorkflowAgentDigestLimiter");import I from"chalk";function Kn(){return[`${I.bold("/workflow")} - dynamic multi-agent workflow harness`,"",`${I.bold("Subcommands:")}`,` ${I.cyan("/workflow list")} List built-in, pattern, and saved workflows. Alias: /workflow`,` ${I.cyan("/workflow create <request>")} Generate a restricted workflow from a complex request.`,` ${I.cyan("/workflow <name> [args]")} Run a built-in or saved workflow. Args may be JSON or bare text.`,` ${I.cyan("/workflow runs [--all|--limit N]")} List active and recent workflow runs for this project.`,` ${I.cyan("/workflow show [--full] [runId]")} Show the latest run; use --full for complete result artifacts.`,` ${I.cyan("/workflow pause <runId>")} Pause future child launches for an active run.`,` ${I.cyan("/workflow resume <runId>")} Resume a paused run.`,` ${I.cyan("/workflow stop [runId]")} Stop an active run through abort propagation. Defaults to the active run.`,` ${I.cyan("/workflow delete [--force] [--run|--saved] <runId|savedName>")} Delete one persisted run record or generated saved capsule; --force removes stale non-terminal run records.`,` ${I.cyan("/workflow prune --dry-run|--keep N|--older-than Nd")}`," Preview or delete old terminal run records.",` ${I.cyan("/workflow rerun <runId|savedName> [args]")} Rerun a historical generated run, or run the current saved workflow by name.`,` ${I.cyan("/workflow save <runId> <name>")} Save a generated run as a workflow capsule.`,` ${I.cyan("/workflow rename <runId|alias|savedName> <newName>")} Rename a run display name or generated saved capsule.`,` ${I.cyan("/workflow revise [--replace] <runId|alias|savedName> <change>")} Generate and save a capsule revision.`,` ${I.cyan("/workflow help")} Show this help. Also available as /help workflow.`,"",`${I.bold("Examples:")}`,` ${I.dim("/workflow create Compare three flaky-test hypotheses and verify each one")}`,` ${I.dim('/workflow parallel-investigation {"question":"\u8BF7\u68C0\u67E5\u8FD9\u4E2A\u7ADE\u6001\u5728\u54EA\u91CC","targets":["packages/agent"]}')}`,` ${I.dim('/workflow rerun run-lx3 {"request":"\u8BF7\u7528\u540C\u6837\u6D41\u7A0B\u590D\u67E5 packages/repl"}')}`,` ${I.dim('/workflow rerun generated-audit {"request":"reuse the saved workflow for packages/repl"}')}`,` ${I.dim("/workflow prune --dry-run")}`,` ${I.dim("/workflow save run-lx3 generated-audit")}`,"",`${I.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(`
77
- `)}a(Kn,"renderWorkflowHelp");function Wo(){console.log(`
76
+ `)}a(ll,"formatWorkflowAgentLongDigest");function Lo(e){return(o,n="en")=>qn(o,n,e)}a(Lo,"createWorkflowAgentDigestLimiter");import C from"chalk";function Kn(){return[`${C.bold("/workflow")} - dynamic multi-agent workflow harness`,"",`${C.bold("Subcommands:")}`,` ${C.cyan("/workflow list")} List built-in, pattern, and saved workflows. Alias: /workflow`,` ${C.cyan("/workflow create <request>")} Generate a restricted workflow from a complex request.`,` ${C.cyan("/workflow <name> [args]")} Run a built-in or saved workflow. Args may be JSON or bare text.`,` ${C.cyan("/workflow runs [--all|--limit N]")} List active and recent workflow runs for this project.`,` ${C.cyan("/workflow show [--full] [runId]")} Show the latest run; use --full for complete result artifacts.`,` ${C.cyan("/workflow pause <runId>")} Pause future child launches for an active run.`,` ${C.cyan("/workflow resume <runId>")} Resume a paused run.`,` ${C.cyan("/workflow stop [runId]")} Stop an active run through abort propagation. Defaults to the active run.`,` ${C.cyan("/workflow delete [--force] [--run|--saved] <runId|savedName>")} Delete one persisted run record or generated saved capsule; --force removes stale non-terminal run records.`,` ${C.cyan("/workflow prune --dry-run|--keep N|--older-than Nd")}`," Preview or delete old terminal run records.",` ${C.cyan("/workflow rerun <runId|savedName> [args]")} Rerun a historical generated run, or run the current saved workflow by name.`,` ${C.cyan("/workflow save <runId> <name>")} Save a generated run as a workflow capsule.`,` ${C.cyan("/workflow rename <runId|alias|savedName> <newName>")} Rename a run display name or generated saved capsule.`,` ${C.cyan("/workflow revise [--replace] <runId|alias|savedName> <change>")} Generate and save a capsule revision.`,` ${C.cyan("/workflow help")} Show this help. Also available as /help workflow.`,"",`${C.bold("Examples:")}`,` ${C.dim("/workflow create Compare three flaky-test hypotheses and verify each one")}`,` ${C.dim('/workflow parallel-investigation {"question":"\u8BF7\u68C0\u67E5\u8FD9\u4E2A\u7ADE\u6001\u5728\u54EA\u91CC","targets":["packages/agent"]}')}`,` ${C.dim('/workflow rerun run-lx3 {"request":"\u8BF7\u7528\u540C\u6837\u6D41\u7A0B\u590D\u67E5 packages/repl"}')}`,` ${C.dim('/workflow rerun generated-audit {"request":"reuse the saved workflow for packages/repl"}')}`,` ${C.dim("/workflow prune --dry-run")}`,` ${C.dim("/workflow save run-lx3 generated-audit")}`,"",`${C.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(`
77
+ `)}a(Kn,"renderWorkflowHelp");function Oo(){console.log(`
78
78
  ${Kn()}
79
- `)}a(Wo,"printWorkflowHelp");var cl=new Set(["completed","failed","stopped","denied","cancelled"]);function No(e){return e.length===0?" (no built-in workflows)":e.map(o=>` ${R.cyan(o.name)} \u2014 ${o.description}`).join(`
80
- `)}a(No,"formatWorkflowList");var dl=6,ul=900;function fl(e){let o=e.replace(/\r\n/g,`
79
+ `)}a(Oo,"printWorkflowHelp");var ul=new Set(["completed","failed","stopped","denied","cancelled"]);function Uo(e){return e.length===0?" (no built-in workflows)":e.map(o=>` ${R.cyan(o.name)} \u2014 ${o.description}`).join(`
80
+ `)}a(Uo,"formatWorkflowList");var fl=6,ml=900;function pl(e){let o=e.replace(/\r\n/g,`
81
81
  `).replace(/\r/g,`
82
82
  `).split(`
83
- `),n=[],t=0,r=!1;for(let l of o){if(n.length>=dl)break;let c=` ${l}`,d=ul-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(fl,"renderApprovalScriptPreview");function oe(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 ${R.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?R.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:",...fl(o.rawScript)]:[]]:[]].join(`
84
- `)}a(oe,"renderApprovalPrompt");function so(e){if(!ee(e))return[];let o=[];for(let n of al(e)){let t=Y(e,n,"run.json");if(ee(t))try{let r=JSON.parse(Oo(t,"utf8"));o.push({runId:n,workflow:typeof r.workflow=="string"?r.workflow:"?",status:typeof r.status=="string"?r.status:"?",totalSpawned:typeof r.totalSpawned=="number"?r.totalSpawned:0,endedAt:typeof r.endedAt=="number"?r.endedAt:0})}catch{}}return o.sort((n,t)=>t.endedAt-n.endedAt)}a(so,"readWorkflowRuns");function ml(e){let o=Y(e,"events.jsonl");if(!ee(o))return[];let n=Oo(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(ml,"readWorkflowEvents");function gl(e){return Array.isArray(e)?e.filter(o=>typeof o=="string"):[]}a(gl,"readStringArray");function Lo(e){return typeof e=="string"&&e.trim().length>0?e:void 0}a(Lo,"readNonEmptyString");function Es(e,o){let n=o?Lo(o.scriptSnapshotPath):Y(e,"script.js"),t=o?Lo(o.manifestSnapshotPath):Y(e,"manifest.json");return!n||!t?!1:ee(n)&&ee(t)}a(Es,"hasGeneratedWorkflowSnapshot");function Cs(e,o){if(o)return Es(e,o);let n=Y(e,"run.json");if(!ee(n))return!1;try{let t=JSON.parse(Oo(n,"utf8"));return typeof t=="object"&&t!==null?Es(e,t):!1}catch{return!1}}a(Cs,"hasRerunnableGeneratedWorkflowRun");function pl(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(pl,"readWorkflowFailure");function io(e,o){let n=Y(e,o),t=Y(n,"run.json"),r=ml(n),i=pl(r);if(!(!ee(t)&&r.length===0)){if(!ee(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(Oo(t,"utf8")),c=Lo(l.scriptSnapshotPath),d=Lo(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:Cs(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:gl(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(io,"readWorkflowRunDetail");function ro(e){return e==="completed"?R.green("ok"):e==="failed"?R.red("x"):e==="running"?R.cyan("run"):e==="paused"?R.yellow("pause"):e==="stopped"?R.dim("stop"):e==="denied"?R.dim("deny"):e==="cancelled"?R.dim("cancel"):R.dim("-")}a(ro,"statusIcon");function Gn(e){return cl.has(e)}a(Gn,"isTerminalWorkflowStatus");function _s(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(_s,"formatProcessListMeta");function Xn(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=_s(o.processSnapshots?.get(l.runId));return` ${ro(l.status)} ${R.cyan(l.workflow)} ${R.dim(l.runId)} - ${l.status} (${l.totalSpawned} agents)${c?R.dim(` [${c}]`):""}`});return o.showLimitHint===!0&&n!==void 0&&e.length>t.length&&i.push(R.dim(` Showing ${t.length} of ${e.length} persisted runs. Use /workflow runs --all to show all.`)),i.join(`
85
- `)}let r=t.map(i=>` ${ro(i.status)} ${R.cyan(i.workflow)} ${R.dim(i.runId)} \u2014 ${i.status} (${i.totalSpawned} agents)`);return o.showLimitHint===!0&&n!==void 0&&e.length>t.length&&r.push(R.dim(` Showing ${t.length} of ${e.length} persisted runs. Use /workflow runs --all to show all.`)),r.join(`
86
- `)}a(Xn,"formatRunsList");function Vn(e,o={}){return e.length===0?" (no active workflow runs)":o.processSnapshots?e.map(n=>{let t=_s(o.processSnapshots?.get(n.runId));return` ${ro(n.status)} ${R.cyan(n.workflow)} ${R.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)${t?R.dim(` [${t}]`):""}`}).join(`
87
- `):e.map(n=>` ${ro(n.status)} ${R.cyan(n.workflow)} ${R.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)`).join(`
88
- `)}a(Vn,"formatManagedRunsList");function We(e){return e.status==="running"||e.status==="paused"}a(We,"isActiveManagedWorkflowRun");function Yn(e){return e.length===0?" (no workflow runs match the cleanup rule)":e.map(o=>` ${ro(o.status)} ${R.cyan(o.workflow)} ${R.dim(o.runId)} - ${o.status}`).join(`
89
- `)}a(Yn,"formatWorkflowPruneCandidates");function Jn(e,o){return e.filter(We)[0]?.runId??e[0]?.runId??o[0]?.runId}a(Jn,"selectDefaultWorkflowRunId");function Zn(e){return e.find(We)?.runId}a(Zn,"selectDefaultActiveWorkflowRunId");function Is(e){if(e!==void 0)return typeof e=="number"?new Date(e).toLocaleString():e}a(Is,"formatTime");function wl(e,o=10){let n=e.map(jo).filter(t=>t!==void 0);return n.slice(Math.max(0,n.length-o))}a(wl,"formatRecentWorkflowEvents");function Qn(e,o){return o?.canRerun??(e?.runDir?Cs(e.runDir):!1)}a(Qn,"canRerunWorkflowRun");function hl(e){return e?e.artifacts.map(o=>({name:o,path:Y(e.runDir,"artifacts",`${er(o)}.json`)})):[]}a(hl,"workflowArtifactRefs");function et(e,o){return o?`/workflow show ${e} | /workflow rerun ${e}`:`/workflow show ${e}`}a(et,"formatWorkflowNextActions");function Ps(e,o){return o?`Use /workflow show ${e} for events. /workflow rerun ${e} repeats the saved workflow script.`:`Use /workflow show ${e} for events.`}a(Ps,"formatWorkflowFailureAction");function ot(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??"",w=Is(e?.startedAt??o?.startedAt??t?.startedAt),f=t&&t.status!=="running"&&t.status!=="paused"?t.updatedAt:void 0,k=Is(e?.endedAt??o?.endedAt??f),v=t?.error??e?.error??o?.error,h=o?.artifacts??t?.artifacts?.map(me=>me.name)??[],y=hl(o),m=e?.resultText,x=n.full===!0||m===void 0?to(y,ke(r),{full:n.full===!0}):void 0,A=n.full===!0?x??m??t?.resultSummary:m!==void 0?de(m):t?.resultSummary!==void 0?de(t.resultSummary):x,j=A?_o(A,i,ke(A)):void 0,H=n.full===!0||!A||!Hn(A)?"result:":"result preview:",G=o?wl(o.events):[],mo=Qn(e,o);return[` ${R.cyan(r)} ${R.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}`,...w?[` started: ${w}`]:[],...k?[` ended: ${k}`]:[],...u?[` run dir: ${u}`]:[],...h.length>0?[` artifacts: ${h.join(", ")}`]:[],...v?[` error: ${v}`]:[],...j?["",` ${H}`,...j.split(`
90
- `).map(me=>` ${me}`)]:[],...G.length>0?[""," recent events:",...G.map(me=>` ${me.trimEnd()}`)]:[],"",` next: ${et(i,mo)}`].join(`
91
- `)}a(ot,"formatWorkflowRunSnapshot");function nt(e){return{project:Y(e,".kodax","workflows"),personal:N("workflows")}}a(nt,"savedWorkflowDirs");async function Ms(e,o){return new Set((await Te(e)).map(t=>t.name)).has(o)?`${o}-revision-${Date.now().toString(36)}`:o}a(Ms,"nextRevisionWorkflowName");function Ws(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:lr}}a(Ws,"buildWorkflowRevisionProvenance");function tt(e){return e.length===0?" (no saved workflows)":e.map(o=>` ${R.cyan(o.name)} ${R.dim(`(${o.source}, ${o.execution}: ${o.path})`)}`).join(`
92
- `)}a(tt,"formatSavedList");function Ls(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(Ls,"isSafeWorkflowRunId");function ve(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(ve,"resolveConfirm");function yl(e){console.log(R.red(`
83
+ `),n=[],t=0,r=!1;for(let l of o){if(n.length>=fl)break;let c=` ${l}`,d=ml-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(pl,"renderApprovalScriptPreview");function oe(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 ${R.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?R.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:",...pl(o.rawScript)]:[]]:[]].join(`
84
+ `)}a(oe,"renderApprovalPrompt");function ao(e){if(!ee(e))return[];let o=[];for(let n of cl(e)){let t=Y(e,n,"run.json");if(ee(t))try{let r=JSON.parse(Do(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(ao,"readWorkflowRuns");function gl(e){let o=Y(e,"events.jsonl");if(!ee(o))return[];let n=Do(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(gl,"readWorkflowEvents");function wl(e){return Array.isArray(e)?e.filter(o=>typeof o=="string"):[]}a(wl,"readStringArray");function No(e){return typeof e=="string"&&e.trim().length>0?e:void 0}a(No,"readNonEmptyString");function Cs(e,o){let n=o?No(o.scriptSnapshotPath):Y(e,"script.js"),t=o?No(o.manifestSnapshotPath):Y(e,"manifest.json");return!n||!t?!1:ee(n)&&ee(t)}a(Cs,"hasGeneratedWorkflowSnapshot");function _s(e,o){if(o)return Cs(e,o);let n=Y(e,"run.json");if(!ee(n))return!1;try{let t=JSON.parse(Do(n,"utf8"));return typeof t=="object"&&t!==null?Cs(e,t):!1}catch{return!1}}a(_s,"hasRerunnableGeneratedWorkflowRun");function hl(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(hl,"readWorkflowFailure");function lo(e,o){let n=Y(e,o),t=Y(n,"run.json"),r=gl(n),i=hl(r);if(!(!ee(t)&&r.length===0)){if(!ee(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(Do(t,"utf8")),c=No(l.scriptSnapshotPath),d=No(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:_s(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:wl(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(lo,"readWorkflowRunDetail");function io(e){return e==="completed"?R.green("ok"):e==="failed"?R.red("x"):e==="running"?R.cyan("run"):e==="paused"?R.yellow("pause"):e==="stopped"?R.dim("stop"):e==="denied"?R.dim("deny"):e==="cancelled"?R.dim("cancel"):R.dim("-")}a(io,"statusIcon");function Xn(e){return ul.has(e)}a(Xn,"isTerminalWorkflowStatus");function Ps(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(Ps,"formatProcessListMeta");function Vn(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=Ps(o.processSnapshots?.get(l.runId));return` ${io(l.status)} ${R.cyan(l.workflow)} ${R.dim(l.runId)} - ${l.status} (${l.totalSpawned} agents)${c?R.dim(` [${c}]`):""}`});return o.showLimitHint===!0&&n!==void 0&&e.length>t.length&&i.push(R.dim(` Showing ${t.length} of ${e.length} persisted runs. Use /workflow runs --all to show all.`)),i.join(`
85
+ `)}let r=t.map(i=>` ${io(i.status)} ${R.cyan(i.workflow)} ${R.dim(i.runId)} \u2014 ${i.status} (${i.totalSpawned} agents)`);return o.showLimitHint===!0&&n!==void 0&&e.length>t.length&&r.push(R.dim(` Showing ${t.length} of ${e.length} persisted runs. Use /workflow runs --all to show all.`)),r.join(`
86
+ `)}a(Vn,"formatRunsList");function Yn(e,o={}){return e.length===0?" (no active workflow runs)":o.processSnapshots?e.map(n=>{let t=Ps(o.processSnapshots?.get(n.runId));return` ${io(n.status)} ${R.cyan(n.workflow)} ${R.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)${t?R.dim(` [${t}]`):""}`}).join(`
87
+ `):e.map(n=>` ${io(n.status)} ${R.cyan(n.workflow)} ${R.dim(n.runId)} - ${n.status} (${n.totalSpawned} agents, ${n.eventCount} events)`).join(`
88
+ `)}a(Yn,"formatManagedRunsList");function We(e){return e.status==="running"||e.status==="paused"}a(We,"isActiveManagedWorkflowRun");function Jn(e){return e.length===0?" (no workflow runs match the cleanup rule)":e.map(o=>` ${io(o.status)} ${R.cyan(o.workflow)} ${R.dim(o.runId)} - ${o.status}`).join(`
89
+ `)}a(Jn,"formatWorkflowPruneCandidates");function Zn(e,o){return e.filter(We)[0]?.runId??e[0]?.runId??o[0]?.runId}a(Zn,"selectDefaultWorkflowRunId");function Qn(e){return e.find(We)?.runId}a(Qn,"selectDefaultActiveWorkflowRunId");function Is(e){if(e!==void 0)return typeof e=="number"?new Date(e).toLocaleString():e}a(Is,"formatTime");function yl(e,o=10){let n=e.map(Bo).filter(t=>t!==void 0);return n.slice(Math.max(0,n.length-o))}a(yl,"formatRecentWorkflowEvents");function et(e,o){return o?.canRerun??(e?.runDir?_s(e.runDir):!1)}a(et,"canRerunWorkflowRun");function kl(e){return e?e.artifacts.map(o=>({name:o,path:Y(e.runDir,"artifacts",`${or(o)}.json`)})):[]}a(kl,"workflowArtifactRefs");function ot(e,o){return o?`/workflow show ${e} | /workflow rerun ${e}`:`/workflow show ${e}`}a(ot,"formatWorkflowNextActions");function Ms(e,o){return o?`Use /workflow show ${e} for events. /workflow rerun ${e} repeats the saved workflow script.`:`Use /workflow show ${e} for events.`}a(Ms,"formatWorkflowFailureAction");function nt(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??"",g=Is(e?.startedAt??o?.startedAt??t?.startedAt),f=t&&t.status!=="running"&&t.status!=="paused"?t.updatedAt:void 0,k=Is(e?.endedAt??o?.endedAt??f),v=t?.error??e?.error??o?.error,h=o?.artifacts??t?.artifacts?.map(me=>me.name)??[],y=kl(o),m=e?.resultText,x=n.full===!0||m===void 0?so(y,ke(r),{full:n.full===!0}):void 0,A=n.full===!0?x??m??t?.resultSummary:m!==void 0?de(m):t?.resultSummary!==void 0?de(t.resultSummary):x,j=A?Mo(A,i,ke(A)):void 0,H=n.full===!0||!A||!Bn(A)?"result:":"result preview:",K=o?yl(o.events):[],go=et(e,o);return[` ${R.cyan(r)} ${R.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}`,...g?[` started: ${g}`]:[],...k?[` ended: ${k}`]:[],...u?[` run dir: ${u}`]:[],...h.length>0?[` artifacts: ${h.join(", ")}`]:[],...v?[` error: ${v}`]:[],...j?["",` ${H}`,...j.split(`
90
+ `).map(me=>` ${me}`)]:[],...K.length>0?[""," recent events:",...K.map(me=>` ${me.trimEnd()}`)]:[],"",` next: ${ot(i,go)}`].join(`
91
+ `)}a(nt,"formatWorkflowRunSnapshot");function tt(e){return{project:Y(e,".kodax","workflows"),personal:N("workflows")}}a(tt,"savedWorkflowDirs");async function Ws(e,o){return new Set((await Te(e)).map(t=>t.name)).has(o)?`${o}-revision-${Date.now().toString(36)}`:o}a(Ws,"nextRevisionWorkflowName");function Ls(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:cr}}a(Ls,"buildWorkflowRevisionProvenance");function rt(e){return e.length===0?" (no saved workflows)":e.map(o=>` ${R.cyan(o.name)} ${R.dim(`(${o.source}, ${o.execution}: ${o.path})`)}`).join(`
92
+ `)}a(rt,"formatSavedList");function Os(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(Os,"isSafeWorkflowRunId");function ve(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(ve,"resolveConfirm");function vl(e){console.log(R.red(`
93
93
  [workflow] invalid run id: ${e||"<empty>"}
94
- `))}a(yl,"printInvalidRunId");function ue(e){return Ls(e)?!0:(yl(e),!1)}a(ue,"ensureSafeRunId");function Do(){let e=kl(process.cwd());return{isGitRepo:e,worktreeCapable:e}}a(Do,"currentWorkflowPreflightEnv");function kl(e){let o=e;for(;;){if(ee(Y(o,".git")))return!0;let n=ll(o);if(n===o)return!1;o=n}}a(kl,"hasGitMarker");function Uo(e){console.log(R.red(`
95
- [workflow] capsule preflight failed:`));for(let o of e.issues)console.log(R.red(` - ${o.requirement}: ${o.message}`));console.log()}a(Uo,"printPreflightFailure");function Fo(e){let o=e.issues.filter(n=>n.severity==="warning");if(o.length!==0){console.log(R.yellow(`
96
- [workflow] capsule preflight warnings:`));for(let n of o)console.log(R.yellow(` - ${n.requirement}: ${n.message}`));console.log()}}a(Fo,"printPreflightWarnings");async function Os(e,o){if(e.execution==="trusted-local"&&!await o(`Run local workflow file? This EXECUTES local code:
94
+ `))}a(vl,"printInvalidRunId");function ue(e){return Os(e)?!0:(vl(e),!1)}a(ue,"ensureSafeRunId");function Fo(){let e=Sl(process.cwd());return{isGitRepo:e,worktreeCapable:e}}a(Fo,"currentWorkflowPreflightEnv");function Sl(e){let o=e;for(;;){if(ee(Y(o,".git")))return!0;let n=dl(o);if(n===o)return!1;o=n}}a(Sl,"hasGitMarker");function jo(e){console.log(R.red(`
95
+ [workflow] capsule preflight failed:`));for(let o of e.issues)console.log(R.red(` - ${o.requirement}: ${o.message}`));console.log()}a(jo,"printPreflightFailure");function Ho(e){let o=e.issues.filter(n=>n.severity==="warning");if(o.length!==0){console.log(R.yellow(`
96
+ [workflow] capsule preflight warnings:`));for(let n of o)console.log(R.yellow(` - ${n.requirement}: ${n.message}`));console.log()}}a(Ho,"printPreflightWarnings");async function Ns(e,o){if(e.execution==="trusted-local"&&!await o(`Run local workflow file? This EXECUTES local code:
97
97
  ${e.path}`)){console.log(R.dim(`Workflow cancelled.
98
- `));return}try{let n={source:`saved:${e.source}`,sandbox:e.execution,mayUseWorktree:!1},t,r;if(e.execution==="capability-generated"){let l=await Be(e.path),c=qe(l,Do());if(!c.ok){Uo(c);return}Fo(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 ho(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(R.red(`
98
+ `));return}try{let n={source:`saved:${e.source}`,sandbox:e.execution,mayUseWorktree:!1},t,r;if(e.execution==="capability-generated"){let l=await ze(e.path),c=qe(l,Fo());if(!c.ok){jo(c);return}Ho(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 ko(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(R.red(`
99
99
  [workflow] failed to load ${e.path}: ${t}
100
- `));return}}a(Os,"prepareSavedWorkflow");function rt(e){let o=e.data?.status;return typeof o=="string"?o:void 0}a(rt,"workflowEventStatus");function jo(e){let o=e.data?.name??e.data?.taskId??"",n=rt(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(jo,"formatWorkflowEvent");function Ns(e){let o=jo(e);o&&console.log(R.dim(o))}a(Ns,"renderWorkflowEvent");import Bo from"chalk";import vl from"string-width";var Sl=9;function $l(e,o=Sl){let n=vl(e);return n>=o?e:`${e}${" ".repeat(o-n)}`}a($l,"padWorkflowLiveSymbol");function Fs(e,o={}){let n=e.items.filter(f=>f.kind==="agent"),t=n.filter(f=>f.status==="running").map(f=>f.title),r=n.filter(f=>f.status==="completed").length,i=n.filter(f=>f.status==="failed").length,l=n.filter(f=>f.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(f=>f.id===e.activePhaseId)?.title,u=Date.parse(e.startedAt),w=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,...w!==void 0?{message:w}:{},...o.locale!==void 0?{locale:o.locale}:{}}}a(Fs,"workflowLiveSnapshotFromProcess");function If(e){return!e.shouldRender||e.rows.length===0?[]:e.rows.map(o=>`${$l(o.symbol)}${o.text}`)}a(If,"formatWorkflowLiveViewModelForTranscript");var bl=6,Ds={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")}},xl={shouldRender:!1,workflow:"",runId:"",activeCount:0,totalSpawned:0,completedAgents:0,failedAgents:0,stoppedAgents:0,rows:[]};function Al(e){return e.length>14?`${e.slice(0,14)}...`:e}a(Al,"shortRunId");function Ho(e){return e==="zh"?Ds.zh:Ds.en}a(Ho,"workflowLiveLabels");function Rl(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(Rl,"formatElapsedMs");function Us(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(Us,"formatTokenCount");function Tl(e){if(e.tokenBudgetSpent===void 0)return;let o=Ho(e.locale),n=Us(e.tokenBudgetSpent);if(e.tokenBudgetTotal!==void 0&&Number.isFinite(e.tokenBudgetTotal)){let t=Us(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(Tl,"formatWorkflowTokenUsage");function El(e,o){let n=[],t=e.startedAt===void 0?e.elapsedMs:o-e.startedAt;t!==void 0&&n.push(Rl(t,e.locale));let r=Tl(e);return r!==void 0&&n.push(r),n}a(El,"formatWorkflowHeaderMetrics");function Il(e){let o=Ho(e.locale),n=e.completedAgents+e.failedAgents+e.stoppedAgents;if(e.totalSpawned===0&&n===0)return;let t=js(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(Il,"formatWorkflowProgress");function Cl(e){let o=Ho(e.locale);if(e.totalSpawned===0)return o.waiting;let n=e.activeAgents.length,t=js(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(Cl,"formatWorkflowCounter");function js(e,o){let n=o??e.completedAgents+e.failedAgents+e.stoppedAgents;return Math.max(e.plannedAgents??0,e.totalSpawned,n)}a(js,"workflowProgressDenominator");function _l(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(_l,"formatWorkflowPhase");function Cf(e,o=Date.now()){if(!e||e.status!=="running")return xl;let n=[],t=Ho(e.locale),r=El(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} (${Al(e.runId)}) - ${t.activeAgents(e.activeAgents.length)}${i}`,isActive:!0});let l=_l(e);l&&n.push({kind:"phase",id:"phase",symbol:t.phase,symbolColor:"cyan",text:l,isActive:!0});let c=Il(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,bl);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:Cl(e),rows:d}}a(Cf,"buildWorkflowLiveViewModel");function Pl(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(Pl,"isWorkflowHarnessFailure");function Hs(e){let o=Ps(e.runId,e.canRerun);return Pl(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.",o].join(`
100
+ `));return}}a(Ns,"prepareSavedWorkflow");function st(e){let o=e.data?.status;return typeof o=="string"?o:void 0}a(st,"workflowEventStatus");function Bo(e){let o=e.data?.name??e.data?.taskId??"",n=st(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(Bo,"formatWorkflowEvent");function Ds(e){let o=Bo(e);o&&console.log(R.dim(o))}a(Ds,"renderWorkflowEvent");import zo from"chalk";import $l from"string-width";var bl=9;function xl(e,o=bl){let n=$l(e);return n>=o?e:`${e}${" ".repeat(o-n)}`}a(xl,"padWorkflowLiveSymbol");function js(e,o={}){let n=e.items.filter(f=>f.kind==="agent"),t=n.filter(f=>f.status==="running").map(f=>f.title),r=n.filter(f=>f.status==="completed").length,i=n.filter(f=>f.status==="failed").length,l=n.filter(f=>f.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(f=>f.id===e.activePhaseId)?.title,u=Date.parse(e.startedAt),g=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,...g!==void 0?{message:g}:{},...o.locale!==void 0?{locale:o.locale}:{}}}a(js,"workflowLiveSnapshotFromProcess");function Df(e){return!e.shouldRender||e.rows.length===0?[]:e.rows.map(o=>`${xl(o.symbol)}${o.text}`)}a(Df,"formatWorkflowLiveViewModelForTranscript");var Al=6,Us={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")}},Rl={shouldRender:!1,workflow:"",runId:"",activeCount:0,totalSpawned:0,completedAgents:0,failedAgents:0,stoppedAgents:0,rows:[]};function Tl(e){return e.length>14?`${e.slice(0,14)}...`:e}a(Tl,"shortRunId");function Go(e){return e==="zh"?Us.zh:Us.en}a(Go,"workflowLiveLabels");function El(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(El,"formatElapsedMs");function Fs(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(Fs,"formatTokenCount");function Cl(e){if(e.tokenBudgetSpent===void 0)return;let o=Go(e.locale),n=Fs(e.tokenBudgetSpent);if(e.tokenBudgetTotal!==void 0&&Number.isFinite(e.tokenBudgetTotal)){let t=Fs(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(Cl,"formatWorkflowTokenUsage");function Il(e,o){let n=[],t=e.startedAt===void 0?e.elapsedMs:o-e.startedAt;t!==void 0&&n.push(El(t,e.locale));let r=Cl(e);return r!==void 0&&n.push(r),n}a(Il,"formatWorkflowHeaderMetrics");function _l(e){let o=Go(e.locale),n=e.completedAgents+e.failedAgents+e.stoppedAgents;if(e.totalSpawned===0&&n===0)return;let t=Hs(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(_l,"formatWorkflowProgress");function Pl(e){let o=Go(e.locale);if(e.totalSpawned===0)return o.waiting;let n=e.activeAgents.length,t=Hs(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(Pl,"formatWorkflowCounter");function Hs(e,o){let n=o??e.completedAgents+e.failedAgents+e.stoppedAgents;return Math.max(e.plannedAgents??0,e.totalSpawned,n)}a(Hs,"workflowProgressDenominator");function Ml(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(Ml,"formatWorkflowPhase");function Uf(e,o=Date.now()){if(!e||e.status!=="running")return Rl;let n=[],t=Go(e.locale),r=Il(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} (${Tl(e.runId)}) - ${t.activeAgents(e.activeAgents.length)}${i}`,isActive:!0});let l=Ml(e);l&&n.push({kind:"phase",id:"phase",symbol:t.phase,symbolColor:"cyan",text:l,isActive:!0});let c=_l(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,Al);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:Pl(e),rows:d}}a(Uf,"buildWorkflowLiveViewModel");function Wl(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(Wl,"isWorkflowHarnessFailure");function Bs(e){let o=Ms(e.runId,e.canRerun);return Wl(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.",o].join(`
101
101
  `):[`Workflow failed (${e.runId}): ${e.error.message}`,o].join(`
102
- `)}a(Hs,"formatWorkflowFailedMessage");function qo(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(qo,"readWorkflowEventUsageTokens");function D(e,o){if(e.onWorkflowRunMessage){e.onWorkflowRunMessage(o);return}if(o.type==="error"){console.log(Bo.red(`
102
+ `)}a(Bs,"formatWorkflowFailedMessage");function qo(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(qo,"readWorkflowEventUsageTokens");function D(e,o){if(e.onWorkflowRunMessage){e.onWorkflowRunMessage(o);return}if(o.type==="error"){console.log(zo.red(`
103
103
  ${o.text}
104
- `));return}if(o.type==="success"){console.log(Bo.green(`
104
+ `));return}if(o.type==="success"){console.log(zo.green(`
105
105
  ${o.text}
106
- `));return}if(o.type==="event"){console.log(Bo.dim(o.text));return}if(o.type==="assistant"){console.log(`
106
+ `));return}if(o.type==="event"){console.log(zo.dim(o.text));return}if(o.type==="assistant"){console.log(`
107
107
  ${o.text}
108
- `);return}console.log(Bo.dim(`
108
+ `);return}console.log(zo.dim(`
109
109
  ${o.text}
110
- `))}a(D,"emitWorkflowRunMessage");function Le(e,o,n={}){let t=n.presentation==="agentic"?Mo(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=jo(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&&Ns(i)}}a(Le,"workflowEventSink");function Oe(e,o,n){return e.subscribeWorkflowProcess(t=>{t.snapshot.runId===n&&o.onProcessEvent(t)})}a(Oe,"subscribeWorkflowLiveProcess");function Se(e,o,n,t="en"){let r=Date.now(),i=new Map,l,c=0,d=0,u=0,w=0,f=0,k=!1,v=n.phases??[],h=n.tokenBudget!==void 0&&Number.isFinite(n.tokenBudget)?n.tokenBudget:void 0,y=a((m,x)=>{let A=l===void 0?-1:v.indexOf(l),j=A>=0?A+1:void 0,H=v.length>0?v.length:void 0;e.onWorkflowRunUpdate?.({runId:o,workflow:n.name,status:m,...l!==void 0?{phase:l}:{},...j!==void 0?{phaseIndex:j}:{},...H!==void 0?{phaseTotal:H}:{},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:f,...h!==void 0?{tokenBudgetTotal:h}:{},completedAgents:d,failedAgents:u,stoppedAgents:w,...x!==void 0?{message:x}:{},locale:t})},"emit");return{running:a(m=>{k||y("running",m)},"running"),onProcessEvent:a(m=>{if(k&&m.type!=="workflow_finished")return;let x=m.snapshot.status;(m.type==="workflow_finished"||x==="completed"||x==="failed"||x==="cancelled")&&(k=!0);let A=m.type==="workflow_updated"?m.message:void 0;e.onWorkflowRunUpdate?.(Fs(m.snapshot,A===void 0?{locale:t}:{locale:t,message:A}))},"onProcessEvent"),onEvent:a(m=>{if(!k)switch(m.type){case"phase_started":{let x=m.data?.name;l=typeof x=="string"?x:l,y("running");break}case"agent_spawned":{let x=typeof m.data?.taskId=="string"?m.data.taskId:`task-${c+1}`,A=typeof m.data?.name=="string"?m.data.name:x;i.set(x,A),c+=1,y("running");break}case"agent_completed":{let x=typeof m.data?.taskId=="string"?m.data.taskId:void 0;x&&i.delete(x),f+=qo(m.data),rt(m)==="failed"?u+=1:d+=1,y("running");break}case"agent_unverified":{let x=typeof m.data?.taskId=="string"?m.data.taskId:void 0;x&&i.delete(x),f+=qo(m.data),d+=1,y("running");break}case"agent_failed":{let x=typeof m.data?.taskId=="string"?m.data.taskId:void 0;x&&i.delete(x),f+=qo(m.data),u+=1,y("running");break}case"agent_stopped":{let x=typeof m.data?.taskId=="string"?m.data.taskId:void 0;x&&i.delete(x),f+=qo(m.data),w+=1,y("running");break}case"synthesis_completed":{y("running","synthesis complete");break}default:break}},"onEvent"),complete:a((m,x)=>{k||(k=!0,y(m,x))},"complete")}}a(Se,"createWorkflowLiveUpdateEmitter");function $e(e,o,n,t,r={}){e.done.then(i=>{if(i.kind==="failed"){if(e.getSnapshot?.()?.status==="stopped"){t?.complete("stopped","Workflow stopped by user.");return}t?.complete("failed",i.error.message),D(o,{type:"error",text:Hs({runId:n,error:i.error,canRerun:r.canRerun===!0,totalSpawned:i.state.totalSpawned})});return}if(i.kind==="completed"){let l=r.locale??"en",c={full:r.presentation==="agentic"},d=de(i.result,c)??to(i.state.artifacts,l,c),u=d===void 0?Po(i.state.events,c):void 0,w=d??u;if(t?.complete("completed",w?"completed with result":"completed"),r.presentation==="agentic"){D(o,{type:"assistant",text:Bn({runId:n,totalSpawned:i.state.totalSpawned,...w!==void 0?{resultText:w}:{},...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(`
111
- `)}),w&&D(o,{type:"info",text:`Workflow result:
112
- ${w}`})}}).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:Hs({runId:n,error:i instanceof Error?i:new Error(l),canRerun:r.canRerun===!0})})})}a($e,"observeManagedWorkflowDone");function fe(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(zo.dim(`
110
+ `))}a(D,"emitWorkflowRunMessage");function Le(e,o,n={}){let t=n.presentation==="agentic"?Lo(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=Bo(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&&Ds(i)}}a(Le,"workflowEventSink");function Oe(e,o,n){return e.subscribeWorkflowProcess(t=>{t.snapshot.runId===n&&o.onProcessEvent(t)})}a(Oe,"subscribeWorkflowLiveProcess");function Se(e,o,n,t="en"){let r=Date.now(),i=new Map,l,c=0,d=0,u=0,g=0,f=0,k=!1,v=n.phases??[],h=n.tokenBudget!==void 0&&Number.isFinite(n.tokenBudget)?n.tokenBudget:void 0,y=a((m,x)=>{let A=l===void 0?-1:v.indexOf(l),j=A>=0?A+1:void 0,H=v.length>0?v.length:void 0;e.onWorkflowRunUpdate?.({runId:o,workflow:n.name,status:m,...l!==void 0?{phase:l}:{},...j!==void 0?{phaseIndex:j}:{},...H!==void 0?{phaseTotal:H}:{},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:f,...h!==void 0?{tokenBudgetTotal:h}:{},completedAgents:d,failedAgents:u,stoppedAgents:g,...x!==void 0?{message:x}:{},locale:t})},"emit");return{running:a(m=>{k||y("running",m)},"running"),onProcessEvent:a(m=>{if(k&&m.type!=="workflow_finished")return;let x=m.snapshot.status;(m.type==="workflow_finished"||x==="completed"||x==="failed"||x==="cancelled")&&(k=!0);let A=m.type==="workflow_updated"?m.message:void 0;e.onWorkflowRunUpdate?.(js(m.snapshot,A===void 0?{locale:t}:{locale:t,message:A}))},"onProcessEvent"),onEvent:a(m=>{if(!k)switch(m.type){case"phase_started":{let x=m.data?.name;l=typeof x=="string"?x:l,y("running");break}case"agent_spawned":{let x=typeof m.data?.taskId=="string"?m.data.taskId:`task-${c+1}`,A=typeof m.data?.name=="string"?m.data.name:x;i.set(x,A),c+=1,y("running");break}case"agent_completed":{let x=typeof m.data?.taskId=="string"?m.data.taskId:void 0;x&&i.delete(x),f+=qo(m.data),st(m)==="failed"?u+=1:d+=1,y("running");break}case"agent_unverified":{let x=typeof m.data?.taskId=="string"?m.data.taskId:void 0;x&&i.delete(x),f+=qo(m.data),d+=1,y("running");break}case"agent_failed":{let x=typeof m.data?.taskId=="string"?m.data.taskId:void 0;x&&i.delete(x),f+=qo(m.data),u+=1,y("running");break}case"agent_stopped":{let x=typeof m.data?.taskId=="string"?m.data.taskId:void 0;x&&i.delete(x),f+=qo(m.data),g+=1,y("running");break}case"synthesis_completed":{y("running","synthesis complete");break}default:break}},"onEvent"),complete:a((m,x)=>{k||(k=!0,y(m,x))},"complete")}}a(Se,"createWorkflowLiveUpdateEmitter");function $e(e,o,n,t,r={}){e.done.then(i=>{if(i.kind==="failed"){if(e.getSnapshot?.()?.status==="stopped"){t?.complete("stopped","Workflow stopped by user.");return}t?.complete("failed",i.error.message),D(o,{type:"error",text:Bs({runId:n,error:i.error,canRerun:r.canRerun===!0,totalSpawned:i.state.totalSpawned})});return}if(i.kind==="completed"){let l=r.locale??"en",c={full:r.presentation==="agentic"},d=de(i.result,c)??so(i.state.artifacts,l,c),u=d===void 0?Wo(i.state.events,c):void 0,g=d??u;if(t?.complete("completed",g?"completed with result":"completed"),r.presentation==="agentic"){D(o,{type:"assistant",text:Gn({runId:n,totalSpawned:i.state.totalSpawned,...g!==void 0?{resultText:g}:{},...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(`
111
+ `)}),g&&D(o,{type:"info",text:`Workflow result:
112
+ ${g}`})}}).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:Bs({runId:n,error:i instanceof Error?i:new Error(l),canRerun:r.canRerun===!0})})})}a($e,"observeManagedWorkflowDone");function fe(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(Ko.dim(`
113
113
  [workflow] ${o.message}
114
- `))}a(fe,"emitWorkflowBuilderEvent");function ao(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(ao,"buildWorkflowProcessMetadata");async function st(e){let o=e.approval==="required"?ve(e.callbacks):void 0;if(e.approval==="required"&&!o)return console.log(zo.red(`
114
+ `))}a(fe,"emitWorkflowBuilderEvent");function co(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(co,"buildWorkflowProcessMetadata");async function it(e){let o=e.approval==="required"?ve(e.callbacks):void 0;if(e.approval==="required"&&!o)return console.log(Ko.red(`
115
115
  [workflow] refusing to generate a workflow without an interactive approval channel.
116
- `)),"failed";let n=e.callbacks.createKodaXOptions;if(!n)return console.log(zo.red(`
116
+ `)),"failed";let n=e.callbacks.createKodaXOptions;if(!n)return console.log(Ko.red(`
117
117
  [workflow] cannot generate - REPL options unavailable in this context.
118
- `)),"failed";let t=ke(e.request),r,i;try{fe(e,{stage:"started",message:"Workflow builder started"}),fe(e,{stage:"generating",message:"Workflow - generating harness"}),r=n(),i=await(e.generateWorkflow??yo)({request:e.request,options:r}),fe(e,{stage:"validating",message:"Workflow - validating harness"})}catch(m){let x=m instanceof Error?m.message:String(m);return fe(e,{stage:"failed",message:x}),"failed"}if(i.kind==="declined")return fe(e,{stage:"declined",message:i.reason}),console.log(zo.dim(`
118
+ `)),"failed";let t=ke(e.request),r,i;try{fe(e,{stage:"started",message:"Workflow builder started"}),fe(e,{stage:"generating",message:"Workflow - generating harness"}),r=n(),i=await(e.generateWorkflow??vo)({request:e.request,options:r}),fe(e,{stage:"validating",message:"Workflow - validating harness"})}catch(m){let x=m instanceof Error?m.message:String(m);return fe(e,{stage:"failed",message:x}),"failed"}if(i.kind==="declined")return fe(e,{stage:"declined",message:i.reason}),console.log(Ko.dim(`
119
119
  Workflow not created: ${i.reason}
120
- `)),"declined";fe(e,{stage:"ready",message:"Workflow - harness ready"});let l=e.presentation??"command",c=ge(i.module);l!=="agentic"&&D(e.callbacks,{type:"info",text:`Generated workflow: ${i.approvalSummary}`});let d=ye(process.cwd()).key,u=e.runBaseDir??N("workflow-runs",d),w=e.runManager??Ee(),f=`run-${Date.now().toString(36)}`,k=Ml(u,f);if(o){if(!await o(oe(c,{source:e.sourceLabel??"generated",sandbox:"capability-generated",mayUseWorktree:i.manifest.mayUseWorktree===!0,rawScript:i.scriptSnapshot.source})))return fe(e,{stage:"cancelled",message:"Workflow cancelled"}),D(e.callbacks,{type:"info",text:"Workflow cancelled."}),"cancelled"}else l!=="agentic"&&(D(e.callbacks,{type:"info",text:oe(c,{source:e.sourceLabel??"generated",sandbox:"capability-generated",mayUseWorktree:i.manifest.mayUseWorktree===!0})}),D(e.callbacks,{type:"info",text:"AMAW auto-start: capability-isolated generated workflow; normal permission gates still apply."}));l==="agentic"?D(e.callbacks,{type:"assistant",text:qn({runId:f,summary:c,approvalSummary:i.approvalSummary,locale:t}),final:!1}):D(e.callbacks,{type:"info",text:`Started workflow ${i.module.meta.name} (${f}). Use /workflow show ${f} for status.`});let v=Se(e.callbacks,f,i.module.meta,t);v.running(`Use /workflow show ${f} for status or /workflow stop ${f} to stop.`);let h=Oe(w,v,f),y=w.startFromOptions({module:i.module,args:{request:e.request},options:r,runId:f,runDir:k,scriptSnapshot:i.scriptSnapshot,processMetadata:ao({source:e.processSource??"command",displayName:i.module.meta.name,goal:e.request}),onEvent:Le(e.callbacks,void 0,{presentation:e.presentation??"command",locale:t,runId:f})});return y.done.finally(h),fe(e,{stage:"launched",message:`Workflow ${i.module.meta.name} started`}),$e(y,e.callbacks,f,v,{canRerun:!0,presentation:l,locale:t}),"started"}a(st,"startGeneratedWorkflowFromRequest");function it(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(it,"parseWorkflowInvocation");function lo(e){let o=e.trim();if(!o)return{};if(o.startsWith("{"))try{return JSON.parse(o)}catch{return{question:o}}return{question:o}}a(lo,"parseWorkflowArgs");function at(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(`
121
- `)}a(at,"buildWorkflowRevisionRequest");function Bs(e){if(!e)return;let o=Number(e);return Number.isInteger(o)&&o>=0?o:void 0}a(Bs,"parseNonNegativeInteger");function lt(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=Bs(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(lt,"parseWorkflowRunsOptions");function Wl(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(Wl,"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=Bs(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=Wl(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 Ll=1440*60*1e3;function Ol(e){return new Map(e.map(o=>[o.runId,o]))}a(Ol,"processSnapshotsByRunId");function Nl(e){return{dryRun:e.dryRun,...e.keep!==void 0?{keep:e.keep}:{},...e.olderThanMs!==void 0?{olderThanDays:e.olderThanMs/Ll}:{}}}a(Nl,"workflowPruneRetentionOptions");function Dl(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(Dl,"workflowPruneCandidateSummaries");function zs(e){return ao({source:"capsule",displayName:e.displayName,savedWorkflowName:e.savedWorkflowName,sourceRunId:e.provenance?.fromRunId,sourceWorkflowName:e.provenance?.fromWorkflowName??e.savedWorkflowName,revisionOf:e.provenance?.revisionOf})}a(zs,"buildSavedWorkflowProcessMetadata");var Ks={name:"workflow",description:"Run a dynamic multi-agent workflow (FEATURE_217)",usage:"/workflow [help | list | runs | show | pause | resume | stop | delete | prune | rerun | save | rename | revise | create | <name> [args]]",argumentHint:"help | list | 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:Wo,handler:a(async(e,o,n,t)=>{let r=it(e),i=ye(process.cwd()).key,l=N("workflow-runs",i),c=Ee(),d=nt(process.cwd()),u=sr({runManager:c,runBaseDir:l,savedWorkflowDirs:d});if(r.kind==="help"){Wo();return}if(r.kind==="list"){console.log(g.bold(`
122
- Built-in workflows:`)),console.log(No(ze())),console.log(g.bold(`
123
- Pattern templates:`));for(let $ of ir())console.log(` ${g.cyan($.name)} ${g.dim(`(${$.pattern})`)} - ${$.description}`);let p=await Te(d);p.length>0&&(console.log(g.bold(`
124
- Saved workflows:`)),console.log(tt(p))),console.log(g.dim(`
125
- Run one with: /workflow <name> <question or JSON args>`)),console.log(g.dim(` Show usage with: /workflow help
126
- `));return}if(r.kind==="runs"){let p=lt(r.rawArgs);if(p.error){console.log(g.yellow(`
120
+ `)),"declined";fe(e,{stage:"ready",message:"Workflow - harness ready"});let l=e.presentation??"command",c=pe(i.module);l!=="agentic"&&D(e.callbacks,{type:"info",text:`Generated workflow: ${i.approvalSummary}`});let d=ye(process.cwd()).key,u=e.runBaseDir??N("workflow-runs",d),g=e.runManager??Ee(),f=`run-${Date.now().toString(36)}`,k=Ll(u,f);if(o){if(!await o(oe(c,{source:e.sourceLabel??"generated",sandbox:"capability-generated",mayUseWorktree:i.manifest.mayUseWorktree===!0,rawScript:i.scriptSnapshot.source})))return fe(e,{stage:"cancelled",message:"Workflow cancelled"}),D(e.callbacks,{type:"info",text:"Workflow cancelled."}),"cancelled"}else l!=="agentic"&&(D(e.callbacks,{type:"info",text:oe(c,{source:e.sourceLabel??"generated",sandbox:"capability-generated",mayUseWorktree:i.manifest.mayUseWorktree===!0})}),D(e.callbacks,{type:"info",text:"AMAW auto-start: capability-isolated generated workflow; normal permission gates still apply."}));l==="agentic"?D(e.callbacks,{type:"assistant",text:zn({runId:f,summary:c,approvalSummary:i.approvalSummary,locale:t}),final:!1}):D(e.callbacks,{type:"info",text:`Started workflow ${i.module.meta.name} (${f}). Use /workflow show ${f} for status.`});let v=Se(e.callbacks,f,i.module.meta,t);v.running(`Use /workflow show ${f} for status or /workflow stop ${f} to stop.`);let h=Oe(g,v,f),y=g.startFromOptions({module:i.module,args:{request:e.request},options:r,runId:f,runDir:k,scriptSnapshot:i.scriptSnapshot,processMetadata:co({source:e.processSource??"command",displayName:i.module.meta.name,goal:e.request}),onEvent:Le(e.callbacks,void 0,{presentation:e.presentation??"command",locale:t,runId:f})});return y.done.finally(h),fe(e,{stage:"launched",message:`Workflow ${i.module.meta.name} started`}),$e(y,e.callbacks,f,v,{canRerun:!0,presentation:l,locale:t}),"started"}a(it,"startGeneratedWorkflowFromRequest");function at(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(at,"parseWorkflowInvocation");function uo(e){let o=e.trim();if(!o)return{};if(o.startsWith("{"))try{return JSON.parse(o)}catch{return{question:o}}return{question:o}}a(uo,"parseWorkflowArgs");function lt(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(`
121
+ `)}a(lt,"buildWorkflowRevisionRequest");function Gs(e){if(!e)return;let o=Number(e);return Number.isInteger(o)&&o>=0?o:void 0}a(Gs,"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=Gs(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 Ol(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(Ol,"parseOlderThanMs");function dt(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=Gs(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=Ol(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(dt,"parseWorkflowPruneOptions");var Nl=1440*60*1e3;function Dl(e){return new Map(e.map(o=>[o.runId,o]))}a(Dl,"processSnapshotsByRunId");function Ul(e){return{dryRun:e.dryRun,...e.keep!==void 0?{keep:e.keep}:{},...e.olderThanMs!==void 0?{olderThanDays:e.olderThanMs/Nl}:{}}}a(Ul,"workflowPruneRetentionOptions");function Fl(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(Fl,"workflowPruneCandidateSummaries");function qs(e){return co({source:"capsule",displayName:e.displayName,savedWorkflowName:e.savedWorkflowName,sourceRunId:e.provenance?.fromRunId,sourceWorkflowName:e.provenance?.fromWorkflowName??e.savedWorkflowName,revisionOf:e.provenance?.revisionOf})}a(qs,"buildSavedWorkflowProcessMetadata");var Ks={name:"workflow",description:"Run a dynamic multi-agent workflow (FEATURE_217)",usage:"/workflow [help | list | runs | show | pause | resume | stop | delete | prune | rerun | save | rename | revise | create | <name> [args]]",argumentHint:"help | list | 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:Oo,handler:a(async(e,o,n,t)=>{let r=at(e),i=ye(process.cwd()).key,l=N("workflow-runs",i),c=Ee(),d=tt(process.cwd()),u=ir({runManager:c,runBaseDir:l,savedWorkflowDirs:d});if(r.kind==="help"){Oo();return}if(r.kind==="list"){console.log(p.bold(`
122
+ Built-in workflows:`)),console.log(Uo(Ke())),console.log(p.bold(`
123
+ Pattern templates:`));for(let $ of ar())console.log(` ${p.cyan($.name)} ${p.dim(`(${$.pattern})`)} - ${$.description}`);let w=await Te(d);w.length>0&&(console.log(p.bold(`
124
+ Saved workflows:`)),console.log(rt(w))),console.log(p.dim(`
125
+ Run one with: /workflow <name> <question or JSON args>`)),console.log(p.dim(` Show usage with: /workflow help
126
+ `));return}if(r.kind==="runs"){let w=ct(r.rawArgs);if(w.error){console.log(p.yellow(`
127
127
  Usage: /workflow runs [--all] [--limit N]
128
- ${p.error}
129
- `));return}let $=Ol(u.listWorkflowProcessSnapshots({activeOnly:!1})),S=c.list().filter(We);S.length>0&&(console.log(g.bold(`
130
- Active workflow runs:`)),console.log(Vn(S,{processSnapshots:$}))),console.log(g.bold(`
131
- Workflow runs:`)),console.log(Xn(so(l),{limit:p.all?void 0:p.limit,showLimitHint:!p.all,processSnapshots:$})),console.log();return}if(r.kind==="show"){let p=so(l),$=r.runId||Jn(c.list(),p);if(!$){console.log(g.yellow(`
128
+ ${w.error}
129
+ `));return}let $=Dl(u.listWorkflowProcessSnapshots({activeOnly:!1})),S=c.list().filter(We);S.length>0&&(console.log(p.bold(`
130
+ Active workflow runs:`)),console.log(Yn(S,{processSnapshots:$}))),console.log(p.bold(`
131
+ Workflow runs:`)),console.log(Vn(ao(l),{limit:w.all?void 0:w.limit,showLimitHint:!w.all,processSnapshots:$})),console.log();return}if(r.kind==="show"){let w=ao(l),$=r.runId||Zn(c.list(),w);if(!$){console.log(p.yellow(`
132
132
  No workflow runs yet. Start one with /workflow create <request>.
133
- `));return}if(!ue($))return;let S=c.get($),C=io(l,$),E=u.getWorkflowProcessSnapshot($);console.log(g.bold(`
134
- Workflow run:`)),console.log(ot(S,C,{full:r.full===!0,...E?{processSnapshot:E}:{}})),console.log();return}if(r.kind==="pause"){if(!ue(r.runId))return;let p=c.pause(r.runId);console.log(p?g.dim(`Paused workflow ${r.runId}.
135
- `):g.yellow(`No running workflow ${r.runId}.
136
- `));return}if(r.kind==="resume"){if(!ue(r.runId))return;let p=c.resume(r.runId);console.log(p?g.dim(`Resumed workflow ${r.runId}.
137
- `):g.yellow(`No paused workflow ${r.runId}.
138
- `));return}if(r.kind==="stop"){let p=r.runId||Zn(c.list());if(!p){console.log(g.yellow(`
133
+ `));return}if(!ue($))return;let S=c.get($),I=lo(l,$),E=u.getWorkflowProcessSnapshot($);console.log(p.bold(`
134
+ Workflow run:`)),console.log(nt(S,I,{full:r.full===!0,...E?{processSnapshot:E}:{}})),console.log();return}if(r.kind==="pause"){if(!ue(r.runId))return;let w=c.pause(r.runId);console.log(w?p.dim(`Paused workflow ${r.runId}.
135
+ `):p.yellow(`No running workflow ${r.runId}.
136
+ `));return}if(r.kind==="resume"){if(!ue(r.runId))return;let w=c.resume(r.runId);console.log(w?p.dim(`Resumed workflow ${r.runId}.
137
+ `):p.yellow(`No paused workflow ${r.runId}.
138
+ `));return}if(r.kind==="stop"){let w=r.runId||Qn(c.list());if(!w){console.log(p.yellow(`
139
139
  No active workflow to stop.
140
- `));return}if(!ue(p))return;let $=await u.stopWorkflow(p,"stopped by user"),S=c.get(p),C=io(l,p),E=u.getWorkflowProcessSnapshot(p),W=S?.status??C?.status??E?.status,z=S?!We(S):C?Gn(C.status):E!==void 0&&wo(E.status),M=et(p,Qn(S,C));console.log($?g.dim(`Stopped workflow ${p}.
141
- `):W&&z?g.yellow(`Workflow ${p} is already ${W}. Next: ${M}.
142
- `):g.yellow(`No active workflow ${p}.
143
- `));return}if(r.kind==="delete"){if(!r.target){console.log(g.yellow(`
140
+ `));return}if(!ue(w))return;let $=await u.stopWorkflow(w,"stopped by user"),S=c.get(w),I=lo(l,w),E=u.getWorkflowProcessSnapshot(w),W=S?.status??I?.status??E?.status,z=S?!We(S):I?Xn(I.status):E!==void 0&&yo(E.status),M=ot(w,et(S,I));console.log($?p.dim(`Stopped workflow ${w}.
141
+ `):W&&z?p.yellow(`Workflow ${w} is already ${W}. Next: ${M}.
142
+ `):p.yellow(`No active workflow ${w}.
143
+ `));return}if(r.kind==="delete"){if(!r.target){console.log(p.yellow(`
144
144
  Usage: /workflow delete [--force] [--run|--saved] <runId|savedName>
145
- `));return}if(r.scope==="conflict"){console.log(g.red(`
145
+ `));return}if(r.scope==="conflict"){console.log(p.red(`
146
146
  [workflow] choose only one delete scope: --run or --saved.
147
- `));return}let p=a(async(se,B)=>{try{let ie=await u.deleteSavedWorkflow(se,B);if(!ie){console.log(g.red(`
147
+ `));return}let w=a(async(se,B)=>{try{let ie=await u.deleteSavedWorkflow(se,B);if(!ie){console.log(p.red(`
148
148
  [workflow] saved workflow deletion is unavailable in this context.
149
- `));return}console.log(g.dim(`
149
+ `));return}console.log(p.dim(`
150
150
  Deleted saved workflow ${ie.name}.
151
- `))}catch(ie){let L=ie instanceof Error?ie.message:String(ie);console.log(g.red(`
151
+ `))}catch(ie){let L=ie instanceof Error?ie.message:String(ie);console.log(p.red(`
152
152
  [workflow] delete failed: ${L}
153
- `))}},"deleteSavedWorkflowTarget");if(r.scope==="saved"){await p(r.target);return}let $=c.getWorkflowProcessSnapshot(r.target),S=$?void 0:await u.resolveWorkflowIdentity(r.target),C;if(S?.kind==="ambiguous")if(S.run)C=S.run.runId;else{console.log(g.red(`
153
+ `))}},"deleteSavedWorkflowTarget");if(r.scope==="saved"){await w(r.target);return}let $=c.getWorkflowProcessSnapshot(r.target),S=$?void 0:await u.resolveWorkflowIdentity(r.target),I;if(S?.kind==="ambiguous")if(S.run)I=S.run.runId;else{console.log(p.red(`
154
154
  [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.
155
- `));return}if(S?.kind==="saved"){if(r.scope==="run"){console.log(g.yellow(`
155
+ `));return}if(S?.kind==="saved"){if(r.scope==="run"){console.log(p.yellow(`
156
156
  No persisted workflow run ${r.target}. Use --saved to delete the saved workflow.
157
- `));return}await p(S.savedWorkflow.name,S.savedWorkflow.source);return}if(S?.kind==="missing"){console.log(g.yellow(`
157
+ `));return}await w(S.savedWorkflow.name,S.savedWorkflow.source);return}if(S?.kind==="missing"){console.log(p.yellow(`
158
158
  No persisted workflow run or generated saved workflow ${r.target}.
159
- `));return}let E=S?.kind==="run"?S.runId:C??r.target;if(!ue(E))return;if(await u.deleteWorkflowRun(E,{force:r.force})){console.log(g.dim(`
159
+ `));return}let E=S?.kind==="run"?S.runId:I??r.target;if(!ue(E))return;if(await u.deleteWorkflowRun(E,{force:r.force})){console.log(p.dim(`
160
160
  Deleted workflow run ${E}${r.force?" with --force":""}.
161
- `));return}let z=$??c.getWorkflowProcessSnapshot(E),M=u.getWorkflowProcessSnapshot(E);if(!M&&!qs(J(l,E,"run.json"))){console.log(g.yellow(`
161
+ `));return}let z=$??c.getWorkflowProcessSnapshot(E),M=u.getWorkflowProcessSnapshot(E);if(!M&&!zs(J(l,E,"run.json"))){console.log(p.yellow(`
162
162
  No persisted workflow run or generated saved workflow ${r.target}.
163
- `));return}if(z&&!wo(z.status)){console.log(g.yellow(`
163
+ `));return}if(z&&!yo(z.status)){console.log(p.yellow(`
164
164
  Workflow ${E} is ${z.status}. Stop it before deleting the run record.
165
- `));return}if(M&&!wo(M.status)){console.log(g.yellow(`
165
+ `));return}if(M&&!yo(M.status)){console.log(p.yellow(`
166
166
  Workflow ${E} is a non-terminal persisted ${M.status} record. If it is stale, run /workflow delete --force ${E}.
167
- `));return}console.log(g.yellow(`
167
+ `));return}console.log(p.yellow(`
168
168
  Workflow ${E} is not a deletable terminal run.
169
- `));return}if(r.kind==="prune"){let p=ct(r.rawArgs);if(p.error){console.log(g.yellow(`
169
+ `));return}if(r.kind==="prune"){let w=dt(r.rawArgs);if(w.error){console.log(p.yellow(`
170
170
  Usage: /workflow prune --dry-run | --keep N | --older-than Nd
171
- ${p.error}
172
- `));return}if(!p.dryRun&&p.keep===void 0&&p.olderThanMs===void 0){console.log(g.yellow(`
171
+ ${w.error}
172
+ `));return}if(!w.dryRun&&w.keep===void 0&&w.olderThanMs===void 0){console.log(p.yellow(`
173
173
  Usage: /workflow prune --dry-run | --keep N | --older-than Nd
174
174
  No cleanup rule was provided.
175
- `));return}let $=so(l),S=await u.pruneWorkflowRuns(Nl(p)),C=Dl($,S.candidates);console.log(g.bold(p.dryRun?`
175
+ `));return}let $=ao(l),S=await u.pruneWorkflowRuns(Ul(w)),I=Fl($,S.candidates);console.log(p.bold(w.dryRun?`
176
176
  Workflow prune preview:`:`
177
- Workflow prune:`)),console.log(Yn(C)),S.protectedRuns>0&&console.log(g.dim(`
178
- Protected ${S.protectedRuns} active workflow run${S.protectedRuns===1?"":"s"} from pruning.`)),p.dryRun?console.log(g.dim(`
177
+ Workflow prune:`)),console.log(Jn(I)),S.protectedRuns>0&&console.log(p.dim(`
178
+ Protected ${S.protectedRuns} active workflow run${S.protectedRuns===1?"":"s"} from pruning.`)),w.dryRun?console.log(p.dim(`
179
179
  Dry run only. Add --keep N or --older-than Nd without --dry-run to delete.
180
- `)):console.log(g.dim(`
180
+ `)):console.log(p.dim(`
181
181
  Deleted ${S.deleted} workflow run${S.deleted===1?"":"s"}.
182
- `));return}if(r.kind==="save"){if(!r.runId||!r.name){console.log(g.yellow(`
182
+ `));return}if(r.kind==="save"){if(!r.runId||!r.name){console.log(p.yellow(`
183
183
  Usage: /workflow save <runId> <name>
184
- `));return}if(!ue(r.runId))return;try{let p=await rr({runDir:J(l,r.runId),targetDir:d.project??J(process.cwd(),".kodax","workflows"),name:r.name});console.log(g.green(`
185
- Saved workflow ${p.name} to ${p.path}
186
- `))}catch(p){let $=p instanceof Error?p.message:String(p);console.log(g.red(`
184
+ `));return}if(!ue(r.runId))return;try{let w=await sr({runDir:J(l,r.runId),targetDir:d.project??J(process.cwd(),".kodax","workflows"),name:r.name});console.log(p.green(`
185
+ Saved workflow ${w.name} to ${w.path}
186
+ `))}catch(w){let $=w instanceof Error?w.message:String(w);console.log(p.red(`
187
187
  [workflow] save failed: ${$}
188
- `))}return}if(r.kind==="rename"){if(!r.target||!r.newName){console.log(g.yellow(`
188
+ `))}return}if(r.kind==="rename"){if(!r.target||!r.newName){console.log(p.yellow(`
189
189
  Usage: /workflow rename <runId|alias|savedName> <newName>
190
- `));return}let p=await u.resolveWorkflowIdentity(r.target);if(p.kind==="ambiguous"){console.log(g.red(`
190
+ `));return}let w=await u.resolveWorkflowIdentity(r.target);if(w.kind==="ambiguous"){console.log(p.red(`
191
191
  [workflow] ambiguous rename target: ${r.target} matches both a workflow run id and a saved workflow name.
192
- `));return}if(p.kind==="missing"){console.log(g.red(`
192
+ `));return}if(w.kind==="missing"){console.log(p.red(`
193
193
  [workflow] rename target not found: ${r.target}
194
- `));return}if(p.kind==="run"){if(!await u.renameWorkflowRun(p.runId,r.newName)){console.log(g.red(`
195
- [workflow] rename failed: ${p.runId}
196
- `));return}console.log(g.green(`
197
- Renamed workflow run ${p.runId} to ${r.newName.trim()}.
198
- `));return}try{let $=await nr({dirs:d,name:p.savedWorkflow.name,newName:r.newName,source:p.savedWorkflow.source});console.log(g.green(`
194
+ `));return}if(w.kind==="run"){if(!await u.renameWorkflowRun(w.runId,r.newName)){console.log(p.red(`
195
+ [workflow] rename failed: ${w.runId}
196
+ `));return}console.log(p.green(`
197
+ Renamed workflow run ${w.runId} to ${r.newName.trim()}.
198
+ `));return}try{let $=await tr({dirs:d,name:w.savedWorkflow.name,newName:r.newName,source:w.savedWorkflow.source});console.log(p.green(`
199
199
  Renamed saved workflow ${r.target} to ${$.name}.
200
- `))}catch($){let S=$ instanceof Error?$.message:String($);console.log(g.red(`
200
+ `))}catch($){let S=$ instanceof Error?$.message:String($);console.log(p.red(`
201
201
  [workflow] rename failed: ${S}
202
- `))}return}if(r.kind==="revise"){if(!r.target||!r.request){console.log(g.yellow(`
202
+ `))}return}if(r.kind==="revise"){if(!r.target||!r.request){console.log(p.yellow(`
203
203
  Usage: /workflow revise [--replace] <runId|alias|savedName> <change request>
204
- `));return}let p=ve(n);if(!p){console.log(g.red(`
204
+ `));return}let w=ve(n);if(!w){console.log(p.red(`
205
205
  [workflow] refusing to revise a workflow without an interactive approval channel.
206
- `));return}let $=n.createKodaXOptions;if(!$){console.log(g.red(`
206
+ `));return}let $=n.createKodaXOptions;if(!$){console.log(p.red(`
207
207
  [workflow] cannot revise - REPL options unavailable in this context.
208
- `));return}let S=await u.resolveWorkflowIdentity(r.target);if(S.kind==="ambiguous"){console.log(g.red(`
208
+ `));return}let S=await u.resolveWorkflowIdentity(r.target);if(S.kind==="ambiguous"){console.log(p.red(`
209
209
  [workflow] ambiguous revise target: ${r.target} matches both a workflow run id and a saved workflow name.
210
- `));return}if(S.kind==="missing"){console.log(g.red(`
210
+ `));return}if(S.kind==="missing"){console.log(p.red(`
211
211
  [workflow] revise target not found: ${r.target}
212
- `));return}if(r.replace===!0&&S.kind!=="saved"){console.log(g.red(`
212
+ `));return}if(r.replace===!0&&S.kind!=="saved"){console.log(p.red(`
213
213
  [workflow] revise --replace requires a saved workflow name target.
214
- `));return}let C;try{if(S.kind==="run")C=(await fn({runDir:S.runDir})).capsule;else{if(S.savedWorkflow.execution!=="capability-generated"){console.log(g.red(`
214
+ `));return}let I;try{if(S.kind==="run")I=(await mn({runDir:S.runDir})).capsule;else{if(S.savedWorkflow.execution!=="capability-generated"){console.log(p.red(`
215
215
  [workflow] only generated workflow capsules can be revised.
216
- `));return}C=await Be(S.savedWorkflow.path)}}catch(O){let Fe=O instanceof Error?O.message:String(O);console.log(g.red(`
216
+ `));return}I=await ze(S.savedWorkflow.path)}}catch(O){let Fe=O instanceof Error?O.message:String(O);console.log(p.red(`
217
217
  [workflow] revise failed: ${Fe}
218
- `));return}let E=at({target:r.target,capsule:C,changeRequest:r.request}),W;try{W=await yo({request:E,options:$()})}catch(O){let Fe=O instanceof Error?O.message:String(O);console.log(g.red(`
218
+ `));return}let E=lt({target:r.target,capsule:I,changeRequest:r.request}),W;try{W=await vo({request:E,options:$()})}catch(O){let Fe=O instanceof Error?O.message:String(O);console.log(p.red(`
219
219
  [workflow] revise generation failed: ${Fe}
220
- `));return}if(W.kind==="declined"){console.log(g.dim(`
220
+ `));return}if(W.kind==="declined"){console.log(p.dim(`
221
221
  Workflow revision not created: ${W.reason}
222
- `));return}let z=r.replace===!0&&S.kind==="saved"?S:void 0,M=z?.savedWorkflow.name,se=M??await Ms(d,W.manifest.name),B=se===W.manifest.name?W.manifest:{...W.manifest,name:se};if(!await p(oe(ge({meta:B,run:W.module.run}),{source:M?`revision-replace:${M}`:`revision:${r.target}`,sandbox:"capability-generated",mayUseWorktree:B.mayUseWorktree===!0,rawScript:W.source}))){console.log(g.dim(`Workflow revision cancelled.
223
- `));return}let L={name:se,manifest:B,source:W.source,intent:{taskClass:B.patterns[0]??B.name,originalRequest:r.request,reusableFor:[B.description]},...C.inputs!==void 0?{inputs:C.inputs}:{},...C.requires!==void 0?{requires:C.requires}:{},provenance:Ws({capsule:C,resolution:S,...M!==void 0?{replacesWorkflowName:M}:{}})};if(z){let O=await tr({...L,dirs:d,savedSource:z.savedWorkflow.source});console.log(g.green(`
222
+ `));return}let z=r.replace===!0&&S.kind==="saved"?S:void 0,M=z?.savedWorkflow.name,se=M??await Ws(d,W.manifest.name),B=se===W.manifest.name?W.manifest:{...W.manifest,name:se};if(!await w(oe(pe({meta:B,run:W.module.run}),{source:M?`revision-replace:${M}`:`revision:${r.target}`,sandbox:"capability-generated",mayUseWorktree:B.mayUseWorktree===!0,rawScript:W.source}))){console.log(p.dim(`Workflow revision cancelled.
223
+ `));return}let L={name:se,manifest:B,source:W.source,intent:{taskClass:B.patterns[0]??B.name,originalRequest:r.request,reusableFor:[B.description]},...I.inputs!==void 0?{inputs:I.inputs}:{},...I.requires!==void 0?{requires:I.requires}:{},provenance:Ls({capsule:I,resolution:S,...M!==void 0?{replacesWorkflowName:M}:{}})};if(z){let O=await rr({...L,dirs:d,savedSource:z.savedWorkflow.source});console.log(p.green(`
224
224
  Replaced saved workflow ${O.name} with revised capsule at ${O.path}
225
- `)),console.log(g.dim(`Previous capsule archived at ${O.previousPath}
226
- `));return}let go=await or({...L,dir:d.project??J(process.cwd(),".kodax","workflows")});console.log(g.green(`
227
- Saved workflow revision ${go.name} to ${go.path}
228
- `));return}if(r.kind==="rerun"){if(!r.runId){console.log(g.yellow(`
225
+ `)),console.log(p.dim(`Previous capsule archived at ${O.previousPath}
226
+ `));return}let wo=await nr({...L,dir:d.project??J(process.cwd(),".kodax","workflows")});console.log(p.green(`
227
+ Saved workflow revision ${wo.name} to ${wo.path}
228
+ `));return}if(r.kind==="rerun"){if(!r.runId){console.log(p.yellow(`
229
229
  Usage: /workflow rerun <runId|savedName> [args]
230
- `));return}if(!ue(r.runId))return;let p=ve(n);if(!p){console.log(g.red(`
230
+ `));return}if(!ue(r.runId))return;let w=ve(n);if(!w){console.log(p.red(`
231
231
  [workflow] refusing to rerun a workflow without an interactive approval channel.
232
- `));return}let $=n.createKodaXOptions;if(!$){console.log(g.red(`
232
+ `));return}let $=n.createKodaXOptions;if(!$){console.log(p.red(`
233
233
  [workflow] cannot start \u2014 REPL options unavailable in this context.
234
- `));return}let S=(await Te(d)).find(_=>_.name===r.runId),C=c.list().some(_=>_.runId===r.runId)||qs(J(l,r.runId,"run.json"));if(S&&C){console.log(g.red(`
234
+ `));return}let S=(await Te(d)).find(_=>_.name===r.runId),I=c.list().some(_=>_.runId===r.runId)||zs(J(l,r.runId,"run.json"));if(S&&I){console.log(p.red(`
235
235
  [workflow] ambiguous rerun target: ${r.runId} matches both a workflow run id and a saved workflow name.
236
- `)),console.log(g.yellow(`Use /workflow ${r.runId} to run the saved workflow, or rerun a unique run id/name.
237
- `));return}if(S&&!C){let _=await Os(S,p);if(!_)return;let je=no(r.rawArgs,_.module.meta.name,_.module.meta.description,_.scriptSnapshot?.source),Pt="agentic";if(!await p(oe(ge(_.module),_.approvalContext))){console.log(g.dim(`Workflow cancelled.
238
- `));return}let X=`run-${Date.now().toString(36)}`,gi=J(l,X);console.log(g.dim(`
236
+ `)),console.log(p.yellow(`Use /workflow ${r.runId} to run the saved workflow, or rerun a unique run id/name.
237
+ `));return}if(S&&!I){let _=await Ns(S,w);if(!_)return;let je=ro(r.rawArgs,_.module.meta.name,_.module.meta.description,_.scriptSnapshot?.source),Mt="agentic";if(!await w(oe(pe(_.module),_.approvalContext))){console.log(p.dim(`Workflow cancelled.
238
+ `));return}let X=`run-${Date.now().toString(36)}`,wi=J(l,X);console.log(p.dim(`
239
239
  Started workflow ${_.module.meta.name} (${X}). Use /workflow show ${X} for status.
240
- `));let rn=Se(n,X,_.module.meta,je);rn.running(`Use /workflow show ${X} for status or /workflow stop ${X} to stop.`);let pi=Oe(c,rn,X),Mt=c.startFromOptions({module:_.module,args:lo(r.rawArgs),options:$(),runId:X,runDir:gi,..._.scriptSnapshot?{scriptSnapshot:_.scriptSnapshot}:{},processMetadata:zs({displayName:_.module.meta.name,savedWorkflowName:S.name,provenance:_.provenance}),onEvent:Le(n,void 0,{presentation:Pt,locale:je,runId:X})});Mt.done.finally(pi),$e(Mt,n,X,rn,{canRerun:_.scriptSnapshot!==void 0,presentation:Pt,locale:je});return}let E;try{E=await fn({runDir:J(l,r.runId)})}catch(_){let je=_ instanceof Error?_.message:String(_);console.log(g.red(`
240
+ `));let ln=Se(n,X,_.module.meta,je);ln.running(`Use /workflow show ${X} for status or /workflow stop ${X} to stop.`);let hi=Oe(c,ln,X),Wt=c.startFromOptions({module:_.module,args:uo(r.rawArgs),options:$(),runId:X,runDir:wi,..._.scriptSnapshot?{scriptSnapshot:_.scriptSnapshot}:{},processMetadata:qs({displayName:_.module.meta.name,savedWorkflowName:S.name,provenance:_.provenance}),onEvent:Le(n,void 0,{presentation:Mt,locale:je,runId:X})});Wt.done.finally(hi),$e(Wt,n,X,ln,{canRerun:_.scriptSnapshot!==void 0,presentation:Mt,locale:je});return}let E;try{E=await mn({runDir:J(l,r.runId)})}catch(_){let je=_ instanceof Error?_.message:String(_);console.log(p.red(`
241
241
  [workflow] rerun failed: ${je}
242
- `));return}let z=io(l,r.runId)?.scriptSnapshotPath??J(l,r.runId,"script.js"),M=no(r.rawArgs,E.capsule.manifest.name,E.capsule.manifest.description,E.capsule.source),se="agentic",B=qe(E.capsule,Do());if(!B.ok){Uo(B);return}if(Fo(B),!await p(oe(ge(E.module),{source:`run:${r.runId}`,sandbox:"capability-generated",mayUseWorktree:E.capsule.manifest.mayUseWorktree===!0,rawScriptPath:z,rawScript:E.capsule.source}))){console.log(g.dim(`Workflow cancelled.
243
- `));return}let L=`run-${Date.now().toString(36)}`,go=J(l,L);console.log(g.dim(`
242
+ `));return}let z=lo(l,r.runId)?.scriptSnapshotPath??J(l,r.runId,"script.js"),M=ro(r.rawArgs,E.capsule.manifest.name,E.capsule.manifest.description,E.capsule.source),se="agentic",B=qe(E.capsule,Fo());if(!B.ok){jo(B);return}if(Ho(B),!await w(oe(pe(E.module),{source:`run:${r.runId}`,sandbox:"capability-generated",mayUseWorktree:E.capsule.manifest.mayUseWorktree===!0,rawScriptPath:z,rawScript:E.capsule.source}))){console.log(p.dim(`Workflow cancelled.
243
+ `));return}let L=`run-${Date.now().toString(36)}`,wo=J(l,L);console.log(p.dim(`
244
244
  Started workflow ${E.module.meta.name} (${L}). Use /workflow show ${L} for status.
245
- `));let O=Se(n,L,E.module.meta,M);O.running(`Use /workflow show ${L} for status or /workflow stop ${L} to stop.`);let Fe=Oe(c,O,L),_t=c.startFromOptions({module:E.module,args:lo(r.rawArgs),options:$(),runId:L,runDir:go,scriptSnapshot:{manifest:E.capsule.manifest,source:E.capsule.source},processMetadata:ao({source:"command",displayName:E.module.meta.name,sourceRunId:r.runId}),onEvent:Le(n,void 0,{presentation:se,locale:M,runId:L})});_t.done.finally(Fe),$e(_t,n,L,O,{canRerun:!0,presentation:se,locale:M});return}if(r.kind==="create"){if(!r.request){console.log(g.yellow(`
245
+ `));let O=Se(n,L,E.module.meta,M);O.running(`Use /workflow show ${L} for status or /workflow stop ${L} to stop.`);let Fe=Oe(c,O,L),Pt=c.startFromOptions({module:E.module,args:uo(r.rawArgs),options:$(),runId:L,runDir:wo,scriptSnapshot:{manifest:E.capsule.manifest,source:E.capsule.source},processMetadata:co({source:"command",displayName:E.module.meta.name,sourceRunId:r.runId}),onEvent:Le(n,void 0,{presentation:se,locale:M,runId:L})});Pt.done.finally(Fe),$e(Pt,n,L,O,{canRerun:!0,presentation:se,locale:M});return}if(r.kind==="create"){if(!r.request){console.log(p.yellow(`
246
246
  Usage: /workflow create <request>
247
- `));return}await st({request:r.request,callbacks:n,approval:t.permissionMode==="plan"?"required":"silent",presentation:"agentic",sourceLabel:"generated",processSource:"command",onBuilderEvent:n.onWorkflowBuilderEvent});return}let w=ve(n);if(!w){console.log(g.red(`
247
+ `));return}await it({request:r.request,callbacks:n,approval:t.permissionMode==="plan"?"required":"silent",presentation:"agentic",sourceLabel:"generated",processSource:"command",onBuilderEvent:n.onWorkflowBuilderEvent});return}let g=ve(n);if(!g){console.log(p.red(`
248
248
  [workflow] refusing to start a workflow without an interactive approval channel.
249
- `));return}let f={source:"built-in",sandbox:"trusted package",mayUseWorktree:!1},k,v=ar(r.name),h,y;if(!v){let p=(await Te(d)).find($=>$.name===r.name);if(!p){console.log(g.yellow(`
250
- Unknown workflow: ${r.name}`)),console.log(No(ze())),console.log();return}if(h=p,p.execution==="trusted-local"&&!await w(`Run local workflow file? This EXECUTES local code:
251
- ${p.path}`)){console.log(g.dim(`Workflow cancelled.
252
- `));return}try{if(p.execution==="capability-generated"){let $=await Be(p.path),S=qe($,Do());if(!S.ok){Uo(S);return}Fo(S),f={source:`saved:${p.source}`,sandbox:p.execution,mayUseWorktree:$.manifest.mayUseWorktree===!0,rawScriptPath:p.path,rawScript:$.source},k={manifest:$.manifest,source:$.source},y=$.provenance}v=await ho(p.path),p.execution==="trusted-local"&&(f={source:`saved:${p.source}`,sandbox:p.execution,mayUseWorktree:!1})}catch($){let S=$ instanceof Error?$.message:String($);console.log(g.red(`
253
- [workflow] failed to load ${p.path}: ${S}
254
- `));return}}let m=n.createKodaXOptions;if(!m){console.log(g.red(`
249
+ `));return}let f={source:"built-in",sandbox:"trusted package",mayUseWorktree:!1},k,v=lr(r.name),h,y;if(!v){let w=(await Te(d)).find($=>$.name===r.name);if(!w){console.log(p.yellow(`
250
+ Unknown workflow: ${r.name}`)),console.log(Uo(Ke())),console.log();return}if(h=w,w.execution==="trusted-local"&&!await g(`Run local workflow file? This EXECUTES local code:
251
+ ${w.path}`)){console.log(p.dim(`Workflow cancelled.
252
+ `));return}try{if(w.execution==="capability-generated"){let $=await ze(w.path),S=qe($,Fo());if(!S.ok){jo(S);return}Ho(S),f={source:`saved:${w.source}`,sandbox:w.execution,mayUseWorktree:$.manifest.mayUseWorktree===!0,rawScriptPath:w.path,rawScript:$.source},k={manifest:$.manifest,source:$.source},y=$.provenance}v=await ko(w.path),w.execution==="trusted-local"&&(f={source:`saved:${w.source}`,sandbox:w.execution,mayUseWorktree:!1})}catch($){let S=$ instanceof Error?$.message:String($);console.log(p.red(`
253
+ [workflow] failed to load ${w.path}: ${S}
254
+ `));return}}let m=n.createKodaXOptions;if(!m){console.log(p.red(`
255
255
  [workflow] cannot start \u2014 REPL options unavailable in this context.
256
- `));return}if(!await w(oe(ge(v),f))){console.log(g.dim(`Workflow cancelled.
257
- `));return}let A=`run-${Date.now().toString(36)}`,j=J(l,A);console.log(g.dim(`
256
+ `));return}if(!await g(oe(pe(v),f))){console.log(p.dim(`Workflow cancelled.
257
+ `));return}let A=`run-${Date.now().toString(36)}`,j=J(l,A);console.log(p.dim(`
258
258
  Started workflow ${v.meta.name} (${A}). Use /workflow show ${A} for status.
259
- `));let H=no(r.rawArgs,v.meta.name,v.meta.description,k?.source),G=Se(n,A,v.meta,H);G.running(`Use /workflow show ${A} for status or /workflow stop ${A} to stop.`);let mo="agentic",me=Oe(c,G,A),Ct=c.startFromOptions({module:v,args:lo(r.rawArgs),options:m(),runId:A,runDir:j,...k?{scriptSnapshot:k}:{},processMetadata:h?zs({displayName:v.meta.name,savedWorkflowName:h.name,provenance:y}):ao({source:"command",displayName:v.meta.name}),onEvent:Le(n,void 0,{presentation:mo,locale:H,runId:A})});Ct.done.finally(me),$e(Ct,n,A,G,{canRerun:k!==void 0,presentation:mo,locale:H})},"handler")};import U from"chalk";var dt={name:"new",description:"Start a new conversation session",usage:"/new",handler:a(async(e,o,n)=>{if(o.messages.length===0){console.log(U.yellow(`
259
+ `));let H=ro(r.rawArgs,v.meta.name,v.meta.description,k?.source),K=Se(n,A,v.meta,H);K.running(`Use /workflow show ${A} for status or /workflow stop ${A} to stop.`);let go="agentic",me=Oe(c,K,A),_t=c.startFromOptions({module:v,args:uo(r.rawArgs),options:m(),runId:A,runDir:j,...k?{scriptSnapshot:k}:{},processMetadata:h?qs({displayName:v.meta.name,savedWorkflowName:h.name,provenance:y}):co({source:"command",displayName:v.meta.name}),onEvent:Le(n,void 0,{presentation:go,locale:H,runId:A})});_t.done.finally(me),$e(_t,n,A,K,{canRerun:k!==void 0,presentation:go,locale:H})},"handler")};import U from"chalk";var ut={name:"new",description:"Start a new conversation session",usage:"/new",handler:a(async(e,o,n)=>{if(o.messages.length===0){console.log(U.yellow(`
260
260
  Current session is already empty.`)),console.log(U.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(U.dim(`
261
261
  Cancelled. Current session preserved.`));return}try{await n.saveSession(),console.log(U.dim(`
262
262
  [Previous session saved]`))}catch{console.log(U.yellow(`
@@ -266,11 +266,11 @@ Cancelled. Current session preserved.`));return}try{await n.saveSession(),consol
266
266
  `)),console.log("Usage:"),console.log(U.cyan(" /new")+` - Clear current session and start fresh
267
267
  `),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.
268
268
  `),console.log("Examples:"),console.log(U.dim(" User: Help me refactor the authentication module")),console.log(U.dim(" AI: [provides refactoring help]")),console.log(U.cyan(" /new")),console.log(U.dim(" \u2713 Started new session")),console.log(U.dim(" User: Now I need help with database optimization")),console.log(U.dim(` AI: [provides database help]
269
- `)),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{execFile as Ul}from"node:child_process";import{promisify as Fl}from"node:util";var jl=Fl(Ul),ut=1e5;async function Ko(e,o){let{stdout:n}=await jl("git",e,{cwd:o,maxBuffer:67108864});return n}a(Ko,"git");async function Hl(e){for(let o of["main","master","develop"])try{return await Ko(["rev-parse","--verify",o],e),o}catch{}return"HEAD"}a(Hl,"detectBaseBranch");async function Bl(e,o){let n=e[0];if(n==="base"){let t=await Hl(o);return{diff:await Ko(["diff",`${t}...HEAD`],o),label:`changes against ${t}`}}return n==="sha"&&e[1]?{diff:await Ko(["show",e[1]],o),label:`commit ${e[1]}`}:{diff:await Ko(["diff","HEAD"],o),label:"uncommitted changes"}}a(Bl,"getDiff");function ql(e){return{workflow:e.some(o=>o==="--workflow"||o==="workflow"),diffArgs:e.filter(o=>o!=="--workflow"&&o!=="workflow")}}a(ql,"parseReviewInvocation");function zl(e){return[`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."].join(`
270
- `)}a(zl,"buildReviewWorkflowRequest");var Gs={name:"review",description:"Review code changes (git diff) for bugs, security, performance, and design",usage:"/review [--workflow] [base | sha <hash>] (default: uncommitted changes)",handler:a(async(e,o)=>{let n=o.gitRoot??process.cwd(),t=ql(e),r,i;try{({diff:r,label:i}=await Bl(t.diffArgs,n))}catch(d){return{success:!1,message:`/review: git failed \u2014 ${d instanceof Error?d.message:String(d)}`}}if(!r.trim())return{success:!0,message:"No changes to review."};if(t.workflow)return{success:!0,workflow:{request:zl(i),source:"command",displayName:"/review --workflow",processSource:"review"}};let l=r;return l.length>ut&&(l=`${l.slice(0,ut)}
269
+ `)),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{execFile as jl}from"node:child_process";import{promisify as Hl}from"node:util";var Bl=Hl(jl),ft=1e5;async function Xo(e,o){let{stdout:n}=await Bl("git",e,{cwd:o,maxBuffer:67108864});return n}a(Xo,"git");async function Gl(e){for(let o of["main","master","develop"])try{return await Xo(["rev-parse","--verify",o],e),o}catch{}return"HEAD"}a(Gl,"detectBaseBranch");async function zl(e,o){let n=e[0];if(n==="base"){let t=await Gl(o);return{diff:await Xo(["diff",`${t}...HEAD`],o),label:`changes against ${t}`}}return n==="sha"&&e[1]?{diff:await Xo(["show",e[1]],o),label:`commit ${e[1]}`}:{diff:await Xo(["diff","HEAD"],o),label:"uncommitted changes"}}a(zl,"getDiff");function ql(e){return{workflow:e.some(o=>o==="--workflow"||o==="workflow"),diffArgs:e.filter(o=>o!=="--workflow"&&o!=="workflow")}}a(ql,"parseReviewInvocation");function Kl(e){return[`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."].join(`
270
+ `)}a(Kl,"buildReviewWorkflowRequest");var Xs={name:"review",description:"Review code changes (git diff) for bugs, security, performance, and design",usage:"/review [--workflow] [base | sha <hash>] (default: uncommitted changes)",handler:a(async(e,o)=>{let n=o.gitRoot??process.cwd(),t=ql(e),r,i;try{({diff:r,label:i}=await zl(t.diffArgs,n))}catch(d){return{success:!1,message:`/review: git failed \u2014 ${d instanceof Error?d.message:String(d)}`}}if(!r.trim())return{success:!0,message:"No changes to review."};if(t.workflow)return{success:!0,workflow:{request:Kl(i),source:"command",displayName:"/review --workflow",processSource:"review"}};let l=r;return l.length>ft&&(l=`${l.slice(0,ft)}
271
271
 
272
- [diff truncated to ${ut} chars \u2014 review the rest with a narrower scope]`),{success:!0,invocation:{prompt:[`Review the following ${i} 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.","","```diff",l,"```"].join(`
273
- `),source:"prompt",displayName:"/review"}}},"handler")};function Xo(e){let o=e.match(/\r\n|\r|\n/g);return o?o.length:0}a(Xo,"getPastedTextRefNumLines");function Kl(e,o){return o===0?`[Pasted text #${e}]`:`[Pasted text #${e} +${o} lines]`}a(Kl,"formatPastedTextRef");function Gl(e,o){return`[...Truncated text #${e} +${o} lines...]`}a(Gl,"formatTruncatedTextRef");var Xl=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/g;function Vl(e){let o=[],n=new RegExp(Xl.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(Vl,"parseReferences");function Yl(e,o){let n=Vl(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(Yl,"expandPastedTextRefs");var Jl=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]$/,Zl=/^\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/;function Ql(e,o){if(o>=e.length)return!0;let n=e[o];return!n||/\s/.test(n)}a(Ql,"isAtWordBoundaryAfter");function ec(e,o){if(o===0)return!0;let n=e[o-1];return!n||/\s/.test(n)}a(ec,"isAtWordBoundaryBefore");function Sm(e,o){if(o<=0||!Ql(e,o))return null;let t=e.slice(0,o).match(Jl);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(Sm,"findPlaceholderBeforeCursor");function $m(e,o){if(o>=e.length||!ec(e,o))return null;let t=e.slice(o).match(Zl);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($m,"findPlaceholderAfterCursor");function bm(e){return e.length>800||Xo(e)>2}a(bm,"shouldReplacePasteWithPlaceholder");function xm(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=Xo(l),d=Gl(o,c);return{truncatedText:r+d+i,placeholderContent:l}}a(xm,"maybeTruncateLongInput");var ft=class{static{a(this,"PasteStore")}contents=new Map;nextId=1;registerText(o){let n=this.nextId++,t=Xo(o);return this.contents.set(n,{id:n,type:"text",content:o}),{id:n,placeholder:Kl(n,t),numLines:t}}registerTruncatedText(o){let n=this.nextId++,t=Xo(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 Yl(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())}},Go=null;function Am(){return Go===null&&(Go=new ft),Go}a(Am,"getOrCreateModulePasteStore");function Xs(){return Go??void 0}a(Xs,"getActivePasteStore");import{createHash as oc}from"node:crypto";import{mkdir as nc,readdir as tc,readFile as rc,stat as sc,unlink as ic,writeFile as ac}from"node:fs/promises";import*as mt from"node:path";var lc="paste-cache",cc=720*60*60*1e3;function gt(){return N(lc)}a(gt,"getPasteCacheDir");function Vs(e){return mt.join(gt(),`${e}.txt`)}a(Vs,"getPastePath");function _m(e){return oc("sha256").update(e).digest("hex").slice(0,16)}a(_m,"hashPastedText");async function Pm(e,o){try{let n=gt();return await nc(n,{recursive:!0}),await ac(Vs(e),o,{encoding:"utf8",mode:384}),!0}catch{return!1}}a(Pm,"storePastedText");async function Ys(e){try{return await rc(Vs(e),{encoding:"utf8"})}catch{return null}}a(Ys,"retrievePastedText");async function Mm(e=cc){let o=gt(),n=Date.now()-e,t=0,r=0,i;try{i=await tc(o)}catch{return{scanned:t,removed:r}}for(let l of i){if(!l.endsWith(".txt"))continue;t+=1;let c=mt.join(o,l);try{(await sc(c)).mtimeMs<n&&(await ic(c),r+=1)}catch{}}return{scanned:t,removed:r}}a(Mm,"cleanupOldPastes");import*as kt from"path";import*as Zs from"os";function dc(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}a(dc,"escapeRegExp");function uc(e,o){if(!e)return;let n=e.trim();if(!n.startsWith("/"))return;let t=new RegExp(`^/${dc(o)}(?:\\s+)?`,"i"),r=n.replace(t,"").trim();return r.length>0?r:void 0}a(uc,"deriveArgumentHintFromUsage");function pt(e,o="builtin"){return{...e,source:e.source??o,userInvocable:e.userInvocable??!0,disableModelInvocation:e.disableModelInvocation??!1,argumentHint:e.argumentHint??uc(e.usage,e.name)}}a(pt,"toCommandDefinition");function wt(e){for(let o of Js)try{let n=pt(o,"builtin");e.register(n)}catch(n){console.error(`Failed to register command "${o.name}":`,n)}}a(wt,"registerBuiltinCommands");import*as ne from"fs";import*as be from"path";function fc(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(fc,"normalizeAliases");function mc(e){if(e==="critical"||e==="high"||e==="medium"||e==="low")return e}a(mc,"normalizePriority");function gc(e){return{disableModelInvocation:e["disable-model-invocation"]===!0,userInvocable:e["user-invocable"]!==!1,allowedTools:Ut(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:Ft(e.hooks),frontmatter:e}}a(gc,"buildExecutionMetadata");function pc(e,o){try{let n=ne.readFileSync(e,"utf-8"),[t,r]=Dt(n),i=t??{},l=be.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:fc(i.aliases),priority:mc(i.priority),content:r.trim(),location:o,path:e,frontmatter:i,execution:gc(i)}}catch(n){console.error(`Error parsing command file ${e}:`,n);return}}a(pc,"parseCommandFile");function ht(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(!ne.existsSync(i))continue;let c=be.resolve(i);try{c=ne.realpathSync.native?.(i)??ne.realpathSync(i)}catch{c=be.resolve(i)}if(!n.has(c)){n.add(c);try{let d=ne.readdirSync(i);for(let u of d){if(!u.endsWith(".md"))continue;let w=be.join(i,u),f=pc(w,l);f&&o.push(f)}}catch(d){console.error(`Error scanning directory ${i}:`,d)}}}return o}a(ht,"discoverCommands");function yt(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(yt,"registerDiscoveredCommands");function Qs(e,o){wt(e);try{let n=Zs.homedir(),t=o??process.cwd(),r=ht([{path:kt.join(t,".kodax","commands"),location:"project"},{path:N("commands"),location:"user"},{path:kt.join(n,".agents","commands"),location:"user"}]);yt(r,e)}catch(n){console.error("Failed to discover commands:",n)}}a(Qs,"registerAllCommands");function wc(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(wc,"summarizeAgentsFiles");function hc(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(hc,"createManualCompactionConfig");function vt(e){e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace unchanged: ${Un(e.runtimeInfo)}`)):console.log(s.dim(" Workspace unchanged."))}a(vt,"printWorkspaceUnchangedNote");var Js=[{name:"help",aliases:["h","?"],description:"Show all available commands",usage:"/help [command]",handler:a(async e=>{if(e.length>0){let o=e[0];re.size===0&&Yo(),re.has(o.toLowerCase())||!!$t(o)?St(o):Ec(o)}else Tc()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
272
+ [diff truncated to ${ft} chars \u2014 review the rest with a narrower scope]`),{success:!0,invocation:{prompt:[`Review the following ${i} 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.","","```diff",l,"```"].join(`
273
+ `),source:"prompt",displayName:"/review"}}},"handler")};function Yo(e){let o=e.match(/\r\n|\r|\n/g);return o?o.length:0}a(Yo,"getPastedTextRefNumLines");function Xl(e,o){return o===0?`[Pasted text #${e}]`:`[Pasted text #${e} +${o} lines]`}a(Xl,"formatPastedTextRef");function Vl(e,o){return`[...Truncated text #${e} +${o} lines...]`}a(Vl,"formatTruncatedTextRef");var Yl=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/g;function Jl(e){let o=[],n=new RegExp(Yl.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(Jl,"parseReferences");function Zl(e,o){let n=Jl(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(Zl,"expandPastedTextRefs");var Ql=/\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]$/,ec=/^\[(Pasted text|Image|\.\.\.Truncated text) #(\d+)(?: \+\d+ lines)?(\.*)\]/;function oc(e,o){if(o>=e.length)return!0;let n=e[o];return!n||/\s/.test(n)}a(oc,"isAtWordBoundaryAfter");function nc(e,o){if(o===0)return!0;let n=e[o-1];return!n||/\s/.test(n)}a(nc,"isAtWordBoundaryBefore");function Im(e,o){if(o<=0||!oc(e,o))return null;let t=e.slice(0,o).match(Ql);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(Im,"findPlaceholderBeforeCursor");function _m(e,o){if(o>=e.length||!nc(e,o))return null;let t=e.slice(o).match(ec);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(_m,"findPlaceholderAfterCursor");function Pm(e){return e.length>800||Yo(e)>2}a(Pm,"shouldReplacePasteWithPlaceholder");function Mm(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=Yo(l),d=Vl(o,c);return{truncatedText:r+d+i,placeholderContent:l}}a(Mm,"maybeTruncateLongInput");var mt=class{static{a(this,"PasteStore")}contents=new Map;nextId=1;registerText(o){let n=this.nextId++,t=Yo(o);return this.contents.set(n,{id:n,type:"text",content:o}),{id:n,placeholder:Xl(n,t),numLines:t}}registerTruncatedText(o){let n=this.nextId++,t=Yo(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 Zl(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())}},Vo=null;function Wm(){return Vo===null&&(Vo=new mt),Vo}a(Wm,"getOrCreateModulePasteStore");function Vs(){return Vo??void 0}a(Vs,"getActivePasteStore");import{createHash as tc}from"node:crypto";import{mkdir as rc,readdir as sc,readFile as ic,stat as ac,unlink as lc,writeFile as cc}from"node:fs/promises";import*as pt from"node:path";var dc="paste-cache",uc=720*60*60*1e3;function gt(){return N(dc)}a(gt,"getPasteCacheDir");function Ys(e){return pt.join(gt(),`${e}.txt`)}a(Ys,"getPastePath");function Fm(e){return tc("sha256").update(e).digest("hex").slice(0,16)}a(Fm,"hashPastedText");async function jm(e,o){try{let n=gt();return await rc(n,{recursive:!0}),await cc(Ys(e),o,{encoding:"utf8",mode:384}),!0}catch{return!1}}a(jm,"storePastedText");async function Js(e){try{return await ic(Ys(e),{encoding:"utf8"})}catch{return null}}a(Js,"retrievePastedText");async function Hm(e=uc){let o=gt(),n=Date.now()-e,t=0,r=0,i;try{i=await sc(o)}catch{return{scanned:t,removed:r}}for(let l of i){if(!l.endsWith(".txt"))continue;t+=1;let c=pt.join(o,l);try{(await ac(c)).mtimeMs<n&&(await lc(c),r+=1)}catch{}}return{scanned:t,removed:r}}a(Hm,"cleanupOldPastes");import*as vt from"path";import*as Qs from"os";function fc(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}a(fc,"escapeRegExp");function mc(e,o){if(!e)return;let n=e.trim();if(!n.startsWith("/"))return;let t=new RegExp(`^/${fc(o)}(?:\\s+)?`,"i"),r=n.replace(t,"").trim();return r.length>0?r:void 0}a(mc,"deriveArgumentHintFromUsage");function wt(e,o="builtin"){return{...e,source:e.source??o,userInvocable:e.userInvocable??!0,disableModelInvocation:e.disableModelInvocation??!1,argumentHint:e.argumentHint??mc(e.usage,e.name)}}a(wt,"toCommandDefinition");function ht(e){for(let o of Zs)try{let n=wt(o,"builtin");e.register(n)}catch(n){console.error(`Failed to register command "${o.name}":`,n)}}a(ht,"registerBuiltinCommands");import*as ne from"fs";import*as be from"path";function pc(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(pc,"normalizeAliases");function gc(e){if(e==="critical"||e==="high"||e==="medium"||e==="low")return e}a(gc,"normalizePriority");function wc(e){return{disableModelInvocation:e["disable-model-invocation"]===!0,userInvocable:e["user-invocable"]!==!1,allowedTools:Ft(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:jt(e.hooks),frontmatter:e}}a(wc,"buildExecutionMetadata");function hc(e,o){try{let n=ne.readFileSync(e,"utf-8"),[t,r]=Ut(n),i=t??{},l=be.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:pc(i.aliases),priority:gc(i.priority),content:r.trim(),location:o,path:e,frontmatter:i,execution:wc(i)}}catch(n){console.error(`Error parsing command file ${e}:`,n);return}}a(hc,"parseCommandFile");function yt(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(!ne.existsSync(i))continue;let c=be.resolve(i);try{c=ne.realpathSync.native?.(i)??ne.realpathSync(i)}catch{c=be.resolve(i)}if(!n.has(c)){n.add(c);try{let d=ne.readdirSync(i);for(let u of d){if(!u.endsWith(".md"))continue;let g=be.join(i,u),f=hc(g,l);f&&o.push(f)}}catch(d){console.error(`Error scanning directory ${i}:`,d)}}}return o}a(yt,"discoverCommands");function kt(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(kt,"registerDiscoveredCommands");function ei(e,o){ht(e);try{let n=Qs.homedir(),t=o??process.cwd(),r=yt([{path:vt.join(t,".kodax","commands"),location:"project"},{path:N("commands"),location:"user"},{path:vt.join(n,".agents","commands"),location:"user"}]);kt(r,e)}catch(n){console.error("Failed to discover commands:",n)}}a(ei,"registerAllCommands");function yc(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(yc,"summarizeAgentsFiles");function kc(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(kc,"createManualCompactionConfig");function St(e){e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace unchanged: ${Fn(e.runtimeInfo)}`)):console.log(s.dim(" Workspace unchanged."))}a(St,"printWorkspaceUnchangedNote");var Zs=[{name:"help",aliases:["h","?"],description:"Show all available commands",usage:"/help [command]",handler:a(async e=>{if(e.length>0){let o=e[0];re.size===0&&Zo(),re.has(o.toLowerCase())||!!bt(o)?$t(o):Ic(o)}else Cc()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
274
274
  /help - Show Command Help
275
275
  `)),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(`
276
276
  Session saved. Goodbye!`)),await n.exit()},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
@@ -283,21 +283,21 @@ Session saved. Goodbye!`)),await n.exit()},"handler"),detailedHelp:a(()=>{consol
283
283
  `+t))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
284
284
  /cost - Session Cost Report
285
285
  `)),console.log(s.bold("Description:")),console.log(s.dim(" Shows token usage and estimated cost for the current session,")),console.log(s.dim(" broken down by provider and AMA role.")),console.log()},"detailedHelp")},{name:"paste",description:"Inspect pasted text stored in the input buffer",usage:"/paste show <id> | /paste list",argumentHint:"show <id> | list",handler:a(async e=>{let o=e[0]?.toLowerCase();if(!o||o==="help"){console.log(s.cyan(`
286
- /paste - Inspect stored paste contents`)),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();return}let n=Xs();if(!n){console.log(s.yellow(`
286
+ /paste - Inspect stored paste contents`)),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();return}let n=Vs();if(!n){console.log(s.yellow(`
287
287
  [No paste registry active]`)),console.log(s.dim(" The REPL composer is not mounted, or no paste has been captured yet."));return}if(o==="list"){let t=n.export();if(t.length===0){console.log(s.dim(`
288
288
  [No pasted content in this session yet]`));return}console.log(s.bold(`
289
289
  Pasted content in this session:
290
290
  `));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(`
291
291
  Usage: /paste show <id>`));return}let i=n.get(r);if(!i){console.log(s.dim(`
292
- [No paste registered with id #${r}]`));return}let l=i.content??"";if(!l&&i.contentHash){let c=await Ys(i.contentHash);c&&(l=c)}if(!l){console.log(s.yellow(`
292
+ [No paste registered with id #${r}]`));return}let l=i.content??"";if(!l&&i.contentHash){let c=await Js(i.contentHash);c&&(l=c)}if(!l){console.log(s.yellow(`
293
293
  [Paste #${r} has no stored content (hash ${i.contentHash??"n/a"})]`));return}console.log(s.bold(`
294
294
  Pasted text #${r} (${l.length} chars):
295
295
  `)),console.log(l),console.log();return}console.log(s.yellow(`
296
296
  [Unknown /paste subcommand: ${o}]`)),console.log(s.dim(" Try /paste show <id> or /paste list"))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
297
297
  /paste - Inspect stored paste contents
298
- `)),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 wr(o.gitRoot),i=t.provider,l=Wt(i);if(!l){console.log(s.red(`
299
- [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??ln(o.messages),w=hc(r,u,d);console.log(s.dim(`
300
- [Compacting conversation...]`)),n.startCompacting?.();try{let f=await Bt(o.messages,w,l,d,c,void 0,u,Gt,Xt);if(!f.compacted){console.log(s.green(`
298
+ `)),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 hr(o.gitRoot),i=t.provider,l=Lt(i);if(!l){console.log(s.red(`
299
+ [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??un(o.messages),g=kc(r,u,d);console.log(s.dim(`
300
+ [Compacting conversation...]`)),n.startCompacting?.();try{let f=await Gt(o.messages,g,l,d,c,void 0,u,Xt,Vt);if(!f.compacted){console.log(s.green(`
301
301
  [No compaction needed]`)),console.log(s.dim(`Current token usage: ${f.tokensBefore.toLocaleString()}
302
302
  `));return}o.messages=f.messages,o.contextTokenSnapshot={currentTokens:f.tokensAfter,baselineEstimatedTokens:f.tokensAfter,source:"estimate"},n.onCompactStats?.({tokensBefore:f.tokensBefore,tokensAfter:f.tokensAfter}),n.clearHistory?.(),await n.saveSession(),console.log(s.green(`
303
303
  [Compaction complete: ${Math.round(f.tokensBefore/1e3)}k -> ${Math.round(f.tokensAfter/1e3)}k tokens, ${Math.round((1-f.tokensAfter/f.tokensBefore)*100)}% reduced]`)),console.log()}finally{n.stopCompacting?.()}}catch(r){let i=r instanceof Error?r.message:String(r);console.log(s.red(`
@@ -306,16 +306,16 @@ Pasted text #${r} (${l.length} chars):
306
306
  /compact - Manual Context Compaction
307
307
  `)),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(`
308
308
  Reloading project rule files and runtime extensions...
309
- `));try{let r=await n.reloadAgentsFiles?.()??[],i=wc(r),l=Z(),c=l?Ne(l).loadedExtensions.length:0,d=l?Ne(l).failures.length:0,u=0,w=0;if(l){await l.reloadExtensions({continueOnError:!0});let f=Ne(l);u=c||f.loadedExtensions.length,w=Math.max(0,f.failures.length-d)}if(r.length===0&&u===0){console.log(s.yellow(`No project rule files or active extensions found.
309
+ `));try{let r=await n.reloadAgentsFiles?.()??[],i=yc(r),l=Z(),c=l?Ne(l).loadedExtensions.length:0,d=l?Ne(l).failures.length:0,u=0,g=0;if(l){await l.reloadExtensions({continueOnError:!0});let f=Ne(l);u=c||f.loadedExtensions.length,g=Math.max(0,f.failures.length-d)}if(r.length===0&&u===0){console.log(s.yellow(`No project rule files or active extensions found.
310
310
  `)),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:
311
- `)),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)`)),w>0&&console.log(s.yellow(` - Failures: ${w} 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.
311
+ `)),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)`)),g>0&&console.log(s.yellow(` - Failures: ${g} 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.
312
312
  `)),console.log(s.dim(` Error: ${r instanceof Error?r.message:String(r)}`)),console.log()}},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
313
313
  /reload - Reload Project Rules
314
314
  `)),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=Z();if(!e){console.log(s.yellow(`
315
315
  [No active extension runtime]
316
316
  `));return}let o=Ne(e),n=o.tools.filter(t=>t.source.kind==="extension");if(console.log(s.bold(`
317
317
  Extension Runtime:
318
- `)),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=Wc(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 Ic(o,t,e)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
318
+ `)),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=Oc(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 _c(o,t,e)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
319
319
  /status - Show Session Status
320
320
  `)),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=Z();if(!o){console.log(s.yellow(`
321
321
  [No extension runtime active \u2014 MCP is not available]`));return}let t=Ne(o).capabilityProviders.find(c=>c.id==="mcp");if((e[0]?.toLowerCase()??"status")==="refresh"){console.log(s.dim(`
@@ -324,19 +324,19 @@ MCP Status
324
324
  `)),!t){console.log(s.yellow(" No MCP provider registered.")),console.log(s.dim(` Add mcpServers to ~/.kodax/config.json to enable MCP.
325
325
  `));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(`
326
326
  /mcp - MCP Server Management
327
- `)),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:"repointel",aliases:["ri"],description:"Inspect or control the repo-intelligence premium runtime",usage:"/repointel [status|mode|trace|warm|endpoint|bin]",handler:a(async(e,o,n,t)=>{let r=e[0]?.toLowerCase()??"status";if(r==="status"){let i=await He({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace,probePremium:!0});si(i);return}if(r==="warm"){let i=await Kt({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace});Rc(i);return}if(r==="mode"){if(e.length===1){console.log(s.dim(`
327
+ `)),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:"repointel",aliases:["ri"],description:"Inspect or control the repo-intelligence premium runtime",usage:"/repointel [status|mode|trace|warm|endpoint|bin]",handler:a(async(e,o,n,t)=>{let r=e[0]?.toLowerCase()??"status";if(r==="status"){let i=await Ge({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace,probePremium:!0});ii(i);return}if(r==="warm"){let i=await Kt({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace});Ec(i);return}if(r==="mode"){if(e.length===1){console.log(s.dim(`
328
328
  Current repo-intelligence mode: ${s.cyan(t.repoIntelligenceMode??"auto")}`)),console.log(s.dim(`Usage: /repointel mode [auto|off|oss|premium-shared|premium-native]
329
- `));return}let i=$c(e[1]);if(!i){console.log(s.red(`
329
+ `));return}let i=xc(e[1]);if(!i){console.log(s.red(`
330
330
  [Invalid repo-intelligence mode: ${e[1]}]`)),console.log(s.dim(`Usage: /repointel mode [auto|off|oss|premium-shared|premium-native]
331
- `));return}let l=Vo({mode:i},{repoIntelligenceMode:i},n,t);te(`Repo intelligence mode: ${i}`,l);return}if(r==="trace"){let i=e[1]?.toLowerCase();if(!i){console.log(s.dim(`
331
+ `));return}let l=Jo({mode:i},{repoIntelligenceMode:i},n,t);te(`Repo intelligence mode: ${i}`,l);return}if(r==="trace"){let i=e[1]?.toLowerCase();if(!i){console.log(s.dim(`
332
332
  Current repo-intelligence trace: ${s.cyan(t.repoIntelligenceTrace?"on":"off")}`)),console.log(s.dim(`Usage: /repointel trace [on|off|toggle]
333
- `));return}let l=bc(i,t.repoIntelligenceTrace??!1);if(l===null){console.log(s.red(`
333
+ `));return}let l=Ac(i,t.repoIntelligenceTrace??!1);if(l===null){console.log(s.red(`
334
334
  [Invalid trace value: ${e[1]}]`)),console.log(s.dim(`Usage: /repointel trace [on|off|toggle]
335
- `));return}let c=Vo({trace:l},{repoIntelligenceTrace:l},n,t);te(`Repo intelligence trace: ${l?"on":"off"}`,c);return}if(r==="endpoint"){if(e.length===1){let c=await He({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace});console.log(s.dim(`
335
+ `));return}let c=Jo({trace:l},{repoIntelligenceTrace:l},n,t);te(`Repo intelligence trace: ${l?"on":"off"}`,c);return}if(r==="endpoint"){if(e.length===1){let c=await Ge({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace});console.log(s.dim(`
336
336
  Current repointel endpoint: ${s.cyan(c.endpoint)}`)),console.log(s.dim(`Usage: /repointel endpoint [http://host:port|default]
337
- `));return}let i=ei(e[1]),l=Vo({endpoint:i},{repointelEndpoint:i??void 0},n,t);te(`Repointel endpoint: ${i??"default"}`,l);return}if(r==="bin"){if(e.length===1){let c=await He({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace});console.log(s.dim(`
337
+ `));return}let i=oi(e[1]),l=Jo({endpoint:i},{repointelEndpoint:i??void 0},n,t);te(`Repointel endpoint: ${i??"default"}`,l);return}if(r==="bin"){if(e.length===1){let c=await Ge({mode:t.repoIntelligenceMode,trace:t.repoIntelligenceTrace});console.log(s.dim(`
338
338
  Current repointel bin: ${s.cyan(c.bin)}`)),console.log(s.dim(`Usage: /repointel bin [<path-or-command>|default]
339
- `));return}let i=ei(e.slice(1).join(" ")),l=Vo({bin:i},{repointelBin:i??void 0},n,t);te(`Repointel bin: ${i??"default"}`,l);return}console.log(s.red(`
339
+ `));return}let i=oi(e.slice(1).join(" ")),l=Jo({bin:i},{repointelBin:i??void 0},n,t);te(`Repointel bin: ${i??"default"}`,l);return}console.log(s.red(`
340
340
  [Unknown /repointel subcommand: ${e[0]}]`)),console.log(s.dim(`Usage: /repointel [status|mode|trace|warm|endpoint|bin]
341
341
  `))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
342
342
  /repointel - Repo-Intelligence Runtime Control
@@ -344,14 +344,14 @@ Current repointel bin: ${s.cyan(c.bin)}`)),console.log(s.dim(`Usage: /repointel
344
344
  Child-task provider fallback: `)+s.yellow("off")+s.dim(" (no chain configured)")):(console.log(s.dim(`
345
345
  Child-task provider fallback: `)+s.green("on")),console.log(s.dim(" Order: ")+s.cyan(r.join(" \u2192 ")))),console.log(s.dim(`
346
346
  When a child's primary provider is exhausted/down, KodaX re-runs it`)),console.log(s.dim(` on the next provider in this list. Set: /fallback ark-coding,kimi-code
347
- `));return}if(i==="off"||i==="clear"||i==="none"){pe({fallbackProviders:void 0}),delete process.env.KODAX_FALLBACK_PROVIDERS,console.log(s.green(`
347
+ `));return}if(i==="off"||i==="clear"||i==="none"){ge({fallbackProviders:void 0}),delete process.env.KODAX_FALLBACK_PROVIDERS,console.log(s.green(`
348
348
  \u2713 `)+s.dim(`Child-task provider fallback disabled.
349
349
  `));return}let l=e.join(",").split(",").map(c=>c.trim()).filter(Boolean);if(l.length===0){console.log(s.red(`
350
350
  [/fallback: no provider ids given]`)),console.log(s.dim(`Usage: /fallback ark-coding,kimi-code (or /fallback off)
351
- `));return}pe({fallbackProviders:l}),process.env.KODAX_FALLBACK_PROVIDERS=l.join(","),console.log(s.green(`
351
+ `));return}ge({fallbackProviders:l}),process.env.KODAX_FALLBACK_PROVIDERS=l.join(","),console.log(s.green(`
352
352
  \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).
353
- `))},"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=Ge(t.permissionMode,"accept-edits")??"accept-edits";console.log(s.dim(`
354
- Current mode: ${s.cyan(i)}`)),console.log(s.dim("Usage: /mode [plan|accept-edits|auto]"));return}let r=e[0];vo.includes(r)?(t.permissionMode=r,n.setPermissionMode?.(r),Cn(r),console.log(s.cyan(`
353
+ `))},"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=Ve(t.permissionMode,"accept-edits")??"accept-edits";console.log(s.dim(`
354
+ Current mode: ${s.cyan(i)}`)),console.log(s.dim("Usage: /mode [plan|accept-edits|auto]"));return}let r=e[0];$o.includes(r)?(t.permissionMode=r,n.setPermissionMode?.(r),_n(r),console.log(s.cyan(`
355
355
  [Switched to ${r} mode] (saved)`))):console.log(s.red(`
356
356
  [Unknown mode: ${e[0]}. Use: plan | accept-edits | auto]`))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
357
357
  /mode - Switch Permission Mode
@@ -366,7 +366,7 @@ Classifier engine: ${s.cyan(t.engine)}`)),console.log(s.dim(` consecutive denia
366
366
  [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(`
367
367
  /auto-denials - Auto-Mode Classifier Diagnostic Dump
368
368
  `)),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(`
369
- [Session saved]`)),vt(o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
369
+ [Session saved]`)),St(o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
370
370
  /save - Save Current Session
371
371
  `)),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(`
372
372
  [Usage: /load <session-id>]`)),await n.listSessions();return}await n.loadSession(e[0])==="missing"&&console.log(s.red(`
@@ -391,102 +391,102 @@ Classifier engine: ${s.cyan(t.engine)}`)),console.log(s.dim(` consecutive denia
391
391
  /history - Show Conversation History
392
392
  `)),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(`
393
393
  [Usage: /delete <session-id> or /delete all]`)),await n.listSessions?.();return}e[0]==="all"?(await n.deleteAllSessions?.(),console.log(s.green(`
394
- [All sessions deleted]`)),vt(o)):(await n.deleteSession?.(e[0]),console.log(s.green(`
395
- [Session deleted: ${e[0]}]`)),vt(o))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
394
+ [All sessions deleted]`)),St(o)):(await n.deleteSession?.(e[0]),console.log(s.green(`
395
+ [Session deleted: ${e[0]}]`)),St(o))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
396
396
  /delete - Delete Saved Sessions
397
- `)),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=ko().providerModels;if(e.length===0){console.log(s.bold(`
397
+ `)),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=So().providerModels;if(e.length===0){console.log(s.bold(`
398
398
  Available Providers:
399
- `));let c=fr(r);for(let d of c){let u=d.configured?s.green("[configured]"):s.red("[not configured]"),w=d.custom?s.yellow(" [custom]"):"",f=d.name===t.provider,k=f?s.cyan(" *"):"";console.log(` ${s.bold(d.name)}${k} ${u}${w}`),d.capabilityProfile.transport==="cli-bridge"&&console.log(s.yellow(` ! ${gn(d.capabilityProfile)}`));let v=Ie(d.name,r),h=f?t.model:null;for(let y of v){let x=f&&(h===y||!h&&y===d.model)?s.cyan(">"):" ";console.log(` ${x} ${y}`)}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
399
+ `));let c=mr(r);for(let d of c){let u=d.configured?s.green("[configured]"):s.red("[not configured]"),g=d.custom?s.yellow(" [custom]"):"",f=d.name===t.provider,k=f?s.cyan(" *"):"";console.log(` ${s.bold(d.name)}${k} ${u}${g}`),d.capabilityProfile.transport==="cli-bridge"&&console.log(s.yellow(` ! ${gn(d.capabilityProfile)}`));let v=Ce(d.name,r),h=f?t.model:null;for(let y of v){let x=f&&(h===y||!h&&y===d.model)?s.cyan(">"):" ";console.log(` ${x} ${y}`)}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
400
400
  `));return}let i=(e[0]??"").trim();if(!i)return;if(i.startsWith("/")){let c=i.slice(1);if(!c){console.log(s.red(`
401
- [Missing model name after /]`));return}let d=Ie(t.provider,r);if(!d.includes(c)){console.log(s.red(`
401
+ [Missing model name after /]`));return}let d=Ce(t.provider,r);if(!d.includes(c)){console.log(s.red(`
402
402
  [Unknown model: ${c}]`)),console.log(s.dim(`Available models for ${t.provider}: ${d.join(", ")}
403
- `));return}pe({model:c}),n.switchProvider?.(t.provider,c),console.log(s.cyan(`
403
+ `));return}ge({model:c}),n.switchProvider?.(t.provider,c),console.log(s.cyan(`
404
404
  [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(`
405
405
  [Invalid format. Use: /model <provider>/<model>]`));return}if(!xe(d)){console.log(s.red(`
406
406
  [Unknown provider: ${d}]`)),console.log(s.dim(`Available: ${Ae().join(", ")}
407
- `));return}let w=Ie(d,r);if(!w.includes(u)){console.log(s.red(`
408
- [Unknown model: ${u}]`)),console.log(s.dim(`Available models for ${d}: ${w.join(", ")}
409
- `));return}pe({provider:d,model:u}),n.switchProvider?.(d,u),console.log(s.cyan(`
410
- [Switched to ${d}/${u}] (saved)`));return}let l=i;xe(l)?(pe({provider:l,model:void 0}),n.switchProvider?.(l),console.log(s.cyan(`
407
+ `));return}let g=Ce(d,r);if(!g.includes(u)){console.log(s.red(`
408
+ [Unknown model: ${u}]`)),console.log(s.dim(`Available models for ${d}: ${g.join(", ")}
409
+ `));return}ge({provider:d,model:u}),n.switchProvider?.(d,u),console.log(s.cyan(`
410
+ [Switched to ${d}/${u}] (saved)`));return}let l=i;xe(l)?(ge({provider:l,model:void 0}),n.switchProvider?.(l),console.log(s.cyan(`
411
411
  [Switched to ${l}] (saved)`))):(console.log(s.red(`
412
412
  [Unknown provider: ${l}]`)),console.log(s.dim(`Available: ${Ae().join(", ")}
413
413
  `)))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
414
414
  /model - Switch LLM Provider/Model
415
415
  `)),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(),i=t.provider,l=t.model;if(r)if(r.includes("/")){let u=r.indexOf("/");i=r.slice(0,u).trim(),l=r.slice(u+1).trim()||void 0}else i=r,l=void 0;if(!xe(i)){console.log(s.red(`
416
416
  [Unknown provider: ${i}]`)),console.log(s.dim(`Available: ${Ae().join(", ")}
417
- `));return}let c=dr(i,l);if(!c){console.log(s.red(`
418
- [Provider details unavailable: ${i}]`)),console.log();return}let d=pr(i,l,t.reasoningMode);console.log(s.bold(`
417
+ `));return}let c=ur(i,l);if(!c){console.log(s.red(`
418
+ [Provider details unavailable: ${i}]`)),console.log();return}let d=wr(i,l,t.reasoningMode);console.log(s.bold(`
419
419
  Provider Details:
420
- `)),console.log(s.dim(` Provider: ${s.cyan(c.provider)}${c.model?` / ${s.cyan(c.model)}`:""}`)),console.log(s.dim(` Source: ${mr(c.sourceKind)}`)),console.log(),console.log(s.bold("Capability Matrix:"));for(let u of gr(c))console.log(s.dim(` - ${u}`));if(console.log(),d.length>0){console.log(s.bold("Common Scenarios:"));for(let u of d){let w=u.decision.status==="block"?s.red:u.decision.status==="warn"?s.yellow:s.green;console.log(w(` - ${u.label}: ${u.decision.status.toUpperCase()}`)),console.log(s.dim(` ${u.decision.summary}`))}console.log()}},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
420
+ `)),console.log(s.dim(` Provider: ${s.cyan(c.provider)}${c.model?` / ${s.cyan(c.model)}`:""}`)),console.log(s.dim(` Source: ${pr(c.sourceKind)}`)),console.log(),console.log(s.bold("Capability Matrix:"));for(let u of gr(c))console.log(s.dim(` - ${u}`));if(console.log(),d.length>0){console.log(s.bold("Common Scenarios:"));for(let u of d){let g=u.decision.status==="block"?s.red:u.decision.status==="warn"?s.yellow:s.green;console.log(g(` - ${u.label}: ${u.decision.status.toUpperCase()}`)),console.log(s.dim(` ${u.decision.summary}`))}console.log()}},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
421
421
  /provider - Inspect Provider Semantics
422
- `)),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(),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=mn(t.provider,t.model),l=t.thinking?s.green("ON"):s.dim("OFF");console.log(s.dim(`
423
- 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: ${wn(t.reasoningMode,i)}`)),console.log(s.dim(`Usage: /thinking on|off|auto|quick|balanced|deep
424
- `));return}let r=e[0].toLowerCase();if(r==="on"||r==="off"||an.includes(r)){let i=r==="on"?"auto":r==="off"?"off":r,l=oi(i,n,t);te(`Reasoning mode: ${i}`,l);return}console.log(s.red(`
422
+ `)),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(),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(`
423
+ Thinking: ${l}`)),console.log(s.dim(`Reasoning mode: ${s.cyan(t.reasoningMode)}`)),console.log(s.dim(`Effective control: ${s.cyan(wn(i))}`)),console.log(s.dim(`Actual execution: ${hn(t.reasoningMode,i)}`)),console.log(s.dim(`Usage: /thinking on|off|auto|quick|balanced|deep
424
+ `));return}let r=e[0].toLowerCase();if(r==="on"||r==="off"||dn.includes(r)){let i=r==="on"?"auto":r==="off"?"off":r,l=ni(i,n,t);te(`Reasoning mode: ${i}`,l);return}console.log(s.red(`
425
425
  [Invalid value: ${e[0]}]`)),console.log(s.dim(`Usage: /thinking on|off|auto|quick|balanced|deep
426
426
  `))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
427
427
  /thinking - Legacy Alias for Reasoning Mode
428
- `)),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=mn(t.provider,t.model);console.log(s.dim(`
429
- 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: ${wn(t.reasoningMode,l)}`)),console.log(s.dim(`Usage: /reasoning off|auto|quick|balanced|deep
430
- `));return}let r=e[0].toLowerCase();if(!an.includes(r)){console.log(s.red(`
428
+ `)),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(`
429
+ 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(wn(l))}`)),console.log(s.dim(`Actual execution: ${hn(t.reasoningMode,l)}`)),console.log(s.dim(`Usage: /reasoning off|auto|quick|balanced|deep
430
+ `));return}let r=e[0].toLowerCase();if(!dn.includes(r)){console.log(s.red(`
431
431
  [Invalid reasoning mode: ${e[0]}]`)),console.log(s.dim(`Usage: /reasoning off|auto|quick|balanced|deep
432
- `));return}let i=oi(r,n,t);te(`Reasoning mode: ${r}`,i)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
432
+ `));return}let i=ni(r,n,t);te(`Reasoning mode: ${r}`,i)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
433
433
  /reasoning - Set Reasoning Mode
434
434
  `)),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:"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(`
435
435
  Agent mode: ${s.cyan(t.agentMode.toUpperCase())}`)),console.log(s.dim(`Usage: /agent-mode [ama|amaw|ama-workflow|sa|toggle]
436
- `));return}let r=e[0]?.toLowerCase(),i=r==="toggle"?Vr(t.agentMode):r==="ama"||r==="sa"||r==="amaw"?r:r==="ama-workflow"?"amaw":void 0;if(!i){console.log(s.red(`
436
+ `));return}let r=e[0]?.toLowerCase(),i=r==="toggle"?Yr(t.agentMode):r==="ama"||r==="sa"||r==="amaw"?r:r==="ama-workflow"?"amaw":void 0;if(!i){console.log(s.red(`
437
437
  [Invalid agent mode: ${e[0]}]`)),console.log(s.dim(`Usage: /agent-mode [ama|amaw|ama-workflow|sa|toggle]
438
- `));return}let l=xc(i,n,t);te(`Agent mode: ${i.toUpperCase()}`,l)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
438
+ `));return}let l=Rc(i,n,t);te(`Agent mode: ${i.toUpperCase()}`,l)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
439
439
  /agent-mode - Adaptive Multi-Agent Mode Control
440
- `)),console.log(s.bold("Usage:")),console.log(s.dim(" /agent-mode ")+"Show current agent mode"),console.log(s.dim(" /agent-mode ama ")+"Enable adaptive multi-agent mode"),console.log(s.dim(" /agent-mode amaw ")+"Enable AMA Workflow mode; generated workflows may start automatically"),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 keeps adaptive multi-agent harness selection enabled and supports explicit /workflow.")),console.log(s.dim(" AMAW keeps AMA behavior and may silently start restricted generated workflows.")),console.log(s.dim(" SA keeps routing and task artifacts, but forces single-agent execution 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"),Cn("auto"),console.log(s.cyan(`
440
+ `)),console.log(s.bold("Usage:")),console.log(s.dim(" /agent-mode ")+"Show current agent mode"),console.log(s.dim(" /agent-mode ama ")+"Enable adaptive multi-agent mode"),console.log(s.dim(" /agent-mode amaw ")+"Enable AMA Workflow mode; generated workflows may start automatically"),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 keeps adaptive multi-agent harness selection enabled and supports explicit /workflow.")),console.log(s.dim(" AMAW keeps AMA behavior and may silently start restricted generated workflows.")),console.log(s.dim(" SA keeps routing and task artifacts, but forces single-agent execution 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"),_n("auto"),console.log(s.cyan(`
441
441
  [Switched to auto mode] (saved)`))},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
442
442
  /auto - Quick Switch to Auto Mode
443
443
  `)),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:"skills",description:"(Deprecated) Use /skill instead",usage:"/skill",handler:a(async(e,o)=>{console.log(s.dim(`
444
- [/skills is deprecated. Use /skill instead]`)),await ti(e,o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
444
+ [/skills is deprecated. Use /skill instead]`)),await ri(e,o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
445
445
  /skills - Deprecated
446
- `)),console.log(s.yellow("This command is deprecated. Use /skill instead.")),console.log(),console.log(s.dim(" /skill ")+"List all available skills"),console.log(s.dim(" /skill:<name> ")+"Invoke a skill"),console.log()},"detailedHelp")},{name:"skill",description:"Skill namespace - invoke skills with /skill:name",usage:"/skill[:name] [args]",handler:a(async(e,o,n,t)=>{await ti(e,o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
446
+ `)),console.log(s.yellow("This command is deprecated. Use /skill instead.")),console.log(),console.log(s.dim(" /skill ")+"List all available skills"),console.log(s.dim(" /skill:<name> ")+"Invoke a skill"),console.log()},"detailedHelp")},{name:"skill",description:"Skill namespace - invoke skills with /skill:name",usage:"/skill[:name] [args]",handler:a(async(e,o,n,t)=>{await ri(e,o)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
447
447
  /skill - Skill Namespace
448
- `)),console.log(s.bold("Usage:")),console.log(s.dim(" /skill ")+"List all available skills"),console.log(s.dim(" /skill:<name> [args] ")+"Invoke a skill by name"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" This is the pi-mono style skill invocation format.")),console.log(s.dim(" Skills can also be triggered by natural language - just ask!")),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /skill ")+"# List all skills"),console.log(s.dim(" /skill:code-review src/ ")+"# Invoke code-review skill"),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=ko().verifierLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
448
+ `)),console.log(s.bold("Usage:")),console.log(s.dim(" /skill ")+"List all available skills"),console.log(s.dim(" /skill:<name> [args] ")+"Invoke a skill by name"),console.log(),console.log(s.bold("Description:")),console.log(s.dim(" This is the pi-mono style skill invocation format.")),console.log(s.dim(" Skills can also be triggered by natural language - just ask!")),console.log(),console.log(s.bold("Examples:")),console.log(s.dim(" /skill ")+"# List all skills"),console.log(s.dim(" /skill:code-review src/ ")+"# Invoke code-review skill"),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=So().verifierLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
449
449
  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]
450
450
  `));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(`
451
451
  [Invalid value: ${e[0]}]`)),console.log(s.dim(`Usage: /verifier-log [on|off]
452
- `));return}t?process.env.KODAX_VERIFIER_LOG="1":delete process.env.KODAX_VERIFIER_LOG;let r=co({verifierLog:t});te(`Sidecar Verifier log: ${t?"on":"off"}`,r)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
452
+ `));return}t?process.env.KODAX_VERIFIER_LOG="1":delete process.env.KODAX_VERIFIER_LOG;let r=fo({verifierLog:t});te(`Sidecar Verifier log: ${t?"on":"off"}`,r)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
453
453
  /verifier-log - Sidecar Verifier Log Toggle
454
- `)),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=ko().stallLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
454
+ `)),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=So().stallLog===!0,l=n?"on":"off",c=i===n?"":` (env=${n?"on":"off"}, config=${i?"on":"off"})`;console.log(s.dim(`
455
455
  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]
456
456
  `));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(`
457
457
  [Invalid value: ${e[0]}]`)),console.log(s.dim(`Usage: /stall-log [on|off]
458
- `));return}t?process.env.KODAX_STALL_LOG="1":delete process.env.KODAX_STALL_LOG;let r=co({stallLog:t});te(`Stall Sidecar log: ${t?"on":"off"}`,r)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
458
+ `));return}t?process.env.KODAX_STALL_LOG="1":delete process.env.KODAX_STALL_LOG;let r=fo({stallLog:t});te(`Stall Sidecar log: ${t?"on":"off"}`,r)},"handler"),detailedHelp:a(()=>{console.log(s.cyan(`
459
459
  /stall-log - Stall Sidecar Log Toggle
460
- `)),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")},On,Nn,ks,Ks,dt,Gs],yc={General:["help","copy","exit","clear","compact","reload","extensions","status"],Permission:["mode","auto"],Session:["new","save","load","sessions","history","delete"],Settings:["model","provider","thinking","reasoning","agent-mode","plan","repointel"],Skills:["skill"]};function kc(e){let o=Jo();return e.map(n=>o.get(n)).filter(n=>n!==void 0).filter(n=>n.userInvocable!==!1)}a(kc,"getCommandsForCategory");function vc(e){return e!=="off"}a(vc,"reasoningModeToLegacyThinking");var Sc=["auto","off","oss","premium-shared","premium-native"];function $c(e){return e&&Sc.includes(e)?e:null}a($c,"normalizeRepoIntelligenceMode");function ei(e){let o=e?.trim();return!o||o==="default"||o==="reset"||o==="clear"?null:o}a(ei,"normalizeRuntimeOverride");function bc(e,o){return e?e==="toggle"?!o:e==="on"||e==="true"||e==="1"?!0:e==="off"||e==="false"||e==="0"?!1:null:null}a(bc,"resolveToggleFlag");function co(e){try{return pe(e),{saved:!0}}catch(o){return{saved:!1,error:o instanceof Error?o:new Error(String(o))}}}a(co,"persistUserConfig");function te(e,o){if(o.saved){console.log(s.cyan(`
460
+ `)),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")},Nn,Dn,vs,Ks,ut,Xs],vc={General:["help","copy","exit","clear","compact","reload","extensions","status"],Permission:["mode","auto"],Session:["new","save","load","sessions","history","delete"],Settings:["model","provider","thinking","reasoning","agent-mode","plan","repointel"],Skills:["skill"]};function Sc(e){let o=Qo();return e.map(n=>o.get(n)).filter(n=>n!==void 0).filter(n=>n.userInvocable!==!1)}a(Sc,"getCommandsForCategory");function $c(e){return e!=="off"}a($c,"reasoningModeToLegacyThinking");var bc=["auto","off","oss","premium-shared","premium-native"];function xc(e){return e&&bc.includes(e)?e:null}a(xc,"normalizeRepoIntelligenceMode");function oi(e){let o=e?.trim();return!o||o==="default"||o==="reset"||o==="clear"?null:o}a(oi,"normalizeRuntimeOverride");function Ac(e,o){return e?e==="toggle"?!o:e==="on"||e==="true"||e==="1"?!0:e==="off"||e==="false"||e==="0"?!1:null:null}a(Ac,"resolveToggleFlag");function fo(e){try{return ge(e),{saved:!0}}catch(o){return{saved:!1,error:o instanceof Error?o:new Error(String(o))}}}a(fo,"persistUserConfig");function te(e,o){if(o.saved){console.log(s.cyan(`
461
461
  [${e}] (saved)`));return}console.log(s.yellow(`
462
- [${e}]`)),console.log(s.red(`[Config save failed: ${o.error.message}]`))}a(te,"printPersistedCommandStatus");function oi(e,o,n){let t=vc(e),r=co({reasoningMode:e,thinking:t});return o.setReasoningMode?o.setReasoningMode(e):(n.reasoningMode=e,n.thinking=t),r}a(oi,"applyReasoningMode");function xc(e,o,n){let t=co({agentMode:e});return o.setAgentMode?o.setAgentMode(e):n.agentMode=e,t}a(xc,"applyAgentMode");function Vo(e,o,n,t){let r=co(o);return n.setRepoIntelligenceRuntime?n.setRepoIntelligenceRuntime(e):(e.mode!==void 0&&(t.repoIntelligenceMode=e.mode),e.endpoint!==void 0&&(t.repointelEndpoint=e.endpoint??void 0),e.bin!==void 0&&(t.repointelBin=e.bin??void 0),e.trace!==void 0&&(t.repoIntelligenceTrace=e.trace)),r}a(Vo,"applyRepoIntelligenceRuntimeConfig");function Ac(e){let o=e.configuredMode===e.requestedMode?e.configuredMode:`${e.configuredMode} -> ${e.requestedMode}`,n=`${e.effectiveEngine}/${e.effectiveBridge}`,t=e.transport?`, ${e.transport}`:"",r=e.fallbackToOss?", fallback=oss":"";return`${o} => ${n} (${e.status}${t}${r})`}a(Ac,"formatRepoIntelligenceSummary");function si(e){console.log(s.bold(`
462
+ [${e}]`)),console.log(s.red(`[Config save failed: ${o.error.message}]`))}a(te,"printPersistedCommandStatus");function ni(e,o,n){let t=$c(e),r=fo({reasoningMode:e,thinking:t});return o.setReasoningMode?o.setReasoningMode(e):(n.reasoningMode=e,n.thinking=t),r}a(ni,"applyReasoningMode");function Rc(e,o,n){let t=fo({agentMode:e});return o.setAgentMode?o.setAgentMode(e):n.agentMode=e,t}a(Rc,"applyAgentMode");function Jo(e,o,n,t){let r=fo(o);return n.setRepoIntelligenceRuntime?n.setRepoIntelligenceRuntime(e):(e.mode!==void 0&&(t.repoIntelligenceMode=e.mode),e.endpoint!==void 0&&(t.repointelEndpoint=e.endpoint??void 0),e.bin!==void 0&&(t.repointelBin=e.bin??void 0),e.trace!==void 0&&(t.repoIntelligenceTrace=e.trace)),r}a(Jo,"applyRepoIntelligenceRuntimeConfig");function Tc(e){let o=e.configuredMode===e.requestedMode?e.configuredMode:`${e.configuredMode} -> ${e.requestedMode}`,n=`${e.effectiveEngine}/${e.effectiveBridge}`,t=e.transport?`, ${e.transport}`:"",r=e.fallbackToOss?", fallback=oss":"";return`${o} => ${n} (${e.status}${t}${r})`}a(Tc,"formatRepoIntelligenceSummary");function ii(e){console.log(s.bold(`
463
463
  Repo Intelligence:
464
- `)),console.log(s.dim(` Configured: ${s.cyan(e.configuredMode)}`)),console.log(s.dim(` Requested: ${s.cyan(e.requestedMode)}`)),console.log(s.dim(` Active: ${s.cyan(`${e.effectiveEngine}/${e.effectiveBridge}`)}`)),console.log(s.dim(` Status: ${s.cyan(e.status)}${e.transport?s.dim(` (${e.transport})`):""}`)),console.log(s.dim(` Trace: ${s.cyan(e.traceEnabled?"on":"off")}`)),console.log(s.dim(` Endpoint: ${e.endpoint}`)),console.log(s.dim(` Bin: ${e.bin}`)),e.clientBuildId&&console.log(s.dim(` Client ID: ${e.clientBuildId}`)),e.daemonBuildId&&console.log(s.dim(` Daemon ID: ${e.daemonBuildId}`)),e.daemonPid!==void 0&&console.log(s.dim(` Daemon PID: ${e.daemonPid}`)),e.daemonStartedAt&&console.log(s.dim(` Daemon Up: ${e.daemonStartedAt}`)),e.fallbackToOss&&console.log(s.yellow(" Fallback: OSS baseline 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(si,"printRepoIntelligenceInspection");function Rc(e){e.warmed?console.log(s.green(`
464
+ `)),console.log(s.dim(` Configured: ${s.cyan(e.configuredMode)}`)),console.log(s.dim(` Requested: ${s.cyan(e.requestedMode)}`)),console.log(s.dim(` Active: ${s.cyan(`${e.effectiveEngine}/${e.effectiveBridge}`)}`)),console.log(s.dim(` Status: ${s.cyan(e.status)}${e.transport?s.dim(` (${e.transport})`):""}`)),console.log(s.dim(` Trace: ${s.cyan(e.traceEnabled?"on":"off")}`)),console.log(s.dim(` Endpoint: ${e.endpoint}`)),console.log(s.dim(` Bin: ${e.bin}`)),e.clientBuildId&&console.log(s.dim(` Client ID: ${e.clientBuildId}`)),e.daemonBuildId&&console.log(s.dim(` Daemon ID: ${e.daemonBuildId}`)),e.daemonPid!==void 0&&console.log(s.dim(` Daemon PID: ${e.daemonPid}`)),e.daemonStartedAt&&console.log(s.dim(` Daemon Up: ${e.daemonStartedAt}`)),e.fallbackToOss&&console.log(s.yellow(" Fallback: OSS baseline 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(ii,"printRepoIntelligenceInspection");function Ec(e){e.warmed?console.log(s.green(`
465
465
  [repointel warmed successfully]`)):console.log(s.yellow(`
466
- [repointel warm did not reach a ready daemon state]`)),e.warmLatencyMs!==void 0&&console.log(s.dim(` Warm latency: ${e.warmLatencyMs} ms`)),si(e)}a(Rc,"printRepoIntelligenceWarmResult");function ni(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(ni,"printCommandSection");function Tc(){console.log(s.bold(`
466
+ [repointel warm did not reach a ready daemon state]`)),e.warmLatencyMs!==void 0&&console.log(s.dim(` Warm latency: ${e.warmLatencyMs} ms`)),ii(e)}a(Ec,"printRepoIntelligenceWarmResult");function ti(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(ti,"printCommandSection");function Cc(){console.log(s.bold(`
467
467
  Available Commands:
468
- `));let e=Jo(),o=new Set;for(let[t,r]of Object.entries(yc)){let i=kc(r);if(i.length!==0){for(let l of i)o.add(l.name.toLowerCase());ni(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 _c()){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"])ni(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 (e.g., /skill:code-review)`),console.log(),console.log(s.dim(`Tip: ${s.cyan("/<command> help")} shows command-specific help.`)),console.log()}a(Tc,"printHelp");function Ec(e){let o=qt({topic:e});console.log(`
468
+ `));let e=Qo(),o=new Set;for(let[t,r]of Object.entries(vc)){let i=Sc(r);if(i.length!==0){for(let l of i)o.add(l.name.toLowerCase());ti(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 Mc()){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"])ti(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 (e.g., /skill:code-review)`),console.log(),console.log(s.dim(`Tip: ${s.cyan("/<command> help")} shows command-specific help.`)),console.log()}a(Cc,"printHelp");function Ic(e){let o=zt({topic:e});console.log(`
469
469
  ${s.cyan(o.title)}`),console.log(o.content),o.nextTopics.length>0&&console.log(s.dim(`
470
- Related topics: ${o.nextTopics.join(", ")}`)),console.log()}a(Ec,"printManualTopic");function St(e){re.size===0&&Yo();let o=re.get(e.toLowerCase());if(!o){let n=$t(e);if(!n){console.log(s.yellow(`
470
+ Related topics: ${o.nextTopics.join(", ")}`)),console.log()}a(Ic,"printManualTopic");function $t(e){re.size===0&&Zo();let o=re.get(e.toLowerCase());if(!o){let n=bt(e);if(!n){console.log(s.yellow(`
471
471
  [Unknown command: /${e}. Type /help for available commands]`));return}console.log(s.cyan(`
472
472
  /${n.name}`)),n.aliases?.length&&console.log(s.dim(`Aliases: ${n.aliases.join(", ")}`)),console.log(s.dim(`
473
473
  ${n.description}`)),console.log(s.dim(`
474
- Usage: ${Pc(n)}`)),console.log();return}o.detailedHelp?o.detailedHelp():(console.log(s.cyan(`
474
+ Usage: ${Wc(n)}`)),console.log();return}o.detailedHelp?o.detailedHelp():(console.log(s.cyan(`
475
475
  /${o.name}`)),o.aliases?.length&&console.log(s.dim(`Aliases: ${o.aliases.join(", ")}`)),console.log(s.dim(`
476
476
  ${o.description}`)),o.usage&&console.log(s.dim(`
477
- Usage: ${o.usage}`)),console.log())}a(St,"printDetailedHelp");async function Ic(e,o,n=[]){let t=n[0]?.toLowerCase(),r=e.contextTokenSnapshot?.currentTokens??ln(e.messages),i=e.contextTokenSnapshot?.source??"estimate",l=cr(o.provider),c=ur(o.provider,o.model,o.reasoningMode);if(console.log(s.bold(`
477
+ Usage: ${o.usage}`)),console.log())}a($t,"printDetailedHelp");async function _c(e,o,n=[]){let t=n[0]?.toLowerCase(),r=e.contextTokenSnapshot?.currentTokens??un(e.messages),i=e.contextTokenSnapshot?.source??"estimate",l=dr(o.provider),c=fr(o.provider,o.model,o.reasoningMode);if(console.log(s.bold(`
478
478
  Session Status:
479
- `)),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(` Agent Mode: ${s.cyan(o.agentMode.toUpperCase())}`)),l){let u=gn(l),w=l.transport==="cli-bridge"?s.yellow(u):s.cyan(u);console.log(s.dim(` Provider Cap: ${w}`))}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 He({mode:o.repoIntelligenceMode,trace:o.repoIntelligenceTrace});console.log(s.dim(` Repo Intel: ${s.cyan(Ac(d))}`)),e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace: ${s.cyan(Un(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(Ic,"printStatus");async function ti(e,o){let n=cn(o.gitRoot);n.size===0&&await dn(o.gitRoot),Cc(n.listUserInvocable())}a(ti,"handleSkillNamespaceCommand");function Cc(e){if(console.log(s.bold(`
479
+ `)),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(` Agent Mode: ${s.cyan(o.agentMode.toUpperCase())}`)),l){let u=gn(l),g=l.transport==="cli-bridge"?s.yellow(u):s.cyan(u);console.log(s.dim(` Provider Cap: ${g}`))}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 Ge({mode:o.repoIntelligenceMode,trace:o.repoIntelligenceTrace});console.log(s.dim(` Repo Intel: ${s.cyan(Tc(d))}`)),e.runtimeInfo?.workspaceRoot?console.log(s.dim(` Workspace: ${s.cyan(Fn(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(_c,"printStatus");async function ri(e,o){let n=He(o.gitRoot);n.size===0&&await Be(o.gitRoot),Pc(n.listUserInvocable())}a(ri,"handleSkillNamespaceCommand");function Pc(e){if(console.log(s.bold(`
480
480
  Available Skills:
481
481
  `)),e.length===0){console.log(s.dim(" No skills found.")),console.log(s.dim(`
482
- 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=Math.max(...e.map(n=>n.name.length));for(let n of e){let t=n.name.padEnd(o),r=n.argumentHint?` ${n.argumentHint}`:"",i=n.source==="builtin"?" [builtin]":n.source==="user"?" [user]":n.source==="plugin"?" [plugin]":"",l=n.description.length>50?n.description.slice(0,50)+"...":n.description;console.log(` ${s.cyan(`/skill:${t}`)}${s.dim(r)}${s.dim(i)} ${s.dim(l)}`)}console.log(),console.log(s.dim(`Total: ${e.length} skills`)),console.log(s.dim("Usage: /skill:<name> [args] or ask naturally")),console.log()}a(Cc,"printSkillsListPiMonoStyle");var re=new Me;function Yo(e){re.size>0||Qs(re,e)}a(Yo,"initCommandRegistry");function Jo(e){return Yo(e),re}a(Jo,"getCommandRegistry");function _c(){return Z()?.listCommands().filter(o=>o.metadata?.userInvocable!==!1)??[]}a(_c,"getActiveExtensionCommands");function $t(e){let o=Z(),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($t,"getActiveExtensionCommand");function Pc(e){return e.usage??`/${e.name}`}a(Pc,"formatExtensionCommandUsage");function Mc(e){return Array.isArray(e)?e.map(o=>String(o)).join(", "):e&&typeof e=="object"?JSON.stringify(e):String(e)}a(Mc,"formatExtensionDiagnosticValue");function Wc(e){if(!e)return;let o=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>`${n}=${Mc(t)}`);return o.length>0?o.join(" | "):void 0}a(Wc,"formatExtensionDiagnosticMetadata");function Ne(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(Ne,"getExtensionRuntimeDiagnostics");function Lc(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(Lc,"toExtensionInvocationRequest");async function Oc(e,o,n){let t=Z();if(!t)return console.log(s.yellow(`
483
- [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(()=>Ne(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=Lc(e,r);return i?{invocation:i}:!0}a(Oc,"executeExtensionCommand");function xg(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(xg,"parseCommand");function ri(e){let o=e[0]?.trim().toLowerCase();return o==="help"||o==="--help"||o==="-h"}a(ri,"isCommandHelpRequest");async function Ag(e,o,n,t){if(re.size===0&&Yo(o.gitRoot),e.skillInvocation)return await Nc({command:e.skillInvocation.name,args:e.args},o);let r=re.get(e.command);if(r){if(r.userInvocable===!1)return console.log(s.yellow(`
484
- [Command /${r.name} is not user-invocable]`)),!1;if(ri(e.args))return St(e.command),!0;try{let l=await r.handler(e.args,o,n,t);return l&&typeof l=="object"?l:!0}catch(l){return console.log(s.red(`
485
- [Command failed: ${l instanceof Error?l.message:String(l)}]`)),!1}}let i=$t(e.command);if(i){if(ri(e.args))return St(e.command),!0;try{return await Oc(i,e.args,o)}catch(l){return console.log(s.red(`
482
+ 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=Math.max(...e.map(n=>n.name.length));for(let n of e){let t=n.name.padEnd(o),r=n.argumentHint?` ${n.argumentHint}`:"",i=n.source==="builtin"?" [builtin]":n.source==="user"?" [user]":n.source==="plugin"?" [plugin]":"",l=n.description.length>50?n.description.slice(0,50)+"...":n.description;console.log(` ${s.cyan(`/skill:${t}`)}${s.dim(r)}${s.dim(i)} ${s.dim(l)}`)}console.log(),console.log(s.dim(`Total: ${e.length} skills`)),console.log(s.dim("Usage: /skill:<name> [args] or ask naturally")),console.log()}a(Pc,"printSkillsListPiMonoStyle");var re=new Me;function Zo(e){re.size>0||ei(re,e)}a(Zo,"initCommandRegistry");function Qo(e){return Zo(e),re}a(Qo,"getCommandRegistry");function Mc(){return Z()?.listCommands().filter(o=>o.metadata?.userInvocable!==!1)??[]}a(Mc,"getActiveExtensionCommands");function bt(e){let o=Z(),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(bt,"getActiveExtensionCommand");function Wc(e){return e.usage??`/${e.name}`}a(Wc,"formatExtensionCommandUsage");function Lc(e){return Array.isArray(e)?e.map(o=>String(o)).join(", "):e&&typeof e=="object"?JSON.stringify(e):String(e)}a(Lc,"formatExtensionDiagnosticValue");function Oc(e){if(!e)return;let o=Object.entries(e).filter(([,n])=>n!==void 0).map(([n,t])=>`${n}=${Lc(t)}`);return o.length>0?o.join(" | "):void 0}a(Oc,"formatExtensionDiagnosticMetadata");function Ne(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(Ne,"getExtensionRuntimeDiagnostics");function Nc(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(Nc,"toExtensionInvocationRequest");async function Dc(e,o,n){let t=Z();if(!t)return console.log(s.yellow(`
483
+ [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(()=>Ne(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=Nc(e,r);return i?{invocation:i}:!0}a(Dc,"executeExtensionCommand");function Mp(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(Mp,"parseCommand");function si(e){let o=e[0]?.trim().toLowerCase();return o==="help"||o==="--help"||o==="-h"}a(si,"isCommandHelpRequest");async function Wp(e,o,n,t){if(re.size===0&&Zo(o.gitRoot),e.skillInvocation)return await Uc({command:e.skillInvocation.name,args:e.args},o);let r=re.get(e.command);if(r){if(r.userInvocable===!1)return console.log(s.yellow(`
484
+ [Command /${r.name} is not user-invocable]`)),!1;if(si(e.args))return $t(e.command),!0;try{let l=await r.handler(e.args,o,n,t);return l&&typeof l=="object"?l:!0}catch(l){return console.log(s.red(`
485
+ [Command failed: ${l instanceof Error?l.message:String(l)}]`)),!1}}let i=bt(e.command);if(i){if(si(e.args))return $t(e.command),!0;try{return await Dc(i,e.args,o)}catch(l){return console.log(s.red(`
486
486
  [Extension command failed: ${l instanceof Error?l.message:String(l)}]`)),!1}}return console.log(s.yellow(`
487
- [Unknown command: /${e.command}. Type /help for available commands]`)),!1}a(Ag,"executeCommand");async function Nc(e,o){let n=cn(o.gitRoot),t=e.command,r=e.args.join(" ");n.size===0&&await dn(o.gitRoot);try{let i=n.get(t);if(!i)return console.log(s.red(`
487
+ [Unknown command: /${e.command}. Type /help for available commands]`)),!1}a(Wp,"executeCommand");async function Uc(e,o){let n=He(o.gitRoot),t=e.command,r=e.args.join(" ");n.size===0&&await Be(o.gitRoot);try{let i=n.get(t);if(!i)return console.log(s.red(`
488
488
  [Skill not found: ${t}]`)),!1;if(!i.userInvocable)return console.log(s.yellow(`
489
489
  [Skill "${t}" is not user-invocable]`)),!1;console.log(s.cyan(`
490
- [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:{}},d=await jt(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(`
491
- [Error invoking skill: ${i instanceof Error?i.message:String(i)}]`)),!1}}a(Nc,"executeSkillCommand");import{exec as Dc}from"node:child_process";import*as De from"node:path";import{promisify as Uc}from"node:util";var ii=Uc(Dc);function Fc(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(Fc,"pathFromPorcelainLine");async function ai(e,o=10){try{let[{stdout:n},{stdout:t}]=await Promise.all([ii("git rev-parse --show-toplevel",{cwd:e}),ii("git status --porcelain=v1 -uall",{cwd:e})]),r=n.trim(),i=[],l=new Set;for(let c of t.split(`
492
- `)){if(!c.trim())continue;let d=Fc(c);if(!d)continue;let u=De.resolve(r,d),w=De.relative(e,u).split(De.sep).join("/");if(!(!w||w.startsWith("..")||l.has(w))&&(l.add(w),i.push(w),i.length>=o))break}return i}catch{return[]}}a(ai,"getRecentWorkingSetFiles");function Ue(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(Ue,"findCommandSlashIndex");var bt=class{static{a(this,"FileCompleter")}cwdSource;cache=new Map;cacheTimeout=5e3;recentCache=new Map;recentFilesProvider;constructor(o,n=ai){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:uo.join(c,i.slice(0,d)),w=d===-1?i:i.slice(d+1);try{let k=(await this.readdir(u)).filter(v=>v.toLowerCase().startsWith(w.toLowerCase()));for(let v of k){let h=uo.join(u,v),y=await this.isDirectory(h),m=d===-1?v:i.slice(0,d+1)+v;l.push({text:"@"+m+(y?"/":""),display:v+(y?"/":""),description:y?"directory":"file",type:"file"})}}catch{}if(d===-1){let f=await this.getRecentFiles(c),k=new Set(l.map(y=>y.text)),v=w.toLowerCase(),h=[];for(let y of f){if(w&&!uo.basename(y).toLowerCase().startsWith(v))continue;let m="@"+y;k.has(m)||(k.add(m),h.push({text:m,display:y,description:"recent",type:"file"}))}l.unshift(...h)}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=>{Zo.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=>{Zo.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 Jo().getAll())n.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]});let o=Z();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=Ue(t);return r===-1?!1:!t.slice(r).includes(" ")}async getCompletions(o,n){let t=o.slice(0,n),r=Ue(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 Lg(e){let o=new bt(e),n=new xt;return async t=>{let r=t.includes("@"),i=t.includes("/");if(!r&&!i)return[[],t];let l=[];if(i){let d=await jc(t,t.length);l.push(...d)}if(i&&n.canComplete(t,t.length)){let d=await n.getCompletions(t,t.length);l.push(...d)}if(r&&o.canComplete(t,t.length)){let d=await o.getCompletions(t,t.length);l.push(...d)}return[l.map(d=>Hc(t,d)),t]}}a(Lg,"createCompleter");async function jc(e,o){let{ArgumentCompleter:n}=await import("./argument-completer-MAJVHSE7.js"),t=new n;return t.canComplete(e,o)?t.getCompletions(e,o):[]}a(jc,"getArgumentCompletions");function Hc(e,o){if(o.type!=="argument")return o.display;let n=Ue(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(Hc,"formatReadlineCompletion");import{existsSync as en,readdirSync as fi,readFileSync as mi}from"node:fs";import{join as on}from"node:path";var Bc=[{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-in-project",description:"All tools auto within project directory",type:"enum"}],Qo=[{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"}],li=Qo.slice(2).concat([{name:"off",description:"Disable reasoning",type:"enum"}]);function qc(e){if(e&&e.includes("/")){let o=e.indexOf("/"),n=e.slice(0,o),t=e.slice(o+1);if(xe(n))try{return Ie(n).filter(i=>!t||i.toLowerCase().includes(t.toLowerCase())).map(i=>({name:`${n}/${i}`,description:i,type:"enum"}))}catch{}return[]}return Ae().map(o=>({name:o,description:`Switch to ${o} provider`,type:"enum"}))}a(qc,"getModelArgs");var ci=[{name:"on",description:"Enable plan mode for all requests",type:"enum"},{name:"off",description:"Disable plan mode",type:"enum"},{name:"once",description:"Run plan mode for a single request (followed by task)",type:"enum"},{name:"list",description:"List all saved plans",type:"enum"},{name:"resume",description:"Resume a saved plan (followed by plan ID)",type:"enum"},{name:"clear",description:"Clear completed plans",type:"enum"}],At=[{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"}],Rt=[{name:"all",description:"Delete ALL sessions",type:"enum"}],zc=[{name:"status",description:"Inspect the current repo-intelligence runtime state",type:"enum"},{name:"warm",description:"Warm or start the local premium runtime if available",type:"enum"},{name:"mode",description:"Switch repo-intelligence runtime mode",type:"enum"},{name:"trace",description:"Toggle repo-intelligence trace output",type:"enum"},{name:"endpoint",description:"Inspect or override the local repointel daemon endpoint",type:"enum"},{name:"bin",description:"Inspect or override the local repointel command or path",type:"enum"}],Kc=[{name:"auto",description:"Resolve to premium-native when available, otherwise fall back to oss",type:"enum"},{name:"off",description:"Disable repo-intelligence injection",type:"enum"},{name:"oss",description:"Use only the public OSS repo-intelligence baseline",type:"enum"},{name:"premium-shared",description:"Use premium without the native KodaX auto lane",type:"enum"},{name:"premium-native",description:"Use premium through the native KodaX bridge",type:"enum"}],Gc=[{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"}],di=[{name:"default",description:"Clear the override and use the default value again",type:"enum"}],Xc=[{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"}],Vc=new Set(["show","pause","resume","stop","delete","rerun","save","rename","revise"]),Yc=new Set(["show","delete","rerun","save","rename","revise"]),Jc=[{name:"--all",description:"Show all persisted workflow runs",type:"enum"},{name:"--limit",description:"Show at most N persisted workflow runs",type:"enum"}],Zc=[{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"}],Qc=[{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"}],ed=[".workflow.json",".ts",".mjs",".js"];function od(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(od,"workflowRunMatchesSubcommand");function nn(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(nn,"isWorkflowRunEntryName");function nd(e,o){let n=on(e,"workflow-metadata.json");if(en(n))try{let r=JSON.parse(mi(n,"utf8"));if(typeof r=="object"&&r!==null){let i=r.displayName;if(typeof i=="string"&&nn(i.trim()))return i.trim()}}catch{}let t=o.displayName;return typeof t=="string"&&nn(t.trim())?t.trim():void 0}a(nd,"readWorkflowRunDisplayName");function td(){let e=ye(process.cwd()).key,o=N("workflow-runs",e);if(!en(o))return[];let n=[];for(let t of fi(o)){if(!nn(t))continue;let r=on(o,t,"run.json");if(en(r))try{let i=JSON.parse(mi(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=nd(on(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(td,"getPersistedWorkflowRunIdArgs");function tn(e){let o=Ee().list().filter(r=>od(e,r.status)).map(r=>({name:r.runId,description:`${r.workflow} - ${r.status}`,type:"string"})),n=Yc.has(e)?td():[],t=new Set;return[...o,...n].filter(r=>t.has(r.name)?!1:(t.add(r.name),!0))}a(tn,"getWorkflowRunIdArgs");function rd(e){for(let o of ed)if(e.endsWith(o)){let n=e.slice(0,-o.length);return nn(n)?n:void 0}}a(rd,"savedWorkflowNameFromFile");function fo(e={}){let o=[{path:N("workflows"),source:"personal"},{path:on(process.cwd(),".kodax","workflows"),source:"project"}],n=new Map;for(let t of o)if(en(t.path))try{for(let r of fi(t.path)){if(e.generatedOnly===!0&&!r.endsWith(".workflow.json"))continue;let i=rd(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(fo,"getSavedWorkflowNameArgs");function sd(){let e=new Map;for(let o of tn("rerun"))e.set(o.name,{...o,description:`recent run: ${o.description}`,type:"string"});for(let o of fo()){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(sd,"getWorkflowRerunArgs");function Tt(e){let o=new Map;for(let n of tn(e))o.set(n.name,{...n,description:`workflow run: ${n.description}`,type:"string"});for(let n of fo({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(Tt,"getWorkflowRunOrSavedNameArgs");function ui(e){let o=new Set(e.slice(1).filter(n=>n.startsWith("--")));return o.has("--saved")?fo({generatedOnly:!0}):o.has("--run")?tn("delete"):Tt("delete")}a(ui,"getWorkflowDeleteTargetArgs");function id(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;if(t<=1)return[...Xc,...ze().map(r=>({name:r.name,description:r.description,type:"enum"})),...fo()];if(n==="rerun"&&t<=2)return sd();if(n==="rename"&&t<=2)return Tt("rename");if(n==="delete"&&t<=2)return[...Qc,...ui(e)];if(n==="delete"&&t<=3&&e.slice(1).some(r=>r.startsWith("--")))return ui(e);if(n==="revise"){if(t<=2)return[{name:"--replace",description:"Replace a saved workflow after confirmation",type:"enum"},...Tt("revise")];if(e[1]==="--replace"&&t<=3)return fo()}return Vc.has(n)&&t<=2?tn(n):n==="runs"&&t<=2?Jc:n==="prune"&&t<=2?Zc:[]}a(id,"getWorkflowArgs");function ad(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;return t<=1?zc:t>2?[]:n==="mode"?Kc:n==="trace"?Gc:n==="endpoint"?[...di,{name:zt,description:"Default local repointel daemon endpoint",type:"string"}]:n==="bin"?di:[]}a(ad,"getRepointelArgs");var ld=new Map([["mode",Bc],["thinking",Qo],["think",Qo],["t",Qo],["reasoning",li],["reason",li],["plan",ci],["p",ci],["status",At],["info",At],["ctx",At],["delete",Rt],["rm",Rt],["del",Rt]]),cd=new Set(["model","m"]),dd=new Set(["repointel","ri"]),ud=new Set(["workflow"]);function Et(e,o,n=[]){let t=e.toLowerCase();return cd.has(t)?qc(o):dd.has(t)?ad(n):ud.has(t)?id(n):ld.get(t)??[]}a(Et,"getCommandArguments");var It=class{static{a(this,"ArgumentCompleter")}canComplete(o,n){let t=o.slice(0,n),r=Ue(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 Et(c).length>0}async getCompletions(o,n){let t=o.slice(0,n),r=Ue(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+/):[""],w=u.length-1,f=(u[w]??"").toLowerCase(),k=Et(c,f,u);if(!k||k.length===0)return[];let v=new Set(u.slice(0,-1).map(y=>y.toLowerCase()));return k.filter(y=>!v.has(y.name.toLowerCase())).filter(y=>!f||y.name.includes("/")?!0:y.name.toLowerCase().includes(f)).map(y=>({text:y.name,display:y.name,description:y.description,type:"argument"})).sort((y,m)=>{if(!f)return 0;let x=y.display.toLowerCase().startsWith(f),A=m.display.toLowerCase().startsWith(f);return x&&!A?-1:!x&&A?1:y.display.length-m.display.length})}};function Xg(){return new It}a(Xg,"createArgumentCompleter");export{Mn as a,F as b,ku as c,os as d,vu as e,vo as f,gd as g,hi as h,pd as i,Ke as j,Sr as k,$r as l,Ge as m,$n as n,Mi as o,bn as p,An as q,Rn as r,Ye as s,Di as t,Tn as u,_e as v,Hr as w,Br as x,Yi as y,su as z,Cn as A,iu as B,au as C,Vr as D,es as E,Q as F,rs as G,ss as H,Ru as I,fa as J,Aa as K,Tu as L,gs as M,Ln as N,Eu as O,ps as P,Iu as Q,Cu as R,_u as S,Zu as T,Qu as U,ef as V,vs as W,Un as X,Ss as Y,ye as Z,af as _,ve as $,Sl as aa,$l as ba,If as ca,Cf as da,st as ea,Sm as fa,$m as ga,bm as ha,xm as ia,Am as ja,Xs as ka,_m as la,Pm as ma,Ys as na,Mm as oa,Js as pa,xg as qa,Ag as ra,It as sa,Xg as ta,Ue as ua,bt as va,xt as wa,Lg as xa};
490
+ [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:{}},d=await Ht(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(`
491
+ [Error invoking skill: ${i instanceof Error?i.message:String(i)}]`)),!1}}a(Uc,"executeSkillCommand");var en=class{static{a(this,"SkillCompleter")}gitRoot;skillsCache=null;cacheTimestamp=0;CACHE_TTL=5e3;constructor(o){this.gitRoot=o}canComplete(o,n){let t=o.slice(0,n);if(!/\/skill:[^\s]*$/.test(t))return!1;let r=t.lastIndexOf("/skill:");return!(r>0&&!/\s/.test(t[r-1]??""))}async getCompletions(o,n){let r=o.slice(0,n).match(/\/skill:([^\s]*)$/);if(!r)return[];let i=(r[1]??"").toLowerCase();return(await this.getSkills()).filter(c=>{let d=c.name.toLowerCase();return d.includes(i)||this.fuzzyIncludes(i,d)}).map(c=>({text:`/skill:${c.name}`,display:c.name,description:this.truncateDescription(c.description),type:"skill"})).sort((c,d)=>{let u=c.display.toLowerCase().startsWith(i),g=d.display.toLowerCase().startsWith(i);return u&&!g?-1:!u&&g?1:c.display.length-d.display.length})}setGitRoot(o){this.gitRoot!==o&&(this.gitRoot=o,this.skillsCache=null)}async getSkills(){let o=Date.now();if(this.skillsCache&&o-this.cacheTimestamp<this.CACHE_TTL)return this.skillsCache;try{let n=He(this.gitRoot);return n.size===0&&await Be(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++)n[r]===o[t]&&t++;return t===o.length}truncateDescription(o,n=50){return o.length<=n?o:o.slice(0,n-3)+"..."}};import{exec as Fc}from"node:child_process";import*as De from"node:path";import{promisify as jc}from"node:util";var ai=jc(Fc);function Hc(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(Hc,"pathFromPorcelainLine");async function li(e,o=10){try{let[{stdout:n},{stdout:t}]=await Promise.all([ai("git rev-parse --show-toplevel",{cwd:e}),ai("git status --porcelain=v1 -uall",{cwd:e})]),r=n.trim(),i=[],l=new Set;for(let c of t.split(`
492
+ `)){if(!c.trim())continue;let d=Hc(c);if(!d)continue;let u=De.resolve(r,d),g=De.relative(e,u).split(De.sep).join("/");if(!(!g||g.startsWith("..")||l.has(g))&&(l.add(g),i.push(g),i.length>=o))break}return i}catch{return[]}}a(li,"getRecentWorkingSetFiles");function Ue(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(Ue,"findCommandSlashIndex");var xt=class{static{a(this,"FileCompleter")}cwdSource;cache=new Map;cacheTimeout=5e3;recentCache=new Map;recentFilesProvider;constructor(o,n=li){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:mo.join(c,i.slice(0,d)),g=d===-1?i:i.slice(d+1);try{let k=(await this.readdir(u)).filter(v=>v.toLowerCase().startsWith(g.toLowerCase()));for(let v of k){let h=mo.join(u,v),y=await this.isDirectory(h),m=d===-1?v:i.slice(0,d+1)+v;l.push({text:"@"+m+(y?"/":""),display:v+(y?"/":""),description:y?"directory":"file",type:"file"})}}catch{}if(d===-1){let f=await this.getRecentFiles(c),k=new Set(l.map(y=>y.text)),v=g.toLowerCase(),h=[];for(let y of f){if(g&&!mo.basename(y).toLowerCase().startsWith(v))continue;let m="@"+y;k.has(m)||(k.add(m),h.push({text:m,display:y,description:"recent",type:"file"}))}l.unshift(...h)}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=>{on.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=>{on.stat(o,(t,r)=>{n(!t&&r.isDirectory())})})}},At=class{static{a(this,"CommandCompleter")}commands;constructor(){this.commands=new Map,this.loadCommands()}loadCommands(){for(let n of Qo().getAll())n.userInvocable!==!1&&this.commands.set(n.name,{description:n.description,aliases:n.aliases??[]});let o=Z();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=Ue(t);return r===-1?!1:!t.slice(r).includes(" ")}async getCompletions(o,n){let t=o.slice(0,n),r=Ue(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 Xp(e){let o=new xt(e),n=new en,t=new At;return async r=>{let i=r.includes("@"),l=r.includes("/");if(!i&&!l)return[[],r];let c=[];if(l){let u=await Bc(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=>Gc(r,u)),r]}}a(Xp,"createCompleter");async function Bc(e,o){let{ArgumentCompleter:n}=await import("./argument-completer-OFPM36IZ.js"),t=new n;return t.canComplete(e,o)?t.getCompletions(e,o):[]}a(Bc,"getArgumentCompletions");function Gc(e,o){if(o.type!=="argument")return o.text;let n=Ue(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(Gc,"formatReadlineCompletion");import{existsSync as tn,readdirSync as pi,readFileSync as gi}from"node:fs";import{join as rn}from"node:path";var zc=[{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"}],nn=[{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"}],ci=nn.slice(2).concat([{name:"off",description:"Disable reasoning",type:"enum"}]);function qc(e){if(e&&e.includes("/")){let o=e.indexOf("/"),n=e.slice(0,o),t=e.slice(o+1);if(xe(n))try{return Ce(n).filter(i=>!t||i.toLowerCase().includes(t.toLowerCase())).map(i=>({name:`${n}/${i}`,description:i,type:"enum"}))}catch{}return[]}return Ae().map(o=>({name:o,description:`Switch to ${o} provider`,type:"enum"}))}a(qc,"getModelArgs");var Rt=[{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"}],Tt=[{name:"all",description:"Delete ALL sessions",type:"enum"}],Kc=[{name:"status",description:"Show MCP server status",type:"enum"},{name:"refresh",description:"Refresh MCP server catalogs",type:"enum"}],Xc=[{name:"status",description:"Show child-task fallback order",type:"enum"},{name:"off",description:"Disable child-task fallback providers",type:"enum"}],Vc=[{name:"llm",description:"Use LLM classifier for auto mode",type:"enum"},{name:"rules",description:"Use rules-only auto mode",type:"enum"}],di=[{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"}],ui=[{name:"on",description:"Enable logging",type:"enum"},{name:"off",description:"Disable logging",type:"enum"}],Yc=[{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"}],Jc=[{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"}],Zc=[{name:"show",description:"Show a captured paste by id",type:"enum"},{name:"list",description:"List captured pastes",type:"enum"}],Qc=[{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"}],ed=[{name:"status",description:"Inspect the current repo-intelligence runtime state",type:"enum"},{name:"warm",description:"Warm or start the local premium runtime if available",type:"enum"},{name:"mode",description:"Switch repo-intelligence runtime mode",type:"enum"},{name:"trace",description:"Toggle repo-intelligence trace output",type:"enum"},{name:"endpoint",description:"Inspect or override the local repointel daemon endpoint",type:"enum"},{name:"bin",description:"Inspect or override the local repointel command or path",type:"enum"}],od=[{name:"auto",description:"Resolve to premium-native when available, otherwise fall back to oss",type:"enum"},{name:"off",description:"Disable repo-intelligence injection",type:"enum"},{name:"oss",description:"Use only the public OSS repo-intelligence baseline",type:"enum"},{name:"premium-shared",description:"Use premium without the native KodaX auto lane",type:"enum"},{name:"premium-native",description:"Use premium through the native KodaX bridge",type:"enum"}],nd=[{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"}],fi=[{name:"default",description:"Clear the override and use the default value again",type:"enum"}],td=[{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"}],rd=new Set(["show","pause","resume","stop","delete","rerun","save","rename","revise"]),sd=new Set(["show","delete","rerun","save","rename","revise"]),id=[{name:"--all",description:"Show all persisted workflow runs",type:"enum"},{name:"--limit",description:"Show at most N persisted workflow runs",type:"enum"}],ad=[{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"}],ld=[{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"}],cd=[".workflow.json",".ts",".mjs",".js"];function dd(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(dd,"workflowRunMatchesSubcommand");function sn(e){return/^[a-zA-Z0-9._-]{1,120}$/.test(e)&&!e.startsWith(".")&&!e.includes("..")}a(sn,"isWorkflowRunEntryName");function ud(e,o){let n=rn(e,"workflow-metadata.json");if(tn(n))try{let r=JSON.parse(gi(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(ud,"readWorkflowRunDisplayName");function fd(){let e=ye(process.cwd()).key,o=N("workflow-runs",e);if(!tn(o))return[];let n=[];for(let t of pi(o)){if(!sn(t))continue;let r=rn(o,t,"run.json");if(tn(r))try{let i=JSON.parse(gi(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=ud(rn(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(fd,"getPersistedWorkflowRunIdArgs");function an(e){let o=Ee().list().filter(r=>dd(e,r.status)).map(r=>({name:r.runId,description:`${r.workflow} - ${r.status}`,type:"string"})),n=sd.has(e)?fd():[],t=new Set;return[...o,...n].filter(r=>t.has(r.name)?!1:(t.add(r.name),!0))}a(an,"getWorkflowRunIdArgs");function md(e){for(let o of cd)if(e.endsWith(o)){let n=e.slice(0,-o.length);return sn(n)?n:void 0}}a(md,"savedWorkflowNameFromFile");function po(e={}){let o=[{path:N("workflows"),source:"personal"},{path:rn(process.cwd(),".kodax","workflows"),source:"project"}],n=new Map;for(let t of o)if(tn(t.path))try{for(let r of pi(t.path)){if(e.generatedOnly===!0&&!r.endsWith(".workflow.json"))continue;let i=md(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(po,"getSavedWorkflowNameArgs");function pd(){let e=new Map;for(let o of an("rerun"))e.set(o.name,{...o,description:`recent run: ${o.description}`,type:"string"});for(let o of po()){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(pd,"getWorkflowRerunArgs");function Et(e){let o=new Map;for(let n of an(e))o.set(n.name,{...n,description:`workflow run: ${n.description}`,type:"string"});for(let n of po({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(Et,"getWorkflowRunOrSavedNameArgs");function mi(e){let o=new Set(e.slice(1).filter(n=>n.startsWith("--")));return o.has("--saved")?po({generatedOnly:!0}):o.has("--run")?an("delete"):Et("delete")}a(mi,"getWorkflowDeleteTargetArgs");function gd(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;if(t<=1)return[...td,...Ke().map(r=>({name:r.name,description:r.description,type:"enum"})),...po()];if(n==="rerun"&&t<=2)return pd();if(n==="rename"&&t<=2)return Et("rename");if(n==="delete"&&t<=2)return[...ld,...mi(e)];if(n==="delete"&&t<=3&&e.slice(1).some(r=>r.startsWith("--")))return mi(e);if(n==="revise"){if(t<=2)return[{name:"--replace",description:"Replace a saved workflow after confirmation",type:"enum"},...Et("revise")];if(e[1]==="--replace"&&t<=3)return po()}return rd.has(n)&&t<=2?an(n):n==="runs"&&t<=2?id:n==="prune"&&t<=2?ad:[]}a(gd,"getWorkflowArgs");function wd(e){let[o=""]=e,n=o.toLowerCase(),t=e.length===1&&e[0]===""?0:e.length;return t<=1?ed:t>2?[]:n==="mode"?od:n==="trace"?nd:n==="endpoint"?[...fi,{name:qt,description:"Default local repointel daemon endpoint",type:"string"}]:n==="bin"?fi:[]}a(wd,"getRepointelArgs");var hd=new Map([["mode",zc],["thinking",nn],["think",nn],["t",nn],["reasoning",ci],["reason",ci],["status",Rt],["info",Rt],["ctx",Rt],["mcp",Kc],["fallback",Xc],["auto-engine",Vc],["agent-mode",di],["am",di],["verifier-log",ui],["stall-log",ui],["memory",Yc],["goal",Jc],["paste",Zc],["review",Qc],["delete",Tt],["rm",Tt],["del",Tt]]),yd=new Set(["model","m","provider"]),kd=new Set(["repointel","ri"]),vd=new Set(["workflow"]);function Ct(e,o,n=[]){let t=e.toLowerCase();return yd.has(t)?qc(o):kd.has(t)?wd(n):vd.has(t)?gd(n):hd.get(t)??[]}a(Ct,"getCommandArguments");var It=class{static{a(this,"ArgumentCompleter")}canComplete(o,n){let t=o.slice(0,n),r=Ue(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 Ct(c).length>0}async getCompletions(o,n){let t=o.slice(0,n),r=Ue(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+/):[""],g=u.length-1,f=(u[g]??"").toLowerCase(),k=Ct(c,f,u);if(!k||k.length===0)return[];let v=new Set(u.slice(0,-1).map(y=>y.toLowerCase()));return k.filter(y=>!v.has(y.name.toLowerCase())).filter(y=>!f||y.name.includes("/")?!0:y.name.toLowerCase().includes(f)).map(y=>({text:y.name,display:y.name,description:y.description,type:"argument"})).sort((y,m)=>{if(!f)return 0;let x=y.display.toLowerCase().startsWith(f),A=m.display.toLowerCase().startsWith(f);return x&&!A?-1:!x&&A?1:y.display.length-m.display.length})}};function ag(){return new It}a(ag,"createArgumentCompleter");export{Wn as a,F as b,Eu as c,ns as d,Cu as e,$o as f,bd as g,ki as h,xd as i,Xe as j,$r as k,br as l,Ve as m,bn as n,Li as o,xn as p,Rn as q,Tn as r,Ze as s,Fi as t,En as u,_e as v,Br as w,Gr as x,Zi as y,pu as z,_n as A,gu as B,wu as C,Yr as D,os as E,Q as F,ss as G,is as H,Lu as I,pa as J,Ta as K,Ou as L,gs as M,On as N,Nu as O,ws as P,Du as Q,Uu as R,Fu as S,lf as T,cf as U,df as V,Ss as W,Fn as X,$s as Y,ye as Z,wf as _,ve as $,bl as aa,xl as ba,Df as ca,Uf as da,it as ea,Im as fa,_m as ga,Pm as ha,Mm as ia,Wm as ja,Vs as ka,Fm as la,jm as ma,Js as na,Hm as oa,Zs as pa,Mp as qa,Wp as ra,en as sa,It as ta,ag as ua,Ue as va,xt as wa,At as xa,Xp as ya};