@testmuai/kane-cli 0.7.2 → 0.8.1

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 (207) hide show
  1. package/dist/{ChatSurface-E7QKI4LA.js → ChatSurface-U37VZDCW.js} +1 -1
  2. package/dist/{ChromeProfilePicker-DGDWGCZD.js → ChromeProfilePicker-AUU7JF6F.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-SYCZXSME.js → CliFeedbackPrompt-4W74Y3UF.js} +1 -1
  4. package/dist/{CliUploadProgress-VDEAKXJY.js → CliUploadProgress-6HL7WTEX.js} +1 -1
  5. package/dist/ConfigView-6BSCZP5Y.js +2 -0
  6. package/dist/EvidenceViewOffer-62XHEEGW.js +2 -0
  7. package/dist/FolderPicker-S7U2EN2M.js +2 -0
  8. package/dist/{HelpView-ON6BFGJM.js → HelpView-TU7ED43J.js} +1 -1
  9. package/dist/{InfoBox-B23NZ6IG.js → InfoBox-JLTMKVDE.js} +1 -1
  10. package/dist/{LinksBox-TI26VFFH.js → LinksBox-LREUUJDV.js} +1 -1
  11. package/dist/{ProfilesView-CRO5AH3H.js → ProfilesView-W3GX2N2E.js} +1 -1
  12. package/dist/{ProjectPicker-3N7LJOXU.js → ProjectPicker-SYQUJK2J.js} +1 -1
  13. package/dist/{SaveSessionPrompt-UTOEC5AW.js → SaveSessionPrompt-MR5NJMRP.js} +1 -1
  14. package/dist/SingleShotApp-XOKVOM7C.js +2 -0
  15. package/dist/{SummaryBox-JK64EKC2.js → SummaryBox-UAYSVFB7.js} +1 -1
  16. package/dist/TestMdRunView-7UVSDAF4.js +2 -0
  17. package/dist/{WhoamiView-6QSLPNF6.js → WhoamiView-2YU76ASQ.js} +1 -1
  18. package/dist/adbkit-apkreader-ORZBGCJQ.js +184 -0
  19. package/dist/app-client-OEXESV4U.js +2 -0
  20. package/dist/app-download-AEEFQ63M.js +2 -0
  21. package/dist/{auth-IKFVW3NX.js → auth-HET3TBRI.js} +1 -1
  22. package/dist/{bind-KCUSVJXG.js → bind-STKXOUYI.js} +3 -3
  23. package/dist/bootstrap-44YKVWWE.js +2 -0
  24. package/dist/bridge-5Z3BIB77.js +2 -0
  25. package/dist/{changelog-AAH2ZBYO.js → changelog-7OWRHFHZ.js} +1 -1
  26. package/dist/{chat-committer-UUC6JTRJ.js → chat-committer-ZWWCLJFD.js} +1 -1
  27. package/dist/{chunk-ZUGCHQFC.js → chunk-27U4PLPX.js} +1 -1
  28. package/dist/{chunk-ZBOWFJB2.js → chunk-2BGUUWNF.js} +2 -2
  29. package/dist/chunk-2KDGIZED.js +4 -0
  30. package/dist/{chunk-SFII7HPP.js → chunk-3LJWYRAA.js} +1 -1
  31. package/dist/chunk-3PECJD6S.js +11 -0
  32. package/dist/{chunk-7QJ75SYR.js → chunk-3POR47RC.js} +2 -2
  33. package/dist/chunk-4JOD47QI.js +2 -0
  34. package/dist/{chunk-QIGPXYMF.js → chunk-56PAQAX5.js} +6 -6
  35. package/dist/{chunk-DZPGG4S6.js → chunk-65ZTD5SJ.js} +2 -2
  36. package/dist/chunk-6IA6QMPH.js +2 -0
  37. package/dist/{chunk-VT54ARGE.js → chunk-6O3DDOP2.js} +1 -1
  38. package/dist/chunk-6XX4LEVJ.js +2 -0
  39. package/dist/{chunk-4NFCAGRK.js → chunk-766WGMBU.js} +1 -1
  40. package/dist/{chunk-VMM4LC4V.js → chunk-7BZSCUPP.js} +3 -3
  41. package/dist/{chunk-PLOWZLG5.js → chunk-7JWKHKFU.js} +2 -2
  42. package/dist/chunk-7Q6M6P4X.js +26 -0
  43. package/dist/chunk-AW2XUHH4.js +2 -0
  44. package/dist/{chunk-7OYZR6JA.js → chunk-BRHNRCEZ.js} +1 -1
  45. package/dist/chunk-BRIEBB2U.js +2 -0
  46. package/dist/{chunk-APPYQZFK.js → chunk-C7HSWZP6.js} +1 -1
  47. package/dist/chunk-CTW2VQKS.js +6 -0
  48. package/dist/{chunk-FDIPQRX4.js → chunk-DCY6R5DP.js} +1 -1
  49. package/dist/{chunk-KWIK22R6.js → chunk-DO5HAO3H.js} +1 -1
  50. package/dist/chunk-DPUV6OSP.js +2 -0
  51. package/dist/{chunk-B5RS2XZU.js → chunk-DZGCXKKI.js} +3 -3
  52. package/dist/{chunk-JKM2PUHI.js → chunk-EDSZJZFG.js} +1 -1
  53. package/dist/{chunk-OIYGGEUL.js → chunk-ELM6MXGJ.js} +1 -1
  54. package/dist/{chunk-VHZ4S57N.js → chunk-EWCAFKLX.js} +1 -1
  55. package/dist/chunk-EYOCNMUM.js +2 -0
  56. package/dist/{chunk-GYNTNKNB.js → chunk-FEJXWJ3L.js} +1 -1
  57. package/dist/{chunk-UC7MNPIN.js → chunk-FMRSMN34.js} +1 -1
  58. package/dist/chunk-FNH55WSR.js +19 -0
  59. package/dist/chunk-FQLIW3LM.js +2 -0
  60. package/dist/{chunk-O75ZHGJG.js → chunk-G7VQCS4J.js} +1 -1
  61. package/dist/{chunk-2WFZIQ62.js → chunk-GCBKDX2J.js} +1 -1
  62. package/dist/chunk-GKYPNSQP.js +26 -0
  63. package/dist/chunk-GPG3FIN3.js +21 -0
  64. package/dist/chunk-GZPK6FRP.js +7 -0
  65. package/dist/{chunk-XUS4WKDS.js → chunk-HCKH44I2.js} +1 -1
  66. package/dist/chunk-HEAIJCGZ.js +2 -0
  67. package/dist/{chunk-SL6PCVM2.js → chunk-HMYMSRA4.js} +1 -1
  68. package/dist/chunk-IOFZSQAA.js +2 -0
  69. package/dist/{chunk-YTHQNN2L.js → chunk-IP2O264K.js} +1 -1
  70. package/dist/{chunk-AXTGYOMK.js → chunk-JJHG3BWO.js} +1 -1
  71. package/dist/chunk-KFSUPQAG.js +66 -0
  72. package/dist/chunk-KRKGZ2ZW.js +47 -0
  73. package/dist/{chunk-AJ56AMT6.js → chunk-KU6IXFGZ.js} +1 -1
  74. package/dist/chunk-L7MXYCD7.js +2 -0
  75. package/dist/{chunk-5ZQZOVWY.js → chunk-MA34UWKX.js} +3 -3
  76. package/dist/chunk-MBF3FP5P.js +5 -0
  77. package/dist/chunk-MSGW4JDG.js +2 -0
  78. package/dist/{chunk-C3T7TKAC.js → chunk-MXHHMIO2.js} +2 -2
  79. package/dist/{chunk-RDNFVZEB.js → chunk-NX7TM662.js} +1 -1
  80. package/dist/chunk-OMQCD3KR.js +2 -0
  81. package/dist/{chunk-OR6MCL6Z.js → chunk-OTTGS2TE.js} +1 -1
  82. package/dist/chunk-QGKPLOUI.js +2 -0
  83. package/dist/{chunk-FBHRBFHP.js → chunk-QRZRSAZH.js} +1 -1
  84. package/dist/{chunk-VLWMMOMF.js → chunk-QSDH5P7C.js} +1 -1
  85. package/dist/{chunk-VOOPWFHW.js → chunk-QW6EZC53.js} +1 -1
  86. package/dist/{chunk-ZRASQ63J.js → chunk-RC52N7PC.js} +1 -1
  87. package/dist/{chunk-M6FKJKC6.js → chunk-RFR4ZKIC.js} +3 -3
  88. package/dist/{chunk-AFBKGZFG.js → chunk-RLRNLIRS.js} +1 -1
  89. package/dist/{chunk-5FJJJNJK.js → chunk-SDPRO2LE.js} +1 -1
  90. package/dist/chunk-T5Y6MOLM.js +4 -0
  91. package/dist/{chunk-VRLUNZAK.js → chunk-TFPPEOAK.js} +1 -1
  92. package/dist/{chunk-5SXMV66P.js → chunk-TKGUT425.js} +1 -1
  93. package/dist/chunk-TYLYFERW.js +10 -0
  94. package/dist/chunk-TZXXJWHA.js +2 -0
  95. package/dist/{chunk-KQZA2QSC.js → chunk-UDIQOJEL.js} +1 -1
  96. package/dist/chunk-UV462FZR.js +2 -0
  97. package/dist/{chunk-HYSFJSIG.js → chunk-UXDL4XDL.js} +1 -1
  98. package/dist/{chunk-53IBTIL3.js → chunk-V2R3LCA3.js} +1 -1
  99. package/dist/{chunk-VFII6C46.js → chunk-W2JFDDIB.js} +1 -1
  100. package/dist/{chunk-4LTXE3IX.js → chunk-XO5ZH3ZR.js} +1 -1
  101. package/dist/{chunk-EOLFTMWF.js → chunk-YFYCCTSL.js} +1 -1
  102. package/dist/{chunk-JPWLGHPM.js → chunk-YJELGSKJ.js} +1 -1
  103. package/dist/chunk-YRFMPIU2.js +4 -0
  104. package/dist/{chunk-F7ISS545.js → chunk-ZGBSGZZM.js} +1 -1
  105. package/dist/{chunk-VWKVUOXU.js → chunk-ZIUAOEUC.js} +1 -1
  106. package/dist/chunk-ZVHCQMJ6.js +13 -0
  107. package/dist/{config-CWZV6XPT.js → config-RS47F5SC.js} +1 -1
  108. package/dist/{controller-client-RD2YEMAH.js → controller-client-OB4WD2C4.js} +1 -1
  109. package/dist/{cover-cmd-NWIRJY5Z.js → cover-cmd-HDZZWJXG.js} +1 -1
  110. package/dist/{credentials-YHTJGKEO.js → credentials-OH6AVI6N.js} +1 -1
  111. package/dist/deps-resolve-XC5S53DG.js +2 -0
  112. package/dist/{dispatch-WVNXB7AD.js → dispatch-SE5GY3Z2.js} +1 -1
  113. package/dist/doctor-FSECFZUU.js +2 -0
  114. package/dist/docx-convert-JMUMT5C4.js +2 -0
  115. package/dist/evidence-OYPHZUKI.js +2 -0
  116. package/dist/evolve-cmd-BCPNXAMV.js +2 -0
  117. package/dist/exec-P2IKJRRR.js +2 -0
  118. package/dist/exit-manager-3FVBTNYR.js +2 -0
  119. package/dist/{explain-cmd-IZEHWZV5.js → explain-cmd-3GEKR7O5.js} +1 -1
  120. package/dist/{explain-cmd-75MCF2ZV.js → explain-cmd-EX24XKD6.js} +1 -1
  121. package/dist/{extract-bind-5OWELRME.js → extract-bind-LLEASZAK.js} +3 -3
  122. package/dist/{extract-cmd-ZRYMJ6IC.js → extract-cmd-UZMEZMGP.js} +2 -2
  123. package/dist/{gaps-cmd-XBRXKXDL.js → gaps-cmd-IVXFPFAQ.js} +1 -1
  124. package/dist/{generate-headless-D6BISWDC.js → generate-headless-D3SVQ2AI.js} +3 -3
  125. package/dist/host-7GZPBA74.js +2 -0
  126. package/dist/index.js +85 -69
  127. package/dist/ingest-cmd-EAE7N5RC.js +2 -0
  128. package/dist/{interactive-bind-XSRD36MO.js → interactive-bind-ORMN2REX.js} +3 -3
  129. package/dist/{lifecycle-cmd-EQSFAZG6.js → lifecycle-cmd-O2324GN6.js} +1 -1
  130. package/dist/{list-cmd-IRJSUCM5.js → list-cmd-N4KMA34H.js} +1 -1
  131. package/dist/list-commands-MRXL5HGS.js +2 -0
  132. package/dist/login-flow-QJQM3RHT.js +2 -0
  133. package/dist/{maintenance-cmd-MVFA6H74.js → maintenance-cmd-6XSVO6FO.js} +1 -1
  134. package/dist/mobile-prompts-TOX35ER6.js +2 -0
  135. package/dist/persist-recorded-session-TLDQ5HKP.js +3 -0
  136. package/dist/{phase-seed-DIRETNU6.js → phase-seed-VFHIH6FL.js} +1 -1
  137. package/dist/pipeline-UOM4LNAI.js +2 -0
  138. package/dist/prepare-target-QYWIJIVQ.js +2 -0
  139. package/dist/reconcile-cmd-3H34KVVD.js +2 -0
  140. package/dist/{reconcile-deps-HTT6IPHT.js → reconcile-deps-XIH75ZLY.js} +2 -2
  141. package/dist/reconcile-engine-UKWPG2LV.js +2 -0
  142. package/dist/{recording-banner-76GCIPUN.js → recording-banner-4M7XHVGI.js} +1 -1
  143. package/dist/registry-PYOTKZYZ.js +2 -0
  144. package/dist/{require-project-folder-ACRDP5ZB.js → require-project-folder-4UPQNEBJ.js} +1 -1
  145. package/dist/resolve-run-intent-X72V3KJA.js +7 -0
  146. package/dist/{resolver-SRPCFW7P.js → resolver-UBOZLFFE.js} +1 -1
  147. package/dist/{review-cmd-L3V5UP5T.js → review-cmd-DQRKQUMG.js} +1 -1
  148. package/dist/run-2COODVX2.js +2 -0
  149. package/dist/run-URPGHOQM.js +2 -0
  150. package/dist/{run-test-md-KEHSRMCM.js → run-test-md-76ZPKXO6.js} +3 -3
  151. package/dist/session-target-UWROGOCY.js +2 -0
  152. package/dist/{sessions-cmd-ZVYGSRJ3.js → sessions-cmd-ZZIZN2VB.js} +1 -1
  153. package/dist/{skill-installer-HBN3A35K.js → skill-installer-CIS6GAYF.js} +1 -1
  154. package/dist/spawner-J67QR4QP.js +2 -0
  155. package/dist/{structured-answers-A43Q25CZ.js → structured-answers-5EY2AZN7.js} +1 -1
  156. package/dist/tcg-generate-BDTRKY2A.js +2 -0
  157. package/dist/testmd-actions-77ELR5UU.js +2 -0
  158. package/dist/token-refresh-4BPAPXKK.js +2 -0
  159. package/dist/types-6E2HTDKJ.js +2 -0
  160. package/dist/{validate-basic-ZGWPBYB6.js → validate-basic-2GVSQ2R5.js} +1 -1
  161. package/dist/{verdicts-SCETLY5J.js → verdicts-TRSTJLCL.js} +1 -1
  162. package/dist/{version-check-CJWKDAXV.js → version-check-O6PYTI4T.js} +1 -1
  163. package/dist/{view-cmd-SOVM64L2.js → view-cmd-KPJTP4DI.js} +1 -1
  164. package/dist/{walk-session-YUYRULPY.js → walk-session-CHJXHZMO.js} +1 -1
  165. package/dist/with-telemetry-CQCWLVOC.js +2 -0
  166. package/package.json +12 -6
  167. package/dist/ConfigView-HPKRQXMC.js +0 -2
  168. package/dist/EvidenceViewOffer-F5YG54OC.js +0 -2
  169. package/dist/FolderPicker-4NSDXQY5.js +0 -2
  170. package/dist/SingleShotApp-Y3YDFQSD.js +0 -2
  171. package/dist/TestMdRunView-O6JTHV5W.js +0 -2
  172. package/dist/bootstrap-NFYYRGGR.js +0 -2
  173. package/dist/bridge-JSKEO4N3.js +0 -2
  174. package/dist/chunk-23VPUWBD.js +0 -23
  175. package/dist/chunk-2WRBTLFN.js +0 -13
  176. package/dist/chunk-5WXGMXGA.js +0 -26
  177. package/dist/chunk-74HTO7K3.js +0 -11
  178. package/dist/chunk-AECMF3T2.js +0 -8
  179. package/dist/chunk-BXYWX4J3.js +0 -2
  180. package/dist/chunk-DBKNJRJG.js +0 -2
  181. package/dist/chunk-H32GM5G4.js +0 -2
  182. package/dist/chunk-J5FBU425.js +0 -62
  183. package/dist/chunk-MK7JUOYV.js +0 -6
  184. package/dist/chunk-ORQNKZ2Z.js +0 -5
  185. package/dist/chunk-OUJQVBUT.js +0 -7
  186. package/dist/chunk-QOFZSHSC.js +0 -47
  187. package/dist/chunk-RKWJG3WW.js +0 -19
  188. package/dist/chunk-STVP2XHO.js +0 -2
  189. package/dist/chunk-WAOCHXJ5.js +0 -2
  190. package/dist/docx-convert-CHLJUTFH.js +0 -2
  191. package/dist/evidence-IVDNXWPL.js +0 -2
  192. package/dist/evolve-cmd-XBX4SX5H.js +0 -2
  193. package/dist/exit-manager-XZL4KIJU.js +0 -2
  194. package/dist/ingest-cmd-YTGOICTC.js +0 -2
  195. package/dist/list-commands-RCYHJ5Y3.js +0 -2
  196. package/dist/login-flow-PYAPYCPY.js +0 -2
  197. package/dist/persist-recorded-session-DTYCLXTQ.js +0 -3
  198. package/dist/pipeline-MXFOD6ES.js +0 -2
  199. package/dist/reconcile-cmd-EG6BOU3A.js +0 -2
  200. package/dist/reconcile-engine-JQNXALNY.js +0 -2
  201. package/dist/run-GMZCDRDD.js +0 -2
  202. package/dist/run-TFRWPGXP.js +0 -2
  203. package/dist/spawner-GC5CFAJ7.js +0 -2
  204. package/dist/tcg-generate-V7YFNC5O.js +0 -2
  205. package/dist/testmd-actions-MNDOO76O.js +0 -2
  206. package/dist/token-refresh-3UYMCYG3.js +0 -2
  207. package/dist/with-telemetry-E7QWPGL6.js +0 -2
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as $}from"./chunk-SL6PCVM2.js";import{e as D}from"./chunk-OUJQVBUT.js";import{a as E}from"./chunk-NLCCBXXV.js";function U(e){return["completed","failed","ended","stopped"].includes(e.trim().toLowerCase())}function je(e){return["ended","stopped"].includes(e.trim().toLowerCase())}function q(e){return{requestId:e.requestId,objective:e.objective,status:"",turnActive:!1,scenarios:[],thinking:"",thinkingLog:[],chatLog:[],progress:0}}function Re(e){return e.pendingClarification===void 0?e:{...e,pendingClarification:void 0}}function Ce(e){return{...e,turnActive:!0,error:void 0,thinking:"",thinkingLog:[]}}function P(e,t){switch(t.type){case"thinking":return{...e,status:"thinking",thinking:e.thinking+t.delta};case"thinking_done":return{...e,thinkingLog:[...e.thinkingLog,{text:e.thinking,tookMs:t.tookMs}],thinking:""};case"progress":return{...e,progress:t.pct};case"snapshot":return{...e,scenarios:t.data.scenarios,status:t.data.status,headline:t.data.headline??e.headline};case"chat":return{...e,turnActive:!1,chatLog:[...e.chatLog,{role:"model",text:t.text}]};case"clarification":return{...e,turnActive:!1,chatLog:[...e.chatLog,{role:"model",text:t.text}],pendingClarification:t.text};case"limit":return{...e,limits:{scenarioLimit:t.scenarioLimit,perScenarioLimit:t.perScenarioLimit}};case"error":return{...e,error:t.message};case"done":return{...e,status:t.status,turnActive:!1,error:t.status==="failed"&&!e.error?"generation failed":e.error}}}function H(e,t){let n=[],i=e.type??"",d=e.status??"";if(i==="ping")return n;switch(i){case"thinking_token":typeof e.data=="string"&&n.push({type:"thinking",delta:e.data});break;case"thinking_stopped":{let r=e.data??{},o=se(r.time_taken);n.push({type:"thinking_done",text:typeof e.data=="string"?e.data:r.message??"",tookMs:o});break}case"progress":{let r=e.data??{};typeof r.progress=="number"&&n.push({type:"progress",pct:r.progress});break}case"clarification":{let r=e.data??{};typeof r.message=="string"&&n.push({type:"clarification",text:r.message});break}case"chatting_stopped":{let r=e.data??{};typeof r.message=="string"&&r.message.length>0&&n.push({type:"chat",text:r.message});break}case"limit_update":{let r=e.data??{},o=r.test_cases_limit??e.test_cases_limit,p=r.per_scenario_test_cases_limit??e.per_scenario_test_cases_limit;n.push({type:"limit",scenarioLimit:o,perScenarioLimit:p});break}case"error":{let r=typeof e.data=="string"?e.data:e.data?.message??"generation error";n.push({type:"error",message:r});break}case"request_cancelled":return n.push({type:"done",status:"stopped"}),n;case"session_ended":return n.push({type:"done",status:"ended"}),n;default:break}if(Array.isArray(e.scenarios)&&n.push({type:"snapshot",data:{requestId:t,status:d,headline:e.headline,scenarios:e.scenarios}}),d&&U(d)){let r=d.trim().toLowerCase();n.push({type:"done",status:r})}return n}function se(e){if(!e)return;let t=/^([\d.]+)(ms|s)?$/.exec(e.trim());if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return t[2]==="ms"?Math.round(n):Math.round(n*1e3)}var v=class extends Error{constructor(t){super(t),this.name="AuthError"}},M=class extends Error{constructor(t){super(t),this.name="ForbiddenError"}},I=class extends Error{constructor(t){super(t),this.name="InsufficientCreditsError"}},k=class extends Error{constructor(n,i){super(n);this.cause=i;this.name="TransportError"}};function x(e,t){let n=t?.message??t?.error??`HTTP ${e}`;return e===401?new v(n):e===403?t?.key==="insufficient_credits"?new I(n):new M(n):new k(n)}async function*J(e){let t=e.fetchImpl??fetch,n=e.maxRetries??5,i=e.maxBackoffMs??3e4,d=e.connectTimeoutMs??1e4,r=0,o=!1;for(;;){if(e.signal.aborted)return;let p=new AbortController,a=()=>p.abort();e.signal.addEventListener("abort",a,{once:!0});let c=setTimeout(()=>p.abort(),d),g;try{g=await t(e.url,{method:"GET",headers:{Authorization:await e.authHeader(),Accept:"text/event-stream"},signal:p.signal})}catch(w){if(clearTimeout(c),e.signal.removeEventListener("abort",a),e.signal.aborted)return;if(++r>n)throw new k("SSE connect failed",w);await O(F(r,i));continue}if(clearTimeout(c),!g.ok){e.signal.removeEventListener("abort",a);let w=await oe(g);if(g.status===401&&o){if(++r>n)throw x(401,w);await O(F(r,i));continue}throw x(g.status,w)}if(!g.body)throw e.signal.removeEventListener("abort",a),new k("SSE response had no body");o=!0,r=0;let m=g.body.getReader(),h=new TextDecoder("utf-8"),b="";try{for(;;){if(e.signal.aborted){await m.cancel().catch(()=>{});return}let{done:w,value:s}=await m.read();if(w)break;b+=h.decode(s,{stream:!0});let f;for(;(f=b.indexOf(`
2
+ import{a as $}from"./chunk-HMYMSRA4.js";import{f as D}from"./chunk-GZPK6FRP.js";import{a as E}from"./chunk-NLCCBXXV.js";function U(e){return["completed","failed","ended","stopped"].includes(e.trim().toLowerCase())}function je(e){return["ended","stopped"].includes(e.trim().toLowerCase())}function q(e){return{requestId:e.requestId,objective:e.objective,status:"",turnActive:!1,scenarios:[],thinking:"",thinkingLog:[],chatLog:[],progress:0}}function Re(e){return e.pendingClarification===void 0?e:{...e,pendingClarification:void 0}}function Ce(e){return{...e,turnActive:!0,error:void 0,thinking:"",thinkingLog:[]}}function P(e,t){switch(t.type){case"thinking":return{...e,status:"thinking",thinking:e.thinking+t.delta};case"thinking_done":return{...e,thinkingLog:[...e.thinkingLog,{text:e.thinking,tookMs:t.tookMs}],thinking:""};case"progress":return{...e,progress:t.pct};case"snapshot":return{...e,scenarios:t.data.scenarios,status:t.data.status,headline:t.data.headline??e.headline};case"chat":return{...e,turnActive:!1,chatLog:[...e.chatLog,{role:"model",text:t.text}]};case"clarification":return{...e,turnActive:!1,chatLog:[...e.chatLog,{role:"model",text:t.text}],pendingClarification:t.text};case"limit":return{...e,limits:{scenarioLimit:t.scenarioLimit,perScenarioLimit:t.perScenarioLimit}};case"error":return{...e,error:t.message};case"done":return{...e,status:t.status,turnActive:!1,error:t.status==="failed"&&!e.error?"generation failed":e.error}}}function H(e,t){let n=[],i=e.type??"",d=e.status??"";if(i==="ping")return n;switch(i){case"thinking_token":typeof e.data=="string"&&n.push({type:"thinking",delta:e.data});break;case"thinking_stopped":{let r=e.data??{},o=se(r.time_taken);n.push({type:"thinking_done",text:typeof e.data=="string"?e.data:r.message??"",tookMs:o});break}case"progress":{let r=e.data??{};typeof r.progress=="number"&&n.push({type:"progress",pct:r.progress});break}case"clarification":{let r=e.data??{};typeof r.message=="string"&&n.push({type:"clarification",text:r.message});break}case"chatting_stopped":{let r=e.data??{};typeof r.message=="string"&&r.message.length>0&&n.push({type:"chat",text:r.message});break}case"limit_update":{let r=e.data??{},o=r.test_cases_limit??e.test_cases_limit,p=r.per_scenario_test_cases_limit??e.per_scenario_test_cases_limit;n.push({type:"limit",scenarioLimit:o,perScenarioLimit:p});break}case"error":{let r=typeof e.data=="string"?e.data:e.data?.message??"generation error";n.push({type:"error",message:r});break}case"request_cancelled":return n.push({type:"done",status:"stopped"}),n;case"session_ended":return n.push({type:"done",status:"ended"}),n;default:break}if(Array.isArray(e.scenarios)&&n.push({type:"snapshot",data:{requestId:t,status:d,headline:e.headline,scenarios:e.scenarios}}),d&&U(d)){let r=d.trim().toLowerCase();n.push({type:"done",status:r})}return n}function se(e){if(!e)return;let t=/^([\d.]+)(ms|s)?$/.exec(e.trim());if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return t[2]==="ms"?Math.round(n):Math.round(n*1e3)}var v=class extends Error{constructor(t){super(t),this.name="AuthError"}},M=class extends Error{constructor(t){super(t),this.name="ForbiddenError"}},I=class extends Error{constructor(t){super(t),this.name="InsufficientCreditsError"}},k=class extends Error{constructor(n,i){super(n);this.cause=i;this.name="TransportError"}};function x(e,t){let n=t?.message??t?.error??`HTTP ${e}`;return e===401?new v(n):e===403?t?.key==="insufficient_credits"?new I(n):new M(n):new k(n)}async function*J(e){let t=e.fetchImpl??fetch,n=e.maxRetries??5,i=e.maxBackoffMs??3e4,d=e.connectTimeoutMs??1e4,r=0,o=!1;for(;;){if(e.signal.aborted)return;let p=new AbortController,a=()=>p.abort();e.signal.addEventListener("abort",a,{once:!0});let c=setTimeout(()=>p.abort(),d),g;try{g=await t(e.url,{method:"GET",headers:{Authorization:await e.authHeader(),Accept:"text/event-stream"},signal:p.signal})}catch(w){if(clearTimeout(c),e.signal.removeEventListener("abort",a),e.signal.aborted)return;if(++r>n)throw new k("SSE connect failed",w);await O(F(r,i));continue}if(clearTimeout(c),!g.ok){e.signal.removeEventListener("abort",a);let w=await oe(g);if(g.status===401&&o){if(++r>n)throw x(401,w);await O(F(r,i));continue}throw x(g.status,w)}if(!g.body)throw e.signal.removeEventListener("abort",a),new k("SSE response had no body");o=!0,r=0;let m=g.body.getReader(),h=new TextDecoder("utf-8"),b="";try{for(;;){if(e.signal.aborted){await m.cancel().catch(()=>{});return}let{done:w,value:s}=await m.read();if(w)break;b+=h.decode(s,{stream:!0});let f;for(;(f=b.indexOf(`
3
3
 
4
4
  `))>=0;){let u=b.slice(0,f);b=b.slice(f+2);let l=ie(u);l&&(yield l)}}}catch(w){if(e.signal.aborted)return;if(++r>n)throw new k("SSE stream dropped",w);await O(F(r,i));continue}finally{e.signal.removeEventListener("abort",a)}return}}function ie(e){let t="message",n="";for(let i of e.split(`
5
5
  `))i.startsWith("event:")?t=i.slice(6).trim():i.startsWith("data:")&&(n+=i.slice(5).trim());if(t!=="message"||!n)return null;try{let i=Buffer.from(n,"base64").toString("utf-8");return JSON.parse(i)}catch{return null}}function F(e,t){return Math.min(t,1e3*2**(e-1))}function O(e){return new Promise(t=>setTimeout(t,e))}async function oe(e){try{return await e.clone().json()}catch{return}}function W(e,t){t?.length&&(e.append("files",t.map(n=>n.fileKey).join(",")),e.append("gemini_metadata",JSON.stringify(t.map(n=>({fileData:{fileUri:n.geminiUri,mimeType:n.mimeType}})))))}function Ue(e,t={}){let n=t.fetchImpl??fetch,i=new Map,d=!0;async function r(){let s=await e.authResolver.resolve();if(!s)throw new v("unauthorized; run `kane-cli login`");return E(s.username,s.access_key)}function o(s){return`${e.baseUrl}${s}`}async function p(s){if(!s.ok){let f;try{f=await s.clone().json()}catch{f=void 0}throw x(s.status,f)}return s.json()}function a(s){let f=s?.data??s;return{request_id:f.request_id??f.id,status:f.status??""}}function c(s,f,u,l){let y=q({requestId:s,objective:f});l&&(y=P(y,{type:"snapshot",data:l}),l.status==="cleaned_up"&&(y={...y,error:"session was reaped (cleaned_up) \u2014 continuing will destructively regenerate"}));let S=new AbortController;u&&(u.aborted?S.abort():u.addEventListener("abort",()=>S.abort(),{once:!0})),i.set(s,S);let A={requestId:s,state:y,events:void 0};return A.events=(async function*(){try{let C=J({url:o(`/requests/${s}/sse`),authHeader:r,signal:S.signal,log:e.log,fetchImpl:n});for await(let L of C)for(let z of H(L,s))A.state=P(A.state,z),yield z}finally{i.delete(s)}})(),A}async function g(s,f){let u=new FormData;u.append("prompt",s.prompt),d=s.memoryEnhancement??!0,u.append("memory_enhancement",String(d)),s.scenarioLimit!==void 0&&u.append("test_scenario_limit",String(s.scenarioLimit)),s.perScenarioLimit!==void 0&&u.append("per_scenario_test_cases_limit",String(s.perScenarioLimit));let l=s.projectId??e.projectId,y=s.folderId??e.folderId;l&&u.append("project_id",l),y&&u.append("folder_id",y),W(u,s.attachments);let S=await n(o("/requests"),{method:"POST",headers:{Authorization:await r()},body:u}),A=await p(S),{request_id:C}=a(A),L=String(C);return c(L,s.prompt,f)}async function m(s,f){let u=await n(o(`/requests/${s}`),{method:"GET",headers:{Authorization:await r()}}),l=await p(u),y=l?.data??l,S={requestId:s,status:y.status??"",headline:y.headline,scenarios:Array.isArray(y.scenarios)?y.scenarios:[]};return c(s,"",f,S)}async function h(s,f,u){let l=new FormData;l.append("prompt",f),l.append("chat_enabled","true"),l.append("memory_enhancement",String(d)),u?.mappings&&l.append("mappings",JSON.stringify(u.mappings)),W(l,u?.attachments);let y=await n(o(`/requests/${s}`),{method:"PUT",headers:{Authorization:await r()},body:l});if(!y.ok){let S;try{S=await y.clone().json()}catch{}throw x(y.status,S)}}async function b(s){i.get(s)?.abort();let u=await n(o(`/requests/${s}/stop`),{method:"DELETE",headers:{Authorization:await r()}});if(!u.ok&&u.status!==404){let l;try{l=await u.clone().json()}catch{}throw x(u.status,l)}}async function w(s){i.get(s)?.abort();let u=await n(o(`/requests/${s}/end`),{method:"DELETE",headers:{Authorization:await r()}});if(!u.ok&&u.status!==404){let l;try{l=await u.clone().json()}catch{}throw x(u.status,l)}}return{start:g,attach:m,chat:h,cancel:b,end:w}}import{statSync as ae,realpathSync as G,existsSync as ce}from"fs";import{extname as ue,resolve as j,isAbsolute as pe}from"path";import{homedir as V}from"os";var de=new Set([".txt",".md",".json",".xml",".jpg",".jpeg",".png",".gif",".bmp",".webp",".pdf",".docx",".csv",".xlsx",".mp3",".wav",".m4a",".webm",".mpeg",".mpga",".mp4",".mov"]),le=50*1024*1024,X=10;function fe(e){return e==="~"?V():e.startsWith("~/")?j(V(),e.slice(2)):e}function Ge(e,t){let n=[],i=[],d=new Set,r=[],o=(()=>{try{return G(j(t))}catch{return j(t)}})(),p=o.endsWith("/")?o:o+"/";for(let a of e){let c=fe(a),g=pe(c)?c:j(t,c);if(!ce(g)){n.push(`Not found: ${a}`);continue}let m;try{m=G(g)}catch{n.push(`Cannot resolve: ${a}`);continue}if(d.has(m))continue;let h;try{h=ae(m)}catch{n.push(`Cannot read: ${a}`);continue}if(!h.isFile()){n.push(`Not a file: ${a}`);continue}if(h.size===0){n.push(`Empty file: ${a}`);continue}let b=ue(m).toLowerCase();if(!de.has(b)){n.push(`Unsupported type ${b||"(none)"}: ${a}`);continue}if(h.size>le){n.push(`Too large (>50MB): ${a}`);continue}m!==o&&!m.startsWith(p)&&i.push(`Outside working dir: ${a}`),d.add(m),r.push(m)}return r.length>X&&n.push(`Too many files: ${r.length} (max ${X})`),{ok:n.length?[]:r,errors:n,warnings:i}}var B=class extends Error{constructor(n){super(n.join("; "));this.errors=n;this.name="AttachmentValidationError"}};async function Xe(e){let{promptText:t,filePaths:n,cwd:i,scenarios:d,isRefine:r,conn:o,deps:p}=e,{ok:a,errors:c,warnings:g}=p.validate(n,i);if(c.length)throw new B(c);e.onValidated?.();let m=a.length?await p.upload(o,a,p.onUpload):[],h=r?p.buildMappings(t,d):void 0;return{promptText:t,mappings:h,attachments:m,warnings:g}}import{readFile as me}from"fs/promises";import{basename as K}from"path";async function ge(e){let t=await e.authResolver.resolve();if(!t)throw new v("unauthorized; run `kane-cli login`");return E(t.username,t.access_key)}async function he(e,t,n={}){let i=n.fetchImpl??fetch,d=await me(t),r=K(t),o=new FormData;o.append("file",new Blob([d]),r),o.append("source","omniBox"),o.append("geminiFileUpload","true");let p=await i(`${e.tmsBaseUrl}/v1/attachment`,{method:"POST",headers:{Authorization:await ge(e)},body:o,signal:n.signal});if(!p.ok){let h;try{h=await p.clone().json()}catch{}throw x(p.status,h)}let a=await p.json(),c=a?.data??a,g=c?.gemini_response?.uri,m=c?.gemini_response?.mimeType;if(!c?.file_key||!g){let h=c&&typeof c=="object"?Object.keys(c).join(","):typeof c,b=(()=>{try{return JSON.stringify(c).slice(0,500)}catch{return"<unserializable>"}})();throw new Error(`attachment upload for ${r} returned no file_key/gemini uri \u2014 status ${p.status}, body keys: [${h}], raw: ${b}`)}return{fileName:c.file_name??r,fileKey:c.file_key,geminiUri:g,mimeType:m??"application/octet-stream"}}async function tt(e,t,n,i={}){let d=[];for(let r=0;r<t.length;r++){if(i.signal?.aborted)throw Object.assign(new Error("upload aborted"),{name:"AbortError"});let o=K(t[r]);n?.({file:o,index:r+1,total:t.length,status:"uploading"});try{d.push(await he(e,t[r],i)),n?.({file:o,index:r+1,total:t.length,status:"done"})}catch(p){throw n?.({file:o,index:r+1,total:t.length,status:"failed"}),p}}return d}var ye=/@([sS])(\d+)\.([cC])(\d+)/g,be=/@([sS])(\d+)(?!\d)(?!\.[cC]\d)/g;function rt(e,t){let n={},i={};for(let d of e.matchAll(ye)){let r=Number(d[2]),o=Number(d[4]),p=t[r-1];if(!p)continue;n[`s${r}`]=String(p.id);let a=p.test_cases??[];if(a[o-1])for(let c=0;c<o;c++){let g=a[c];g&&(i[`s${r}.c${c+1}`]=String(g.id))}}for(let d of e.matchAll(be)){let r=Number(d[2]),o=t[r-1];o&&(n[`s${r}`]=String(o.id))}if(!(Object.keys(n).length===0&&Object.keys(i).length===0))return{scenario:n,testcase:i}}function R(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(n==null||typeof n!="object")return[];let i=n;if(typeof i.step!="string")return[];let d=typeof i.expected_result=="string"?i.expected_result:typeof i.outcome=="string"?i.outcome:"";t.push({step:i.step,expected:d})}return t}var we=30,Se=300;function Z(){return{mode:"testing",max_steps:we,timeout:Se,variables:{}}}function Q(e){return e.title??`Test case ${e.id}`}function ct(e,t){return $({frontmatter:Z(),heading:Q(t),steps:e.sub_objectives.map(n=>n.objective)})}function Y(e){let t=R(e.manual_steps).map(n=>n.step);return $({frontmatter:Z(),heading:Q(e),steps:t})}import{mkdtempSync as xe,mkdirSync as N,writeFileSync as ee,rmSync as te,renameSync as _e,existsSync as ne,readFileSync as ve}from"fs";import{join as _,resolve as ke}from"path";async function ft(e,t,n,i=Y){(n.redirectBareCwd??!0)&&ke(t)===process.cwd()&&(t=_(t,".testmuai","tests"));let d=T(e.objective)??e.headline,r=T(n.suiteName)??`${T(re(d,4))??"tcg"}-${e.requestId}`,o=r,p=_(t,r);ne(p)&&!Te(p,e.requestId)&&(o=`${r}-${e.requestId}`);let a=_(t,o),c=[],g=new Map;for(let h of e.scenarios){let b=(h.test_cases??[]).filter(Ae);if(b.length===0)continue;let w=T(Ee(h.scode))??T(h.sid)??`s${h.id}`,s=g.get(w)??new Set;g.set(w,s);for(let f of b){let u=T(re(f.title,5))??"case",l=`${u}_test.md`;for(let y=2;s.has(l);y++)l=`${u}-${y}_test.md`;s.add(l),c.push({dir:w,file:l,tc:f})}}if(c.length===0)return{suiteDir:a,paths:[],warning:"no functional test cases generated"};N(t,{recursive:!0});let m=xe(_(t,".tcg-tmp-"));try{N(_(m,"helpers"),{recursive:!0}),ee(_(m,".tcg-suite.json"),JSON.stringify({requestId:e.requestId,suiteName:o}));let h=[],b=new Set;for(let s of c){let f=_(m,s.dir);b.has(f)||(N(f,{recursive:!0}),b.add(f));let u=_(f,s.file);ee(u,i(s.tc)),h.push(u)}ne(a)&&te(a,{recursive:!0,force:!0}),_e(m,a);let w=h.map(s=>s.replace(m,a));return{suiteDir:a,paths:w}}catch(h){try{te(m,{recursive:!0,force:!0})}catch{}throw h}}function Ae(e){return(e.category??"").trim().toLowerCase()==="functional"}function Te(e,t){try{return JSON.parse(ve(_(e,".tcg-suite.json"),"utf-8"))?.requestId===t}catch{return!1}}function T(e){return e&&e.length>0?e:void 0}function re(e,t){return e?e.toLowerCase().replace(/[^a-z0-9]+/g," ").trim().split(/\s+/).filter(Boolean).slice(0,t).join("-"):""}function Ee(e){return e?e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,""):""}function ht(e){let t=[];e.title&&t.push(e.title),e.description&&t.push("",e.description);let n=R(e.manual_steps);return n.length>0&&(t.push("","Steps:"),n.forEach((i,d)=>{t.push(`${d+1}. ${i.step}`)})),t.join(`
6
- `).trim()}function wt(e){return{mode:"bifurcate",objective:e.objective,model:e.model,session_id:e.sessionId,run_index:0,width:0,height:0,variables:e.variables,...e.auth}}async function St(e,t,n){let i=D(e,t),d=()=>i.cancel();n?.addEventListener("abort",d);let r=null,o=null;try{for await(let p of i.events)if(p.type==="bifurcation_result"){let a=p,c=(a.sub_objectives??[]).map((g,m)=>({...g,sequence_index:m}));r={sub_objectives:c,extracted_variables:a.extracted_variables??{},total_flows:c.length,is_single_flow:c.length<=1,credits_consumed:a.credits_consumed??0}}else p.type==="error"&&(o=p.message??"bifurcation error")}finally{n?.removeEventListener("abort",d),i.cancel()}if(r)return r;throw new Error(o??"bifurcation produced no result")}export{U as a,je as b,q as c,Re as d,Ce as e,P as f,v as g,Ue as h,R as i,ct as j,Y as k,ft as l,Ae as m,ht as n,wt as o,St as p,de as q,Ge as r,B as s,Xe as t,tt as u,rt as v};
6
+ `).trim()}function wt(e){return{mode:"bifurcate",objective:e.objective,model:e.model,session_id:e.sessionId,run_index:0,width:0,height:0,variables:e.variables,...e.auth}}async function St(e,t,n){let i=await D(e,t),d=()=>i.cancel();n?.addEventListener("abort",d);let r=null,o=null;try{for await(let p of i.events)if(p.type==="bifurcation_result"){let a=p,c=(a.sub_objectives??[]).map((g,m)=>({...g,sequence_index:m}));r={sub_objectives:c,extracted_variables:a.extracted_variables??{},total_flows:c.length,is_single_flow:c.length<=1,credits_consumed:a.credits_consumed??0}}else p.type==="error"&&(o=p.message??"bifurcation error")}finally{n?.removeEventListener("abort",d),i.cancel()}if(r)return r;throw new Error(o??"bifurcation produced no result")}export{U as a,je as b,q as c,Re as d,Ce as e,P as f,v as g,Ue as h,R as i,ct as j,Y as k,ft as l,Ae as m,ht as n,wt as o,St as p,de as q,Ge as r,B as s,Xe as t,tt as u,rt as v};