@testmuai/kane-cli 0.4.1 → 0.4.2

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 (86) hide show
  1. package/dist/{ChromeProfilePicker-63JS7QX6.js → ChromeProfilePicker-HNP7QQ4J.js} +1 -1
  2. package/dist/{CliFeedbackPrompt-3SDJ5GZP.js → CliFeedbackPrompt-OSNATI4W.js} +1 -1
  3. package/dist/{CliUploadProgress-ZSZ7TGCN.js → CliUploadProgress-7HRWDZ4P.js} +1 -1
  4. package/dist/{ConfigView-OOQYCHWM.js → ConfigView-PQH67FUK.js} +1 -1
  5. package/dist/FolderPicker-SET7IG6S.js +2 -0
  6. package/dist/HelpView-HFKFRKG3.js +2 -0
  7. package/dist/{InfoBox-QECFIGGW.js → InfoBox-3IN3IZ2I.js} +1 -1
  8. package/dist/{LinksBox-2L2UX4LB.js → LinksBox-DI5QKX6K.js} +1 -1
  9. package/dist/{ProfilesView-72UTQ5PX.js → ProfilesView-N6XNSUHQ.js} +1 -1
  10. package/dist/{ProjectPicker-NLEAW232.js → ProjectPicker-6QIVHOO7.js} +1 -1
  11. package/dist/{SaveSessionPrompt-VNJDLJTF.js → SaveSessionPrompt-7CZHPNYK.js} +1 -1
  12. package/dist/SingleShotApp-A4VXMXEZ.js +2 -0
  13. package/dist/{SummaryBox-O772FRGO.js → SummaryBox-7ZK2A6MA.js} +1 -1
  14. package/dist/TestMdRunView-KGHEZZBK.js +2 -0
  15. package/dist/{WhoamiView-LR2EFCTK.js → WhoamiView-3E447A3G.js} +1 -1
  16. package/dist/{changelog-VCAUV47V.js → changelog-ZBTZCYKI.js} +1 -1
  17. package/dist/{chunk-CMRNCZGV.js → chunk-34YRU7WM.js} +2 -2
  18. package/dist/chunk-3QWAABMG.js +2 -0
  19. package/dist/{chunk-P7ZUISQG.js → chunk-4UKCDU64.js} +1 -1
  20. package/dist/{chunk-KJEJ7VW5.js → chunk-4ZHU4DLD.js} +1 -1
  21. package/dist/{chunk-UYHNJUPY.js → chunk-7CBWZLRS.js} +1 -1
  22. package/dist/{chunk-7I2SQ2KP.js → chunk-AAJSF67A.js} +1 -1
  23. package/dist/{chunk-RHUD7MK4.js → chunk-AKKATURY.js} +2 -2
  24. package/dist/{chunk-AGS57DSG.js → chunk-BM25JQ3Z.js} +1 -1
  25. package/dist/{chunk-UHFCCGVX.js → chunk-CZBHDBID.js} +1 -1
  26. package/dist/chunk-DGUXTSHM.js +11 -0
  27. package/dist/{chunk-LEXQLAWB.js → chunk-DQASLGFG.js} +33 -33
  28. package/dist/{chunk-4QO6JYHX.js → chunk-ELZIC2EH.js} +1 -1
  29. package/dist/chunk-FFTIDI5K.js +5 -0
  30. package/dist/{chunk-JGXJDTMO.js → chunk-GNJBT6SS.js} +1 -1
  31. package/dist/{chunk-YSSBAIJI.js → chunk-H2P7UJAU.js} +1 -1
  32. package/dist/chunk-K4PLPKPF.js +5 -0
  33. package/dist/{chunk-OFEPMULV.js → chunk-KPF3BPJ5.js} +1 -1
  34. package/dist/{chunk-J2KTLZAW.js → chunk-LOSNFBZV.js} +1 -1
  35. package/dist/chunk-LY5LHKGG.js +18 -0
  36. package/dist/{chunk-7U4NY37W.js → chunk-NKFXY5TF.js} +2 -2
  37. package/dist/chunk-OISHNB7D.js +2 -0
  38. package/dist/{chunk-T46Z27UL.js → chunk-PF7PBYCJ.js} +1 -1
  39. package/dist/{chunk-7NDFOI6Z.js → chunk-PQIPYWTP.js} +1 -1
  40. package/dist/chunk-QXVI3LI4.js +6 -0
  41. package/dist/{chunk-RJNGCQCL.js → chunk-R7T6Z6QW.js} +1 -1
  42. package/dist/{chunk-77SZF4ZU.js → chunk-RCL22HDJ.js} +1 -1
  43. package/dist/{chunk-DAVPOA2L.js → chunk-RD6G3CMN.js} +1 -1
  44. package/dist/chunk-RLSBAT6P.js +2 -0
  45. package/dist/chunk-S7JV4A3U.js +2 -0
  46. package/dist/{chunk-V3FSESZ4.js → chunk-TQGNNJX5.js} +1 -1
  47. package/dist/{chunk-HUOC7DUT.js → chunk-UHGECBEN.js} +1 -1
  48. package/dist/{chunk-TCLKNUAL.js → chunk-VBZIIF5N.js} +1 -1
  49. package/dist/chunk-VL57GII7.js +2 -0
  50. package/dist/chunk-WFSTRBQF.js +2 -0
  51. package/dist/{chunk-YAVIOVVP.js → chunk-Y6IUJZMV.js} +1 -1
  52. package/dist/{chunk-VKG45YIL.js → chunk-YB67GRWE.js} +1 -1
  53. package/dist/generate-headless-WL6A6ACX.js +21 -0
  54. package/dist/index.js +38 -33
  55. package/dist/{list-commands-Y6A3XR4L.js → list-commands-MK4W3Q7O.js} +1 -1
  56. package/dist/login-flow-CDR6ARK3.js +2 -0
  57. package/dist/{persist-recorded-session-WBPLUA55.js → persist-recorded-session-A5EJ25AE.js} +1 -1
  58. package/dist/{recording-banner-Q36WARSF.js → recording-banner-6UI6NNRK.js} +1 -1
  59. package/dist/{require-project-folder-DBXAG7FB.js → require-project-folder-J5WZR653.js} +1 -1
  60. package/dist/{run-test-md-H2X6CUIX.js → run-test-md-I76IV7QA.js} +3 -3
  61. package/dist/skill-installer-ZLBRT4QP.js +3 -0
  62. package/dist/tcg-generate-R6P4QUGO.js +2 -0
  63. package/dist/testmd-actions-W2INQVTH.js +2 -0
  64. package/dist/token-refresh-4QLWR5ZI.js +2 -0
  65. package/dist/{validate-basic-VFJZKHOE.js → validate-basic-QUPVT2EV.js} +1 -1
  66. package/dist/{version-check-5NUDIYG4.js → version-check-RVK5YKDZ.js} +1 -1
  67. package/package.json +8 -6
  68. package/dist/FolderPicker-FILMS64I.js +0 -2
  69. package/dist/HelpView-KBFE4EMP.js +0 -2
  70. package/dist/SingleShotApp-V2UTGNZO.js +0 -2
  71. package/dist/TestMdRunView-OVHCLNI7.js +0 -2
  72. package/dist/chunk-45VTQLJS.js +0 -6
  73. package/dist/chunk-FGC74Z76.js +0 -2
  74. package/dist/chunk-G6AXOEED.js +0 -2
  75. package/dist/chunk-H4XK55B3.js +0 -5
  76. package/dist/chunk-IBDWHXNE.js +0 -2
  77. package/dist/chunk-JJERCR2W.js +0 -5
  78. package/dist/chunk-LAR7I5SR.js +0 -2
  79. package/dist/chunk-OIPVMEM7.js +0 -2
  80. package/dist/chunk-Z7AXAKPX.js +0 -9
  81. package/dist/chunk-ZUIWBVGF.js +0 -14
  82. package/dist/generate-headless-XWVVEFQR.js +0 -18
  83. package/dist/login-flow-MKAYO6IS.js +0 -2
  84. package/dist/tcg-generate-WURS7TXW.js +0 -2
  85. package/dist/testmd-actions-MQ3N7IS4.js +0 -2
  86. package/dist/token-refresh-HHNMHTYX.js +0 -2
package/dist/index.js CHANGED
@@ -1,33 +1,33 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
3
- import{a as Gt,b as mn,c as fn}from"./chunk-ZUIWBVGF.js";import{i as hn}from"./chunk-7U4NY37W.js";import"./chunk-3MSXQU2C.js";import"./chunk-FGC74Z76.js";import"./chunk-45VTQLJS.js";import{a as pn,d as $e}from"./chunk-OFEPMULV.js";import{a as We,b as Ge,c as Kt,d as Jt,f as zt,g as nn,h as Ie,i as on,j as rn,k as sn,l as an,m as ln,n as cn,o as ze,p as Qe,q as Xe,r as dn,s as un}from"./chunk-LEXQLAWB.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-EEF6OT52.js";import"./chunk-RHUD7MK4.js";import{b as en}from"./chunk-CMRNCZGV.js";import{a as Xt,b as he}from"./chunk-77SZF4ZU.js";import"./chunk-MDBXYXSC.js";import"./chunk-RJNGCQCL.js";import"./chunk-S3DAAAE5.js";import"./chunk-HN7DVSVI.js";import"./chunk-AH4AXJML.js";import{a as Zt}from"./chunk-7I2SQ2KP.js";import"./chunk-Z7AXAKPX.js";import{c as Vt}from"./chunk-AGS57DSG.js";import"./chunk-L5LI2JF4.js";import{a as se}from"./chunk-YSSBAIJI.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import{a as Dt,b as Nt,c as Ft,d as Qt,e as Ye,f as Te,g as tn}from"./chunk-JJERCR2W.js";import{b as Yt}from"./chunk-H4XK55B3.js";import"./chunk-G6AXOEED.js";import"./chunk-7NDFOI6Z.js";import"./chunk-V3FSESZ4.js";import"./chunk-DAVPOA2L.js";import"./chunk-KJEJ7VW5.js";import"./chunk-P7ZUISQG.js";import"./chunk-YCCUBQY4.js";import"./chunk-UHFCCGVX.js";import{a as Lt,d as Re,f as Ke,g as _,h as Ce,i as Je,j as Ut}from"./chunk-LOIRZFV3.js";import{a as Ht,f as Bt,g as qt}from"./chunk-TCLKNUAL.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import{a as Oe,b as pe,c as Mt}from"./chunk-VE3SUJMA.js";import"./chunk-YAVIOVVP.js";import{a as Wt}from"./chunk-J2KTLZAW.js";import{a as Z}from"./chunk-T46Z27UL.js";import"./chunk-OIPVMEM7.js";import{a as ee}from"./chunk-LAR7I5SR.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E47GFYXA.js";import"./chunk-UYHNJUPY.js";import"./chunk-HUOC7DUT.js";import{a as be,b as jt}from"./chunk-C6S4IEBC.js";import"./chunk-4QO6JYHX.js";import"./chunk-VKG45YIL.js";import"./chunk-JGXJDTMO.js";import{a as Ae,c as re,h as fe,t as J}from"./chunk-IBDWHXNE.js";import{a as ke}from"./chunk-HCBYKLMW.js";import{a as X,b as U,c as ve,i as qe,j as Pt}from"./chunk-C44QQJR4.js";import{a as Be}from"./chunk-6YGTRKDT.js";import{a as _e,c as me,e as oe}from"./chunk-UR6MHSHU.js";var Ee=me(et=>{"use strict";var Pe=class extends Error{constructor(e,t,i){super(i),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},Ze=class extends Pe{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};et.CommanderError=Pe;et.InvalidArgumentError=Ze});var je=me(nt=>{"use strict";var{InvalidArgumentError:Qn}=Ee(),tt=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,i)=>{if(!this.argChoices.includes(t))throw new Qn(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,i):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Xn(l){let e=l.name()+(l.variadic===!0?"...":"");return l.required?"<"+e+">":"["+e+"]"}nt.Argument=tt;nt.humanReadableArgName=Xn});var ot=me(wn=>{"use strict";var{humanReadableArgName:Zn}=je(),it=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(n=>!n._hidden),i=e._getHelpCommand();return i&&!i._hidden&&t.push(i),this.sortSubcommands&&t.sort((n,o)=>n.name().localeCompare(o.name())),t}compareOptions(e,t){let i=n=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return i(e).localeCompare(i(t))}visibleOptions(e){let t=e.options.filter(n=>!n.hidden),i=e._getHelpOption();if(i&&!i.hidden){let n=i.short&&e._findOption(i.short),o=i.long&&e._findOption(i.long);!n&&!o?t.push(i):i.long&&!o?t.push(e.createOption(i.long,i.description)):i.short&&!n&&t.push(e.createOption(i.short,i.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let i=e.parent;i;i=i.parent){let n=i.options.filter(o=>!o.hidden);t.push(...n)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(i=>Zn(i)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((i,n)=>Math.max(i,t.subcommandTerm(n).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((i,n)=>Math.max(i,t.optionTerm(n).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((i,n)=>Math.max(i,t.optionTerm(n).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((i,n)=>Math.max(i,t.argumentTerm(n).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let i="";for(let n=e.parent;n;n=n.parent)i=n.name()+" "+i;return i+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(", ")})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let i=`(${t.join(", ")})`;return e.description?`${e.description} ${i}`:i}return e.description}formatHelp(e,t){let i=t.padWidth(e,t),n=t.helpWidth||80,o=2,r=2;function c(f,x){if(x){let C=`${f.padEnd(i+r)}${x}`;return t.wrap(C,n-o,i+r)}return f}function s(f){return f.join(`
4
- `).replace(/^/gm," ".repeat(o))}let d=[`Usage: ${t.commandUsage(e)}`,""],a=t.commandDescription(e);a.length>0&&(d=d.concat([t.wrap(a,n,0),""]));let u=t.visibleArguments(e).map(f=>c(t.argumentTerm(f),t.argumentDescription(f)));u.length>0&&(d=d.concat(["Arguments:",s(u),""]));let m=t.visibleOptions(e).map(f=>c(t.optionTerm(f),t.optionDescription(f)));if(m.length>0&&(d=d.concat(["Options:",s(m),""])),this.showGlobalOptions){let f=t.visibleGlobalOptions(e).map(x=>c(t.optionTerm(x),t.optionDescription(x)));f.length>0&&(d=d.concat(["Global Options:",s(f),""]))}let p=t.visibleCommands(e).map(f=>c(t.subcommandTerm(f),t.subcommandDescription(f)));return p.length>0&&(d=d.concat(["Commands:",s(p),""])),d.join(`
5
- `)}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}wrap(e,t,i,n=40){let o=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",r=new RegExp(`[\\n][${o}]+`);if(e.match(r))return e;let c=t-i;if(c<n)return e;let s=e.slice(0,i),d=e.slice(i).replace(`\r
3
+ import{a as Kt,b as pn,c as hn}from"./chunk-LY5LHKGG.js";import"./chunk-QXVI3LI4.js";import{i as gn}from"./chunk-NKFXY5TF.js";import"./chunk-3MSXQU2C.js";import"./chunk-OISHNB7D.js";import{c as Pe}from"./chunk-RLSBAT6P.js";import{a as fn,d as $e}from"./chunk-KPF3BPJ5.js";import{a as Ge,b as Ke,c as Jt,d as Yt,f as Qt,g as on,h as Ie,i as sn,j as rn,k as an,l as ln,m as cn,n as dn,o as Qe,p as Xe,q as Ze,r as un,s as mn}from"./chunk-DQASLGFG.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-EEF6OT52.js";import"./chunk-AKKATURY.js";import{b as tn}from"./chunk-34YRU7WM.js";import{a as Zt,b as ge}from"./chunk-RCL22HDJ.js";import"./chunk-MDBXYXSC.js";import"./chunk-R7T6Z6QW.js";import"./chunk-S3DAAAE5.js";import"./chunk-HN7DVSVI.js";import"./chunk-AH4AXJML.js";import{a as en}from"./chunk-AAJSF67A.js";import"./chunk-DGUXTSHM.js";import{c as Mt}from"./chunk-BM25JQ3Z.js";import"./chunk-L5LI2JF4.js";import{a as re}from"./chunk-H2P7UJAU.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import{a as Nt,b as Ft,c as Vt,d as Xt,e as ze,f as Te,g as nn}from"./chunk-FFTIDI5K.js";import{b as zt}from"./chunk-K4PLPKPF.js";import"./chunk-VL57GII7.js";import"./chunk-PQIPYWTP.js";import"./chunk-TQGNNJX5.js";import"./chunk-RD6G3CMN.js";import"./chunk-4ZHU4DLD.js";import"./chunk-4UKCDU64.js";import"./chunk-YCCUBQY4.js";import"./chunk-CZBHDBID.js";import{a as Ut,d as Re,f as Je,g as _,h as Ce,i as Ye,j as Bt}from"./chunk-LOIRZFV3.js";import{a as Lt,f as qt,g as Wt}from"./chunk-VBZIIF5N.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import{a as Oe,b as pe,c as Ht}from"./chunk-VE3SUJMA.js";import"./chunk-Y6IUJZMV.js";import{a as Gt}from"./chunk-LOSNFBZV.js";import{a as Z}from"./chunk-PF7PBYCJ.js";import"./chunk-WFSTRBQF.js";import{a as ee}from"./chunk-S7JV4A3U.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E47GFYXA.js";import"./chunk-7CBWZLRS.js";import"./chunk-UHGECBEN.js";import{a as be,b as Dt}from"./chunk-C6S4IEBC.js";import"./chunk-ELZIC2EH.js";import"./chunk-YB67GRWE.js";import"./chunk-GNJBT6SS.js";import{a as xe,c as se,j as he,v as J}from"./chunk-3QWAABMG.js";import{a as Ae}from"./chunk-HCBYKLMW.js";import{a as X,b as U,c as ve,i as We,j as jt}from"./chunk-C44QQJR4.js";import{a as qe}from"./chunk-6YGTRKDT.js";import{a as _e,c as me,e as oe}from"./chunk-UR6MHSHU.js";var ye=me(tt=>{"use strict";var je=class extends Error{constructor(e,t,i){super(i),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},et=class extends je{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};tt.CommanderError=je;tt.InvalidArgumentError=et});var De=me(it=>{"use strict";var{InvalidArgumentError:ei}=ye(),nt=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,i)=>{if(!this.argChoices.includes(t))throw new ei(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,i):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function ti(c){let e=c.name()+(c.variadic===!0?"...":"");return c.required?"<"+e+">":"["+e+"]"}it.Argument=nt;it.humanReadableArgName=ti});var st=me(bn=>{"use strict";var{humanReadableArgName:ni}=De(),ot=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(n=>!n._hidden),i=e._getHelpCommand();return i&&!i._hidden&&t.push(i),this.sortSubcommands&&t.sort((n,o)=>n.name().localeCompare(o.name())),t}compareOptions(e,t){let i=n=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return i(e).localeCompare(i(t))}visibleOptions(e){let t=e.options.filter(n=>!n.hidden),i=e._getHelpOption();if(i&&!i.hidden){let n=i.short&&e._findOption(i.short),o=i.long&&e._findOption(i.long);!n&&!o?t.push(i):i.long&&!o?t.push(e.createOption(i.long,i.description)):i.short&&!n&&t.push(e.createOption(i.short,i.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let i=e.parent;i;i=i.parent){let n=i.options.filter(o=>!o.hidden);t.push(...n)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(i=>ni(i)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((i,n)=>Math.max(i,t.subcommandTerm(n).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((i,n)=>Math.max(i,t.optionTerm(n).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((i,n)=>Math.max(i,t.optionTerm(n).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((i,n)=>Math.max(i,t.argumentTerm(n).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let i="";for(let n=e.parent;n;n=n.parent)i=n.name()+" "+i;return i+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(", ")})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let i=`(${t.join(", ")})`;return e.description?`${e.description} ${i}`:i}return e.description}formatHelp(e,t){let i=t.padWidth(e,t),n=t.helpWidth||80,o=2,s=2;function l(f,k){if(k){let y=`${f.padEnd(i+s)}${k}`;return t.wrap(y,n-o,i+s)}return f}function r(f){return f.join(`
4
+ `).replace(/^/gm," ".repeat(o))}let d=[`Usage: ${t.commandUsage(e)}`,""],a=t.commandDescription(e);a.length>0&&(d=d.concat([t.wrap(a,n,0),""]));let u=t.visibleArguments(e).map(f=>l(t.argumentTerm(f),t.argumentDescription(f)));u.length>0&&(d=d.concat(["Arguments:",r(u),""]));let m=t.visibleOptions(e).map(f=>l(t.optionTerm(f),t.optionDescription(f)));if(m.length>0&&(d=d.concat(["Options:",r(m),""])),this.showGlobalOptions){let f=t.visibleGlobalOptions(e).map(k=>l(t.optionTerm(k),t.optionDescription(k)));f.length>0&&(d=d.concat(["Global Options:",r(f),""]))}let p=t.visibleCommands(e).map(f=>l(t.subcommandTerm(f),t.subcommandDescription(f)));return p.length>0&&(d=d.concat(["Commands:",r(p),""])),d.join(`
5
+ `)}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}wrap(e,t,i,n=40){let o=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",s=new RegExp(`[\\n][${o}]+`);if(e.match(s))return e;let l=t-i;if(l<n)return e;let r=e.slice(0,i),d=e.slice(i).replace(`\r
6
6
  `,`
7
7
  `),a=" ".repeat(i),m="\\s\u200B",p=new RegExp(`
8
- |.{1,${c-1}}([${m}]|$)|[^${m}]+?([${m}]|$)`,"g"),f=d.match(p)||[];return s+f.map((x,C)=>x===`
9
- `?"":(C>0?a:"")+x.trimEnd()).join(`
10
- `)}};wn.Help=it});var lt=me(at=>{"use strict";var{InvalidArgumentError:ei}=Ee(),rt=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let i=ni(e);this.short=i.shortFlag,this.long=i.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,i)=>{if(!this.argChoices.includes(t))throw new ei(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,i):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return ti(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},st=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,i)=>{this.positiveOptions.has(i)&&this.dualOptions.add(i)})}valueFromOption(e,t){let i=t.attributeName();if(!this.dualOptions.has(i))return!0;let n=this.negativeOptions.get(i).presetArg,o=n!==void 0?n:!1;return t.negate===(o===e)}};function ti(l){return l.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function ni(l){let e,t,i=l.split(/[ |,]+/);return i.length>1&&!/^[[<]/.test(i[1])&&(e=i.shift()),t=i.shift(),!e&&/^-[^-]$/.test(t)&&(e=t,t=void 0),{shortFlag:e,longFlag:t}}at.Option=rt;at.DualOptions=st});var vn=me(_n=>{"use strict";function ii(l,e){if(Math.abs(l.length-e.length)>3)return Math.max(l.length,e.length);let t=[];for(let i=0;i<=l.length;i++)t[i]=[i];for(let i=0;i<=e.length;i++)t[0][i]=i;for(let i=1;i<=e.length;i++)for(let n=1;n<=l.length;n++){let o=1;l[n-1]===e[i-1]?o=0:o=1,t[n][i]=Math.min(t[n-1][i]+1,t[n][i-1]+1,t[n-1][i-1]+o),n>1&&i>1&&l[n-1]===e[i-2]&&l[n-2]===e[i-1]&&(t[n][i]=Math.min(t[n][i],t[n-2][i-2]+1))}return t[l.length][e.length]}function oi(l,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=l.startsWith("--");t&&(l=l.slice(2),e=e.map(r=>r.slice(2)));let i=[],n=3,o=.4;return e.forEach(r=>{if(r.length<=1)return;let c=ii(l,r),s=Math.max(l.length,r.length);(s-c)/s>o&&(c<n?(n=c,i=[r]):c===n&&i.push(r))}),i.sort((r,c)=>r.localeCompare(c)),t&&(i=i.map(r=>`--${r}`)),i.length>1?`
8
+ |.{1,${l-1}}([${m}]|$)|[^${m}]+?([${m}]|$)`,"g"),f=d.match(p)||[];return r+f.map((k,y)=>k===`
9
+ `?"":(y>0?a:"")+k.trimEnd()).join(`
10
+ `)}};bn.Help=ot});var ct=me(lt=>{"use strict";var{InvalidArgumentError:ii}=ye(),rt=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let i=si(e);this.short=i.shortFlag,this.long=i.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,i)=>{if(!this.argChoices.includes(t))throw new ii(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,i):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return oi(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},at=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,i)=>{this.positiveOptions.has(i)&&this.dualOptions.add(i)})}valueFromOption(e,t){let i=t.attributeName();if(!this.dualOptions.has(i))return!0;let n=this.negativeOptions.get(i).presetArg,o=n!==void 0?n:!1;return t.negate===(o===e)}};function oi(c){return c.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function si(c){let e,t,i=c.split(/[ |,]+/);return i.length>1&&!/^[[<]/.test(i[1])&&(e=i.shift()),t=i.shift(),!e&&/^-[^-]$/.test(t)&&(e=t,t=void 0),{shortFlag:e,longFlag:t}}lt.Option=rt;lt.DualOptions=at});var yn=me(Cn=>{"use strict";function ri(c,e){if(Math.abs(c.length-e.length)>3)return Math.max(c.length,e.length);let t=[];for(let i=0;i<=c.length;i++)t[i]=[i];for(let i=0;i<=e.length;i++)t[0][i]=i;for(let i=1;i<=e.length;i++)for(let n=1;n<=c.length;n++){let o=1;c[n-1]===e[i-1]?o=0:o=1,t[n][i]=Math.min(t[n-1][i]+1,t[n][i-1]+1,t[n-1][i-1]+o),n>1&&i>1&&c[n-1]===e[i-2]&&c[n-2]===e[i-1]&&(t[n][i]=Math.min(t[n][i],t[n-2][i-2]+1))}return t[c.length][e.length]}function ai(c,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=c.startsWith("--");t&&(c=c.slice(2),e=e.map(s=>s.slice(2)));let i=[],n=3,o=.4;return e.forEach(s=>{if(s.length<=1)return;let l=ri(c,s),r=Math.max(c.length,s.length);(r-l)/r>o&&(l<n?(n=l,i=[s]):l===n&&i.push(s))}),i.sort((s,l)=>s.localeCompare(l)),t&&(i=i.map(s=>`--${s}`)),i.length>1?`
11
11
  (Did you mean one of ${i.join(", ")}?)`:i.length===1?`
12
- (Did you mean ${i[0]}?)`:""}_n.suggestSimilar=oi});var xn=me(yn=>{"use strict";var ri=_e("events").EventEmitter,ct=_e("child_process"),te=_e("path"),dt=_e("fs"),O=_e("process"),{Argument:si,humanReadableArgName:ai}=je(),{CommanderError:ut}=Ee(),{Help:li}=ot(),{Option:bn,DualOptions:ci}=lt(),{suggestSimilar:Cn}=vn(),mt=class l extends ri{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._outputConfiguration={writeOut:t=>O.stdout.write(t),writeErr:t=>O.stderr.write(t),getOutHelpWidth:()=>O.stdout.isTTY?O.stdout.columns:void 0,getErrHelpWidth:()=>O.stderr.isTTY?O.stderr.columns:void 0,outputError:(t,i)=>i(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,i){let n=t,o=i;typeof n=="object"&&n!==null&&(o=n,n=null),o=o||{};let[,r,c]=e.match(/([^ ]+) *(.*)/),s=this.createCommand(r);return n&&(s.description(n),s._executableHandler=!0),o.isDefault&&(this._defaultCommandName=s._name),s._hidden=!!(o.noHelp||o.hidden),s._executableFile=o.executableFile||null,c&&s.arguments(c),this._registerCommand(s),s.parent=this,s.copyInheritedSettings(this),n?this:s}createCommand(e){return new l(e)}createHelp(){return Object.assign(new li,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,e),this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
13
- - specify the name in Command constructor or using .name()`);return t=t||{},t.isDefault&&(this._defaultCommandName=e._name),(t.noHelp||t.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new si(e,t)}argument(e,t,i,n){let o=this.createArgument(e,t);return typeof i=="function"?o.default(n).argParser(i):o.default(i),this.addArgument(o),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t&&t.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,this;e=e??"help [command]";let[,i,n]=e.match(/([^ ]+) *(.*)/),o=t??"display help for command",r=this.createCommand(i);return r.helpOption(!1),n&&r.arguments(n),o&&r.description(o),this._addImplicitHelpCommand=!0,this._helpCommand=r,this}addHelpCommand(e,t){return typeof e!="object"?(this.helpCommand(e,t),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,t){let i=["preSubcommand","preAction","postAction"];if(!i.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
14
- Expecting one of '${i.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,i){this._exitCallback&&this._exitCallback(new ut(e,t,i)),O.exit(e)}action(e){let t=i=>{let n=this.registeredArguments.length,o=i.slice(0,n);return this._storeOptionsAsProperties?o[n]=this:o[n]=this.opts(),o.push(this),e.apply(this,o)};return this._actionHandler=t,this}createOption(e,t){return new bn(e,t)}_callParseArg(e,t,i,n){try{return e.parseArg(t,i)}catch(o){if(o.code==="commander.invalidArgument"){let r=`${n} ${o.message}`;this.error(r,{exitCode:o.exitCode,code:o.code})}throw o}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let i=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${i}'
15
- - already used by option '${t.flags}'`)}this.options.push(e)}_registerCommand(e){let t=n=>[n.name()].concat(n.aliases()),i=t(e).find(n=>this._findCommand(n));if(i){let n=t(this._findCommand(i)).join("|"),o=t(e).join("|");throw new Error(`cannot add command '${o}' as already have command '${n}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),i=e.attributeName();if(e.negate){let o=e.long.replace(/^--no-/,"--");this._findOption(o)||this.setOptionValueWithSource(i,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(i,e.defaultValue,"default");let n=(o,r,c)=>{o==null&&e.presetArg!==void 0&&(o=e.presetArg);let s=this.getOptionValue(i);o!==null&&e.parseArg?o=this._callParseArg(e,o,s,r):o!==null&&e.variadic&&(o=e._concatValue(o,s)),o==null&&(e.negate?o=!1:e.isBoolean()||e.optional?o=!0:o=""),this.setOptionValueWithSource(i,o,c)};return this.on("option:"+t,o=>{let r=`error: option '${e.flags}' argument '${o}' is invalid.`;n(o,r,"cli")}),e.envVar&&this.on("optionEnv:"+t,o=>{let r=`error: option '${e.flags}' value '${o}' from env '${e.envVar}' is invalid.`;n(o,r,"env")}),this}_optionEx(e,t,i,n,o){if(typeof t=="object"&&t instanceof bn)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let r=this.createOption(t,i);if(r.makeOptionMandatory(!!e.mandatory),typeof n=="function")r.default(o).argParser(n);else if(n instanceof RegExp){let c=n;n=(s,d)=>{let a=c.exec(s);return a?a[0]:d},r.default(o).argParser(n)}else r.default(n);return this.addOption(r)}option(e,t,i,n){return this._optionEx({},e,t,i,n)}requiredOption(e,t,i,n){return this._optionEx({mandatory:!0},e,t,i,n)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,i){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=i,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(i=>{i.getOptionValueSource(e)!==void 0&&(t=i.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){O.versions?.electron&&(t.from="electron");let n=O.execArgv??[];(n.includes("-e")||n.includes("--eval")||n.includes("-p")||n.includes("--print"))&&(t.from="eval")}e===void 0&&(e=O.argv),this.rawArgs=e.slice();let i;switch(t.from){case void 0:case"node":this._scriptPath=e[1],i=e.slice(2);break;case"electron":O.defaultApp?(this._scriptPath=e[1],i=e.slice(2)):i=e.slice(1);break;case"user":i=e.slice(0);break;case"eval":i=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",i}parse(e,t){let i=this._prepareUserArgs(e,t);return this._parseCommand([],i),this}async parseAsync(e,t){let i=this._prepareUserArgs(e,t);return await this._parseCommand([],i),this}_executeSubCommand(e,t){t=t.slice();let i=!1,n=[".js",".ts",".tsx",".mjs",".cjs"];function o(a,u){let m=te.resolve(a,u);if(dt.existsSync(m))return m;if(n.includes(te.extname(u)))return;let p=n.find(f=>dt.existsSync(`${m}${f}`));if(p)return`${m}${p}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let r=e._executableFile||`${this._name}-${e._name}`,c=this._executableDir||"";if(this._scriptPath){let a;try{a=dt.realpathSync(this._scriptPath)}catch{a=this._scriptPath}c=te.resolve(te.dirname(a),c)}if(c){let a=o(c,r);if(!a&&!e._executableFile&&this._scriptPath){let u=te.basename(this._scriptPath,te.extname(this._scriptPath));u!==this._name&&(a=o(c,`${u}-${e._name}`))}r=a||r}i=n.includes(te.extname(r));let s;O.platform!=="win32"?i?(t.unshift(r),t=En(O.execArgv).concat(t),s=ct.spawn(O.argv[0],t,{stdio:"inherit"})):s=ct.spawn(r,t,{stdio:"inherit"}):(t.unshift(r),t=En(O.execArgv).concat(t),s=ct.spawn(O.execPath,t,{stdio:"inherit"})),s.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(u=>{O.on(u,()=>{s.killed===!1&&s.exitCode===null&&s.kill(u)})});let d=this._exitCallback;s.on("close",a=>{a=a??1,d?d(new ut(a,"commander.executeSubCommandAsync","(close)")):O.exit(a)}),s.on("error",a=>{if(a.code==="ENOENT"){let u=c?`searched for local subcommand relative to directory '${c}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",m=`'${r}' does not exist
12
+ (Did you mean ${i[0]}?)`:""}Cn.suggestSimilar=ai});var An=me(xn=>{"use strict";var li=_e("events").EventEmitter,dt=_e("child_process"),te=_e("path"),ut=_e("fs"),O=_e("process"),{Argument:ci,humanReadableArgName:di}=De(),{CommanderError:mt}=ye(),{Help:ui}=st(),{Option:En,DualOptions:mi}=ct(),{suggestSimilar:kn}=yn(),pt=class c extends li{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._outputConfiguration={writeOut:t=>O.stdout.write(t),writeErr:t=>O.stderr.write(t),getOutHelpWidth:()=>O.stdout.isTTY?O.stdout.columns:void 0,getErrHelpWidth:()=>O.stderr.isTTY?O.stderr.columns:void 0,outputError:(t,i)=>i(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,i){let n=t,o=i;typeof n=="object"&&n!==null&&(o=n,n=null),o=o||{};let[,s,l]=e.match(/([^ ]+) *(.*)/),r=this.createCommand(s);return n&&(r.description(n),r._executableHandler=!0),o.isDefault&&(this._defaultCommandName=r._name),r._hidden=!!(o.noHelp||o.hidden),r._executableFile=o.executableFile||null,l&&r.arguments(l),this._registerCommand(r),r.parent=this,r.copyInheritedSettings(this),n?this:r}createCommand(e){return new c(e)}createHelp(){return Object.assign(new ui,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,e),this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
13
+ - specify the name in Command constructor or using .name()`);return t=t||{},t.isDefault&&(this._defaultCommandName=e._name),(t.noHelp||t.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new ci(e,t)}argument(e,t,i,n){let o=this.createArgument(e,t);return typeof i=="function"?o.default(n).argParser(i):o.default(i),this.addArgument(o),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t&&t.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,this;e=e??"help [command]";let[,i,n]=e.match(/([^ ]+) *(.*)/),o=t??"display help for command",s=this.createCommand(i);return s.helpOption(!1),n&&s.arguments(n),o&&s.description(o),this._addImplicitHelpCommand=!0,this._helpCommand=s,this}addHelpCommand(e,t){return typeof e!="object"?(this.helpCommand(e,t),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,t){let i=["preSubcommand","preAction","postAction"];if(!i.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
14
+ Expecting one of '${i.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,i){this._exitCallback&&this._exitCallback(new mt(e,t,i)),O.exit(e)}action(e){let t=i=>{let n=this.registeredArguments.length,o=i.slice(0,n);return this._storeOptionsAsProperties?o[n]=this:o[n]=this.opts(),o.push(this),e.apply(this,o)};return this._actionHandler=t,this}createOption(e,t){return new En(e,t)}_callParseArg(e,t,i,n){try{return e.parseArg(t,i)}catch(o){if(o.code==="commander.invalidArgument"){let s=`${n} ${o.message}`;this.error(s,{exitCode:o.exitCode,code:o.code})}throw o}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let i=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${i}'
15
+ - already used by option '${t.flags}'`)}this.options.push(e)}_registerCommand(e){let t=n=>[n.name()].concat(n.aliases()),i=t(e).find(n=>this._findCommand(n));if(i){let n=t(this._findCommand(i)).join("|"),o=t(e).join("|");throw new Error(`cannot add command '${o}' as already have command '${n}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),i=e.attributeName();if(e.negate){let o=e.long.replace(/^--no-/,"--");this._findOption(o)||this.setOptionValueWithSource(i,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(i,e.defaultValue,"default");let n=(o,s,l)=>{o==null&&e.presetArg!==void 0&&(o=e.presetArg);let r=this.getOptionValue(i);o!==null&&e.parseArg?o=this._callParseArg(e,o,r,s):o!==null&&e.variadic&&(o=e._concatValue(o,r)),o==null&&(e.negate?o=!1:e.isBoolean()||e.optional?o=!0:o=""),this.setOptionValueWithSource(i,o,l)};return this.on("option:"+t,o=>{let s=`error: option '${e.flags}' argument '${o}' is invalid.`;n(o,s,"cli")}),e.envVar&&this.on("optionEnv:"+t,o=>{let s=`error: option '${e.flags}' value '${o}' from env '${e.envVar}' is invalid.`;n(o,s,"env")}),this}_optionEx(e,t,i,n,o){if(typeof t=="object"&&t instanceof En)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let s=this.createOption(t,i);if(s.makeOptionMandatory(!!e.mandatory),typeof n=="function")s.default(o).argParser(n);else if(n instanceof RegExp){let l=n;n=(r,d)=>{let a=l.exec(r);return a?a[0]:d},s.default(o).argParser(n)}else s.default(n);return this.addOption(s)}option(e,t,i,n){return this._optionEx({},e,t,i,n)}requiredOption(e,t,i,n){return this._optionEx({mandatory:!0},e,t,i,n)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,i){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=i,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(i=>{i.getOptionValueSource(e)!==void 0&&(t=i.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){O.versions?.electron&&(t.from="electron");let n=O.execArgv??[];(n.includes("-e")||n.includes("--eval")||n.includes("-p")||n.includes("--print"))&&(t.from="eval")}e===void 0&&(e=O.argv),this.rawArgs=e.slice();let i;switch(t.from){case void 0:case"node":this._scriptPath=e[1],i=e.slice(2);break;case"electron":O.defaultApp?(this._scriptPath=e[1],i=e.slice(2)):i=e.slice(1);break;case"user":i=e.slice(0);break;case"eval":i=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",i}parse(e,t){let i=this._prepareUserArgs(e,t);return this._parseCommand([],i),this}async parseAsync(e,t){let i=this._prepareUserArgs(e,t);return await this._parseCommand([],i),this}_executeSubCommand(e,t){t=t.slice();let i=!1,n=[".js",".ts",".tsx",".mjs",".cjs"];function o(a,u){let m=te.resolve(a,u);if(ut.existsSync(m))return m;if(n.includes(te.extname(u)))return;let p=n.find(f=>ut.existsSync(`${m}${f}`));if(p)return`${m}${p}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=e._executableFile||`${this._name}-${e._name}`,l=this._executableDir||"";if(this._scriptPath){let a;try{a=ut.realpathSync(this._scriptPath)}catch{a=this._scriptPath}l=te.resolve(te.dirname(a),l)}if(l){let a=o(l,s);if(!a&&!e._executableFile&&this._scriptPath){let u=te.basename(this._scriptPath,te.extname(this._scriptPath));u!==this._name&&(a=o(l,`${u}-${e._name}`))}s=a||s}i=n.includes(te.extname(s));let r;O.platform!=="win32"?i?(t.unshift(s),t=Sn(O.execArgv).concat(t),r=dt.spawn(O.argv[0],t,{stdio:"inherit"})):r=dt.spawn(s,t,{stdio:"inherit"}):(t.unshift(s),t=Sn(O.execArgv).concat(t),r=dt.spawn(O.execPath,t,{stdio:"inherit"})),r.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(u=>{O.on(u,()=>{r.killed===!1&&r.exitCode===null&&r.kill(u)})});let d=this._exitCallback;r.on("close",a=>{a=a??1,d?d(new mt(a,"commander.executeSubCommandAsync","(close)")):O.exit(a)}),r.on("error",a=>{if(a.code==="ENOENT"){let u=l?`searched for local subcommand relative to directory '${l}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",m=`'${s}' does not exist
16
16
  - if '${e._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
17
17
  - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
18
- - ${u}`;throw new Error(m)}else if(a.code==="EACCES")throw new Error(`'${r}' not executable`);if(!d)O.exit(1);else{let u=new ut(1,"commander.executeSubCommandAsync","(error)");u.nestedError=a,d(u)}}),this.runningCommand=s}_dispatchSubcommand(e,t,i){let n=this._findCommand(e);n||this.help({error:!0});let o;return o=this._chainOrCallSubCommandHook(o,n,"preSubcommand"),o=this._chainOrCall(o,()=>{if(n._executableHandler)this._executeSubCommand(n,t.concat(i));else return n._parseCommand(t,i)}),o}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(i,n,o)=>{let r=n;if(n!==null&&i.parseArg){let c=`error: command-argument value '${n}' is invalid for argument '${i.name()}'.`;r=this._callParseArg(i,n,o,c)}return r};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((i,n)=>{let o=i.defaultValue;i.variadic?n<this.args.length?(o=this.args.slice(n),i.parseArg&&(o=o.reduce((r,c)=>e(i,c,r),i.defaultValue))):o===void 0&&(o=[]):n<this.args.length&&(o=this.args[n],i.parseArg&&(o=e(i,o,i.defaultValue))),t[n]=o}),this.processedArgs=t}_chainOrCall(e,t){return e&&e.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let i=e,n=[];return this._getCommandAndAncestors().reverse().filter(o=>o._lifeCycleHooks[t]!==void 0).forEach(o=>{o._lifeCycleHooks[t].forEach(r=>{n.push({hookedCommand:o,callback:r})})}),t==="postAction"&&n.reverse(),n.forEach(o=>{i=this._chainOrCall(i,()=>o.callback(o.hookedCommand,this))}),i}_chainOrCallSubCommandHook(e,t,i){let n=e;return this._lifeCycleHooks[i]!==void 0&&this._lifeCycleHooks[i].forEach(o=>{n=this._chainOrCall(n,()=>o(this,t))}),n}_parseCommand(e,t){let i=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(i.operands),t=i.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(i.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let n=()=>{i.unknown.length>0&&this.unknownOption(i.unknown[0])},o=`command:${this.name()}`;if(this._actionHandler){n(),this._processArguments();let r;return r=this._chainOrCallHooks(r,"preAction"),r=this._chainOrCall(r,()=>this._actionHandler(this.processedArgs)),this.parent&&(r=this._chainOrCall(r,()=>{this.parent.emit(o,e,t)})),r=this._chainOrCallHooks(r,"postAction"),r}if(this.parent&&this.parent.listenerCount(o))n(),this._processArguments(),this.parent.emit(o,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(n(),this._processArguments())}else this.commands.length?(n(),this.help({error:!0})):(n(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(i=>{let n=i.attributeName();return this.getOptionValue(n)===void 0?!1:this.getOptionValueSource(n)!=="default"});e.filter(i=>i.conflictsWith.length>0).forEach(i=>{let n=e.find(o=>i.conflictsWith.includes(o.attributeName()));n&&this._conflictingOption(i,n)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],i=[],n=t,o=e.slice();function r(s){return s.length>1&&s[0]==="-"}let c=null;for(;o.length;){let s=o.shift();if(s==="--"){n===i&&n.push(s),n.push(...o);break}if(c&&!r(s)){this.emit(`option:${c.name()}`,s);continue}if(c=null,r(s)){let d=this._findOption(s);if(d){if(d.required){let a=o.shift();a===void 0&&this.optionMissingArgument(d),this.emit(`option:${d.name()}`,a)}else if(d.optional){let a=null;o.length>0&&!r(o[0])&&(a=o.shift()),this.emit(`option:${d.name()}`,a)}else this.emit(`option:${d.name()}`);c=d.variadic?d:null;continue}}if(s.length>2&&s[0]==="-"&&s[1]!=="-"){let d=this._findOption(`-${s[1]}`);if(d){d.required||d.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${d.name()}`,s.slice(2)):(this.emit(`option:${d.name()}`),o.unshift(`-${s.slice(2)}`));continue}}if(/^--[^=]+=/.test(s)){let d=s.indexOf("="),a=this._findOption(s.slice(0,d));if(a&&(a.required||a.optional)){this.emit(`option:${a.name()}`,s.slice(d+1));continue}}if(r(s)&&(n=i),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&i.length===0){if(this._findCommand(s)){t.push(s),o.length>0&&i.push(...o);break}else if(this._getHelpCommand()&&s===this._getHelpCommand().name()){t.push(s),o.length>0&&t.push(...o);break}else if(this._defaultCommandName){i.push(s),o.length>0&&i.push(...o);break}}if(this._passThroughOptions){n.push(s),o.length>0&&n.push(...o);break}n.push(s)}return{operands:t,unknown:i}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let i=0;i<t;i++){let n=this.options[i].attributeName();e[n]=n===this._versionOptionName?this._version:this[n]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
18
+ - ${u}`;throw new Error(m)}else if(a.code==="EACCES")throw new Error(`'${s}' not executable`);if(!d)O.exit(1);else{let u=new mt(1,"commander.executeSubCommandAsync","(error)");u.nestedError=a,d(u)}}),this.runningCommand=r}_dispatchSubcommand(e,t,i){let n=this._findCommand(e);n||this.help({error:!0});let o;return o=this._chainOrCallSubCommandHook(o,n,"preSubcommand"),o=this._chainOrCall(o,()=>{if(n._executableHandler)this._executeSubCommand(n,t.concat(i));else return n._parseCommand(t,i)}),o}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(i,n,o)=>{let s=n;if(n!==null&&i.parseArg){let l=`error: command-argument value '${n}' is invalid for argument '${i.name()}'.`;s=this._callParseArg(i,n,o,l)}return s};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((i,n)=>{let o=i.defaultValue;i.variadic?n<this.args.length?(o=this.args.slice(n),i.parseArg&&(o=o.reduce((s,l)=>e(i,l,s),i.defaultValue))):o===void 0&&(o=[]):n<this.args.length&&(o=this.args[n],i.parseArg&&(o=e(i,o,i.defaultValue))),t[n]=o}),this.processedArgs=t}_chainOrCall(e,t){return e&&e.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let i=e,n=[];return this._getCommandAndAncestors().reverse().filter(o=>o._lifeCycleHooks[t]!==void 0).forEach(o=>{o._lifeCycleHooks[t].forEach(s=>{n.push({hookedCommand:o,callback:s})})}),t==="postAction"&&n.reverse(),n.forEach(o=>{i=this._chainOrCall(i,()=>o.callback(o.hookedCommand,this))}),i}_chainOrCallSubCommandHook(e,t,i){let n=e;return this._lifeCycleHooks[i]!==void 0&&this._lifeCycleHooks[i].forEach(o=>{n=this._chainOrCall(n,()=>o(this,t))}),n}_parseCommand(e,t){let i=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(i.operands),t=i.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(i.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let n=()=>{i.unknown.length>0&&this.unknownOption(i.unknown[0])},o=`command:${this.name()}`;if(this._actionHandler){n(),this._processArguments();let s;return s=this._chainOrCallHooks(s,"preAction"),s=this._chainOrCall(s,()=>this._actionHandler(this.processedArgs)),this.parent&&(s=this._chainOrCall(s,()=>{this.parent.emit(o,e,t)})),s=this._chainOrCallHooks(s,"postAction"),s}if(this.parent&&this.parent.listenerCount(o))n(),this._processArguments(),this.parent.emit(o,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(n(),this._processArguments())}else this.commands.length?(n(),this.help({error:!0})):(n(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(i=>{let n=i.attributeName();return this.getOptionValue(n)===void 0?!1:this.getOptionValueSource(n)!=="default"});e.filter(i=>i.conflictsWith.length>0).forEach(i=>{let n=e.find(o=>i.conflictsWith.includes(o.attributeName()));n&&this._conflictingOption(i,n)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],i=[],n=t,o=e.slice();function s(r){return r.length>1&&r[0]==="-"}let l=null;for(;o.length;){let r=o.shift();if(r==="--"){n===i&&n.push(r),n.push(...o);break}if(l&&!s(r)){this.emit(`option:${l.name()}`,r);continue}if(l=null,s(r)){let d=this._findOption(r);if(d){if(d.required){let a=o.shift();a===void 0&&this.optionMissingArgument(d),this.emit(`option:${d.name()}`,a)}else if(d.optional){let a=null;o.length>0&&!s(o[0])&&(a=o.shift()),this.emit(`option:${d.name()}`,a)}else this.emit(`option:${d.name()}`);l=d.variadic?d:null;continue}}if(r.length>2&&r[0]==="-"&&r[1]!=="-"){let d=this._findOption(`-${r[1]}`);if(d){d.required||d.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${d.name()}`,r.slice(2)):(this.emit(`option:${d.name()}`),o.unshift(`-${r.slice(2)}`));continue}}if(/^--[^=]+=/.test(r)){let d=r.indexOf("="),a=this._findOption(r.slice(0,d));if(a&&(a.required||a.optional)){this.emit(`option:${a.name()}`,r.slice(d+1));continue}}if(s(r)&&(n=i),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&i.length===0){if(this._findCommand(r)){t.push(r),o.length>0&&i.push(...o);break}else if(this._getHelpCommand()&&r===this._getHelpCommand().name()){t.push(r),o.length>0&&t.push(...o);break}else if(this._defaultCommandName){i.push(r),o.length>0&&i.push(...o);break}}if(this._passThroughOptions){n.push(r),o.length>0&&n.push(...o);break}n.push(r)}return{operands:t,unknown:i}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let i=0;i<t;i++){let n=this.options[i].attributeName();e[n]=n===this._versionOptionName?this._version:this[n]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
19
19
  `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
20
20
  `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
21
- `),this.outputHelp({error:!0}));let i=t||{},n=i.exitCode||1,o=i.code||"commander.error";this._exit(n,o,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in O.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,O.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new ci(this.options),t=i=>this.getOptionValue(i)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(i));this.options.filter(i=>i.implied!==void 0&&t(i.attributeName())&&e.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach(i=>{Object.keys(i.implied).filter(n=>!t(n)).forEach(n=>{this.setOptionValueWithSource(n,i.implied[n],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let i=r=>{let c=r.attributeName(),s=this.getOptionValue(c),d=this.options.find(u=>u.negate&&c===u.attributeName()),a=this.options.find(u=>!u.negate&&c===u.attributeName());return d&&(d.presetArg===void 0&&s===!1||d.presetArg!==void 0&&s===d.presetArg)?d:a||r},n=r=>{let c=i(r),s=c.attributeName();return this.getOptionValueSource(s)==="env"?`environment variable '${c.envVar}'`:`option '${c.flags}'`},o=`error: ${n(e)} cannot be used with ${n(t)}`;this.error(o,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let n=[],o=this;do{let r=o.createHelp().visibleOptions(o).filter(c=>c.long).map(c=>c.long);n=n.concat(r),o=o.parent}while(o&&!o._enablePositionalOptions);t=Cn(e,n)}let i=`error: unknown option '${e}'${t}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,i=t===1?"":"s",o=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${i} but got ${e.length}.`;this.error(o,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach(o=>{n.push(o.name()),o.alias()&&n.push(o.alias())}),t=Cn(e,n)}let i=`error: unknown command '${e}'${t}`;this.error(i,{code:"commander.unknownCommand"})}version(e,t,i){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",i=i||"output the version number";let n=this.createOption(t,i);return this._versionOptionName=n.attributeName(),this._registerOption(n),this.on("option:"+n.name(),()=>{this._outputConfiguration.writeOut(`${e}
22
- `),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(e);if(i){let n=[i.name()].concat(i.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${n}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(i=>ai(i));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}nameFromFilename(e){return this._name=te.basename(e,te.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp();return t.helpWidth===void 0&&(t.helpWidth=e&&e.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),t.formatHelp(this,t)}_getHelpContext(e){e=e||{};let t={error:!!e.error},i;return t.error?i=n=>this._outputConfiguration.writeErr(n):i=n=>this._outputConfiguration.writeOut(n),t.write=e.write||i,t.command=this,t}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let i=this._getHelpContext(e);this._getCommandAndAncestors().reverse().forEach(o=>o.emit("beforeAllHelp",i)),this.emit("beforeHelp",i);let n=this.helpInformation(i);if(t&&(n=t(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");i.write(n),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",i),this._getCommandAndAncestors().forEach(o=>o.emit("afterAllHelp",i))}helpOption(e,t){return typeof e=="boolean"?(e?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(e=e??"-h, --help",t=t??"display help for command",this._helpOption=this.createOption(e,t),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this}help(e){this.outputHelp(e);let t=O.exitCode||0;t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let i=["beforeAll","before","after","afterAll"];if(!i.includes(e))throw new Error(`Unexpected value for position to addHelpText.
23
- Expecting one of '${i.join("', '")}'`);let n=`${e}Help`;return this.on(n,o=>{let r;typeof t=="function"?r=t({error:o.error,command:o.command}):r=t,r&&o.write(`${r}
24
- `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(n=>t.is(n))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function En(l){return l.map(e=>{if(!e.startsWith("--inspect"))return e;let t,i="127.0.0.1",n="9229",o;return(o=e.match(/^(--inspect(-brk)?)$/))!==null?t=o[1]:(o=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=o[1],/^\d+$/.test(o[3])?n=o[3]:i=o[3]):(o=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=o[1],i=o[3],n=o[4]),t&&n!=="0"?`${t}=${i}:${parseInt(n)+1}`:e})}yn.Command=mt});var On=me(B=>{"use strict";var{Argument:Sn}=je(),{Command:pt}=xn(),{CommanderError:di,InvalidArgumentError:An}=Ee(),{Help:ui}=ot(),{Option:kn}=lt();B.program=new pt;B.createCommand=l=>new pt(l);B.createOption=(l,e)=>new kn(l,e);B.createArgument=(l,e)=>new Sn(l,e);B.Command=pt;B.Option=kn;B.Argument=Sn;B.Help=ui;B.CommanderError=di;B.InvalidArgumentError=An;B.InvalidOptionArgumentError=An});var xe=oe(Be(),1);import $ from"process";import*as zn from"tls";function gn(){let l=zn;if(!(typeof l.getCACertificates!="function"||typeof l.setDefaultCACertificates!="function"))try{let e=n=>typeof n=="string",t=l.getCACertificates("default").filter(e),i=l.getCACertificates("system").filter(e);l.setDefaultCACertificates([...new Set([...t,...i])])}catch{}}var Rn=oe(On(),1),{program:Fi,createCommand:Vi,createArgument:Mi,createOption:Hi,CommanderError:Li,InvalidArgumentError:Ui,InvalidOptionArgumentError:Bi,Command:Tn,Argument:qi,Option:Y,Help:Wi}=Rn.default;import{join as ne,resolve as bi}from"path";var ft=oe(Be(),1);var V=oe(Be(),1);var ae=oe(ke(),1);function In({steps:l,bifurcationInfo:e,perFlowMetadata:t}){return!e||e.isSingleFlow||!t||t.length<=1?null:(0,ae.jsx)(X,{flexDirection:"column",children:t.map((i,n)=>{let o=l[n],r=o?.children??[],c=r.filter(p=>p.status==="passed").length,s=r.filter(p=>p.status==="failed").length,d=c+s,a=r.reduce((p,f)=>p+(f.duration??0),0),u=o?.status==="failed"?"failed":"passed",m=e.flows[n]??o?.objective??`Flow ${n+1}`;return(0,ae.jsxs)(X,{flexDirection:"column",marginTop:n>0?1:0,children:[(0,ae.jsxs)(X,{marginLeft:1,children:[(0,ae.jsx)(U,{color:J.purple,bold:!0,children:"Flow "+(n+1)+": "}),(0,ae.jsx)(U,{color:J.purple,children:m})]}),(0,ae.jsx)(Te,{status:u,summary:i?.summary??"",duration:a,steps:d,stepsPassed:c,stepsFailed:s,reason:i?.error_message??void 0,creditsConsumed:i?.credits_consumed??void 0})]},`flow-summary-${n}`)})})}var T=oe(ke(),1);function $n({config:l,spawnOpts:e,cancelRef:t,banner:i,onComplete:n,onStepEnd:o,onReasoning:r,onStepComplete:c}){let{exit:s}=Pt(),{append:d}=jt(),a=Qt(o,void 0,r,c),u=(0,V.useRef)(!1),m=(0,V.useRef)(!1),[p,f]=(0,V.useState)("");(0,V.useEffect)(()=>{u.current||(u.current=!0,a.startRun(l,e))},[l,e,a]),(0,V.useEffect)(()=>{t&&(t.current=()=>a.cancelRun())},[t,a]);let x=(0,V.useRef)(0);qe((g,E)=>{E.ctrl&&g==="c"&&(a.isRunning?(x.current++,x.current>=2?s():a.cancelRun()):s())}),qe((g,E)=>{a.askingUser&&(E.return?(a.sendAnswer(p),f("")):E.backspace||E.delete?f(y=>y.slice(0,-1)):g&&!E.ctrl&&!E.meta&&f(y=>y+g))},{isActive:!!a.askingUser}),(0,V.useEffect)(()=>{if(!a.isRunning&&a.lastRunEnd&&!m.current){m.current=!0;let{passed:g,failed:E,total:y}=Ye(a.steps),P=a.bifurcationInfo;n({lastRunEnd:a.lastRunEnd,stepsPassed:g,stepsFailed:E,stepsTotal:y,hadError:!1,bifurcationFlows:P&&!P.isSingleFlow?P.flows:null}),s()}},[a.isRunning,a.lastRunEnd,a.steps,n,s]),(0,V.useEffect)(()=>{a.runError&&!a.isRunning&&!m.current&&(m.current=!0,n({lastRunEnd:null,stepsPassed:0,stepsFailed:0,stepsTotal:0,hadError:!0,bifurcationFlows:null}),s())},[a.runError,a.isRunning,n,s]);let C=a.lastRunEnd?(()=>{let{passed:g,failed:E,total:y}=Ye(a.steps);return{status:a.lastRunEnd.status,duration:a.lastRunEnd.duration??0,summary:a.lastRunEnd.summary??"",stepsPassed:g,stepsFailed:E,stepsTotal:y,reason:a.lastRunEnd.reason,finalState:a.lastRunEnd.final_state,creditsConsumed:a.lastRunEnd.credits_consumed}})():null,S=(0,V.useRef)(!1);return(0,V.useEffect)(()=>{S.current||!i||(S.current=!0,d((0,T.jsxs)(X,{flexDirection:"column",marginBottom:1,children:[(0,T.jsxs)(X,{borderStyle:"round",borderColor:"#dc4e08",paddingX:2,children:[(0,T.jsx)(U,{color:"#ff9500",bold:!0,children:"KaneAI CLI"}),(0,T.jsx)(U,{color:J.dim,children:" \u2502 "}),(0,T.jsx)(U,{color:J.orange,children:i.model}),(0,T.jsx)(U,{color:J.dim,children:" \u2502 "}),(0,T.jsx)(U,{color:J.dim,children:i.auth})]}),i.status?.map((g,E)=>(0,T.jsx)(U,{color:J.dim,children:g},E))]})))},[]),(0,T.jsxs)(X,{flexDirection:"column",children:[(()=>{let g=Ft({isRunning:a.isRunning,bifurcationInfo:a.bifurcationInfo,steps:a.steps,cmInitCounts:a.cmInitCounts,replayInfo:a.replayInfo});return g?(0,T.jsx)(Nt,{label:g.label,hasBifurcation:g.hasBifurcation}):null})(),a.steps.length>0&&(0,T.jsx)(Dt,{steps:a.steps,bifurcated:!!a.bifurcationInfo&&!a.bifurcationInfo.isSingleFlow,flows:a.bifurcationInfo?.flows,cmInitCounts:a.cmInitCounts,staticSteps:!0,onStepCommit:d}),a.askingUser&&(0,T.jsxs)(X,{flexDirection:"column",marginTop:1,children:[(0,T.jsxs)(U,{color:J.orange,children:['Agent is asking: "',a.askingUser,'"']}),(0,T.jsxs)(U,{children:["> ",p,"\u2588"]})]}),a.runError&&(0,T.jsx)(tn,{message:a.runError,code:"RUNNER_ERROR"}),C&&a.lastRunEnd&&(0,T.jsx)(In,{steps:a.steps,bifurcationInfo:a.bifurcationInfo,perFlowMetadata:a.lastRunEnd.per_flow_metadata??[]}),C&&(0,T.jsx)(Te,{status:C.status==="passed"?"passed":"failed",summary:C.summary??"",duration:C.duration,steps:C.stepsTotal,stepsPassed:C.stepsPassed,stepsFailed:C.stepsFailed,reason:C.reason,creditsConsumed:C.creditsConsumed})]})}import{createInterface as mi}from"readline";function ge(l){process.stdout.write(JSON.stringify(l)+`
25
- `)}async function Pn(l,e,t){let i=Yt(l,e);$e().then(u=>{u&&ge({type:"update_available",current:u.current,latest:u.latest,severity:u.severity})}).catch(()=>{});let n=mi({input:process.stdin});n.on("line",u=>{try{let m=JSON.parse(u);m.type==="user_response"?i.sendUserResponse(m.answer??""):m.type==="cancel"&&i.sendCancel(m.reason??"")}catch{}});let o=null,r=!1,c=0,s=null,d=0,a=!1;for await(let u of i.events)switch(u.type){case"run_start":a&&d++;break;case"step_start":{let m=u;t?.onStepLog?.("STEP_START",`Step ${m.index} started`,{index:m.index,objective:m.objective,child_id:m.child_id});let p={step:m.index+1,status:"running",remark:m.objective??`Step ${m.index+1}`};m.child_id&&(p.child_id=m.child_id),ge(p);break}case"step_event":u.event==="reasoning"&&u.detail&&u.detail!=="reasoning"&&t?.onReasoning?.(u.detail),t?.onStepLog?.("STEP_EVENT",`Step ${u.index} ${u.event}`,{index:u.index,phase:u.event,action_type:u.action_type,detail:u.detail,child_id:u.child_id});break;case"step_end":{let m=u;t?.onStepLog?.("STEP_END",`Step ${m.index} ${m.status}`,{index:m.index,status:m.status,duration:m.duration,summary:m.summary,child_id:m.child_id}),t?.onStepComplete?.(),c++;let p={step:m.index+1,status:m.status==="passed"?"done":"failed",remark:m.summary??""};m.child_id&&(p.child_id=m.child_id),ge(p);let f=a?Math.max(0,d-1):0;t?.onStepEnd?.(m.index,f);break}case"bifurcation":{let m=u,p=m.flows??[],f=m.count??p.length;(m.is_single_flow??f<=1)||(s=p,a=!0,d=0),ge({type:"bifurcation",flows:p,count:f});break}case"ask_user":{let m=u;ge({type:"ask_user",question:m.question,step_index:m.step_index,...m.options?{options:m.options}:{}});break}case"run_end":{o=u;break}case"error":{r=!0,ge({type:"error",message:u.message});break}default:break}return n.close(),await i.exited,{lastRunEnd:o,stepsTotal:c,hadError:r,bifurcationFlows:s}}import{join as pi}from"path";function jn(l){let e=l.command("testmd").description("Manage test.md files (run, list, status, delete, export)").action(async()=>{process.stdin.isTTY||(process.stderr.write(`error: testmd requires a sub-action in non-TTY mode (run | list | status | delete | export)
26
- `),process.exit(2));let{runListTui:t,resolveCurrentOrgId:i}=await import("./testmd-actions-MQ3N7IS4.js"),n=await i({});n.ok||process.exit(n.code),process.exit(await t(n.orgId))});hi(e),gi(e),wi(e),_i(e),vi(e)}function fi(l,e){return e.concat(l)}function hi(l){l.command("run <path>").description("Run a test from a *_test.md file").option("--headless","Run Chrome in headless mode").option("--max-steps <n>","Max agent steps","30").option("--timeout <seconds>","Kill after N seconds").option("--cdp-endpoint <url>","Connect to existing Chrome via CDP").option("--ws-endpoint <url>","Playwright WebSocket endpoint").option("--global-context <file>",`Override global context (default: ${pi(re,"global-memory.md")})`).option("--local-context <file>","Override local context (default: .testmuai/context.md in cwd)").addOption(new Y("--model <name>","Model override").hideHelp()).option("--variables <json>","Inline variables JSON").option("--variables-file <path>","Load variables from file").option("--session-context <json>","Session context JSON (prior runs)").addOption(new Y("--cft","Use Playwright Chromium instead of managed Chrome").hideHelp()).option("--username <user>","Basic auth username (skip OAuth)").option("--access-key <key>","Basic auth access key").option("--env <name>","Environment (prod or stage)").option("--mode <name>","Run mode: action | testing").option("--agent","Agent mode: plain NDJSON output, no colors/UI").option("--task-skills","Enable domain-specific task skills (experimental)").addOption(new Y("--local","Skip TMS integration (no uploads, no variables/secrets push)").hideHelp()).option("--code-export","Generate code export after upload").option("--code-language <lang>","Code-export language (python|javascript)").option("--name <name>","Persist session under this name").option("--skip-code-validation","Skip post-codegen validation").option("--no-skip-code-validation","Force post-codegen validation").option("--on-lock-conflict <mode>","lock conflict policy: readonly|fail|wait",e=>{if(e!=="readonly"&&e!=="fail"&&e!=="wait")throw new Error(`--on-lock-conflict must be readonly|fail|wait, got: ${e}`);return e}).option("--push","always commit at end-of-run (no retry semantics)").option("--retry","on replay failure, full-restart with shrinking replay window; falls back to complete re-author after --retry-count attempts").option("--retry-count <n>","max replay restart attempts before falling back to complete re-author (default: 3)",e=>{let t=parseInt(e,10);if(Number.isNaN(t)||t<0)throw new Error(`--retry-count must be a non-negative integer, got: ${e}`);return e}).option("--author","bypass walker; force fresh test+testcase in TMS; replace local output entirely").action(async(e,t)=>{let{runTestMdFile:i}=await import("./run-test-md-H2X6CUIX.js"),n=await i(e,t);process.exit(n)})}function gi(l){l.command("list").description("List *_test.md files in the working directory (recursive)").option("--root <dir>","Root directory to scan (default: cwd)").option("--ignore <name>","Skip a directory by name (repeatable)",fi,[]).option("--json","Force NDJSON output even on TTY").action(async e=>{let{runListAction:t,resolveCurrentOrgId:i}=await import("./testmd-actions-MQ3N7IS4.js"),n=await i({json:!!e.json});n.ok||process.exit(n.code),process.exit(await t(e,n.orgId))})}function wi(l){l.command("status <path>").description("Print local meta.json for a *_test.md (no live TMS check in v1)").action(async e=>{let{runStatusAction:t,resolveCurrentOrgId:i}=await import("./testmd-actions-MQ3N7IS4.js"),n=await i({});n.ok||process.exit(n.code),process.exit(await t(e,n.orgId))})}function _i(l){l.command("delete <path>").description("Remove output-<stem>/ and the *_test.md source file (TMS untouched)").option("--yes","Skip confirmation prompt (required in non-TTY)").action(async(e,t)=>{let{runDeleteAction:i,resolveCurrentOrgId:n}=await import("./testmd-actions-MQ3N7IS4.js"),o=await n({});o.ok||process.exit(o.code),process.exit(await i(e,!!t.yes,o.orgId))})}function vi(l){l.command("export <path>").description("Generate standalone test code (Playwright)").option("--language <lang>","python|javascript (falls back to tui-config)").option("--output <dir>","Override output dir (default: output-<stem>/playwright-<lang>-code/)").option("--force","Overwrite an existing local export").action(async(e,t)=>{let{runExportAction:i,resolveCurrentOrgId:n}=await import("./testmd-actions-MQ3N7IS4.js"),o=await n({});o.ok||process.exit(o.code),process.exit(await i(e,t,o.orgId))})}function ye(l){let e=new Tn;if(e.name("kane-cli").version(Ae).showHelpAfterError("(run `kane-cli --help` to see all commands; `-h` and `help` also work)"),e.on("command:*",i=>{e.error(`error: unknown command '${i[0]}'`,{exitCode:2,code:"commander.unknownCommand"})}),l[0]==="--help"||l[0]==="-h"||l[0]==="help"){(async()=>{let{HelpView:i}=await import("./HelpView-KBFE4EMP.js"),{render:n}=await import("./build-JIKYOZUH.js"),o=await import("./react-QWOAB3TB.js"),{waitUntilExit:r}=n(o.default.createElement(i));await r(),_(0,"Help displayed")})();return}e.command("login").option("--oauth","Login via OAuth (opens browser)").option("--username <user>","Basic auth username").option("--access-key <key>","Basic auth access key").addOption(new Y("--env <name>","Environment (prod or stage)").default("prod").hideHelp()).option("--profile <name>","Profile name","default").option("--project-id <id>","Project ID (skip picker)").option("--folder-id <id>","Folder ID (skip picker)").addOption(new Y("--model <name>","Model").default("v16-alpha").hideHelp()).option("--chrome-profile <path>","Chrome profile path").action(async i=>{let n=new Z,o=new se,r=i.env,c=i.profile;if(!process.stdin.isTTY||i.oauth||i.username){if(n.setDefaultEnv(r),i.oauth)await new Wt(c,r,n).login(),console.log(`Logged in as ${c} [${r}] via OAuth`);else if(i.username&&i.accessKey){try{let{validateBasicAuth:S}=await import("./validate-basic-VFJZKHOE.js");await S(r,i.username,i.accessKey)}catch{console.error("Credentials not valid. Please use valid credentials."),_(1,"Invalid basic-auth credentials");return}n.saveBasicAuth(c,r,{username:i.username,access_key:i.accessKey}),console.log(`Logged in as ${c} [${r}] via basic auth`)}else console.error("Provide --oauth, or --username and --access-key"),_(1,"Missing --oauth or credentials for login");n.setActiveProfile(c),o.set("model",i.model),i.chromeProfile&&o.set("chrome_profile_path",i.chromeProfile);let C=null;if(i.username&&i.accessKey)C={username:i.username,access_key:i.accessKey};else try{let g=await he({creds:n,env:r,log:()=>{}});g.resolvedCreds&&(C={username:g.resolvedCreds.username,access_key:g.resolvedCreds.access_key})}catch{}if(i.projectId&&(pe(n,o,c,r,{projectId:i.projectId}),console.log(`Project set to ${i.projectId}`)),i.folderId&&(pe(n,o,c,r,{folderId:i.folderId}),console.log(`Folder set to ${i.folderId}`)),C&&(!i.projectId||!i.folderId))try{let S=await Ht({creds:n,config:o,profile:c,env:r,tmsCreds:C,log:()=>{}});i.projectId||console.log(`Auto-selected project: ${S.projectName} (${S.projectId})`),i.folderId||console.log(`Auto-selected folder: ${S.folderName} (${S.folderId})`)}catch(S){console.warn(`Could not auto-select project/folder: ${S instanceof Error?S.message:S}`)}Oe(n,o,c,r),console.log("Setup complete."),_(0,"Setup complete")}let{SingleShotApp:s}=await import("./SingleShotApp-V2UTGNZO.js"),{ScrollbackProvider:d}=await import("./scrollback-6GINSTL2.js"),{render:a}=await import("./build-JIKYOZUH.js"),u=await import("./react-QWOAB3TB.js"),m={current:null},p={current:!1},{waitUntilExit:f,unmount:x}=a(u.default.createElement(d,null,u.default.createElement(s,{resultRef:m,mode:"login",loginCompleteRef:p})),{exitOnCtrlC:!1});Ce(()=>x()),await f();try{process.stdin.setRawMode?.(!1)}catch{}process.stdout.write("\x1B[?25h"),p.current&&console.log("Login setup complete."),process.exit(0)}),e.command("logout").action(async()=>{let i=new Z,n=i.getActiveProfile();if(!n){console.log("No active profile to logout");return}let o=i.getDefaultEnv(),r=await Gt(i,n,o),c=new se;r.switchedTo?(Oe(i,c,r.switchedTo.profile,r.switchedTo.env),console.log(`Logged out ${r.profile} [${r.env}]. Switched to ${r.switchedTo.profile} [${r.switchedTo.env}]`)):(c.save({project_id:null,project_name:null,folder_id:null,folder_name:null}),console.log(`Logged out ${r.profile} [${r.env}]. No profiles remaining.`))}),e.command("whoami").option("--profile <name>","Profile name").action(async i=>{let n=new Z,o=i.profile??n.getActiveProfile()??"default",r=n.getDefaultEnv(),c=n.loadCredentials(o,r),s=n.loadBasicAuth(o,r),d="none",a=s?.username,u,m,p,f;if(s?d="basic":c&&(d="oauth",m=new Date(c.expires_at*1e3).toISOString().slice(0,10)),d==="none")u="missing";else try{let E=await he({creds:n,env:r,log:()=>{}});if(E.resolvedCreds)p="verified",u="valid",a=E.resolvedCreds.username??a;else{let{classifyAuthFailure:y}=await import("./resolver-IDCGRPFJ.js");y(E.resolver.lastError)==="auth"?(p="rejected",u="expired",f="Credentials rejected by the server \u2014 re-login or rotate your access key"):(p="unreachable",f=E.resolver.lastError?.message)}}catch(E){let y=E;y.code==="refresh_failed"?(p="rejected",u="expired",f="OAuth token refresh failed \u2014 run 'kane-cli login'"):y.code==="not_authenticated"?(d="none",u="missing"):(p="unreachable",f=y.message)}let{WhoamiView:x}=await import("./WhoamiView-LR2EFCTK.js"),{render:C}=await import("./build-JIKYOZUH.js"),S=await import("./react-QWOAB3TB.js"),{waitUntilExit:g}=C(S.default.createElement(x,{profile:o,env:r,authenticated:p==="verified",authMethod:d,username:a,tokenStatus:u,expiresAt:m,serverStatus:p,detail:f}));await g(),d==="none"?_(1,"whoami: not-authenticated"):p&&p!=="verified"&&_(p==="unreachable"?3:1,`whoami: ${p}`)}),e.command("config <action> [value]").option("--agent","Force JSON output for `show` (auto-on when stdin is not a TTY)").action(async(i,n,o)=>{let r=new se,c=new Z;if(i==="show"){let s=r.load(),d=c.getActiveProfile()??"default",a=c.getDefaultEnv(),u=c.loadProfileConfig(d,a)??{},m=u.project_id??s.project_id??null,p=u.project_name??s.project_name??null,f=u.folder_id??s.folder_id??null,x=u.folder_name??s.folder_name??null,C=c.loadBasicAuth(d,a),S=c.loadCredentials(d,a),g=C?`basic (${C.username})`:S?"oauth":"not configured";if(!!o?.agent||!process.stdin.isTTY||!process.stdout.isTTY){let de=ee(a);process.stdout.write(`${JSON.stringify({profile:d,env:a,auth:g,project_id:m,project_name:p,folder_id:f,folder_name:x,model:s.model,mode:s.mode,window_size:`${s.window_size.width}x${s.window_size.height}`,chrome_profile:s.chrome_profile_path,default_url:fe,controller_base_url:de.controllerBaseUrl,tms_base_url:de.tmsBaseUrl})}
27
- `),_(0,"config show complete");return}let{ConfigView:y}=await import("./ConfigView-OOQYCHWM.js"),{render:P}=await import("./build-JIKYOZUH.js"),q=await import("./react-QWOAB3TB.js"),{waitUntilExit:ce}=P(q.default.createElement(y,{model:s.model,authLabel:g,profile:d,env:a,defaultUrl:fe,projectId:m,projectName:p,folderId:f,folderName:x,windowSize:`${s.window_size.width}x${s.window_size.height}`,chromeProfile:s.chrome_profile_path}));await ce()}else if(i==="set-window"&&n){let s=n.split("x").map(Number),[d,a]=s;!d||!a||!Number.isInteger(d)||!Number.isInteger(a)?console.error("Invalid format. Use: kane-cli config set-window WIDTHxHEIGHT"):d<800||d>3840?console.error(`Width must be between 800 and 3840 (got ${d})`):a<600||a>2160?console.error(`Height must be between 600 and 2160 (got ${a})`):(r.set("window_size",{width:d,height:a}),console.log(`Window size set to ${d}x${a}`))}else if(i==="set-mode"){if(n!=="action"&&n!=="testing"){console.error("Mode must be 'action' or 'testing'."),_(1,"Invalid mode");return}r.set("mode",n),console.log(`Mode set to ${n}`)}else if(i==="chrome-profile"){if(n||!process.stdin.isTTY){n||(console.error("Usage: kane-cli config chrome-profile <path>"),_(1,"Missing chrome-profile path")),r.set("chrome_profile_path",n),console.log(`Chrome profile set to ${n}`);return}let{ChromeProfilePicker:s}=await import("./ChromeProfilePicker-63JS7QX6.js"),{render:d}=await import("./build-JIKYOZUH.js"),a=await import("./react-QWOAB3TB.js");await new Promise(u=>{let{unmount:m}=d(a.default.createElement(s,{currentPath:r.load().chrome_profile_path,onSelect:p=>{r.set("chrome_profile_path",p),console.log(`Chrome profile set to ${p}`),m(),u()},onCancel:()=>{m(),u()}}))})}else if(i==="project"){if(n||!process.stdin.isTTY){n||(console.error("Usage: kane-cli config project <project-id>"),_(1,"Missing project ID"));let E=c.getActiveProfile()??"default",y=c.getDefaultEnv();pe(c,r,E,y,{projectId:n}),console.log(`Project set to ${n}`);return}let s=c.getDefaultEnv(),d=ee(s),a=c.getActiveProfile()??"default",{resolveTmsBasicAuth:u,formatAuthResolutionError:m}=await import("./list-commands-Y6A3XR4L.js"),p=await u(a,s,{});if(!p.ok){let{message:E}=m(a,s,p);process.stderr.write(E),_(2,`${p.reason} for "${a}" [${s}]`);return}let{ProjectPicker:f}=await import("./ProjectPicker-NLEAW232.js"),{AuthResolver:x}=await import("./resolver-IDCGRPFJ.js"),{render:C}=await import("./build-JIKYOZUH.js"),S=await import("./react-QWOAB3TB.js"),g=new x(d.controllerBaseUrl,async()=>null,{username:p.creds.username,access_key:p.creds.access_key});await g.resolve(),await new Promise(E=>{let{unmount:y}=C(S.default.createElement(f,{resolver:g,currentProjectId:r.load().project_id,env:s,onSelect:(P,q)=>{let ce=c.getActiveProfile()??"default",de=c.getDefaultEnv();pe(c,r,ce,de,{projectId:P,projectName:q}),console.log(`Project set to ${q} (${P})`),y(),E()},onCancel:()=>{y(),E()}}))})}else if(i==="folder"){if(n||!process.stdin.isTTY){if(n||(console.error("Usage: kane-cli config folder <folder-id>"),_(1,"Missing folder ID")),!r.load().project_id){console.log("Select a project first: kane-cli config project <id>");return}let P=c.getActiveProfile()??"default",q=c.getDefaultEnv();pe(c,r,P,q,{folderId:n}),console.log(`Folder set to ${n}`);return}let s=r.load();if(!s.project_id){console.log("Select a project first: kane-cli config project");return}let d=c.getDefaultEnv(),a=ee(d),u=c.getActiveProfile()??"default",{resolveTmsBasicAuth:m,formatAuthResolutionError:p}=await import("./list-commands-Y6A3XR4L.js"),f=await m(u,d,{});if(!f.ok){let{message:y}=p(u,d,f);process.stderr.write(y),_(2,`${f.reason} for "${u}" [${d}]`);return}let{FolderPicker:x}=await import("./FolderPicker-FILMS64I.js"),{AuthResolver:C}=await import("./resolver-IDCGRPFJ.js"),{render:S}=await import("./build-JIKYOZUH.js"),g=await import("./react-QWOAB3TB.js"),E=new C(a.controllerBaseUrl,async()=>null,{username:f.creds.username,access_key:f.creds.access_key});await E.resolve(),await new Promise(y=>{let{unmount:P}=S(g.default.createElement(x,{resolver:E,projectId:s.project_id,currentFolderId:s.folder_id,env:d,onSelect:(q,ce)=>{let de=c.getActiveProfile()??"default",Se=c.getDefaultEnv();pe(c,r,de,Se,{folderId:q,folderName:ce}),console.log(`Folder set to ${ce} (${q})`),P(),y()},onCancel:()=>{P(),y()}}))})}else console.log("Usage: kane-cli config show|set-window|set-mode|chrome-profile|project|folder")}),e.command("run").argument("<objective>","Test objective (use {{var}} to reference variables)").option("--headless","Run Chrome in headless mode").option("--max-steps <n>","Maximum agent steps","30").option("--timeout <seconds>","Kill run after N seconds").option("--cdp-endpoint <url>","Connect to existing Chrome CDP endpoint").option("--ws-endpoint <url>","Connect via Playwright WebSocket (e.g. LambdaTest wss:// URL)").option("--global-context <file>",`Override global context markdown (default: ${ne(re,"global-memory.md")})`).option("--local-context <file>","Override local context markdown (default: .testmuai/context.md in cwd)").addOption(new Y("--model <name>","Model override").hideHelp()).option("--variables <json>",`Inline variables JSON, e.g. '{"user": {"value": "alice"}}'`).option("--variables-file <path>","Load variables from a JSON file").option("--session-context <json>","Session context JSON (prior runs)").addOption(new Y("--cft","Use Playwright Chromium instead of managed Chrome").hideHelp()).option("--username <user>","Basic auth username (skip OAuth)").option("--access-key <key>","Basic auth access key (skip OAuth)").option("--env <name>","Environment (prod or stage)").option("--mode <name>","Run mode: 'action' (strict \u2014 hard-stop on auth/blocked/error) or 'testing' (lenient \u2014 fall through). Overrides config; default: testing.").option("--agent","Agent mode: plain NDJSON output, no colors/UI").option("--task-skills","Enable domain-specific task skills (experimental)").addOption(new Y("--local","Skip TMS integration (no uploads, no variables/secrets push)").hideHelp()).option("--code-export","Generate code export after upload").option("--code-language <lang>","Code export language: python (default) | javascript").option("--name <name>","Persist the session under this name (validated [a-zA-Z0-9_-]+)").option("--chrome-profile <path>","Chrome user-data-dir for this run (overrides stored config)").option("--skip-code-validation","Skip post-codegen worker-side validation").option("--no-skip-code-validation","Force post-codegen worker-side validation").addHelpText("after",`
21
+ `),this.outputHelp({error:!0}));let i=t||{},n=i.exitCode||1,o=i.code||"commander.error";this._exit(n,o,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in O.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,O.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new mi(this.options),t=i=>this.getOptionValue(i)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(i));this.options.filter(i=>i.implied!==void 0&&t(i.attributeName())&&e.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach(i=>{Object.keys(i.implied).filter(n=>!t(n)).forEach(n=>{this.setOptionValueWithSource(n,i.implied[n],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let i=s=>{let l=s.attributeName(),r=this.getOptionValue(l),d=this.options.find(u=>u.negate&&l===u.attributeName()),a=this.options.find(u=>!u.negate&&l===u.attributeName());return d&&(d.presetArg===void 0&&r===!1||d.presetArg!==void 0&&r===d.presetArg)?d:a||s},n=s=>{let l=i(s),r=l.attributeName();return this.getOptionValueSource(r)==="env"?`environment variable '${l.envVar}'`:`option '${l.flags}'`},o=`error: ${n(e)} cannot be used with ${n(t)}`;this.error(o,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let n=[],o=this;do{let s=o.createHelp().visibleOptions(o).filter(l=>l.long).map(l=>l.long);n=n.concat(s),o=o.parent}while(o&&!o._enablePositionalOptions);t=kn(e,n)}let i=`error: unknown option '${e}'${t}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,i=t===1?"":"s",o=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${i} but got ${e.length}.`;this.error(o,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach(o=>{n.push(o.name()),o.alias()&&n.push(o.alias())}),t=kn(e,n)}let i=`error: unknown command '${e}'${t}`;this.error(i,{code:"commander.unknownCommand"})}version(e,t,i){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",i=i||"output the version number";let n=this.createOption(t,i);return this._versionOptionName=n.attributeName(),this._registerOption(n),this.on("option:"+n.name(),()=>{this._outputConfiguration.writeOut(`${e}
22
+ `),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(e);if(i){let n=[i.name()].concat(i.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${n}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(i=>di(i));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}nameFromFilename(e){return this._name=te.basename(e,te.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp();return t.helpWidth===void 0&&(t.helpWidth=e&&e.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),t.formatHelp(this,t)}_getHelpContext(e){e=e||{};let t={error:!!e.error},i;return t.error?i=n=>this._outputConfiguration.writeErr(n):i=n=>this._outputConfiguration.writeOut(n),t.write=e.write||i,t.command=this,t}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let i=this._getHelpContext(e);this._getCommandAndAncestors().reverse().forEach(o=>o.emit("beforeAllHelp",i)),this.emit("beforeHelp",i);let n=this.helpInformation(i);if(t&&(n=t(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");i.write(n),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",i),this._getCommandAndAncestors().forEach(o=>o.emit("afterAllHelp",i))}helpOption(e,t){return typeof e=="boolean"?(e?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(e=e??"-h, --help",t=t??"display help for command",this._helpOption=this.createOption(e,t),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this}help(e){this.outputHelp(e);let t=O.exitCode||0;t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let i=["beforeAll","before","after","afterAll"];if(!i.includes(e))throw new Error(`Unexpected value for position to addHelpText.
23
+ Expecting one of '${i.join("', '")}'`);let n=`${e}Help`;return this.on(n,o=>{let s;typeof t=="function"?s=t({error:o.error,command:o.command}):s=t,s&&o.write(`${s}
24
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(n=>t.is(n))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Sn(c){return c.map(e=>{if(!e.startsWith("--inspect"))return e;let t,i="127.0.0.1",n="9229",o;return(o=e.match(/^(--inspect(-brk)?)$/))!==null?t=o[1]:(o=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=o[1],/^\d+$/.test(o[3])?n=o[3]:i=o[3]):(o=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=o[1],i=o[3],n=o[4]),t&&n!=="0"?`${t}=${i}:${parseInt(n)+1}`:e})}xn.Command=pt});var In=me(B=>{"use strict";var{Argument:On}=De(),{Command:ft}=An(),{CommanderError:pi,InvalidArgumentError:Rn}=ye(),{Help:fi}=st(),{Option:Tn}=ct();B.program=new ft;B.createCommand=c=>new ft(c);B.createOption=(c,e)=>new Tn(c,e);B.createArgument=(c,e)=>new On(c,e);B.Command=ft;B.Option=Tn;B.Argument=On;B.Help=fi;B.CommanderError=pi;B.InvalidArgumentError=Rn;B.InvalidOptionArgumentError=Rn});var ke=oe(qe(),1);import I from"process";import*as Zn from"tls";function wn(){let c=Zn;if(!(typeof c.getCACertificates!="function"||typeof c.setDefaultCACertificates!="function"))try{let e=n=>typeof n=="string",t=c.getCACertificates("default").filter(e),i=c.getCACertificates("system").filter(e);c.setDefaultCACertificates([...new Set([...t,...i])])}catch{}}var _n=!1;function vn(){if(!_n)try{if(typeof process.emitWarning!="function")return;let c=process.emitWarning.bind(process),e=((t,...i)=>{let n=typeof t=="string"?t:t?.message??"";if(!((typeof i[0]=="string"?i[0]:typeof t=="object"&&t?t.name:void 0)==="ExperimentalWarning"&&n.includes("buffer.File")))return c(t,...i)});process.emitWarning=e,_n=!0}catch{}}var $n=oe(In(),1),{program:Ui,createCommand:Bi,createArgument:qi,createOption:Wi,CommanderError:Gi,InvalidArgumentError:Ki,InvalidOptionArgumentError:Ji,Command:Pn,Argument:Yi,Option:Y,Help:zi}=$n.default;import{join as ne,resolve as Ei}from"path";var ht=oe(qe(),1);var V=oe(qe(),1);var ae=oe(Ae(),1);function jn({steps:c,bifurcationInfo:e,perFlowMetadata:t}){return!e||e.isSingleFlow||!t||t.length<=1?null:(0,ae.jsx)(X,{flexDirection:"column",children:t.map((i,n)=>{let o=c[n],s=o?.children??[],l=s.filter(p=>p.status==="passed").length,r=s.filter(p=>p.status==="failed").length,d=l+r,a=s.reduce((p,f)=>p+(f.duration??0),0),u=o?.status==="failed"?"failed":"passed",m=e.flows[n]??o?.objective??`Flow ${n+1}`;return(0,ae.jsxs)(X,{flexDirection:"column",marginTop:n>0?1:0,children:[(0,ae.jsxs)(X,{marginLeft:1,children:[(0,ae.jsx)(U,{color:J.purple,bold:!0,children:"Flow "+(n+1)+": "}),(0,ae.jsx)(U,{color:J.purple,children:m})]}),(0,ae.jsx)(Te,{status:u,summary:i?.summary??"",duration:a,steps:d,stepsPassed:l,stepsFailed:r,reason:i?.error_message??void 0,creditsConsumed:i?.credits_consumed??void 0})]},`flow-summary-${n}`)})})}var T=oe(Ae(),1);function Dn({config:c,spawnOpts:e,cancelRef:t,banner:i,onComplete:n,onStepEnd:o,onReasoning:s,onStepComplete:l}){let{exit:r}=jt(),{append:d}=Dt(),a=Xt(o,void 0,s,l),u=(0,V.useRef)(!1),m=(0,V.useRef)(!1),[p,f]=(0,V.useState)("");(0,V.useEffect)(()=>{u.current||(u.current=!0,a.startRun(c,e))},[c,e,a]),(0,V.useEffect)(()=>{t&&(t.current=()=>a.cancelRun())},[t,a]);let k=(0,V.useRef)(0);We((g,b)=>{b.ctrl&&g==="c"&&(a.isRunning?(k.current++,k.current>=2?r():a.cancelRun()):r())}),We((g,b)=>{a.askingUser&&(b.return?(a.sendAnswer(p),f("")):b.backspace||b.delete?f(E=>E.slice(0,-1)):g&&!b.ctrl&&!b.meta&&f(E=>E+g))},{isActive:!!a.askingUser}),(0,V.useEffect)(()=>{if(!a.isRunning&&a.lastRunEnd&&!m.current){m.current=!0;let{passed:g,failed:b,total:E}=ze(a.steps),P=a.bifurcationInfo;n({lastRunEnd:a.lastRunEnd,stepsPassed:g,stepsFailed:b,stepsTotal:E,hadError:!1,bifurcationFlows:P&&!P.isSingleFlow?P.flows:null}),r()}},[a.isRunning,a.lastRunEnd,a.steps,n,r]),(0,V.useEffect)(()=>{a.runError&&!a.isRunning&&!m.current&&(m.current=!0,n({lastRunEnd:null,stepsPassed:0,stepsFailed:0,stepsTotal:0,hadError:!0,bifurcationFlows:null}),r())},[a.runError,a.isRunning,n,r]);let y=a.lastRunEnd?(()=>{let{passed:g,failed:b,total:E}=ze(a.steps);return{status:a.lastRunEnd.status,duration:a.lastRunEnd.duration??0,summary:a.lastRunEnd.summary??"",stepsPassed:g,stepsFailed:b,stepsTotal:E,reason:a.lastRunEnd.reason,finalState:a.lastRunEnd.final_state,creditsConsumed:a.lastRunEnd.credits_consumed}})():null,S=(0,V.useRef)(!1);return(0,V.useEffect)(()=>{S.current||!i||(S.current=!0,d((0,T.jsxs)(X,{flexDirection:"column",marginBottom:1,children:[(0,T.jsxs)(X,{borderStyle:"round",borderColor:"#dc4e08",paddingX:2,children:[(0,T.jsx)(U,{color:"#ff9500",bold:!0,children:"KaneAI CLI"}),(0,T.jsx)(U,{color:J.dim,children:" \u2502 "}),(0,T.jsx)(U,{color:J.orange,children:i.model}),(0,T.jsx)(U,{color:J.dim,children:" \u2502 "}),(0,T.jsx)(U,{color:J.dim,children:i.auth})]}),i.status?.map((g,b)=>(0,T.jsx)(U,{color:J.dim,children:g},b))]})))},[]),(0,T.jsxs)(X,{flexDirection:"column",children:[(()=>{let g=Vt({isRunning:a.isRunning,bifurcationInfo:a.bifurcationInfo,steps:a.steps,cmInitCounts:a.cmInitCounts,replayInfo:a.replayInfo});return g?(0,T.jsx)(Ft,{label:g.label,hasBifurcation:g.hasBifurcation}):null})(),a.steps.length>0&&(0,T.jsx)(Nt,{steps:a.steps,bifurcated:!!a.bifurcationInfo&&!a.bifurcationInfo.isSingleFlow,flows:a.bifurcationInfo?.flows,cmInitCounts:a.cmInitCounts,staticSteps:!0,onStepCommit:d}),a.askingUser&&(0,T.jsxs)(X,{flexDirection:"column",marginTop:1,children:[(0,T.jsxs)(U,{color:J.orange,children:['Agent is asking: "',a.askingUser,'"']}),(0,T.jsxs)(U,{children:["> ",p,"\u2588"]})]}),a.runError&&(0,T.jsx)(nn,{message:a.runError,code:"RUNNER_ERROR"}),y&&a.lastRunEnd&&(0,T.jsx)(jn,{steps:a.steps,bifurcationInfo:a.bifurcationInfo,perFlowMetadata:a.lastRunEnd.per_flow_metadata??[]}),y&&(0,T.jsx)(Te,{status:y.status==="passed"?"passed":"failed",summary:y.summary??"",duration:y.duration,steps:y.stepsTotal,stepsPassed:y.stepsPassed,stepsFailed:y.stepsFailed,reason:y.reason,creditsConsumed:y.creditsConsumed})]})}import{createInterface as hi}from"readline";function fe(c){process.stdout.write(JSON.stringify(c)+`
25
+ `)}async function Nn(c,e,t){let i=zt(c,e);$e().then(u=>{u&&fe({type:"update_available",current:u.current,latest:u.latest,severity:u.severity})}).catch(()=>{}),Pe().then(u=>{u&&fe({type:"skill_update_available",current:u.current,latest:u.latestCompatible,install_cmd:"kane-cli install skill"})}).catch(()=>{});let n=hi({input:process.stdin});n.on("line",u=>{try{let m=JSON.parse(u);m.type==="user_response"?i.sendUserResponse(m.answer??""):m.type==="cancel"&&i.sendCancel(m.reason??"")}catch{}});let o=null,s=!1,l=0,r=null,d=0,a=!1;for await(let u of i.events)switch(u.type){case"run_start":a&&d++;break;case"step_start":{let m=u;t?.onStepLog?.("STEP_START",`Step ${m.index} started`,{index:m.index,objective:m.objective,child_id:m.child_id});let p={step:m.index+1,status:"running",remark:m.objective??`Step ${m.index+1}`};m.child_id&&(p.child_id=m.child_id),fe(p);break}case"step_event":u.event==="reasoning"&&u.detail&&u.detail!=="reasoning"&&t?.onReasoning?.(u.detail),t?.onStepLog?.("STEP_EVENT",`Step ${u.index} ${u.event}`,{index:u.index,phase:u.event,action_type:u.action_type,detail:u.detail,child_id:u.child_id});break;case"step_end":{let m=u;t?.onStepLog?.("STEP_END",`Step ${m.index} ${m.status}`,{index:m.index,status:m.status,duration:m.duration,summary:m.summary,child_id:m.child_id}),t?.onStepComplete?.(),l++;let p={step:m.index+1,status:m.status==="passed"?"done":"failed",remark:m.summary??""};m.child_id&&(p.child_id=m.child_id),fe(p);let f=a?Math.max(0,d-1):0;t?.onStepEnd?.(m.index,f);break}case"bifurcation":{let m=u,p=m.flows??[],f=m.count??p.length;(m.is_single_flow??f<=1)||(r=p,a=!0,d=0),fe({type:"bifurcation",flows:p,count:f});break}case"ask_user":{let m=u;fe({type:"ask_user",question:m.question,step_index:m.step_index,...m.options?{options:m.options}:{}});break}case"run_end":{o=u;break}case"error":{s=!0,fe({type:"error",message:u.message});break}default:break}return n.close(),await i.exited,{lastRunEnd:o,stepsTotal:l,hadError:s,bifurcationFlows:r}}import{join as gi}from"path";function Fn(c){let e=c.command("testmd").description("Manage test.md files (run, list, status, delete, export)").action(async()=>{process.stdin.isTTY||(process.stderr.write(`error: testmd requires a sub-action in non-TTY mode (run | list | status | delete | export)
26
+ `),process.exit(2));let{runListTui:t,resolveCurrentOrgId:i}=await import("./testmd-actions-W2INQVTH.js"),n=await i({});n.ok||process.exit(n.code),process.exit(await t(n.orgId))});_i(e),vi(e),bi(e),Ci(e),yi(e)}function wi(c,e){return e.concat(c)}function _i(c){c.command("run <path>").description("Run a test from a *_test.md file").option("--headless","Run Chrome in headless mode").option("--max-steps <n>","Max agent steps","30").option("--timeout <seconds>","Kill after N seconds").option("--cdp-endpoint <url>","Connect to existing Chrome via CDP").option("--ws-endpoint <url>","Playwright WebSocket endpoint").option("--global-context <file>",`Override global context (default: ${gi(se,"global-memory.md")})`).option("--local-context <file>","Override local context (default: .testmuai/context.md in cwd)").addOption(new Y("--model <name>","Model override").hideHelp()).option("--variables <json>","Inline variables JSON").option("--variables-file <path>","Load variables from file").option("--session-context <json>","Session context JSON (prior runs)").addOption(new Y("--cft","Use Playwright Chromium instead of managed Chrome").hideHelp()).option("--username <user>","Basic auth username (skip OAuth)").option("--access-key <key>","Basic auth access key").option("--env <name>","Environment (prod or stage)").option("--mode <name>","Run mode: action | testing").option("--agent","Agent mode: plain NDJSON output, no colors/UI").option("--task-skills","Enable domain-specific task skills (experimental)").addOption(new Y("--local","Skip TMS integration (no uploads, no variables/secrets push)").hideHelp()).option("--code-export","Generate code export after upload").option("--code-language <lang>","Code-export language (python|javascript)").option("--name <name>","Persist session under this name").option("--skip-code-validation","Skip post-codegen validation").option("--no-skip-code-validation","Force post-codegen validation").option("--on-lock-conflict <mode>","lock conflict policy: readonly|fail|wait",e=>{if(e!=="readonly"&&e!=="fail"&&e!=="wait")throw new Error(`--on-lock-conflict must be readonly|fail|wait, got: ${e}`);return e}).option("--push","always commit at end-of-run (no retry semantics)").option("--retry","on replay failure, full-restart with shrinking replay window; falls back to complete re-author after --retry-count attempts").option("--retry-count <n>","max replay restart attempts before falling back to complete re-author (default: 3)",e=>{let t=parseInt(e,10);if(Number.isNaN(t)||t<0)throw new Error(`--retry-count must be a non-negative integer, got: ${e}`);return e}).option("--author","bypass walker; force fresh test+testcase in TMS; replace local output entirely").action(async(e,t)=>{let{runTestMdFile:i}=await import("./run-test-md-I76IV7QA.js"),n=await i(e,t);process.exit(n)})}function vi(c){c.command("list").description("List *_test.md files in the working directory (recursive)").option("--root <dir>","Root directory to scan (default: cwd)").option("--ignore <name>","Skip a directory by name (repeatable)",wi,[]).option("--json","Force NDJSON output even on TTY").action(async e=>{let{runListAction:t,resolveCurrentOrgId:i}=await import("./testmd-actions-W2INQVTH.js"),n=await i({json:!!e.json});n.ok||process.exit(n.code),process.exit(await t(e,n.orgId))})}function bi(c){c.command("status <path>").description("Print local meta.json for a *_test.md (no live TMS check in v1)").action(async e=>{let{runStatusAction:t,resolveCurrentOrgId:i}=await import("./testmd-actions-W2INQVTH.js"),n=await i({});n.ok||process.exit(n.code),process.exit(await t(e,n.orgId))})}function Ci(c){c.command("delete <path>").description("Remove output-<stem>/ and the *_test.md source file (TMS untouched)").option("--yes","Skip confirmation prompt (required in non-TTY)").action(async(e,t)=>{let{runDeleteAction:i,resolveCurrentOrgId:n}=await import("./testmd-actions-W2INQVTH.js"),o=await n({});o.ok||process.exit(o.code),process.exit(await i(e,!!t.yes,o.orgId))})}function yi(c){c.command("export <path>").description("Generate standalone test code (Playwright)").option("--language <lang>","python|javascript (falls back to tui-config)").option("--output <dir>","Override output dir (default: output-<stem>/playwright-<lang>-code/)").option("--force","Overwrite an existing local export").action(async(e,t)=>{let{runExportAction:i,resolveCurrentOrgId:n}=await import("./testmd-actions-W2INQVTH.js"),o=await n({});o.ok||process.exit(o.code),process.exit(await i(e,t,o.orgId))})}function Ee(c){let e=new Pn;if(e.name("kane-cli").version(xe).showHelpAfterError("(run `kane-cli --help` to see all commands; `-h` and `help` also work)"),e.on("command:*",i=>{e.error(`error: unknown command '${i[0]}'`,{exitCode:2,code:"commander.unknownCommand"})}),c[0]==="--help"||c[0]==="-h"||c[0]==="help"){(async()=>{let{HelpView:i}=await import("./HelpView-HFKFRKG3.js"),{render:n}=await import("./build-JIKYOZUH.js"),o=await import("./react-QWOAB3TB.js"),{waitUntilExit:s}=n(o.default.createElement(i));await s(),_(0,"Help displayed")})();return}e.command("login").option("--oauth","Login via OAuth (opens browser)").option("--username <user>","Basic auth username").option("--access-key <key>","Basic auth access key").addOption(new Y("--env <name>","Environment (prod or stage)").default("prod").hideHelp()).option("--profile <name>","Profile name","default").option("--project-id <id>","Project ID (skip picker)").option("--folder-id <id>","Folder ID (skip picker)").addOption(new Y("--model <name>","Model").default("v16-alpha").hideHelp()).option("--chrome-profile <path>","Chrome profile path").action(async i=>{let n=new Z,o=new re,s=i.env,l=i.profile;if(!process.stdin.isTTY||i.oauth||i.username){if(n.setDefaultEnv(s),i.oauth)await new Gt(l,s,n).login(),console.log(`Logged in as ${l} [${s}] via OAuth`);else if(i.username&&i.accessKey){try{let{validateBasicAuth:S}=await import("./validate-basic-QUPVT2EV.js");await S(s,i.username,i.accessKey)}catch{console.error("Credentials not valid. Please use valid credentials."),_(1,"Invalid basic-auth credentials");return}n.saveBasicAuth(l,s,{username:i.username,access_key:i.accessKey}),console.log(`Logged in as ${l} [${s}] via basic auth`)}else console.error("Provide --oauth, or --username and --access-key"),_(1,"Missing --oauth or credentials for login");n.setActiveProfile(l),o.set("model",i.model),i.chromeProfile&&o.set("chrome_profile_path",i.chromeProfile);let y=null;if(i.username&&i.accessKey)y={username:i.username,access_key:i.accessKey};else try{let g=await ge({creds:n,env:s,log:()=>{}});g.resolvedCreds&&(y={username:g.resolvedCreds.username,access_key:g.resolvedCreds.access_key})}catch{}if(i.projectId&&(pe(n,o,l,s,{projectId:i.projectId}),console.log(`Project set to ${i.projectId}`)),i.folderId&&(pe(n,o,l,s,{folderId:i.folderId}),console.log(`Folder set to ${i.folderId}`)),y&&(!i.projectId||!i.folderId))try{let S=await Lt({creds:n,config:o,profile:l,env:s,tmsCreds:y,log:()=>{}});i.projectId||console.log(`Auto-selected project: ${S.projectName} (${S.projectId})`),i.folderId||console.log(`Auto-selected folder: ${S.folderName} (${S.folderId})`)}catch(S){console.warn(`Could not auto-select project/folder: ${S instanceof Error?S.message:S}`)}Oe(n,o,l,s),console.log("Setup complete."),_(0,"Setup complete")}let{SingleShotApp:r}=await import("./SingleShotApp-A4VXMXEZ.js"),{ScrollbackProvider:d}=await import("./scrollback-6GINSTL2.js"),{render:a}=await import("./build-JIKYOZUH.js"),u=await import("./react-QWOAB3TB.js"),m={current:null},p={current:!1},{waitUntilExit:f,unmount:k}=a(u.default.createElement(d,null,u.default.createElement(r,{resultRef:m,mode:"login",loginCompleteRef:p})),{exitOnCtrlC:!1});Ce(()=>k()),await f();try{process.stdin.setRawMode?.(!1)}catch{}process.stdout.write("\x1B[?25h"),p.current&&console.log("Login setup complete."),process.exit(0)}),e.command("logout").action(async()=>{let i=new Z,n=i.getActiveProfile();if(!n){console.log("No active profile to logout");return}let o=i.getDefaultEnv(),s=await Kt(i,n,o),l=new re;s.switchedTo?(Oe(i,l,s.switchedTo.profile,s.switchedTo.env),console.log(`Logged out ${s.profile} [${s.env}]. Switched to ${s.switchedTo.profile} [${s.switchedTo.env}]`)):(l.save({project_id:null,project_name:null,folder_id:null,folder_name:null}),console.log(`Logged out ${s.profile} [${s.env}]. No profiles remaining.`))}),e.command("whoami").option("--profile <name>","Profile name").action(async i=>{let n=new Z,o=i.profile??n.getActiveProfile()??"default",s=n.getDefaultEnv(),l=n.loadCredentials(o,s),r=n.loadBasicAuth(o,s),d="none",a=r?.username,u,m,p,f;if(r?d="basic":l&&(d="oauth",m=new Date(l.expires_at*1e3).toISOString().slice(0,10)),d==="none")u="missing";else try{let b=await ge({creds:n,env:s,log:()=>{}});if(b.resolvedCreds)p="verified",u="valid",a=b.resolvedCreds.username??a;else{let{classifyAuthFailure:E}=await import("./resolver-IDCGRPFJ.js");E(b.resolver.lastError)==="auth"?(p="rejected",u="expired",f="Credentials rejected by the server \u2014 re-login or rotate your access key"):(p="unreachable",f=b.resolver.lastError?.message)}}catch(b){let E=b;E.code==="refresh_failed"?(p="rejected",u="expired",f="OAuth token refresh failed \u2014 run 'kane-cli login'"):E.code==="not_authenticated"?(d="none",u="missing"):(p="unreachable",f=E.message)}let{WhoamiView:k}=await import("./WhoamiView-3E447A3G.js"),{render:y}=await import("./build-JIKYOZUH.js"),S=await import("./react-QWOAB3TB.js"),{waitUntilExit:g}=y(S.default.createElement(k,{profile:o,env:s,authenticated:p==="verified",authMethod:d,username:a,tokenStatus:u,expiresAt:m,serverStatus:p,detail:f}));await g(),d==="none"?_(1,"whoami: not-authenticated"):p&&p!=="verified"&&_(p==="unreachable"?3:1,`whoami: ${p}`)}),e.command("config <action> [value]").option("--agent","Force JSON output for `show` (auto-on when stdin is not a TTY)").action(async(i,n,o)=>{let s=new re,l=new Z;if(i==="show"){let r=s.load(),d=l.getActiveProfile()??"default",a=l.getDefaultEnv(),u=l.loadProfileConfig(d,a)??{},m=u.project_id??r.project_id??null,p=u.project_name??r.project_name??null,f=u.folder_id??r.folder_id??null,k=u.folder_name??r.folder_name??null,y=l.loadBasicAuth(d,a),S=l.loadCredentials(d,a),g=y?`basic (${y.username})`:S?"oauth":"not configured";if(!!o?.agent||!process.stdin.isTTY||!process.stdout.isTTY){let de=ee(a);process.stdout.write(`${JSON.stringify({profile:d,env:a,auth:g,project_id:m,project_name:p,folder_id:f,folder_name:k,model:r.model,mode:r.mode,window_size:`${r.window_size.width}x${r.window_size.height}`,chrome_profile:r.chrome_profile_path,default_url:he,controller_base_url:de.controllerBaseUrl,tms_base_url:de.tmsBaseUrl})}
27
+ `),_(0,"config show complete");return}let{ConfigView:E}=await import("./ConfigView-PQH67FUK.js"),{render:P}=await import("./build-JIKYOZUH.js"),q=await import("./react-QWOAB3TB.js"),{waitUntilExit:ce}=P(q.default.createElement(E,{model:r.model,authLabel:g,profile:d,env:a,defaultUrl:he,projectId:m,projectName:p,folderId:f,folderName:k,windowSize:`${r.window_size.width}x${r.window_size.height}`,chromeProfile:r.chrome_profile_path}));await ce()}else if(i==="set-window"&&n){let r=n.split("x").map(Number),[d,a]=r;!d||!a||!Number.isInteger(d)||!Number.isInteger(a)?console.error("Invalid format. Use: kane-cli config set-window WIDTHxHEIGHT"):d<800||d>3840?console.error(`Width must be between 800 and 3840 (got ${d})`):a<600||a>2160?console.error(`Height must be between 600 and 2160 (got ${a})`):(s.set("window_size",{width:d,height:a}),console.log(`Window size set to ${d}x${a}`))}else if(i==="set-mode"){if(n!=="action"&&n!=="testing"){console.error("Mode must be 'action' or 'testing'."),_(1,"Invalid mode");return}s.set("mode",n),console.log(`Mode set to ${n}`)}else if(i==="chrome-profile"){if(n||!process.stdin.isTTY){n||(console.error("Usage: kane-cli config chrome-profile <path>"),_(1,"Missing chrome-profile path")),s.set("chrome_profile_path",n),console.log(`Chrome profile set to ${n}`);return}let{ChromeProfilePicker:r}=await import("./ChromeProfilePicker-HNP7QQ4J.js"),{render:d}=await import("./build-JIKYOZUH.js"),a=await import("./react-QWOAB3TB.js");await new Promise(u=>{let{unmount:m}=d(a.default.createElement(r,{currentPath:s.load().chrome_profile_path,onSelect:p=>{s.set("chrome_profile_path",p),console.log(`Chrome profile set to ${p}`),m(),u()},onCancel:()=>{m(),u()}}))})}else if(i==="project"){if(n||!process.stdin.isTTY){n||(console.error("Usage: kane-cli config project <project-id>"),_(1,"Missing project ID"));let b=l.getActiveProfile()??"default",E=l.getDefaultEnv();pe(l,s,b,E,{projectId:n}),console.log(`Project set to ${n}`);return}let r=l.getDefaultEnv(),d=ee(r),a=l.getActiveProfile()??"default",{resolveTmsBasicAuth:u,formatAuthResolutionError:m}=await import("./list-commands-MK4W3Q7O.js"),p=await u(a,r,{});if(!p.ok){let{message:b}=m(a,r,p);process.stderr.write(b),_(2,`${p.reason} for "${a}" [${r}]`);return}let{ProjectPicker:f}=await import("./ProjectPicker-6QIVHOO7.js"),{AuthResolver:k}=await import("./resolver-IDCGRPFJ.js"),{render:y}=await import("./build-JIKYOZUH.js"),S=await import("./react-QWOAB3TB.js"),g=new k(d.controllerBaseUrl,async()=>null,{username:p.creds.username,access_key:p.creds.access_key});await g.resolve(),await new Promise(b=>{let{unmount:E}=y(S.default.createElement(f,{resolver:g,currentProjectId:s.load().project_id,env:r,onSelect:(P,q)=>{let ce=l.getActiveProfile()??"default",de=l.getDefaultEnv();pe(l,s,ce,de,{projectId:P,projectName:q}),console.log(`Project set to ${q} (${P})`),E(),b()},onCancel:()=>{E(),b()}}))})}else if(i==="folder"){if(n||!process.stdin.isTTY){if(n||(console.error("Usage: kane-cli config folder <folder-id>"),_(1,"Missing folder ID")),!s.load().project_id){console.log("Select a project first: kane-cli config project <id>");return}let P=l.getActiveProfile()??"default",q=l.getDefaultEnv();pe(l,s,P,q,{folderId:n}),console.log(`Folder set to ${n}`);return}let r=s.load();if(!r.project_id){console.log("Select a project first: kane-cli config project");return}let d=l.getDefaultEnv(),a=ee(d),u=l.getActiveProfile()??"default",{resolveTmsBasicAuth:m,formatAuthResolutionError:p}=await import("./list-commands-MK4W3Q7O.js"),f=await m(u,d,{});if(!f.ok){let{message:E}=p(u,d,f);process.stderr.write(E),_(2,`${f.reason} for "${u}" [${d}]`);return}let{FolderPicker:k}=await import("./FolderPicker-SET7IG6S.js"),{AuthResolver:y}=await import("./resolver-IDCGRPFJ.js"),{render:S}=await import("./build-JIKYOZUH.js"),g=await import("./react-QWOAB3TB.js"),b=new y(a.controllerBaseUrl,async()=>null,{username:f.creds.username,access_key:f.creds.access_key});await b.resolve(),await new Promise(E=>{let{unmount:P}=S(g.default.createElement(k,{resolver:b,projectId:r.project_id,currentFolderId:r.folder_id,env:d,onSelect:(q,ce)=>{let de=l.getActiveProfile()??"default",Se=l.getDefaultEnv();pe(l,s,de,Se,{folderId:q,folderName:ce}),console.log(`Folder set to ${ce} (${q})`),P(),E()},onCancel:()=>{P(),E()}}))})}else console.log("Usage: kane-cli config show|set-window|set-mode|chrome-profile|project|folder")}),e.command("run").argument("<objective>","Test objective (use {{var}} to reference variables)").option("--headless","Run Chrome in headless mode").option("--max-steps <n>","Maximum agent steps","30").option("--timeout <seconds>","Kill run after N seconds").option("--cdp-endpoint <url>","Connect to existing Chrome CDP endpoint").option("--ws-endpoint <url>","Connect via Playwright WebSocket (e.g. LambdaTest wss:// URL)").option("--global-context <file>",`Override global context markdown (default: ${ne(se,"global-memory.md")})`).option("--local-context <file>","Override local context markdown (default: .testmuai/context.md in cwd)").addOption(new Y("--model <name>","Model override").hideHelp()).option("--variables <json>",`Inline variables JSON, e.g. '{"user": {"value": "alice"}}'`).option("--variables-file <path>","Load variables from a JSON file").option("--session-context <json>","Session context JSON (prior runs)").addOption(new Y("--cft","Use Playwright Chromium instead of managed Chrome").hideHelp()).option("--username <user>","Basic auth username (skip OAuth)").option("--access-key <key>","Basic auth access key (skip OAuth)").option("--env <name>","Environment (prod or stage)").option("--mode <name>","Run mode: 'action' (strict \u2014 hard-stop on auth/blocked/error) or 'testing' (lenient \u2014 fall through). Overrides config; default: testing.").option("--agent","Agent mode: plain NDJSON output, no colors/UI").option("--task-skills","Enable domain-specific task skills (experimental)").addOption(new Y("--local","Skip TMS integration (no uploads, no variables/secrets push)").hideHelp()).option("--code-export","Generate code export after upload").option("--code-language <lang>","Code export language: python (default) | javascript").option("--name <name>","Persist the session under this name (validated [a-zA-Z0-9_-]+)").option("--chrome-profile <path>","Chrome user-data-dir for this run (overrides stored config)").option("--skip-code-validation","Skip post-codegen worker-side validation").option("--no-skip-code-validation","Force post-codegen worker-side validation").addHelpText("after",`
28
28
  Variables:
29
29
  Variables are loaded in order (later wins):
30
- 1. Global: ${ne(re,"variables")}/*.json
30
+ 1. Global: ${ne(se,"variables")}/*.json
31
31
  2. Local: {cwd}/.testmuai/variables/*.json
32
32
  3. File: --variables-file <path>
33
33
  4. Inline: --variables '{"key": {"value": "...", "secret": false}}'
@@ -42,28 +42,33 @@ Variables:
42
42
 
43
43
  Context Files:
44
44
  Context files provide additional instructions to the agent.
45
- Global: ${ne(re,"global-memory.md")}
45
+ Global: ${ne(se,"global-memory.md")}
46
46
  Local: {cwd}/.testmuai/context.md
47
47
 
48
48
  Override with --global-context / --local-context flags.
49
49
  `).action(async(i,n)=>{try{if(n.name){let{validateNameOrThrow:h}=await import("./name-validator-5YGJXLZ7.js");try{h(n.name)}catch(v){console.error(`error: ${v.message}`),_(2,"Invalid --name");return}}if(i&&i.endsWith(".md")&&!i.startsWith("-")){process.stderr.write(`error: '.md' files are no longer accepted by 'kane run'.
50
50
  Use 'kane-cli testmd run <path>' instead.
51
- `),process.exit(2);return}let o=new Z,r=new se,c=r.load();n.chromeProfile&&(c.chrome_profile_path=n.chromeProfile);let s;if(n.mode===void 0)s=c.mode==="action"?"action":"testing";else if(n.mode==="action"||n.mode==="testing")s=n.mode;else{console.error("Invalid --mode. Must be 'action' or 'testing'."),_(2,"Invalid --mode");return}let d=new Vt,{printRecordingBanner:a}=await import("./recording-banner-Q36WARSF.js");await a({isAgent:!!n.agent||!process.stdin.isTTY,sessionId:d.sessionId,sessionName:n.name??null,testPath:n.name?ne(process.cwd(),".testmuai","tests",`${n.name}_test.md`):null,outputPath:n.name?ne(process.cwd(),".testmuai","tests",`output-${n.name}`):null});let u=!!(n.username&&n.accessKey);if(await en({isInteractive:!!process.stdin.isTTY&&!n.agent&&!u,creds:o,config:r}),!u){let h=o.getActiveProfile(),v=o.getDefaultEnv();h&&(o.loadBasicAuth(h,v)||o.loadCredentials(h,v))||(console.error("Not authenticated. Run: kane-cli login --oauth, or kane-cli login --username <user> --access-key <key>"),_(1,"Not authenticated"))}let m=`${o.getActiveProfile()??"no profile"}/${o.getDefaultEnv()}`,p=[],f=n.env??o.getDefaultEnv(),x=null,C=[],S=(h,v,b,R)=>{x?x(h,v,b,R):C.push([h,v,b,R])},g;try{g=await he({creds:o,env:f,usernameFlag:n.username,accessKeyFlag:n.accessKey,log:S})}catch(h){throw h instanceof Xt&&(console.error(h.code==="not_authenticated"?"Not authenticated. Run: kane-cli login":"Token refresh failed. Run: kane-cli login"),_(2,h.code==="not_authenticated"?"Not authenticated":"Token refresh failed")),h}let E=!!g.basicAuth,y=g.basicAuth?.username,P=g.basicAuth?.access_key,q=g.token,ce=g.resolver,de=g.resolvedCreds;g.basicAuth&&p.push(`Auth: ${g.basicAuth.username}`);let Se=o.getActiveProfile()??"default",vt=o.getDefaultEnv();Mt(o,r,Se,vt);let F=r.load(),bt=g.basicAuth??(g.resolvedCreds?{username:g.resolvedCreds.username,access_key:g.resolvedCreds.access_key}:null);if(bt){let h=!!n.agent||!process.stdin.isTTY,v=await qt({creds:o,config:r,profile:Se,env:vt,tmsCreds:bt,isLocal:!!n.local,log:S});v.status==="cancelled"&&(console.error("error: project/folder configuration failed. See remediation above, or use --local."),_(2,"project/folder gate failed")),v.status==="ok"&&v.autoDefaulted&&h&&process.stdout.write(Bt(v.autoDefaulted)),F=r.load()}else n.local||(console.error("Project and folder must be configured. Run `kane-cli login` to set up auth, or pass --username/--access-key, then `kane-cli config project <id>` / `kane-cli config folder <id>`."),_(2,"no TMS credentials for project/folder gate"));let Ct=fe,D=ln({objective:i,globalDir:ne(re,"variables"),localDir:ne(process.cwd(),".testmuai","variables"),file:n.variablesFile,inline:n.variables,onLoadError:h=>console.error(h)}),Et;if(n.sessionContext)try{Et=JSON.parse(n.sessionContext)}catch{console.error("Invalid --session-context JSON"),_(2,"Invalid --session-context JSON")}let Wn=n.globalContext??ne(re,"global-memory.md"),Gn=n.localContext??ne(process.cwd(),".testmuai","context.md"),yt=ze(Wn),xt=ze(Gn),z;try{z=await rn({config:c,startUrl:Ct??void 0,headless:n.headless,cft:n.cft,wsEndpoint:n.wsEndpoint,cdpEndpoint:n.cdpEndpoint})}catch(h){console.error(Jt(h));let v=h instanceof Kt?"Chrome not found at standard paths":`Chrome failed: ${h instanceof Error?h.message:h}`;_(2,v)}z.instance&&Re("chrome",()=>{z.instance.kill()});let W=null,St=z.cdpEndpoint??n.cdpEndpoint;St&&!n.cft&&!n.wsEndpoint&&(W=zt({headless:n.headless,cdpEndpoint:St,chromePid:z.instance?.process.pid}),W&&Re("marker-overlay",()=>W.kill())),n.cft?p.push("CfT mode: Playwright will manage its own browser"):n.wsEndpoint?p.push(`Playwright WS endpoint (${n.wsEndpoint.slice(0,60)}...)`):n.cdpEndpoint?p.push(`CDP connected (${n.cdpEndpoint})`):z.cdpEndpoint&&p.push(`Chrome ready (${z.cdpEndpoint})`);let w=d;w.start({model:n.model??c.model,environment:f,profile:o.getActiveProfile()}),n.name&&w.setSessionName(n.name),g.resolvedCreds?.org_id!==void 0&&w.setOrgId(String(g.resolvedCreds.org_id)),g.resolvedCreds?.plan!==void 0&&w.setPlan(g.resolvedCreds.plan??null),x=(h,v,b,R)=>w.log(h,v,b,R);for(let h of C)w.log(...h);C.length=0;let At=E&&y&&P?{username:y,accessKey:P}:q??null,Q=null;if(At!==null){let h=await un({env:f,tmsCreds:g.resolvedCreds??null,resolver:g.resolver,auth:At,getToken:async()=>g.token??null,session:w,log:(v,b,R,G)=>w.log(v,b,R,G),skipScreenshotQueue:n.local});Q=h.screenshotQueue,h.remoteLogger&&(Re("remote-logger",()=>h.remoteLogger.shutdownSync()),Lt(h.remoteLogger))}let kt=g.basicAuth&&!n.local?await cn({variables:D,auth:g.basicAuth,orgId:String(g.resolvedCreds?.org_id??""),env:f,localMode:!!n.local,log:(h,v,b,R)=>w.log(h,v,b,R)}):{};if(w.setAuteurVariables(D.auteur),w.setFirstRun(D.auteurObjective,fe),!n.local&&g.basicAuth&&F.project_id){let h=ee(f),v=await dn({tmsBaseUrl:h.tmsBaseUrl,auth:g.basicAuth,objective:D.auteurObjective,url:fe,projectId:F.project_id,folderId:F.folder_id??"",hasCustomProfile:!!c.chrome_profile_path,log:(b,R,G,ue)=>w.log(b,R,G,ue)});v&&w.setTestId(v)}w.setResolvedGlobal({mode:s,max_steps:parseInt(n.maxSteps,10),timeout:n.timeout?parseInt(n.timeout,10):void 0,target:z.instance?"chrome":n.cdpEndpoint?"cdp":n.wsEndpoint?"ws":void 0,chrome_profile:c.chrome_profile_path||void 0,cdp_endpoint:n.cdpEndpoint||void 0,ws_endpoint:n.wsEndpoint||void 0,headless:n.headless,global_context:yt??void 0,local_context:xt??void 0,variables:Object.keys(D.auteur).length>0?D.auteur:void 0});let Ot=an(D.auteur,D.auteurObjective),Rt=sn({objective:D.auteurObjective,url:Ct??void 0,model:n.model??c.model,chrome:z,auth:g,sessionId:w.sessionId,runIndex:0,windowSize:c.window_size,maxSteps:parseInt(n.maxSteps,10),headless:n.headless,disableAskUser:!process.stdin.isTTY,enableTaskSkills:n.taskSkills,variables:Object.keys(Ot).length>0?Ot:void 0,globalContext:yt??void 0,localContext:xt??void 0,sessionContext:Et}),Tt=Q?(h,v,b)=>{nn(w.sessionDir,v,h,Q,(R,G,ue,I)=>w.log(R,G,ue,I),b)}:void 0;if(!process.stdin.isTTY&&!n.agent&&(n.agent=!0),n.agent){let h=A=>{process.stdout.write(JSON.stringify(A)+`
52
- `)};W?.setRunActive(!0);let v;try{v=await Pn(Rt,{environment:f,mode:s,log:(A,k,M,ie)=>w.log(A,k,M,ie)},{onStepEnd:Tt,onStepLog:(A,k,M)=>w.logStep(A,k,M),onReasoning:A=>W?.setStepText(A),onStepComplete:()=>W?.setStepComplete()})}finally{W?.setRunActive(!1)}let{lastRunEnd:b,stepsTotal:R,hadError:G,bifurcationFlows:ue}=v;if(G&&w.escalateRun(0),b){let A=We(b,0,ue);w.addRunResult(Ge(b,D.auteurObjective,0,A),b.total_runs);let k=b.status==="passed"?"passed":G?"error":"failed";w.addFlow({runIndex:0,objective:D.auteurObjective,status:k,summary:b.summary??"",duration:b.duration??0,steps:R,stepsPassed:k==="passed"?R:0,stepsFailed:k==="passed"?0:R,reason:b.reason,creditsConsumed:b.credits_consumed})}Ke("chrome","Agent run completed");let I;if(w.log("info","DIRECT_UPLOAD_START","Starting direct upload (agent mode)",{agent_mode:!0,last_run_end:!!b,local:!!n.local}),b&&!n.local)try{let A=ee(f),k=F.project_id;if(g.basicAuth){let{UploadPipeline:M}=await import("./pipeline-L5TDZMLS.js");Q&&await Q.drain();let ie=Qe({session:w,env:f,auth:g,variables:D,variableIds:kt,projectId:k,folderId:F.folder_id,totalSteps:R,totalDuration:b.duration??0,screenshotExtMap:Q?.getExtMap(),codeExport:Xe({codeExport:n.codeExport,codeLanguage:n.codeLanguage,skipCodeValidation:n.skipCodeValidation},c.code_export),onProgress:()=>{},log:(K,Ue,Jn,Yn)=>w.log(K,Ue,Jn,Yn),shouldUploadArtifacts:!n.local,shouldReplaceLocalOutput:!1,shouldCommit:!1,isFirstRun:!0}),L=await new M(ie).execute();L.success&&(L.testcaseId&&w.setTestcaseId(L.testcaseId),L.testcaseId&&L.shareId&&k&&(I=Ie(A.testManagerUiUrl,k,L.testcaseId,L.shareId)));try{let{persistRecordedSession:K}=await import("./persist-recorded-session-WBPLUA55.js");K(w,{testcaseId:w.testcaseId??void 0,projectId:F.project_id??void 0,folderId:F.folder_id??void 0,codeExportDir:L.codeExportDir})}catch(K){w.log("error","DIRECT_PERSIST_ERROR","Persist failed in agent mode",{error:String(K)})}}}catch(A){w.log("error","DIRECT_UPLOAD_ERROR","Upload failed in agent mode",{error:A instanceof Error?A.message:String(A)})}if(b){let A={...b};I&&(A.test_url=I),h(A)}await w.finish("complete"),b||_(G?2:1,"Agent run ended with no result");let N=b.reason??"";(N.includes("Cancel")||N.includes("Timeout"))&&_(3,`Agent run: ${N}`),b.status==="passed"&&_(0,"Agent run passed"),_(1,"Agent run failed")}let j=null,we=0,Me=!1,It=null,$t={current:null},{waitUntilExit:Kn}=ve(ft.default.createElement(be,null,ft.default.createElement($n,{config:Rt,spawnOpts:{environment:f,mode:s,log:(h,v,b,R)=>w.log(h,v,b,R)},cancelRef:$t,banner:{model:n.model??c.model,auth:m,status:p},onComplete:h=>{j=h.lastRunEnd,we=h.stepsTotal,Me=h.hadError,It=h.bifurcationFlows},onStepEnd:Tt,onReasoning:h=>W?.setStepText(h),onStepComplete:()=>W?.setStepComplete()})),{stdout:process.stderr,exitOnCtrlC:!1}),He;if(n.timeout){let h=parseInt(n.timeout,10)*1e3;He=setTimeout(()=>{console.error(`
53
- Timeout: ${n.timeout}s exceeded \u2014 cancelling...`),$t.current?.()},h)}W?.setRunActive(!0);try{await Kn()}finally{W?.setRunActive(!1)}if(He&&clearTimeout(He),j){let h=We(j,0,It);w.addRunResult(Ge(j,D.auteurObjective,0,h),j.total_runs);let v=j.status==="passed"?"passed":Me?"error":"failed";w.addFlow({runIndex:0,objective:D.auteurObjective,status:v,summary:j.summary??"",duration:j.duration??0,steps:we,stepsPassed:v==="passed"?we:0,stepsFailed:v==="passed"?0:we,reason:j.reason,creditsConsumed:j.credits_consumed})}if(Ke("chrome","Ink run completed"),w.log("info","DIRECT_UPLOAD_START","Starting direct upload (ink mode)",{ink_mode:!0,last_event:!!j,local:!!n.local}),j&&!n.local)try{let h=ee(f),v=F.project_id;if(g.basicAuth){let{UploadPipeline:b}=await import("./pipeline-L5TDZMLS.js");Q&&(w.log("info","SCREENSHOT_UPLOAD_DRAIN","Draining screenshot upload queue before pipeline"),await Q.drain(),w.log("info","SCREENSHOT_UPLOAD_DRAINED","Screenshot upload queue drained"));let R=Qe({session:w,env:f,auth:g,variables:D,variableIds:kt,projectId:F.project_id,folderId:F.folder_id,totalSteps:we,totalDuration:j.duration??0,screenshotExtMap:Q?.getExtMap(),codeExport:Xe({codeExport:n.codeExport,codeLanguage:n.codeLanguage,skipCodeValidation:n.skipCodeValidation},c.code_export),onProgress:()=>{},log:(N,A,k,M)=>w.log(N,A,k,M),shouldUploadArtifacts:!n.local,shouldReplaceLocalOutput:!1,shouldCommit:!1,isFirstRun:!0}),G=new b(R),{renderUploadProgress:ue}=await import("./CliUploadProgress-ZSZ7TGCN.js"),I=await ue(G,N=>{if(N.testcaseId&&N.shareId&&v)return Ie(h.testManagerUiUrl,v,N.testcaseId,N.shareId)});if(I.success){I.testcaseId&&w.setTestcaseId(I.testcaseId);let N=s==="testing",A=w.nextRunIndex()>0;if(N&&!n.name&&A&&process.stdin.isTTY)try{let{renderSavePrompt:H,defaultSessionTimestamp:L}=await import("./SaveSessionPrompt-VNJDLJTF.js"),K=await H(L());K&&w.setSessionName(K)}catch(H){w.log("warn","DIRECT_SAVE_PROMPT_FAILED","Save prompt failed",{error:String(H)})}let k=null;try{let{persistRecordedSession:H}=await import("./persist-recorded-session-WBPLUA55.js");k=H(w,{testcaseId:w.testcaseId??void 0,projectId:F.project_id??void 0,folderId:F.folder_id??void 0,codeExportDir:I.codeExportDir})}catch(H){w.log("error","DIRECT_PERSIST_ERROR","Persist failed in ink mode",{error:String(H)})}let M=I.testcaseId&&I.shareId&&v?Ie(h.testManagerUiUrl,v,I.testcaseId,I.shareId):void 0,ie=I.testcaseId&&v?on(h.testManagerUiUrl,v,I.testcaseId):void 0;if(M||ie||I.codeExportDir||k){let{LinksBox:H}=await import("./LinksBox-2L2UX4LB.js"),{render:L}=await import("./build-JIKYOZUH.js"),K=await import("./react-QWOAB3TB.js"),{waitUntilExit:Ue}=L(K.default.createElement(H,{recordedTestPath:k?.recordedTestPath,outputDir:k?.outputDir,shareableLink:M,testCaseLink:ie,codeExportDir:I.codeExportDir}),{stdout:process.stderr});await Ue()}}if(w.testId){let{renderFeedbackPrompt:N}=await import("./CliFeedbackPrompt-3SDJ5GZP.js"),A=await N();if(A)try{await mn({tmsBaseUrl:h.tmsBaseUrl,username:g.basicAuth.username,accessKey:g.basicAuth.access_key,testId:w.testId,feedbackType:A,log:(k,M,ie,H)=>w.log(k,M,ie,H)})}catch(k){w.log("warn","FEEDBACK_FAILED","Feedback submission failed",{error:String(k)})}}}}catch(h){w.log("error","DIRECT_UPLOAD_FAILED","Direct upload failed (ink mode)",{error:h instanceof Error?h.stack??h.message:String(h)}),console.error(`Upload failed: ${h}`)}await w.finish("complete"),j||_(Me?2:1,"Run ended with no result");let Le=j.reason??"";(Le.includes("Cancel")||Le.includes("Timeout"))&&_(3,`Run: ${Le}`),j.status==="passed"&&_(0,"Run passed"),_(1,"Run failed")}catch(o){_(2,`CLI error: ${o instanceof Error?o.message:String(o)}`)}}),jn(e),hn(e),e.command("profiles [action] [name]").option("--env <name>","Environment for switch/delete").action(async(i,n,o)=>{let r=new Z;if(i==="list"||!i&&!process.stdin.isTTY){let a=r.listProfiles();if(a.length===0){console.log("No profiles configured. Run: kane-cli login");return}let u=r.getActiveProfile(),m=r.getDefaultEnv();for(let p of a){let f=p.profile===u&&p.env===m?" (active)":"";console.log(`${p.profile} [${p.env}]${f}`)}return}if(i==="switch"&&n){let a=o?.env??r.getDefaultEnv();r.setActiveProfile(n),r.setDefaultEnv(a),Oe(r,new se,n,a),console.log(`Switched to ${n} [${a}]`);return}if(i==="delete"&&n){let a=o?.env??r.getDefaultEnv();r.deleteProfileFull(n,a),console.log(`Deleted profile ${n} [${a}]`);return}process.stdin.isTTY||(console.error("Usage: kane-cli profiles list|switch|delete <name> [--env <env>]"),_(1,"Invalid profiles usage"));let{ProfilesView:c}=await import("./ProfilesView-72UTQ5PX.js"),{render:s}=await import("./build-JIKYOZUH.js"),d=await import("./react-QWOAB3TB.js");await new Promise(a=>{let{unmount:u}=s(d.default.createElement(c,{creds:r,onSwitch:(m,p)=>{r.setActiveProfile(m),r.setDefaultEnv(p),console.log(`Switched to ${m} [${p}]`)},onCancel:()=>{u(),a()}}))})}),e.command("feedback").requiredOption("--test-id <id>","Test ID").requiredOption("--feedback-type <type>","Feedback type: positive or negative").option("--details <text>","Feedback details (max 500 characters)").option("--username <user>","Basic auth username").option("--access-key <key>","Basic auth access key").option("--env <name>","Environment (prod or stage)").action(async i=>{i.feedbackType!=="positive"&&i.feedbackType!=="negative"&&(console.error('Error: --feedback-type must be "positive" or "negative"'),_(1,'Invalid --feedback-type (must be "positive" or "negative")')),i.details&&i.details.length>500&&(console.error("Error: --details must be 500 characters or fewer"),_(1,"--details exceeds 500 character limit"));let n=new Z,o=i.env??n.getDefaultEnv(),r=ee(o),c,s;try{let d=await he({creds:n,env:o,usernameFlag:i.username,accessKeyFlag:i.accessKey,log:()=>{}});c=d.resolvedCreds?.username??d.basicAuth?.username,s=d.resolvedCreds?.access_key??d.basicAuth?.access_key}catch{console.error("Not authenticated. Run: kane-cli login"),_(2,"Not authenticated for feedback")}(!c||!s)&&(console.error(JSON.stringify({error:"Could not resolve TMS credentials"})),_(1,"Could not resolve TMS credentials for feedback"));try{let{TmsClient:d}=await import("./tms-client-NNYXLXZK.js"),u=await new d(r.tmsBaseUrl,c,s).submitFeedback({instruction_id:"",test_id:i.testId,feedback_type:i.feedbackType,details:i.details,mode:"agent"});console.log(JSON.stringify(u)),_(0,"Feedback submitted")}catch(d){console.error(JSON.stringify({error:d instanceof Error?d.message:String(d)})),_(1,`Feedback failed: ${d instanceof Error?d.message:String(d)}`)}}),e.command("balance").description("Check credit balance").option("--profile <name>","Profile name").option("--username <user>","Basic auth username").option("--access-key <key>","Basic auth access key").option("--env <name>","Environment (prod or stage)").action(async i=>{let n=new Z,o=i.env??n.getDefaultEnv(),r=ee(o),c=null;try{let s=await he({creds:n,env:o,usernameFlag:i.username,accessKeyFlag:i.accessKey,log:()=>{}}),d=s.resolvedCreds??(s.basicAuth?{username:s.basicAuth.username,access_key:s.basicAuth.access_key}:null);d&&(c={username:d.username,accessKey:d.access_key})}catch{console.error(`Not authenticated [${o}]. Run "kane-cli login" first.`),_(2,`Not authenticated for balance [${o}]`)}c||(console.error(`Could not resolve credentials [${o}]. Run "kane-cli login" again.`),_(2,`Could not resolve credentials for balance [${o}]`));try{let{ControllerClient:s}=await import("./controller-client-RD2YEMAH.js"),a=await new s(r.controllerBaseUrl,c).getCreditBalance();console.log(`Available credits: ${a.available_credits}`),console.log(`Total credits: ${a.total_credits}`),_(0,"Balance retrieved")}catch(s){console.error(`Error: ${s instanceof Error?s.message:String(s)}`),_(1,`Balance check failed: ${s instanceof Error?s.message:String(s)}`)}}),e.command("generate").description("Generate TCG test cases (TUI when interactive; NDJSON/plain when piped, --agent, --refine, or --save)").argument("[objective]",'Generation prompt (e.g. "checkout flow on staging"). Required for new + --refine; omit for --save.').option("--refine","Refine an existing request with <objective>. Requires --req.").option("--save","Save an existing request to disk. Requires --req; --out optional (defaults to <cwd>/.testmuai/tests). Takes no objective.").option("--req <id>","The request id to --refine or --save.").option("--out <dir>","Save target dir (only with --save; default <cwd>/.testmuai/tests).").option("--agent","Emit typed NDJSON on stdout (auto-on when stdin is not a TTY)").option("--name <name>","Name for this generation: sets the session name (like run/testmd) AND the --save suite folder (overrides the auto-derived name)").option("--scenario-limit <n>","Max number of scenarios to generate (1-20)").option("--per-scenario-limit <n>","Max test cases per scenario (1-20)").option("--memory","Enable memory enhancement for generation").option("--project <id>","TMS project id (default: org/config default)").option("--folder <id>","TMS folder id").option("--env <name>","Environment (prod or stage)").option("--username <user>","Basic auth username (skip OAuth)").option("--access-key <key>","Basic auth access key").action(async(i,n)=>{let o=n.scenarioLimit?parseInt(n.scenarioLimit,10):void 0,r=n.perScenarioLimit?parseInt(n.perScenarioLimit,10):void 0,{decideGenerateMode:c,resolveGenerateOp:s,defaultOutDir:d,buildHeadlessDeps:a,runGenerateHeadless:u}=await import("./generate-headless-XWVVEFQR.js"),m=s({objective:i,refine:n.refine,save:n.save,req:n.req,out:n.out});if("error"in m){process.stderr.write(`error: ${m.error}
54
- `),_(2,`generate: ${m.error}`);return}let p=m.op,{headless:f,mode:x}=c(n,!!process.stdin.isTTY);if(!f){let{runGenerate:g}=await import("./tcg-generate-WURS7TXW.js");await g({objective:i,scenarioLimit:o,perScenarioLimit:r});return}let C=await a({mode:x,env:n.env,projectId:n.project,folderId:n.folder,username:n.username,accessKey:n.accessKey,name:n.name}),S=await u({op:p,objective:i,reqId:n.req,outDir:p==="save"?n.out?bi(process.cwd(),n.out):d():void 0,suiteName:n.name,scenarioLimit:o,perScenarioLimit:r,memory:n.memory},C);_(S,"generate complete")}),e.command("help").action(()=>{e.help()}),e.command("changelog").description("Show recent release notes").option("--all","Show all releases instead of latest 5").action(async i=>{let{fetchChangelog:n,formatChangelog:o}=await import("./changelog-VCAUV47V.js"),r=await n({all:i.all});console.log(o(r))}),e.parse(["node","kane-cli",...l])}function Dn(l){let e,t,i,n=[];for(let o=0;o<l.length;o++){let r=l[o];if(r==="--code-export")e=!0;else if(r==="--skip-code-validation")i=!0;else if(r==="--no-skip-code-validation")i=!1;else if(r==="--code-language"){let c=l[o+1];c!==void 0&&(t=c,o++)}else r.startsWith("--code-language=")?t=r.slice(16):n.push(r)}return{codeExport:e,codeLanguage:t,skipCodeValidation:i,filteredArgs:n}}function De(l,e){let t=l.split(".").map(n=>Number(n)||0),i=e.split(".").map(n=>Number(n)||0);for(let n=0;n<3;n++){let o=t[n]??0,r=i[n]??0;if(o<r)return-1;if(o>r)return 1}return 0}var Ci=[{version:"0.2.11",description:"Code export is now enabled by default (Python remains the default language; JavaScript is also available). Default run mode is now 'testing'.",apply:l=>{let e=[];return l.code_export.enabled===!1&&e.push({field:"code_export.enabled",from:!1,to:!0,description:"Code export is now enabled by default."}),l.mode==="action"&&e.push({field:"mode",from:"action",to:"testing",description:"Default run mode is now 'testing'."}),{cfg:{...l,code_export:{...l.code_export,enabled:!0},mode:"testing"},changes:e}}}];function Nn(l,e=Ae,t=Ci){let i=l.exists(),n=l.load();if(!i)return l.set("last_seen_version",e),{changes:[],fromVersion:e,toVersion:e,appliedVersions:[]};let o=n.last_seen_version||"0.0.0";if(De(o,e)>=0)return{changes:[],fromVersion:o,toVersion:o,appliedVersions:[]};let r=t.filter(u=>De(o,u.version)<0&&De(u.version,e)<=0).sort((u,m)=>De(u.version,m.version)),c=n,s=[],d=[];for(let u of r){let{cfg:m,changes:p}=u.apply(c);c=m,s.push(...p),d.push(u.version)}let a={...c,last_seen_version:e};return l.writeRaw(a),{changes:s,fromVersion:o,toVersion:e,appliedVersions:d}}function Fn(l){return l.changes.length===0?"":[`kane-cli updated to ${l.toVersion}. Default settings changed:`,...l.changes.map(t=>` \u2022 ${t.description} (${t.field}: ${JSON.stringify(t.from)} \u2192 ${JSON.stringify(t.to)})`),"","Use /config to review or revert any of these."].join(`
55
- `)}var ht=new Set(["balance","changelog","config","feedback","folders","generate","help","login","logout","profiles","projects","run","sessions","setup","testmd","update","whoami"]);function Ei(l,e){if(l===e)return 0;if(l.length===0)return e.length;if(e.length===0)return l.length;let t=new Array(e.length+1),i=new Array(e.length+1);for(let n=0;n<=e.length;n++)t[n]=n;for(let n=1;n<=l.length;n++){i[0]=n;for(let o=1;o<=e.length;o++){let r=l[n-1]===e[o-1]?0:1;i[o]=Math.min(t[o]+1,i[o-1]+1,t[o-1]+r)}[t,i]=[i,t]}return t[e.length]}function Vn(l,e){let t=l.toLowerCase(),i=[...e],n=[];for(let o of i){let r=o.toLowerCase();r!==t&&r.startsWith(t)&&n.push({name:o,distance:0})}if(n.length===0)for(let o of i){let r=o.toLowerCase();if(r===t)continue;let c=Ei(t,r);c<=2&&n.push({name:o,distance:c})}return n.sort((o,r)=>o.distance-r.distance||o.name.localeCompare(r.name)),n.slice(0,3).map(o=>o.name)}function Mn(l,e){let t=e.length>0?` \u2014 did you mean ${e.map(i=>`'${i}'`).join(" or ")}?`:"";return`error: unknown command '${l}'${t}
51
+ `),process.exit(2);return}let o=new Z,s=new re,l=s.load();n.chromeProfile&&(l.chrome_profile_path=n.chromeProfile);let r;if(n.mode===void 0)r=l.mode==="action"?"action":"testing";else if(n.mode==="action"||n.mode==="testing")r=n.mode;else{console.error("Invalid --mode. Must be 'action' or 'testing'."),_(2,"Invalid --mode");return}let d=new Mt,{printRecordingBanner:a}=await import("./recording-banner-6UI6NNRK.js");await a({isAgent:!!n.agent||!process.stdin.isTTY,sessionId:d.sessionId,sessionName:n.name??null,testPath:n.name?ne(process.cwd(),".testmuai","tests",`${n.name}_test.md`):null,outputPath:n.name?ne(process.cwd(),".testmuai","tests",`output-${n.name}`):null});let u=!!(n.username&&n.accessKey);if(await tn({isInteractive:!!process.stdin.isTTY&&!n.agent&&!u,creds:o,config:s}),!u){let h=o.getActiveProfile(),v=o.getDefaultEnv();h&&(o.loadBasicAuth(h,v)||o.loadCredentials(h,v))||(console.error("Not authenticated. Run: kane-cli login --oauth, or kane-cli login --username <user> --access-key <key>"),_(1,"Not authenticated"))}let m=`${o.getActiveProfile()??"no profile"}/${o.getDefaultEnv()}`,p=[],f=n.env??o.getDefaultEnv(),k=null,y=[],S=(h,v,C,R)=>{k?k(h,v,C,R):y.push([h,v,C,R])},g;try{g=await ge({creds:o,env:f,usernameFlag:n.username,accessKeyFlag:n.accessKey,log:S})}catch(h){throw h instanceof Zt&&(console.error(h.code==="not_authenticated"?"Not authenticated. Run: kane-cli login":"Token refresh failed. Run: kane-cli login"),_(2,h.code==="not_authenticated"?"Not authenticated":"Token refresh failed")),h}let b=!!g.basicAuth,E=g.basicAuth?.username,P=g.basicAuth?.access_key,q=g.token,ce=g.resolver,de=g.resolvedCreds;g.basicAuth&&p.push(`Auth: ${g.basicAuth.username}`);let Se=o.getActiveProfile()??"default",bt=o.getDefaultEnv();Ht(o,s,Se,bt);let F=s.load(),Ct=g.basicAuth??(g.resolvedCreds?{username:g.resolvedCreds.username,access_key:g.resolvedCreds.access_key}:null);if(Ct){let h=!!n.agent||!process.stdin.isTTY,v=await Wt({creds:o,config:s,profile:Se,env:bt,tmsCreds:Ct,isLocal:!!n.local,log:S});v.status==="cancelled"&&(console.error("error: project/folder configuration failed. See remediation above, or use --local."),_(2,"project/folder gate failed")),v.status==="ok"&&v.autoDefaulted&&h&&process.stdout.write(qt(v.autoDefaulted)),F=s.load()}else n.local||(console.error("Project and folder must be configured. Run `kane-cli login` to set up auth, or pass --username/--access-key, then `kane-cli config project <id>` / `kane-cli config folder <id>`."),_(2,"no TMS credentials for project/folder gate"));let yt=he,D=cn({objective:i,globalDir:ne(se,"variables"),localDir:ne(process.cwd(),".testmuai","variables"),file:n.variablesFile,inline:n.variables,onLoadError:h=>console.error(h)}),Et;if(n.sessionContext)try{Et=JSON.parse(n.sessionContext)}catch{console.error("Invalid --session-context JSON"),_(2,"Invalid --session-context JSON")}let Jn=n.globalContext??ne(se,"global-memory.md"),Yn=n.localContext??ne(process.cwd(),".testmuai","context.md"),kt=Qe(Jn),St=Qe(Yn),z;try{z=await rn({config:l,startUrl:yt??void 0,headless:n.headless,cft:n.cft,wsEndpoint:n.wsEndpoint,cdpEndpoint:n.cdpEndpoint})}catch(h){console.error(Yt(h));let v=h instanceof Jt?"Chrome not found at standard paths":`Chrome failed: ${h instanceof Error?h.message:h}`;_(2,v)}z.instance&&Re("chrome",()=>{z.instance.kill()});let W=null,xt=z.cdpEndpoint??n.cdpEndpoint;xt&&!n.cft&&!n.wsEndpoint&&(W=Qt({headless:n.headless,cdpEndpoint:xt,chromePid:z.instance?.process.pid}),W&&Re("marker-overlay",()=>W.kill())),n.cft?p.push("CfT mode: Playwright will manage its own browser"):n.wsEndpoint?p.push(`Playwright WS endpoint (${n.wsEndpoint.slice(0,60)}...)`):n.cdpEndpoint?p.push(`CDP connected (${n.cdpEndpoint})`):z.cdpEndpoint&&p.push(`Chrome ready (${z.cdpEndpoint})`);let w=d;w.start({model:n.model??l.model,environment:f,profile:o.getActiveProfile()}),n.name&&w.setSessionName(n.name),g.resolvedCreds?.org_id!==void 0&&w.setOrgId(String(g.resolvedCreds.org_id)),g.resolvedCreds?.plan!==void 0&&w.setPlan(g.resolvedCreds.plan??null),k=(h,v,C,R)=>w.log(h,v,C,R);for(let h of y)w.log(...h);y.length=0;let At=b&&E&&P?{username:E,accessKey:P}:q??null,Q=null;if(At!==null){let h=await mn({env:f,tmsCreds:g.resolvedCreds??null,resolver:g.resolver,auth:At,getToken:async()=>g.token??null,session:w,log:(v,C,R,G)=>w.log(v,C,R,G),skipScreenshotQueue:n.local,invocationMode:n.agent||!process.stdin.isTTY?"agent":"cli"});Q=h.screenshotQueue,h.remoteLogger&&(Re("remote-logger",()=>h.remoteLogger.shutdownSync()),Ut(h.remoteLogger))}let Ot=g.basicAuth&&!n.local?await dn({variables:D,auth:g.basicAuth,orgId:String(g.resolvedCreds?.org_id??""),env:f,localMode:!!n.local,log:(h,v,C,R)=>w.log(h,v,C,R)}):{};if(w.setAuteurVariables(D.auteur),w.setFirstRun(D.auteurObjective,he),!n.local&&g.basicAuth&&F.project_id){let h=ee(f),v=await un({tmsBaseUrl:h.tmsBaseUrl,auth:g.basicAuth,objective:D.auteurObjective,url:he,projectId:F.project_id,folderId:F.folder_id??"",hasCustomProfile:!!l.chrome_profile_path,log:(C,R,G,ue)=>w.log(C,R,G,ue)});v&&w.setTestId(v)}w.setResolvedGlobal({mode:r,max_steps:parseInt(n.maxSteps,10),timeout:n.timeout?parseInt(n.timeout,10):void 0,target:z.instance?"chrome":n.cdpEndpoint?"cdp":n.wsEndpoint?"ws":void 0,chrome_profile:l.chrome_profile_path||void 0,cdp_endpoint:n.cdpEndpoint||void 0,ws_endpoint:n.wsEndpoint||void 0,headless:n.headless,global_context:kt??void 0,local_context:St??void 0,variables:Object.keys(D.auteur).length>0?D.auteur:void 0});let Rt=ln(D.auteur,D.auteurObjective),Tt=an({objective:D.auteurObjective,url:yt??void 0,model:n.model??l.model,chrome:z,auth:g,sessionId:w.sessionId,runIndex:0,windowSize:l.window_size,maxSteps:parseInt(n.maxSteps,10),headless:n.headless,disableAskUser:!process.stdin.isTTY,enableTaskSkills:n.taskSkills,variables:Object.keys(Rt).length>0?Rt:void 0,globalContext:kt??void 0,localContext:St??void 0,sessionContext:Et}),It=Q?(h,v,C)=>{on(w.sessionDir,v,h,Q,(R,G,ue,$)=>w.log(R,G,ue,$),C)}:void 0;if(!process.stdin.isTTY&&!n.agent&&(n.agent=!0),n.agent){let h=x=>{process.stdout.write(JSON.stringify(x)+`
52
+ `)};W?.setRunActive(!0);let v;try{v=await Nn(Tt,{environment:f,mode:r,log:(x,A,M,ie)=>w.log(x,A,M,ie)},{onStepEnd:It,onStepLog:(x,A,M)=>w.logStep(x,A,M),onReasoning:x=>W?.setStepText(x),onStepComplete:()=>W?.setStepComplete()})}finally{W?.setRunActive(!1)}let{lastRunEnd:C,stepsTotal:R,hadError:G,bifurcationFlows:ue}=v;if(G&&w.escalateRun(0),C){let x=Ge(C,0,ue);w.addRunResult(Ke(C,D.auteurObjective,0,x),C.total_runs);let A=C.status==="passed"?"passed":G?"error":"failed";w.addFlow({runIndex:0,objective:D.auteurObjective,status:A,summary:C.summary??"",duration:C.duration??0,steps:R,stepsPassed:A==="passed"?R:0,stepsFailed:A==="passed"?0:R,reason:C.reason,creditsConsumed:C.credits_consumed})}Je("chrome","Agent run completed");let $;if(w.log("info","DIRECT_UPLOAD_START","Starting direct upload (agent mode)",{agent_mode:!0,last_run_end:!!C,local:!!n.local}),C&&!n.local)try{let x=ee(f),A=F.project_id;if(g.basicAuth){let{UploadPipeline:M}=await import("./pipeline-L5TDZMLS.js");Q&&await Q.drain();let ie=Xe({session:w,env:f,auth:g,variables:D,variableIds:Ot,projectId:A,folderId:F.folder_id,totalSteps:R,totalDuration:C.duration??0,screenshotExtMap:Q?.getExtMap(),codeExport:Ze({codeExport:n.codeExport,codeLanguage:n.codeLanguage,skipCodeValidation:n.skipCodeValidation},l.code_export),onProgress:()=>{},log:(K,Be,Qn,Xn)=>w.log(K,Be,Qn,Xn),shouldUploadArtifacts:!n.local,shouldReplaceLocalOutput:!1,shouldCommit:!1,isFirstRun:!0}),L=await new M(ie).execute();L.success&&(L.testcaseId&&w.setTestcaseId(L.testcaseId),L.testcaseId&&L.shareId&&A&&($=Ie(x.testManagerUiUrl,A,L.testcaseId,L.shareId)));try{let{persistRecordedSession:K}=await import("./persist-recorded-session-A5EJ25AE.js");K(w,{testcaseId:w.testcaseId??void 0,projectId:F.project_id??void 0,folderId:F.folder_id??void 0,codeExportDir:L.codeExportDir})}catch(K){w.log("error","DIRECT_PERSIST_ERROR","Persist failed in agent mode",{error:String(K)})}}}catch(x){w.log("error","DIRECT_UPLOAD_ERROR","Upload failed in agent mode",{error:x instanceof Error?x.message:String(x)})}if(C){let x={...C};$&&(x.test_url=$),h(x)}await w.finish("complete"),C||_(G?2:1,"Agent run ended with no result");let N=C.reason??"";(N.includes("Cancel")||N.includes("Timeout"))&&_(3,`Agent run: ${N}`),C.status==="passed"&&_(0,"Agent run passed"),_(1,"Agent run failed")}let j=null,we=0,He=!1,$t=null,Pt={current:null},{waitUntilExit:zn}=ve(ht.default.createElement(be,null,ht.default.createElement(Dn,{config:Tt,spawnOpts:{environment:f,mode:r,log:(h,v,C,R)=>w.log(h,v,C,R)},cancelRef:Pt,banner:{model:n.model??l.model,auth:m,status:p},onComplete:h=>{j=h.lastRunEnd,we=h.stepsTotal,He=h.hadError,$t=h.bifurcationFlows},onStepEnd:It,onReasoning:h=>W?.setStepText(h),onStepComplete:()=>W?.setStepComplete()})),{stdout:process.stderr,exitOnCtrlC:!1}),Le;if(n.timeout){let h=parseInt(n.timeout,10)*1e3;Le=setTimeout(()=>{console.error(`
53
+ Timeout: ${n.timeout}s exceeded \u2014 cancelling...`),Pt.current?.()},h)}W?.setRunActive(!0);try{await zn()}finally{W?.setRunActive(!1)}if(Le&&clearTimeout(Le),j){let h=Ge(j,0,$t);w.addRunResult(Ke(j,D.auteurObjective,0,h),j.total_runs);let v=j.status==="passed"?"passed":He?"error":"failed";w.addFlow({runIndex:0,objective:D.auteurObjective,status:v,summary:j.summary??"",duration:j.duration??0,steps:we,stepsPassed:v==="passed"?we:0,stepsFailed:v==="passed"?0:we,reason:j.reason,creditsConsumed:j.credits_consumed})}if(Je("chrome","Ink run completed"),w.log("info","DIRECT_UPLOAD_START","Starting direct upload (ink mode)",{ink_mode:!0,last_event:!!j,local:!!n.local}),j&&!n.local)try{let h=ee(f),v=F.project_id;if(g.basicAuth){let{UploadPipeline:C}=await import("./pipeline-L5TDZMLS.js");Q&&(w.log("info","SCREENSHOT_UPLOAD_DRAIN","Draining screenshot upload queue before pipeline"),await Q.drain(),w.log("info","SCREENSHOT_UPLOAD_DRAINED","Screenshot upload queue drained"));let R=Xe({session:w,env:f,auth:g,variables:D,variableIds:Ot,projectId:F.project_id,folderId:F.folder_id,totalSteps:we,totalDuration:j.duration??0,screenshotExtMap:Q?.getExtMap(),codeExport:Ze({codeExport:n.codeExport,codeLanguage:n.codeLanguage,skipCodeValidation:n.skipCodeValidation},l.code_export),onProgress:()=>{},log:(N,x,A,M)=>w.log(N,x,A,M),shouldUploadArtifacts:!n.local,shouldReplaceLocalOutput:!1,shouldCommit:!1,isFirstRun:!0}),G=new C(R),{renderUploadProgress:ue}=await import("./CliUploadProgress-7HRWDZ4P.js"),$=await ue(G,N=>{if(N.testcaseId&&N.shareId&&v)return Ie(h.testManagerUiUrl,v,N.testcaseId,N.shareId)});if($.success){$.testcaseId&&w.setTestcaseId($.testcaseId);let N=r==="testing",x=w.nextRunIndex()>0;if(N&&!n.name&&x&&process.stdin.isTTY)try{let{renderSavePrompt:H,defaultSessionTimestamp:L}=await import("./SaveSessionPrompt-7CZHPNYK.js"),K=await H(L());K&&w.setSessionName(K)}catch(H){w.log("warn","DIRECT_SAVE_PROMPT_FAILED","Save prompt failed",{error:String(H)})}let A=null;try{let{persistRecordedSession:H}=await import("./persist-recorded-session-A5EJ25AE.js");A=H(w,{testcaseId:w.testcaseId??void 0,projectId:F.project_id??void 0,folderId:F.folder_id??void 0,codeExportDir:$.codeExportDir})}catch(H){w.log("error","DIRECT_PERSIST_ERROR","Persist failed in ink mode",{error:String(H)})}let M=$.testcaseId&&$.shareId&&v?Ie(h.testManagerUiUrl,v,$.testcaseId,$.shareId):void 0,ie=$.testcaseId&&v?sn(h.testManagerUiUrl,v,$.testcaseId):void 0;if(M||ie||$.codeExportDir||A){let{LinksBox:H}=await import("./LinksBox-DI5QKX6K.js"),{render:L}=await import("./build-JIKYOZUH.js"),K=await import("./react-QWOAB3TB.js"),{waitUntilExit:Be}=L(K.default.createElement(H,{recordedTestPath:A?.recordedTestPath,outputDir:A?.outputDir,shareableLink:M,testCaseLink:ie,codeExportDir:$.codeExportDir}),{stdout:process.stderr});await Be()}}if(w.testId){let{renderFeedbackPrompt:N}=await import("./CliFeedbackPrompt-OSNATI4W.js"),x=await N();if(x)try{await pn({tmsBaseUrl:h.tmsBaseUrl,username:g.basicAuth.username,accessKey:g.basicAuth.access_key,testId:w.testId,feedbackType:x,log:(A,M,ie,H)=>w.log(A,M,ie,H)})}catch(A){w.log("warn","FEEDBACK_FAILED","Feedback submission failed",{error:String(A)})}}}}catch(h){w.log("error","DIRECT_UPLOAD_FAILED","Direct upload failed (ink mode)",{error:h instanceof Error?h.stack??h.message:String(h)}),console.error(`Upload failed: ${h}`)}await w.finish("complete"),j||_(He?2:1,"Run ended with no result");let Ue=j.reason??"";(Ue.includes("Cancel")||Ue.includes("Timeout"))&&_(3,`Run: ${Ue}`),j.status==="passed"&&_(0,"Run passed"),_(1,"Run failed")}catch(o){_(2,`CLI error: ${o instanceof Error?o.message:String(o)}`)}}),Fn(e),gn(e),e.command("install <target> [version]").description("Install kane-cli agent skill into Claude Code / Codex CLI / Gemini CLI (version defaults to latest compatible)").action(async(i,n)=>{if(i!=="skill"){console.error(`error: unknown install target '${i}'. Supported: skill`),_(2,`unknown install target '${i}'`);return}let{installSkill:o,formatInstallResult:s}=await import("./skill-installer-ZLBRT4QP.js"),l=await o(n);!process.stdin.isTTY?process.stdout.write(JSON.stringify({type:"skill_install_result",status:l.status,version:l.version,installed_targets:l.installedTargets,error:l.error})+`
54
+ `):process.stderr.write(s(l)+`
55
+ `),_(l.status==="failed"?1:0,`install skill: ${l.status}`)}),e.command("profiles [action] [name]").option("--env <name>","Environment for switch/delete").action(async(i,n,o)=>{let s=new Z;if(i==="list"||!i&&!process.stdin.isTTY){let a=s.listProfiles();if(a.length===0){console.log("No profiles configured. Run: kane-cli login");return}let u=s.getActiveProfile(),m=s.getDefaultEnv();for(let p of a){let f=p.profile===u&&p.env===m?" (active)":"";console.log(`${p.profile} [${p.env}]${f}`)}return}if(i==="switch"&&n){let a=o?.env??s.getDefaultEnv();s.setActiveProfile(n),s.setDefaultEnv(a),Oe(s,new re,n,a),console.log(`Switched to ${n} [${a}]`);return}if(i==="delete"&&n){let a=o?.env??s.getDefaultEnv();s.deleteProfileFull(n,a),console.log(`Deleted profile ${n} [${a}]`);return}process.stdin.isTTY||(console.error("Usage: kane-cli profiles list|switch|delete <name> [--env <env>]"),_(1,"Invalid profiles usage"));let{ProfilesView:l}=await import("./ProfilesView-N6XNSUHQ.js"),{render:r}=await import("./build-JIKYOZUH.js"),d=await import("./react-QWOAB3TB.js");await new Promise(a=>{let{unmount:u}=r(d.default.createElement(l,{creds:s,onSwitch:(m,p)=>{s.setActiveProfile(m),s.setDefaultEnv(p),console.log(`Switched to ${m} [${p}]`)},onCancel:()=>{u(),a()}}))})}),e.command("feedback").requiredOption("--test-id <id>","Test ID").requiredOption("--feedback-type <type>","Feedback type: positive or negative").option("--details <text>","Feedback details (max 500 characters)").option("--username <user>","Basic auth username").option("--access-key <key>","Basic auth access key").option("--env <name>","Environment (prod or stage)").action(async i=>{i.feedbackType!=="positive"&&i.feedbackType!=="negative"&&(console.error('Error: --feedback-type must be "positive" or "negative"'),_(1,'Invalid --feedback-type (must be "positive" or "negative")')),i.details&&i.details.length>500&&(console.error("Error: --details must be 500 characters or fewer"),_(1,"--details exceeds 500 character limit"));let n=new Z,o=i.env??n.getDefaultEnv(),s=ee(o),l,r;try{let d=await ge({creds:n,env:o,usernameFlag:i.username,accessKeyFlag:i.accessKey,log:()=>{}});l=d.resolvedCreds?.username??d.basicAuth?.username,r=d.resolvedCreds?.access_key??d.basicAuth?.access_key}catch{console.error("Not authenticated. Run: kane-cli login"),_(2,"Not authenticated for feedback")}(!l||!r)&&(console.error(JSON.stringify({error:"Could not resolve TMS credentials"})),_(1,"Could not resolve TMS credentials for feedback"));try{let{TmsClient:d}=await import("./tms-client-NNYXLXZK.js"),u=await new d(s.tmsBaseUrl,l,r).submitFeedback({instruction_id:"",test_id:i.testId,feedback_type:i.feedbackType,details:i.details,mode:"agent"});console.log(JSON.stringify(u)),_(0,"Feedback submitted")}catch(d){console.error(JSON.stringify({error:d instanceof Error?d.message:String(d)})),_(1,`Feedback failed: ${d instanceof Error?d.message:String(d)}`)}}),e.command("balance").description("Check credit balance").option("--profile <name>","Profile name").option("--username <user>","Basic auth username").option("--access-key <key>","Basic auth access key").option("--env <name>","Environment (prod or stage)").action(async i=>{let n=new Z,o=i.env??n.getDefaultEnv(),s=ee(o),l=null;try{let r=await ge({creds:n,env:o,usernameFlag:i.username,accessKeyFlag:i.accessKey,log:()=>{}}),d=r.resolvedCreds??(r.basicAuth?{username:r.basicAuth.username,access_key:r.basicAuth.access_key}:null);d&&(l={username:d.username,accessKey:d.access_key})}catch{console.error(`Not authenticated [${o}]. Run "kane-cli login" first.`),_(2,`Not authenticated for balance [${o}]`)}l||(console.error(`Could not resolve credentials [${o}]. Run "kane-cli login" again.`),_(2,`Could not resolve credentials for balance [${o}]`));try{let{ControllerClient:r}=await import("./controller-client-RD2YEMAH.js"),a=await new r(s.controllerBaseUrl,l).getCreditBalance();console.log(`Available credits: ${a.available_credits}`),console.log(`Total credits: ${a.total_credits}`),_(0,"Balance retrieved")}catch(r){console.error(`Error: ${r instanceof Error?r.message:String(r)}`),_(1,`Balance check failed: ${r instanceof Error?r.message:String(r)}`)}}),e.command("generate").description("Generate TCG test cases (TUI when interactive; NDJSON/plain when piped, --agent, --refine, or --save)").argument("[objective]",'Generation prompt (e.g. "checkout flow on staging"). Required for new + --refine; omit for --save.').option("--refine","Refine an existing request with <objective>. Requires --req.").option("--save","Save an existing request to disk. Requires --req; --out optional (defaults to <cwd>/.testmuai/tests). Takes no objective.").option("--req <id>","The request id to --refine or --save.").option("--out <dir>","Save target dir (only with --save; default <cwd>/.testmuai/tests).").option("--agent","Emit typed NDJSON on stdout (auto-on when stdin is not a TTY)").option("--name <name>","Name for this generation: sets the session name (like run/testmd) AND the --save suite folder (overrides the auto-derived name)").option("--scenario-limit <n>","Max number of scenarios to generate (1-20)").option("--per-scenario-limit <n>","Max test cases per scenario (1-20)").option("--memory","Enable memory enhancement for generation").option("--project <id>","TMS project id (default: org/config default)").option("--folder <id>","TMS folder id").option("--env <name>","Environment (prod or stage)").option("--username <user>","Basic auth username (skip OAuth)").option("--access-key <key>","Basic auth access key").option("--files <paths>","Comma-separated local files to attach (allowlisted types, \u226450MB each, \u226410; new/refine only)").action(async(i,n)=>{let o=n.scenarioLimit?parseInt(n.scenarioLimit,10):void 0,s=n.perScenarioLimit?parseInt(n.perScenarioLimit,10):void 0,{decideGenerateMode:l,resolveGenerateOp:r,defaultOutDir:d,buildHeadlessDeps:a,runGenerateHeadless:u,parseFilesFlag:m}=await import("./generate-headless-WL6A6ACX.js"),p=r({objective:i,refine:n.refine,save:n.save,req:n.req,out:n.out});if("error"in p){process.stderr.write(`error: ${p.error}
56
+ `),_(2,`generate: ${p.error}`);return}let f=p.op,k=m(n.files);if(f==="save"&&k){process.stderr.write(`error: --files is not valid with --save
57
+ `),_(2,"generate: --files not valid with --save");return}let{headless:y,mode:S}=l(n,!!process.stdin.isTTY);if(!y){let{runGenerate:E}=await import("./tcg-generate-R6P4QUGO.js");await E({objective:i,scenarioLimit:o,perScenarioLimit:s});return}let g=await a({mode:S,env:n.env,projectId:n.project,folderId:n.folder,username:n.username,accessKey:n.accessKey,name:n.name}),b=await u({op:f,objective:i,reqId:n.req,outDir:f==="save"?n.out?Ei(process.cwd(),n.out):d():void 0,suiteName:n.name,scenarioLimit:o,perScenarioLimit:s,memory:n.memory,files:k},g);_(b,"generate complete")}),e.command("help").action(()=>{e.help()}),e.command("changelog").description("Show recent release notes").option("--all","Show all releases instead of latest 5").action(async i=>{let{fetchChangelog:n,formatChangelog:o}=await import("./changelog-ZBTZCYKI.js"),s=await n({all:i.all});console.log(o(s))}),e.parse(["node","kane-cli",...c])}function Vn(c){let e,t,i,n=[];for(let o=0;o<c.length;o++){let s=c[o];if(s==="--code-export")e=!0;else if(s==="--skip-code-validation")i=!0;else if(s==="--no-skip-code-validation")i=!1;else if(s==="--code-language"){let l=c[o+1];l!==void 0&&(t=l,o++)}else s.startsWith("--code-language=")?t=s.slice(16):n.push(s)}return{codeExport:e,codeLanguage:t,skipCodeValidation:i,filteredArgs:n}}function Ne(c,e){let t=c.split(".").map(n=>Number(n)||0),i=e.split(".").map(n=>Number(n)||0);for(let n=0;n<3;n++){let o=t[n]??0,s=i[n]??0;if(o<s)return-1;if(o>s)return 1}return 0}var ki=[{version:"0.2.11",description:"Code export is now enabled by default (Python remains the default language; JavaScript is also available). Default run mode is now 'testing'.",apply:c=>{let e=[];return c.code_export.enabled===!1&&e.push({field:"code_export.enabled",from:!1,to:!0,description:"Code export is now enabled by default."}),c.mode==="action"&&e.push({field:"mode",from:"action",to:"testing",description:"Default run mode is now 'testing'."}),{cfg:{...c,code_export:{...c.code_export,enabled:!0},mode:"testing"},changes:e}}}];function Mn(c,e=xe,t=ki){let i=c.exists(),n=c.load();if(!i)return c.set("last_seen_version",e),{changes:[],fromVersion:e,toVersion:e,appliedVersions:[]};let o=n.last_seen_version||"0.0.0";if(Ne(o,e)>=0)return{changes:[],fromVersion:o,toVersion:o,appliedVersions:[]};let s=t.filter(u=>Ne(o,u.version)<0&&Ne(u.version,e)<=0).sort((u,m)=>Ne(u.version,m.version)),l=n,r=[],d=[];for(let u of s){let{cfg:m,changes:p}=u.apply(l);l=m,r.push(...p),d.push(u.version)}let a={...l,last_seen_version:e};return c.writeRaw(a),{changes:r,fromVersion:o,toVersion:e,appliedVersions:d}}function Hn(c){return c.changes.length===0?"":[`kane-cli updated to ${c.toVersion}. Default settings changed:`,...c.changes.map(t=>` \u2022 ${t.description} (${t.field}: ${JSON.stringify(t.from)} \u2192 ${JSON.stringify(t.to)})`),"","Use /config to review or revert any of these."].join(`
58
+ `)}var gt=new Set(["balance","changelog","config","feedback","folders","generate","help","install","login","logout","profiles","projects","run","sessions","setup","testmd","update","whoami"]);function Si(c,e){if(c===e)return 0;if(c.length===0)return e.length;if(e.length===0)return c.length;let t=new Array(e.length+1),i=new Array(e.length+1);for(let n=0;n<=e.length;n++)t[n]=n;for(let n=1;n<=c.length;n++){i[0]=n;for(let o=1;o<=e.length;o++){let s=c[n-1]===e[o-1]?0:1;i[o]=Math.min(t[o]+1,i[o-1]+1,t[o-1]+s)}[t,i]=[i,t]}return t[e.length]}function Ln(c,e){let t=c.toLowerCase(),i=[...e],n=[];for(let o of i){let s=o.toLowerCase();s!==t&&s.startsWith(t)&&n.push({name:o,distance:0})}if(n.length===0)for(let o of i){let s=o.toLowerCase();if(s===t)continue;let l=Si(t,s);l<=2&&n.push({name:o,distance:l})}return n.sort((o,s)=>o.distance-s.distance||o.name.localeCompare(s.name)),n.slice(0,3).map(o=>o.name)}function Un(c,e){let t=e.length>0?` \u2014 did you mean ${e.map(i=>`'${i}'`).join(" or ")}?`:"";return`error: unknown command '${c}'${t}
56
59
 
57
60
  Run an objective with: kane-cli run "<objective>"
58
61
  List all commands: kane-cli --help
59
- `}Ut();gn();var Bn=$e().catch(()=>null),Ne=null,qn=()=>Ne||(Ne=Nn(new se),Ne),Fe=$.argv.slice(2),yi=Fe.includes("--dev"),gt=Fe.includes("--local"),xi=Fe.includes("--tui");yi&&($.env.KANE_DEV_MODE="1");var Si=Fe.filter(l=>!["--dev","--local","--tui"].includes(l));function Ai(l){let e=[],t;for(let i=0;i<l.length;i++){let n=l[i];if(n==="--name"&&i+1<l.length){t=l[i+1],i++;continue}if(n.startsWith("--name=")){t=n.slice(7);continue}e.push(n)}return{name:t,rest:e}}var Ve=Dn(Si),le=Ve.filteredArgs,Hn=Ve.codeExport,wt=Ve.codeLanguage,_t=Ve.skipCodeValidation,Ln=()=>{Bn.then(l=>{l&&$.stderr.write(`
60
- Update available: ${l.current} \u2192 ${l.latest} \u2014 run \`${pn()}\` to update
62
+ `}Bt();vn();wn();var Gn=$e().catch(()=>null),xi=Pe().catch(()=>null),Fe=null,Kn=()=>Fe||(Fe=Mn(new re),Fe),Ve=I.argv.slice(2),Ai=Ve.includes("--dev"),wt=Ve.includes("--local"),Oi=Ve.includes("--tui");Ai&&(I.env.KANE_DEV_MODE="1");var Ri=Ve.filter(c=>!["--dev","--local","--tui"].includes(c));function Ti(c){let e=[],t;for(let i=0;i<c.length;i++){let n=c[i];if(n==="--name"&&i+1<c.length){t=c[i+1],i++;continue}if(n.startsWith("--name=")){t=n.slice(7);continue}e.push(n)}return{name:t,rest:e}}var Me=Vn(Ri),le=Me.filteredArgs,Bn=Me.codeExport,_t=Me.codeLanguage,vt=Me.skipCodeValidation,qn=()=>{Gn.then(c=>{c&&I.stderr.write(`
63
+ Update available: ${c.current} \u2192 ${c.latest} \u2014 run \`${fn()}\` to update
61
64
 
62
- `)})},Un=()=>{let l=Fn(qn());l&&$.stderr.write(`
63
- ${l}
65
+ `)}),xi.then(c=>{if(!c)return;let e=c.current??"not installed";I.stderr.write(`Skill update available: ${e} \u2192 ${c.latestCompatible} \u2014 run \`kane-cli install skill\`
64
66
 
65
- `)},ki=new Set(["--help","-h","--version","-V"]),Oi=le[0]==="help"||le.some(l=>ki.has(l));if(Oi)ye(le);else if(xi){$.stdin.isTTY||($.stderr.write(`Error: --tui mode requires an interactive terminal (TTY).
66
- `),$.exit(1)),Ln();let{name:l}=Ai(le);if(l){let{validateNameOrThrow:i}=await import("./name-validator-5YGJXLZ7.js");try{i(l)}catch(n){$.stderr.write(`error: ${n.message}
67
- `),$.exit(2)}}let{waitUntilExit:e,unmount:t}=ve(xe.default.createElement(be,null,xe.default.createElement(fn,{localMode:gt,codeExport:Hn,codeLanguage:wt,skipCodeValidation:_t,updatePromise:Bn,migrationResult:qn(),sessionName:l})),{exitOnCtrlC:!1});Ce(()=>t()),Je(()=>{try{$.stdin.setRawMode?.(!1)}catch{}$.stdout.write("\x1B[?25h")}),e().then(()=>{_(0,"TUI session ended")})}else if(le.length>0){let l=le[0],e=ht.has(l),t=l.startsWith("-");!e&&!t&&($.stderr.write(Mn(l,Vn(l,ht))),$.exit(2)),Ln(),Un();let n=gt&&l==="run"?[...le,"--local"]:le;ye(n)}else{$.stdin.isTTY||($.stderr.write(`Error: kane-cli requires an interactive terminal (TTY) when run without arguments.
67
+ `)})},Wn=()=>{let c=Hn(Kn());c&&I.stderr.write(`
68
+ ${c}
69
+
70
+ `)},Ii=new Set(["--help","-h","--version","-V"]),$i=le[0]==="help"||le.some(c=>Ii.has(c));if($i)Ee(le);else if(Oi){I.stdin.isTTY||(I.stderr.write(`Error: --tui mode requires an interactive terminal (TTY).
71
+ `),I.exit(1)),qn();let{name:c}=Ti(le);if(c){let{validateNameOrThrow:i}=await import("./name-validator-5YGJXLZ7.js");try{i(c)}catch(n){I.stderr.write(`error: ${n.message}
72
+ `),I.exit(2)}}let{waitUntilExit:e,unmount:t}=ve(ke.default.createElement(be,null,ke.default.createElement(hn,{localMode:wt,codeExport:Bn,codeLanguage:_t,skipCodeValidation:vt,updatePromise:Gn,migrationResult:Kn(),sessionName:c})),{exitOnCtrlC:!1});Ce(()=>t()),Ye(()=>{try{I.stdin.setRawMode?.(!1)}catch{}I.stdout.write("\x1B[?25h")}),e().then(()=>{_(0,"TUI session ended")})}else if(le.length>0){let c=le[0],e=gt.has(c),t=c.startsWith("-");!e&&!t&&(I.stderr.write(Un(c,Ln(c,gt))),I.exit(2)),qn(),Wn();let n=wt&&c==="run"?[...le,"--local"]:le;Ee(n)}else{I.stdin.isTTY||(I.stderr.write(`Error: kane-cli requires an interactive terminal (TTY) when run without arguments.
68
73
  Usage: kane-cli "objective" for non-interactive mode.
69
- `),$.exit(1));let l={current:null},{waitUntilExit:e,unmount:t}=ve(xe.default.createElement(be,null,xe.default.createElement(Zt,{resultRef:l})),{exitOnCtrlC:!1});Ce(()=>t()),Je(()=>{try{$.stdin.setRawMode?.(!1)}catch{}$.stdout.write("\x1B[?25h")}),e().then(()=>{let i=l.current;if(!i){_(0,"Single-shot session ended (no objective)");return}let n=i.objective.trim();if(n==="--help"||n==="-h"||n==="help"){ye(["--help"]);return}Un();let o=["run",i.objective];gt&&o.push("--local"),Hn&&o.push("--code-export"),wt&&o.push("--code-language",wt),_t===!0&&o.push("--skip-code-validation"),_t===!1&&o.push("--no-skip-code-validation"),ye(o)})}
74
+ `),I.exit(1));let c={current:null},{waitUntilExit:e,unmount:t}=ve(ke.default.createElement(be,null,ke.default.createElement(en,{resultRef:c})),{exitOnCtrlC:!1});Ce(()=>t()),Ye(()=>{try{I.stdin.setRawMode?.(!1)}catch{}I.stdout.write("\x1B[?25h")}),e().then(()=>{let i=c.current;if(!i){_(0,"Single-shot session ended (no objective)");return}let n=i.objective.trim();if(n==="--help"||n==="-h"||n==="help"){Ee(["--help"]);return}Wn();let o=["run",i.objective];wt&&o.push("--local"),Bn&&o.push("--code-export"),_t&&o.push("--code-language",_t),vt===!0&&o.push("--skip-code-validation"),vt===!1&&o.push("--no-skip-code-validation"),Ee(o)})}