autohand-cli 0.7.8 → 0.7.10

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 (269) hide show
  1. package/README.md +19 -0
  2. package/dist/{AutomodeManager-YVCJXOMQ.js → AutomodeManager-NGRAO2MH.js} +35 -8
  3. package/dist/{AutomodeManager-HV6M7EAX.cjs → AutomodeManager-ZKQMBM4T.cjs} +35 -8
  4. package/dist/{CommunitySkillsCache-Q22FUAR5.js → CommunitySkillsCache-ILWHWE5P.js} +2 -2
  5. package/dist/CommunitySkillsCache-KHC6RUJW.cjs +7 -0
  6. package/dist/MemoryManager-6ZT7IDO5.cjs +7 -0
  7. package/dist/MemoryManager-AJGS5AKB.js +7 -0
  8. package/dist/PermissionManager-HG6W2DGU.cjs +10 -0
  9. package/dist/{PermissionManager-HATZKTRC.js → PermissionManager-U5OMGR3L.js} +3 -3
  10. package/dist/SessionManager-BJ2G6VV4.cjs +9 -0
  11. package/dist/{SessionManager-S5R6O3NU.js → SessionManager-ENPGYK5J.js} +2 -2
  12. package/dist/SkillsRegistry-6ZFOCT25.cjs +8 -0
  13. package/dist/{SkillsRegistry-R5WDM6T3.js → SkillsRegistry-C2SHOZ5D.js} +2 -2
  14. package/dist/{SyncApiClient-FAOMIZAP.js → SyncApiClient-AYXYSOJM.js} +1 -1
  15. package/dist/SyncApiClient-ID3KXEMA.cjs +10 -0
  16. package/dist/about-RGUM5QQ4.cjs +11 -0
  17. package/dist/about-VDR3SIHS.js +11 -0
  18. package/dist/add-dir-3BMVJ5H3.cjs +9 -0
  19. package/dist/{add-dir-PNU7AGKO.js → add-dir-RP2BL3JW.js} +2 -1
  20. package/dist/agents-JQ2PHCQB.js +10 -0
  21. package/dist/agents-RGSZ2BM3.cjs +10 -0
  22. package/dist/agents-new-LSJN2L2T.cjs +13 -0
  23. package/dist/agents-new-MZUEVKSK.js +13 -0
  24. package/dist/automode-DP3BMYJB.cjs +9 -0
  25. package/dist/{automode-QCRJSBRT.js → automode-XOF3U3OB.js} +2 -1
  26. package/dist/cc-2W6M7J45.cjs +8 -0
  27. package/dist/cc-UTTLESTY.js +8 -0
  28. package/dist/{chunk-B4ZPNXZE.cjs → chunk-34OGUMRO.cjs} +9 -5
  29. package/dist/chunk-3652ROFD.js +589 -0
  30. package/dist/{chunk-KNLBEUAV.cjs → chunk-3DQSBW4B.cjs} +10 -6
  31. package/dist/{chunk-XFPITUFJ.cjs → chunk-3S4DEIJP.cjs} +50 -8
  32. package/dist/{chunk-5MDDOGTD.cjs → chunk-3UNX56GC.cjs} +30 -37
  33. package/dist/chunk-46WX5IO2.cjs +499 -0
  34. package/dist/{chunk-OC5YDNFC.js → chunk-4ULBAYME.js} +42 -57
  35. package/dist/{chunk-VEDIYPWY.cjs → chunk-5BQ57AZC.cjs} +9 -9
  36. package/dist/{chunk-B5N5UAMO.cjs → chunk-5FZM7KLB.cjs} +13 -10
  37. package/dist/{chunk-JBKP2CLA.cjs → chunk-5NZA4UB4.cjs} +47 -47
  38. package/dist/{chunk-VPAN5H7Q.js → chunk-5Q3W4DEU.js} +43 -36
  39. package/dist/{chunk-VMMGT42E.cjs → chunk-65GTO4QM.cjs} +7 -3
  40. package/dist/{chunk-CXZEPTRI.js → chunk-6P3K4YUW.js} +6 -2
  41. package/dist/{chunk-MDWULS57.js → chunk-6UJMCWRY.js} +56 -33
  42. package/dist/chunk-73XIKTZL.js +124 -0
  43. package/dist/{chunk-23JQSCTO.js → chunk-7QNW24ZT.js} +8 -4
  44. package/dist/{chunk-XT4OSHSB.cjs → chunk-AEYOIPHD.cjs} +6 -2
  45. package/dist/chunk-ANUQFV43.cjs +589 -0
  46. package/dist/chunk-ATR3RORT.js +499 -0
  47. package/dist/{chunk-A6QBABQ7.js → chunk-B72CC4O6.js} +2 -2
  48. package/dist/{chunk-TAZJSKFD.js → chunk-BBIKQW66.js} +9 -5
  49. package/dist/{chunk-FFA4LDAO.cjs → chunk-BDIZGBDA.cjs} +8 -3
  50. package/dist/{chunk-3YEDXG6S.js → chunk-BG4OQUKP.js} +1 -1
  51. package/dist/{chunk-WIUGUR5T.js → chunk-BODVOW7B.js} +67 -16
  52. package/dist/{chunk-A552JHUJ.cjs → chunk-BZ73ZQTE.cjs} +34 -25
  53. package/dist/{chunk-YDOR2OCA.cjs → chunk-C22G4UE4.cjs} +27 -19
  54. package/dist/{chunk-GFJ6AETU.cjs → chunk-C2E3GJEE.cjs} +12 -9
  55. package/dist/{chunk-UL7YPRCU.js → chunk-C5SVIQG3.js} +10 -5
  56. package/dist/{chunk-6KMAJTU3.js → chunk-CUBYCLNL.js} +3 -2
  57. package/dist/{chunk-52MLYK5P.js → chunk-D2XFTCRP.js} +1 -1
  58. package/dist/{chunk-OBV3UUIL.js → chunk-DEAEO7RI.js} +1 -1
  59. package/dist/chunk-DMPVI3YK.cjs +400 -0
  60. package/dist/{chunk-C26EN22G.cjs → chunk-DUDDZRCS.cjs} +9 -5
  61. package/dist/{chunk-4RWTUT2Z.js → chunk-E7YL3AHT.js} +32 -23
  62. package/dist/{chunk-54GVL2SE.cjs → chunk-EAOEAQGF.cjs} +3 -2
  63. package/dist/{chunk-PU534KPO.cjs → chunk-EV53SLSB.cjs} +4 -4
  64. package/dist/{chunk-EDGV5BNH.js → chunk-F3EIOVSQ.js} +26 -33
  65. package/dist/{chunk-SFGJQPGC.cjs → chunk-FPHU2ES6.cjs} +56 -33
  66. package/dist/{chunk-G77ZY4QG.js → chunk-GD4AFYJ3.js} +1 -1
  67. package/dist/{chunk-PMMSDR44.cjs → chunk-GIZL57FE.cjs} +5 -1
  68. package/dist/{chunk-I4HVBWYF.js → chunk-GLAE5K5W.js} +7 -2
  69. package/dist/{chunk-4AMTDSQ3.cjs → chunk-HDSEJMWI.cjs} +6 -3
  70. package/dist/chunk-HLFZPN65.js +94 -0
  71. package/dist/{chunk-ZWS3KSMK.js → chunk-HQQ4NKER.js} +5 -2
  72. package/dist/{chunk-WBDPILKI.cjs → chunk-HVOBMOZ2.cjs} +6 -2
  73. package/dist/{chunk-MJFBVQHB.js → chunk-IPI3JXKP.js} +10 -7
  74. package/dist/chunk-IXFOH4OC.cjs +222 -0
  75. package/dist/chunk-JS7IPR7P.js +249 -0
  76. package/dist/{chunk-7TOHYAUF.cjs → chunk-KC5FPUOF.cjs} +2 -2
  77. package/dist/{chunk-7VW3A7DO.cjs → chunk-L42HTMMR.cjs} +2 -2
  78. package/dist/chunk-LGGZQTLM.cjs +209 -0
  79. package/dist/chunk-LOXOD4IS.cjs +8630 -0
  80. package/dist/chunk-MNCWB5F7.cjs +63 -0
  81. package/dist/{chunk-AVL4DKQO.js → chunk-MYNHJHDZ.js} +1 -1
  82. package/dist/{chunk-GDTZQSJ6.cjs → chunk-N4ZSG6JJ.cjs} +2 -2
  83. package/dist/chunk-NCC6ETZS.js +362 -0
  84. package/dist/chunk-NF7RIHJK.js +45 -0
  85. package/dist/{chunk-SYJLMBLP.cjs → chunk-NGBN2NGH.cjs} +77 -26
  86. package/dist/{chunk-SLISYSP4.cjs → chunk-NRORJRD4.cjs} +4 -4
  87. package/dist/{chunk-OTS4YFSZ.cjs → chunk-OKABWSWA.cjs} +7 -3
  88. package/dist/{chunk-KH7BCZJN.js → chunk-OLG7LZBD.js} +1 -1
  89. package/dist/{chunk-KZ7VMQTC.js → chunk-OMEH2EVE.js} +5 -1
  90. package/dist/{chunk-U5WIP4HS.js → chunk-P5VDZ6PV.js} +47 -5
  91. package/dist/{chunk-V5MTBGM4.cjs → chunk-PA2H2263.cjs} +6 -2
  92. package/dist/chunk-PGRH5Q77.cjs +249 -0
  93. package/dist/{chunk-DPJ3IIBB.js → chunk-PM62ZYXA.js} +18 -10
  94. package/dist/chunk-PNSRJT46.js +380 -0
  95. package/dist/{chunk-C3IFF3EH.cjs → chunk-PSED4Z4X.cjs} +43 -58
  96. package/dist/{chunk-EKY5PKQI.js → chunk-PWLLLJHU.js} +5 -1
  97. package/dist/{chunk-DOTAX65F.js → chunk-PYLR4J2D.js} +8 -4
  98. package/dist/{chunk-YWKZF2SA.js → chunk-QC6IUDDJ.js} +46 -46
  99. package/dist/{chunk-4M2GX7RH.cjs → chunk-QM7HZCQW.cjs} +11 -6
  100. package/dist/chunk-QRQ5EX7I.cjs +380 -0
  101. package/dist/{chunk-YDH2BMEN.js → chunk-QU64XI5X.js} +9 -6
  102. package/dist/{chunk-3L76MLO5.cjs → chunk-R7SDL3DJ.cjs} +27 -31
  103. package/dist/{chunk-WQSWU2QA.cjs → chunk-RJP3SZ7Q.cjs} +46 -255
  104. package/dist/{chunk-BAFJQUWR.js → chunk-RJXNNIFW.js} +18 -22
  105. package/dist/{chunk-YAGD43KA.cjs → chunk-S5G7OEN2.cjs} +47 -40
  106. package/dist/{chunk-2JPUEN44.cjs → chunk-SA4JOV4F.cjs} +61 -86
  107. package/dist/chunk-SAG6IY5Z.cjs +94 -0
  108. package/dist/chunk-TSV4LVHK.js +35 -0
  109. package/dist/{chunk-JHFH3N4U.cjs → chunk-TSY7JHIV.cjs} +2 -2
  110. package/dist/chunk-U23U52ZN.cjs +124 -0
  111. package/dist/chunk-UET7BDX2.js +8630 -0
  112. package/dist/chunk-ULQ6MDSJ.cjs +362 -0
  113. package/dist/{chunk-WH3D42BQ.js → chunk-UM4QEO36.js} +59 -84
  114. package/dist/chunk-VXCMGBXY.cjs +35 -0
  115. package/dist/chunk-WD5ZF6HE.js +63 -0
  116. package/dist/chunk-WH5RW7DV.cjs +85 -0
  117. package/dist/{chunk-GSOEIEOU.js → chunk-WJ276BIP.js} +5 -1
  118. package/dist/{chunk-P2Z6GDEN.js → chunk-WLTVF77A.js} +1 -1
  119. package/dist/{chunk-53BR4MUW.cjs → chunk-WOGJXDBU.cjs} +3 -3
  120. package/dist/{chunk-QJ53OSGF.js → chunk-WRJLBHWB.js} +6 -2
  121. package/dist/chunk-WYLFLZ42.js +222 -0
  122. package/dist/{chunk-B7EUETGY.cjs → chunk-XL77XYI2.cjs} +4 -4
  123. package/dist/{chunk-NI3BQXKU.js → chunk-XLI7SHCH.js} +2 -2
  124. package/dist/chunk-Y27LG4BQ.cjs +45 -0
  125. package/dist/chunk-Y6OWFIUF.js +209 -0
  126. package/dist/chunk-YKSSNFDZ.js +400 -0
  127. package/dist/{chunk-VRI7EXV6.js → chunk-YMDLUTF2.js} +5 -1
  128. package/dist/chunk-YVY27BJT.js +85 -0
  129. package/dist/{chunk-GWIAMKKF.js → chunk-ZBIBLOZL.js} +40 -249
  130. package/dist/completion-HVSWU5GR.cjs +13 -0
  131. package/dist/completion-WJ2MVNDH.js +13 -0
  132. package/dist/constants-RBQTR32A.cjs +20 -0
  133. package/dist/{constants-ZLG6M5SI.js → constants-V6J54N3X.js} +1 -1
  134. package/dist/export-NN7F5ANA.js +11 -0
  135. package/dist/export-UPS3AK2P.cjs +11 -0
  136. package/dist/feedback-ARI7CLVQ.js +14 -0
  137. package/dist/feedback-OZTPYHKJ.cjs +14 -0
  138. package/dist/help-4674IV4D.cjs +58 -0
  139. package/dist/help-ENG5KV2M.js +58 -0
  140. package/dist/history-2KUM6GN4.cjs +13 -0
  141. package/dist/history-RZFT34Q7.js +13 -0
  142. package/dist/hooks-7QSUBHBM.cjs +12 -0
  143. package/dist/hooks-S4MD4QSR.js +12 -0
  144. package/dist/i18n-6NKENUIV.js +32 -0
  145. package/dist/i18n-MXQXQOVE.cjs +32 -0
  146. package/dist/ide-5STDV43A.cjs +11 -0
  147. package/dist/ide-W2NYXOWQ.js +11 -0
  148. package/dist/index.cjs +18002 -13864
  149. package/dist/index.js +18252 -14114
  150. package/dist/init-FG5KEJCZ.cjs +9 -0
  151. package/dist/init-TV4MJDYK.js +9 -0
  152. package/dist/language-52Q7CSAY.cjs +16 -0
  153. package/dist/language-FXFDGOBF.js +16 -0
  154. package/dist/localProjectPermissions-2EATUDZM.cjs +17 -0
  155. package/dist/{localProjectPermissions-YFFAKLUZ.js → localProjectPermissions-WQYMGI42.js} +2 -2
  156. package/dist/login-AN42IOBK.js +18 -0
  157. package/dist/login-I65V4TGU.cjs +18 -0
  158. package/dist/logout-KK5UWGNG.js +16 -0
  159. package/dist/logout-VYYNWBHZ.cjs +16 -0
  160. package/dist/mcp-4SKTDECJ.js +15 -0
  161. package/dist/mcp-AGWPTMAX.cjs +15 -0
  162. package/dist/mcp-install-3NN2HAYR.cjs +473 -0
  163. package/dist/mcp-install-KTV52DQK.js +473 -0
  164. package/dist/memory-LG4K6XV6.cjs +9 -0
  165. package/dist/{memory-4GSP7NKV.js → memory-LRDK2SYC.js} +2 -1
  166. package/dist/model-P5D7ATE7.cjs +9 -0
  167. package/dist/{model-HKEFSH5E.js → model-WBFJIGUN.js} +2 -1
  168. package/dist/{new-EEZC4XXV.js → new-5A7RQEKI.js} +2 -1
  169. package/dist/new-EAATWI2G.cjs +9 -0
  170. package/dist/permissions-5URK6C44.js +12 -0
  171. package/dist/permissions-CJUDVG63.cjs +12 -0
  172. package/dist/plan-B3CW5DXJ.cjs +10 -0
  173. package/dist/plan-JFGNRL2S.js +10 -0
  174. package/dist/quit-A33JHDG7.cjs +9 -0
  175. package/dist/quit-IYBLN3DB.js +9 -0
  176. package/dist/resume-OPSJTCH7.cjs +12 -0
  177. package/dist/resume-TOWEEN5D.js +12 -0
  178. package/dist/search-GOLIE5BA.js +14 -0
  179. package/dist/search-H42HGUK5.cjs +14 -0
  180. package/dist/{sessions-4KXIT76T.js → sessions-B5NENDKY.js} +2 -1
  181. package/dist/sessions-YHAVEMWY.cjs +9 -0
  182. package/dist/share-2JD2AKKX.cjs +13 -0
  183. package/dist/share-MYGDOTQE.js +13 -0
  184. package/dist/{skills-3YEEODHK.js → skills-ICEQ2TNC.js} +2 -1
  185. package/dist/skills-LFVNZOMF.cjs +13 -0
  186. package/dist/{skills-install-KAXAQSN6.js → skills-install-6RN7FVCP.js} +9 -7
  187. package/dist/{skills-install-FTGOHOZ4.cjs → skills-install-LU6GA2WF.cjs} +14 -12
  188. package/dist/skills-new-5BM5PDFX.cjs +14 -0
  189. package/dist/skills-new-KWBWOX74.js +14 -0
  190. package/dist/status-M3XHJELG.cjs +10 -0
  191. package/dist/status-ZQDUYMKQ.js +10 -0
  192. package/dist/sync-6M3WRKMH.cjs +39 -0
  193. package/dist/sync-73D2MP65.cjs +16 -0
  194. package/dist/{sync-H4UHHLKU.js → sync-EXYX7HXW.js} +3 -3
  195. package/dist/sync-LL6M67CN.js +16 -0
  196. package/dist/theme-IFEI2IBJ.cjs +16 -0
  197. package/dist/theme-U3SKEULY.js +16 -0
  198. package/dist/ui/questionModal.cjs +28 -0
  199. package/dist/ui/questionModal.d.cts +11 -0
  200. package/dist/ui/questionModal.d.ts +11 -0
  201. package/dist/ui/questionModal.js +28 -0
  202. package/dist/undo-4DS67OAW.cjs +9 -0
  203. package/dist/undo-YMALVAPN.js +9 -0
  204. package/package.json +3 -2
  205. package/dist/CommunitySkillsCache-2BITCEAA.cjs +0 -7
  206. package/dist/MemoryManager-2ATHG7BH.js +0 -7
  207. package/dist/MemoryManager-AENCGCEW.cjs +0 -7
  208. package/dist/PermissionManager-6HZGTK2N.cjs +0 -10
  209. package/dist/SessionManager-AG4WT3DP.cjs +0 -9
  210. package/dist/SkillsRegistry-ZXU6YDRP.cjs +0 -8
  211. package/dist/SyncApiClient-UOA4VLLD.cjs +0 -10
  212. package/dist/add-dir-OMK3Y4DM.cjs +0 -8
  213. package/dist/agents-ICAC3KD3.js +0 -9
  214. package/dist/agents-YONWPKFS.cjs +0 -9
  215. package/dist/agents-new-NV557UVG.cjs +0 -10
  216. package/dist/agents-new-QHM3CO4B.js +0 -10
  217. package/dist/automode-BRHUHGXU.cjs +0 -8
  218. package/dist/chunk-3HPUOQJN.cjs +0 -23
  219. package/dist/chunk-5DN5KNXU.js +0 -81
  220. package/dist/chunk-7BYSXAKS.js +0 -23
  221. package/dist/chunk-ARVFUZOB.js +0 -736
  222. package/dist/chunk-BEIG7V7Q.cjs +0 -51
  223. package/dist/chunk-GWXXFQ3F.cjs +0 -81
  224. package/dist/chunk-XFQS2VGT.cjs +0 -736
  225. package/dist/chunk-Z3Q2AFDS.js +0 -51
  226. package/dist/completion-WVFWX7XQ.cjs +0 -10
  227. package/dist/completion-Y42FKDT3.js +0 -10
  228. package/dist/constants-G2PLP5HH.cjs +0 -20
  229. package/dist/export-BKBJ7PB2.cjs +0 -8
  230. package/dist/export-WJ5P6E5Z.js +0 -8
  231. package/dist/feedback-HZBCTSFG.js +0 -10
  232. package/dist/feedback-JBQ3UPGZ.cjs +0 -10
  233. package/dist/help-PKC6QCNG.js +0 -10
  234. package/dist/help-UEELQRHP.cjs +0 -10
  235. package/dist/hooks-G4VLYMLX.cjs +0 -9
  236. package/dist/hooks-LN4A6NQL.js +0 -9
  237. package/dist/init-DML7AOII.js +0 -8
  238. package/dist/init-SLLSDDJN.cjs +0 -8
  239. package/dist/language-KODBDE5R.js +0 -12
  240. package/dist/language-SJT475NW.cjs +0 -12
  241. package/dist/localProjectPermissions-AYQYGTOE.cjs +0 -17
  242. package/dist/login-TC2KROQI.js +0 -14
  243. package/dist/login-TYMR2ZD3.cjs +0 -14
  244. package/dist/logout-2ECV365P.js +0 -12
  245. package/dist/logout-CO3CPYZJ.cjs +0 -12
  246. package/dist/memory-CFNC7RJH.cjs +0 -8
  247. package/dist/model-TKVEJ5BC.cjs +0 -8
  248. package/dist/new-EB2MBQXA.cjs +0 -8
  249. package/dist/permissions-5MTH22EF.js +0 -9
  250. package/dist/permissions-IP5SITPI.cjs +0 -9
  251. package/dist/quit-2RYFGIJP.cjs +0 -8
  252. package/dist/quit-RSYIERO5.js +0 -8
  253. package/dist/resume-EPOEF3WV.cjs +0 -9
  254. package/dist/resume-LOYD5MMP.js +0 -9
  255. package/dist/sessions-7RTCPVNE.cjs +0 -8
  256. package/dist/share-APR5S2CS.cjs +0 -10
  257. package/dist/share-VLJFDZKR.js +0 -10
  258. package/dist/skills-CRM55MKM.cjs +0 -12
  259. package/dist/skills-new-JF4FKNUT.cjs +0 -11
  260. package/dist/skills-new-JYX2GBKM.js +0 -11
  261. package/dist/status-DAEFE7ZC.cjs +0 -9
  262. package/dist/status-PBFFUC4Q.js +0 -9
  263. package/dist/sync-3B7SNBYC.js +0 -14
  264. package/dist/sync-4RARBQIH.cjs +0 -39
  265. package/dist/sync-YZ6YZ42H.cjs +0 -14
  266. package/dist/theme-3XV5BWUB.js +0 -12
  267. package/dist/theme-Z2WS5XWZ.cjs +0 -12
  268. package/dist/undo-2WR2ZIEC.cjs +0 -8
  269. package/dist/undo-7QJBXARS.js +0 -8
@@ -1,25 +1,28 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunkXFPITUFJcjs = require('./chunk-XFPITUFJ.cjs');
4
+ var _chunk3S4DEIJPcjs = require('./chunk-3S4DEIJP.cjs');
5
5
 
6
6
 
7
- var _chunkJHFH3N4Ucjs = require('./chunk-JHFH3N4U.cjs');
7
+ var _chunkTSY7JHIVcjs = require('./chunk-TSY7JHIV.cjs');
8
8
 
9
9
 
10
- var _chunkWQSWU2QAcjs = require('./chunk-WQSWU2QA.cjs');
10
+ var _chunkMNCWB5F7cjs = require('./chunk-MNCWB5F7.cjs');
11
11
 
12
12
 
13
- var _chunk3HPUOQJNcjs = require('./chunk-3HPUOQJN.cjs');
13
+ var _chunkRJP3SZ7Qcjs = require('./chunk-RJP3SZ7Q.cjs');
14
14
 
15
15
 
16
- var _chunkPMMSDR44cjs = require('./chunk-PMMSDR44.cjs');
16
+ var _chunkGIZL57FEcjs = require('./chunk-GIZL57FE.cjs');
17
+
18
+
19
+ var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
17
20
 
18
21
  // src/commands/login.ts
19
22
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
20
23
  var metadata = {
21
24
  command: "/login",
22
- description: "sign in to your Autohand account",
25
+ description: _chunkLOXOD4IScjs.t.call(void 0, "commands.login.description"),
23
26
  implemented: true
24
27
  };
25
28
  async function openBrowser(url) {
@@ -53,33 +56,33 @@ function sleep(ms) {
53
56
  async function login(ctx) {
54
57
  const config = ctx.config;
55
58
  if (_optionalChain([config, 'optionalAccess', _ => _.auth, 'optionalAccess', _2 => _2.token]) && _optionalChain([config, 'optionalAccess', _3 => _3.auth, 'optionalAccess', _4 => _4.user])) {
56
- const result = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
59
+ const result = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
57
60
  type: "confirm",
58
61
  name: "continueLogin",
59
62
  message: `Already logged in as ${_chalk2.default.cyan(config.auth.user.email)}. Log in with a different account?`,
60
63
  initial: false
61
64
  });
62
65
  if (!result || !result.continueLogin) {
63
- console.log(_chalk2.default.gray("Login cancelled."));
66
+ console.log(_chalk2.default.gray(_chunkLOXOD4IScjs.t.call(void 0, "commands.login.cancelled")));
64
67
  return null;
65
68
  }
66
69
  }
67
- const authClient = _chunkJHFH3N4Ucjs.getAuthClient.call(void 0, );
70
+ const authClient = _chunkTSY7JHIVcjs.getAuthClient.call(void 0, );
68
71
  console.log(_chalk2.default.gray("Initiating authentication..."));
69
72
  const initResult = await authClient.initiateDeviceAuth();
70
73
  if (!initResult.success || !initResult.deviceCode || !initResult.userCode) {
71
- console.log(_chalk2.default.red(`Failed to start login: ${initResult.error || "Unknown error"}`));
74
+ console.log(_chalk2.default.red(_chunkLOXOD4IScjs.t.call(void 0, "commands.login.failed", { error: initResult.error || "Unknown error" })));
72
75
  return null;
73
76
  }
74
77
  console.log();
75
78
  console.log(_chalk2.default.bold("To sign in, visit:"));
76
- console.log(_chalk2.default.cyan.underline(initResult.verificationUriComplete || `${_chunkPMMSDR44cjs.AUTH_CONFIG.authorizationUrl}?code=${initResult.userCode}`));
79
+ console.log(_chalk2.default.cyan.underline(initResult.verificationUriComplete || `${_chunkGIZL57FEcjs.AUTH_CONFIG.authorizationUrl}?code=${initResult.userCode}`));
77
80
  console.log();
78
81
  console.log(_chalk2.default.gray("Or enter this code manually:"));
79
82
  console.log(_chalk2.default.bold.yellow(` ${initResult.userCode}`));
80
83
  console.log();
81
84
  const browserOpened = await openBrowser(
82
- initResult.verificationUriComplete || `${_chunkPMMSDR44cjs.AUTH_CONFIG.authorizationUrl}?code=${initResult.userCode}`
85
+ initResult.verificationUriComplete || `${_chunkGIZL57FEcjs.AUTH_CONFIG.authorizationUrl}?code=${initResult.userCode}`
83
86
  );
84
87
  if (browserOpened) {
85
88
  console.log(_chalk2.default.gray("Browser opened. Complete the login in your browser."));
@@ -90,8 +93,8 @@ async function login(ctx) {
90
93
  console.log(_chalk2.default.gray("Waiting for authorization..."));
91
94
  console.log(_chalk2.default.gray("(Press Ctrl+C to cancel)"));
92
95
  const startTime = Date.now();
93
- const timeout = _chunkPMMSDR44cjs.AUTH_CONFIG.authTimeout;
94
- const pollInterval = initResult.interval ? initResult.interval * 1e3 : _chunkPMMSDR44cjs.AUTH_CONFIG.pollInterval;
96
+ const timeout = _chunkGIZL57FEcjs.AUTH_CONFIG.authTimeout;
97
+ const pollInterval = initResult.interval ? initResult.interval * 1e3 : _chunkGIZL57FEcjs.AUTH_CONFIG.pollInterval;
95
98
  let dots = 0;
96
99
  const maxDots = 3;
97
100
  while (Date.now() - startTime < timeout) {
@@ -101,7 +104,7 @@ async function login(ctx) {
101
104
  const pollResult = await authClient.pollDeviceAuth(initResult.deviceCode);
102
105
  if (pollResult.status === "authorized" && pollResult.token && pollResult.user) {
103
106
  process.stdout.write("\r" + " ".repeat(20) + "\r");
104
- const expiresAt = new Date(Date.now() + _chunkPMMSDR44cjs.AUTH_CONFIG.sessionExpiryDays * 24 * 60 * 60 * 1e3).toISOString();
107
+ const expiresAt = new Date(Date.now() + _chunkGIZL57FEcjs.AUTH_CONFIG.sessionExpiryDays * 24 * 60 * 60 * 1e3).toISOString();
105
108
  const updatedConfig = {
106
109
  ...config,
107
110
  auth: {
@@ -110,10 +113,9 @@ async function login(ctx) {
110
113
  expiresAt
111
114
  }
112
115
  };
113
- await _chunkWQSWU2QAcjs.saveConfig.call(void 0, updatedConfig);
116
+ await _chunkRJP3SZ7Qcjs.saveConfig.call(void 0, updatedConfig);
114
117
  console.log();
115
- console.log(_chalk2.default.green("Login successful!"));
116
- console.log(_chalk2.default.cyan(`Welcome, ${pollResult.user.name || pollResult.user.email}!`));
118
+ console.log(_chalk2.default.green(_chunkLOXOD4IScjs.t.call(void 0, "commands.login.success", { email: pollResult.user.name || pollResult.user.email })));
117
119
  console.log();
118
120
  await checkAndRestoreSyncData(pollResult.token, pollResult.user.id, updatedConfig);
119
121
  return null;
@@ -130,16 +132,16 @@ async function login(ctx) {
130
132
  }
131
133
  async function checkAndRestoreSyncData(token, userId, config) {
132
134
  try {
133
- const syncService = _chunkXFPITUFJcjs.createSyncService.call(void 0, {
135
+ const syncService = _chunk3S4DEIJPcjs.createSyncService.call(void 0, {
134
136
  authToken: token,
135
137
  userId,
136
138
  config: {
137
- ..._chunkXFPITUFJcjs.DEFAULT_SYNC_CONFIG,
139
+ ..._chunk3S4DEIJPcjs.DEFAULT_SYNC_CONFIG,
138
140
  ...config.sync,
139
141
  enabled: true
140
142
  }
141
143
  });
142
- const { getSyncApiClient } = await Promise.resolve().then(() => _interopRequireWildcard(require("./SyncApiClient-UOA4VLLD.cjs")));
144
+ const { getSyncApiClient } = await Promise.resolve().then(() => _interopRequireWildcard(require("./SyncApiClient-ID3KXEMA.cjs")));
143
145
  const apiClient = getSyncApiClient();
144
146
  const remoteManifest = await apiClient.getRemoteManifest(token);
145
147
  if (!remoteManifest || remoteManifest.files.length === 0) {
@@ -151,7 +153,7 @@ async function checkAndRestoreSyncData(token, userId, config) {
151
153
  console.log(_chalk2.default.cyan(`Found cloud sync data (${fileCount} files, ${sizeStr})`));
152
154
  console.log(_chalk2.default.gray("This includes your settings, agents, skills, and memory."));
153
155
  console.log();
154
- const result = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, {
156
+ const result = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
155
157
  type: "confirm",
156
158
  name: "restore",
157
159
  message: "Would you like to restore your settings from the cloud?",
@@ -162,17 +164,66 @@ async function checkAndRestoreSyncData(token, userId, config) {
162
164
  return;
163
165
  }
164
166
  console.log(_chalk2.default.gray("Restoring settings from cloud..."));
165
- const syncResult = await syncService.forceDownload();
166
- if (syncResult.success) {
167
+ console.log(_chalk2.default.gray("(Press ESC or Ctrl+C to cancel)"));
168
+ const syncResult = await cancellableOperation(
169
+ () => syncService.forceDownload()
170
+ );
171
+ if (!syncResult) {
172
+ console.log(_chalk2.default.yellow("\nSync restore cancelled."));
173
+ console.log(_chalk2.default.gray("You can sync later with /sync."));
174
+ } else if (syncResult.success) {
167
175
  console.log(_chalk2.default.green(`Restored ${syncResult.downloaded} files from cloud.`));
168
176
  } else {
169
177
  console.log(_chalk2.default.yellow(`Sync restore failed: ${syncResult.error}`));
170
178
  console.log(_chalk2.default.gray("You can try again later with /sync."));
171
179
  }
172
- } catch (error) {
180
+ } catch (e2) {
173
181
  console.log(_chalk2.default.gray("Could not check cloud sync data."));
174
182
  }
175
183
  }
184
+ async function cancellableOperation(fn) {
185
+ const stdin = process.stdin;
186
+ const wasRaw = stdin.isRaw;
187
+ return new Promise((resolve) => {
188
+ let settled = false;
189
+ const cleanup = () => {
190
+ stdin.removeListener("data", onData);
191
+ if (stdin.isTTY && stdin.setRawMode) {
192
+ try {
193
+ stdin.setRawMode(_nullishCoalesce(wasRaw, () => ( false)));
194
+ } catch (e3) {
195
+ }
196
+ }
197
+ };
198
+ const onData = (data) => {
199
+ const s = data.toString();
200
+ if (s === "\x1B" || s === "") {
201
+ if (settled) return;
202
+ settled = true;
203
+ cleanup();
204
+ resolve(null);
205
+ }
206
+ };
207
+ if (stdin.isTTY && stdin.setRawMode) {
208
+ try {
209
+ stdin.setRawMode(true);
210
+ } catch (e4) {
211
+ }
212
+ }
213
+ stdin.on("data", onData);
214
+ fn().then((result) => {
215
+ if (settled) return;
216
+ settled = true;
217
+ cleanup();
218
+ resolve(result);
219
+ }).catch(() => {
220
+ if (settled) return;
221
+ settled = true;
222
+ cleanup();
223
+ resolve(null);
224
+ });
225
+ });
226
+ }
176
227
  function formatSize(bytes) {
177
228
  if (bytes === 0) return "0 B";
178
229
  if (bytes < 1024) return `${bytes} B`;
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunk3HPUOQJNcjs = require('./chunk-3HPUOQJN.cjs');
3
+ var _chunkMNCWB5F7cjs = require('./chunk-MNCWB5F7.cjs');
4
4
 
5
5
 
6
- var _chunkPMMSDR44cjs = require('./chunk-PMMSDR44.cjs');
6
+ var _chunkGIZL57FEcjs = require('./chunk-GIZL57FE.cjs');
7
7
 
8
8
  // src/commands/agents-new.ts
9
9
  var _path = require('path'); var _path2 = _interopRequireDefault(_path);
@@ -16,7 +16,7 @@ var metadata = {
16
16
  prd: "prd/sub_agents_architecture.md"
17
17
  };
18
18
  async function createAgent(ctx) {
19
- const answers = await _chunk3HPUOQJNcjs.safePrompt.call(void 0, [
19
+ const answers = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, [
20
20
  {
21
21
  type: "input",
22
22
  name: "name",
@@ -83,7 +83,7 @@ function buildPrompt(name, description) {
83
83
  ].filter(Boolean).join("\n");
84
84
  }
85
85
  function getAgentsDir() {
86
- return _chunkPMMSDR44cjs.AUTOHAND_PATHS.agents;
86
+ return _chunkGIZL57FEcjs.AUTOHAND_PATHS.agents;
87
87
  }
88
88
  function slugify(input) {
89
89
  return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "agent";
@@ -1,8 +1,12 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/commands/automode.ts
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
4
+
5
+ // src/commands/automode.ts
2
6
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
3
7
  var metadata = {
4
8
  command: "/automode",
5
- description: "Start or control autonomous development loops",
9
+ description: _chunkLOXOD4IScjs.t.call(void 0, "commands.automode.description"),
6
10
  implemented: true
7
11
  };
8
12
  function parseArgs(args) {
@@ -88,7 +92,7 @@ function handleStatus(manager) {
88
92
  "",
89
93
  ` Session: ${state.sessionId}`,
90
94
  ` Status: ${state.status}`,
91
- ` Iteration: ${state.currentIteration}/${state.maxIterations}`,
95
+ ` ${_chunkLOXOD4IScjs.t.call(void 0, "commands.automode.iteration", { current: String(state.currentIteration), max: String(state.maxIterations) })}`,
92
96
  ` Files created: ${state.filesCreated}`,
93
97
  ` Files modified: ${state.filesModified}`
94
98
  ];
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AUTOHAND_PATHS,
3
3
  PROJECT_DIR_NAME
4
- } from "./chunk-EKY5PKQI.js";
4
+ } from "./chunk-PWLLLJHU.js";
5
5
 
6
6
  // src/memory/MemoryManager.ts
7
7
  import fs from "fs-extra";
@@ -1,3 +1,7 @@
1
+ import {
2
+ t
3
+ } from "./chunk-UET7BDX2.js";
4
+
1
5
  // src/commands/model.ts
2
6
  async function model(ctx) {
3
7
  await ctx.promptModelSelection();
@@ -5,7 +9,7 @@ async function model(ctx) {
5
9
  }
6
10
  var metadata = {
7
11
  command: "/model",
8
- description: "choose what model and reasoning effort to use",
12
+ description: t("commands.model.description"),
9
13
  implemented: true
10
14
  };
11
15
 
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getSyncApiClient
3
- } from "./chunk-MDWULS57.js";
3
+ } from "./chunk-6UJMCWRY.js";
4
4
  import {
5
5
  AUTOHAND_HOME
6
- } from "./chunk-EKY5PKQI.js";
6
+ } from "./chunk-PWLLLJHU.js";
7
7
 
8
8
  // src/sync/types.ts
9
9
  var DEFAULT_SYNC_CONFIG = {
@@ -165,12 +165,14 @@ var SyncService = class {
165
165
  this.timer = null;
166
166
  this.syncing = false;
167
167
  this.started = false;
168
+ this.authFailed = false;
168
169
  this.authToken = options.authToken;
169
170
  this.userId = options.userId;
170
171
  this.config = options.config;
171
172
  this.client = options.apiClient || getSyncApiClient();
172
173
  this.onEvent = options.onEvent || (() => {
173
174
  });
175
+ this.onAuthFailure = options.onAuthFailure;
174
176
  this.basePath = AUTOHAND_HOME;
175
177
  }
176
178
  /**
@@ -179,9 +181,13 @@ var SyncService = class {
179
181
  start() {
180
182
  if (this.started) return;
181
183
  this.started = true;
182
- this.sync().catch(() => {
184
+ this.sync().then((result) => {
185
+ if (!result.success && this.isAuthError(result.error)) {
186
+ }
187
+ }).catch(() => {
183
188
  });
184
189
  this.timer = setInterval(() => {
190
+ if (this.authFailed) return;
185
191
  this.sync().catch(() => {
186
192
  });
187
193
  }, this.config.interval);
@@ -279,7 +285,11 @@ var SyncService = class {
279
285
  this.onEvent({ type: "conflict_resolved", path: file.path, strategy: "cloud_wins" });
280
286
  }
281
287
  } catch (error) {
282
- console.error(`Failed to download ${file.path}:`, error);
288
+ const errorMsg = error.message;
289
+ if (this.isAuthError(errorMsg)) {
290
+ throw error;
291
+ }
292
+ this.onEvent({ type: "download_error", path: file.path, error: errorMsg });
283
293
  }
284
294
  }
285
295
  for (const filePath of actions.localDeletes) {
@@ -311,7 +321,11 @@ var SyncService = class {
311
321
  uploaded++;
312
322
  this.onEvent({ type: "file_uploaded", path: file.path, size: content.length });
313
323
  } catch (error) {
314
- console.error(`Failed to upload ${file.path}:`, error);
324
+ const errorMsg = error.message;
325
+ if (this.isAuthError(errorMsg)) {
326
+ throw error;
327
+ }
328
+ this.onEvent({ type: "upload_error", path: file.path, error: errorMsg });
315
329
  }
316
330
  }
317
331
  await this.client.completeUpload(this.authToken, localManifest);
@@ -333,6 +347,17 @@ var SyncService = class {
333
347
  return result;
334
348
  } catch (error) {
335
349
  const errorMessage = error.message;
350
+ if (this.isAuthError(errorMessage)) {
351
+ this.handleAuthFailure(errorMessage);
352
+ return {
353
+ success: false,
354
+ uploaded: 0,
355
+ downloaded: 0,
356
+ conflicts: 0,
357
+ error: "Authentication expired. Please run /login again.",
358
+ duration: Date.now() - startTime
359
+ };
360
+ }
336
361
  this.onEvent({ type: "sync_failed", error: errorMessage });
337
362
  return {
338
363
  success: false,
@@ -348,6 +373,23 @@ var SyncService = class {
348
373
  });
349
374
  }
350
375
  }
376
+ /**
377
+ * Check if an error message indicates an authentication failure
378
+ */
379
+ isAuthError(errorMessage) {
380
+ if (!errorMessage) return false;
381
+ return errorMessage.includes("401") || errorMessage.toLowerCase().includes("unauthorized") || errorMessage.toLowerCase().includes("authentication");
382
+ }
383
+ /**
384
+ * Handle authentication failure - stop service and notify
385
+ */
386
+ handleAuthFailure(errorMessage) {
387
+ if (this.authFailed) return;
388
+ this.authFailed = true;
389
+ this.stop();
390
+ this.onEvent({ type: "auth_failure", error: errorMessage });
391
+ this.onAuthFailure?.();
392
+ }
351
393
  /**
352
394
  * Build manifest from local ~/.autohand/ files
353
395
  */
@@ -1,11 +1,15 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/commands/init.ts
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
4
+
5
+ // src/commands/init.ts
2
6
  async function init(ctx) {
3
7
  await ctx.createAgentsFile();
4
8
  return null;
5
9
  }
6
10
  var metadata = {
7
11
  command: "/init",
8
- description: "create an AGENTS.md file with instructions for Autohand",
12
+ description: _chunkLOXOD4IScjs.t.call(void 0, "commands.init.description"),
9
13
  implemented: true
10
14
  };
11
15
 
@@ -0,0 +1,249 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/ui/theme/Theme.ts
2
+ var Theme = class {
3
+ constructor(name, colors, colorMode) {
4
+ this.ansiCache = /* @__PURE__ */ new Map();
5
+ this.name = name;
6
+ this.colors = colors;
7
+ this.colorMode = _nullishCoalesce(colorMode, () => ( detectColorMode()));
8
+ }
9
+ /**
10
+ * Apply foreground color to text.
11
+ */
12
+ fg(token, text) {
13
+ if (this.colorMode === "none") return text;
14
+ const color = this.colors[token];
15
+ if (!color) return text;
16
+ const ansi = this.getAnsiCode(color, "fg");
17
+ return `${ansi}${text}\x1B[39m`;
18
+ }
19
+ /**
20
+ * Apply background color to text.
21
+ */
22
+ bg(token, text) {
23
+ if (this.colorMode === "none") return text;
24
+ const color = this.colors[token];
25
+ if (!color) return text;
26
+ const ansi = this.getAnsiCode(color, "bg");
27
+ return `${ansi}${text}\x1B[49m`;
28
+ }
29
+ /**
30
+ * Apply both foreground and background colors.
31
+ */
32
+ fgBg(fgToken, bgToken, text) {
33
+ if (this.colorMode === "none") return text;
34
+ const fgColor = this.colors[fgToken];
35
+ const bgColor = this.colors[bgToken];
36
+ const fgAnsi = fgColor ? this.getAnsiCode(fgColor, "fg") : "";
37
+ const bgAnsi = bgColor ? this.getAnsiCode(bgColor, "bg") : "";
38
+ return `${fgAnsi}${bgAnsi}${text}\x1B[0m`;
39
+ }
40
+ /**
41
+ * Apply bold style.
42
+ */
43
+ bold(text) {
44
+ return `\x1B[1m${text}\x1B[22m`;
45
+ }
46
+ /**
47
+ * Apply italic style.
48
+ */
49
+ italic(text) {
50
+ return `\x1B[3m${text}\x1B[23m`;
51
+ }
52
+ /**
53
+ * Apply underline style.
54
+ */
55
+ underline(text) {
56
+ return `\x1B[4m${text}\x1B[24m`;
57
+ }
58
+ /**
59
+ * Apply dim style.
60
+ */
61
+ dimStyle(text) {
62
+ return `\x1B[2m${text}\x1B[22m`;
63
+ }
64
+ /**
65
+ * Apply strikethrough style.
66
+ */
67
+ strikethrough(text) {
68
+ return `\x1B[9m${text}\x1B[29m`;
69
+ }
70
+ /**
71
+ * Reset all styles.
72
+ */
73
+ reset(text) {
74
+ return `\x1B[0m${text}\x1B[0m`;
75
+ }
76
+ /**
77
+ * Get raw color value for a token.
78
+ */
79
+ getColor(token) {
80
+ return this.colors[token] || "";
81
+ }
82
+ /**
83
+ * Get current color mode.
84
+ */
85
+ getColorMode() {
86
+ return this.colorMode;
87
+ }
88
+ /**
89
+ * Convert color value to ANSI escape code.
90
+ */
91
+ getAnsiCode(color, type) {
92
+ const cacheKey = `${color}:${type}`;
93
+ const cached = this.ansiCache.get(cacheKey);
94
+ if (cached) return cached;
95
+ const code = this.colorToAnsi(color, type);
96
+ this.ansiCache.set(cacheKey, code);
97
+ return code;
98
+ }
99
+ /**
100
+ * Convert a color value to ANSI code based on color mode.
101
+ */
102
+ colorToAnsi(color, type) {
103
+ if (!color) return "";
104
+ if (color.startsWith("#")) {
105
+ return this.hexToAnsi(color, type);
106
+ }
107
+ const numValue = parseInt(color, 10);
108
+ if (!isNaN(numValue) && numValue >= 0 && numValue <= 255) {
109
+ return this.index256ToAnsi(numValue, type);
110
+ }
111
+ return "";
112
+ }
113
+ /**
114
+ * Convert hex color to ANSI code.
115
+ */
116
+ hexToAnsi(hex, type) {
117
+ const rgb = hexToRgb(hex);
118
+ if (!rgb) return "";
119
+ const base = type === "fg" ? 38 : 48;
120
+ if (this.colorMode === "truecolor") {
121
+ return `\x1B[${base};2;${rgb.r};${rgb.g};${rgb.b}m`;
122
+ } else if (this.colorMode === "256") {
123
+ const index = rgbTo256(rgb.r, rgb.g, rgb.b);
124
+ return `\x1B[${base};5;${index}m`;
125
+ } else if (this.colorMode === "16") {
126
+ const index = rgbTo16(rgb.r, rgb.g, rgb.b);
127
+ const code = type === "fg" ? index < 8 ? 30 + index : 90 + index - 8 : index < 8 ? 40 + index : 100 + index - 8;
128
+ return `\x1B[${code}m`;
129
+ }
130
+ return "";
131
+ }
132
+ /**
133
+ * Convert 256-color index to ANSI code.
134
+ */
135
+ index256ToAnsi(index, type) {
136
+ const base = type === "fg" ? 38 : 48;
137
+ if (this.colorMode === "truecolor" || this.colorMode === "256") {
138
+ return `\x1B[${base};5;${index}m`;
139
+ } else if (this.colorMode === "16") {
140
+ const basicIndex = index < 16 ? index : index256To16(index);
141
+ const code = type === "fg" ? basicIndex < 8 ? 30 + basicIndex : 90 + basicIndex - 8 : basicIndex < 8 ? 40 + basicIndex : 100 + basicIndex - 8;
142
+ return `\x1B[${code}m`;
143
+ }
144
+ return "";
145
+ }
146
+ };
147
+ function detectColorMode() {
148
+ if (process.env.NO_COLOR !== void 0) {
149
+ return "none";
150
+ }
151
+ if (process.env.FORCE_COLOR !== void 0) {
152
+ const level = parseInt(process.env.FORCE_COLOR, 10);
153
+ if (level === 0) return "none";
154
+ if (level === 1) return "16";
155
+ if (level === 2) return "256";
156
+ if (level >= 3) return "truecolor";
157
+ }
158
+ const colorterm = process.env.COLORTERM;
159
+ if (colorterm === "truecolor" || colorterm === "24bit") {
160
+ return "truecolor";
161
+ }
162
+ const term = process.env.TERM || "";
163
+ if (term.includes("256color") || term.includes("256-color")) {
164
+ return "256";
165
+ }
166
+ if (term.includes("color") || term.includes("ansi") || term === "xterm") {
167
+ return "16";
168
+ }
169
+ if (process.stdout.isTTY) {
170
+ return "256";
171
+ }
172
+ return "none";
173
+ }
174
+ function hexToRgb(hex) {
175
+ const match = hex.match(/^#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/);
176
+ if (match) {
177
+ return {
178
+ r: parseInt(match[1], 16),
179
+ g: parseInt(match[2], 16),
180
+ b: parseInt(match[3], 16)
181
+ };
182
+ }
183
+ const shortMatch = hex.match(/^#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/);
184
+ if (shortMatch) {
185
+ return {
186
+ r: parseInt(shortMatch[1] + shortMatch[1], 16),
187
+ g: parseInt(shortMatch[2] + shortMatch[2], 16),
188
+ b: parseInt(shortMatch[3] + shortMatch[3], 16)
189
+ };
190
+ }
191
+ return null;
192
+ }
193
+ function rgbTo256(r, g, b) {
194
+ if (r === g && g === b) {
195
+ if (r < 8) return 16;
196
+ if (r > 248) return 231;
197
+ return Math.round((r - 8) / 10) + 232;
198
+ }
199
+ const ri = Math.round(r / 51);
200
+ const gi = Math.round(g / 51);
201
+ const bi = Math.round(b / 51);
202
+ return 16 + 36 * ri + 6 * gi + bi;
203
+ }
204
+ function rgbTo16(r, g, b) {
205
+ const bright = (r + g + b) / 3 > 128 ? 8 : 0;
206
+ const ri = r > 128 ? 1 : 0;
207
+ const gi = g > 128 ? 2 : 0;
208
+ const bi = b > 128 ? 4 : 0;
209
+ return bright + ri + gi + bi;
210
+ }
211
+ function index256To16(index) {
212
+ if (index < 16) return index;
213
+ if (index >= 232) {
214
+ const gray = (index - 232) * 10 + 8;
215
+ return gray > 128 ? 15 : 0;
216
+ }
217
+ const adjusted = index - 16;
218
+ const r = Math.floor(adjusted / 36) * 51;
219
+ const g = Math.floor(adjusted % 36 / 6) * 51;
220
+ const b = adjusted % 6 * 51;
221
+ return rgbTo16(r, g, b);
222
+ }
223
+ var globalTheme = null;
224
+ function getTheme() {
225
+ if (!globalTheme) {
226
+ throw new Error("Theme not initialized. Call initTheme() first.");
227
+ }
228
+ return globalTheme;
229
+ }
230
+ function setTheme(theme) {
231
+ globalTheme = theme;
232
+ }
233
+ function isThemeInitialized() {
234
+ return globalTheme !== null;
235
+ }
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+ exports.Theme = Theme; exports.detectColorMode = detectColorMode; exports.hexToRgb = hexToRgb; exports.getTheme = getTheme; exports.setTheme = setTheme; exports.isThemeInitialized = isThemeInitialized;
245
+ /**
246
+ * @license
247
+ * Copyright 2025 Autohand AI LLC
248
+ * SPDX-License-Identifier: Apache-2.0
249
+ */