autohand-cli 0.7.9 → 0.7.11

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 (254) 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-YWDFZBKP.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-WYP5JPCQ.js → PermissionManager-U5OMGR3L.js} +3 -3
  10. package/dist/SessionManager-BJ2G6VV4.cjs +9 -0
  11. package/dist/{SessionManager-SFBDIBGA.js → SessionManager-ENPGYK5J.js} +2 -2
  12. package/dist/SkillsRegistry-6ZFOCT25.cjs +8 -0
  13. package/dist/{SkillsRegistry-E437FFJV.js → SkillsRegistry-C2SHOZ5D.js} +2 -2
  14. package/dist/about-225R5LMN.cjs +11 -0
  15. package/dist/about-BCPUOQVH.js +11 -0
  16. package/dist/add-dir-3BMVJ5H3.cjs +9 -0
  17. package/dist/{add-dir-PNU7AGKO.js → add-dir-RP2BL3JW.js} +2 -1
  18. package/dist/agents-JQ2PHCQB.js +10 -0
  19. package/dist/agents-RGSZ2BM3.cjs +10 -0
  20. package/dist/agents-new-LSJN2L2T.cjs +13 -0
  21. package/dist/agents-new-MZUEVKSK.js +13 -0
  22. package/dist/automode-DP3BMYJB.cjs +9 -0
  23. package/dist/{automode-QCRJSBRT.js → automode-XOF3U3OB.js} +2 -1
  24. package/dist/{chunk-A5KU3JZW.cjs → chunk-34OGUMRO.cjs} +9 -5
  25. package/dist/{chunk-NTFNUTY2.js → chunk-3652ROFD.js} +2 -2
  26. package/dist/{chunk-KNLBEUAV.cjs → chunk-3DQSBW4B.cjs} +10 -6
  27. package/dist/{chunk-32R47CAQ.cjs → chunk-3S4DEIJP.cjs} +2 -2
  28. package/dist/chunk-46WX5IO2.cjs +499 -0
  29. package/dist/{chunk-IYZBLUEJ.js → chunk-4ULBAYME.js} +8 -6
  30. package/dist/{chunk-5UC3VAJ2.cjs → chunk-4XHHW7QX.cjs} +9 -8
  31. package/dist/{chunk-JRV4SOJU.cjs → chunk-5BQ57AZC.cjs} +9 -9
  32. package/dist/{chunk-7WKEDH3E.cjs → chunk-5FZM7KLB.cjs} +13 -10
  33. package/dist/{chunk-FN5S5OE7.cjs → chunk-5NZA4UB4.cjs} +3 -3
  34. package/dist/{chunk-PFS5ZOCO.js → chunk-5Q3W4DEU.js} +18 -10
  35. package/dist/{chunk-VMMGT42E.cjs → chunk-65GTO4QM.cjs} +7 -3
  36. package/dist/{chunk-CXZEPTRI.js → chunk-6P3K4YUW.js} +6 -2
  37. package/dist/chunk-73XIKTZL.js +124 -0
  38. package/dist/{chunk-P6EGMTK4.js → chunk-7QNW24ZT.js} +8 -4
  39. package/dist/{chunk-XT4OSHSB.cjs → chunk-AEYOIPHD.cjs} +6 -2
  40. package/dist/{chunk-KXNAGJE6.cjs → chunk-ANUQFV43.cjs} +6 -6
  41. package/dist/chunk-ATR3RORT.js +499 -0
  42. package/dist/{chunk-XOSFZHSS.js → chunk-B72CC4O6.js} +2 -2
  43. package/dist/{chunk-TAZJSKFD.js → chunk-BBIKQW66.js} +9 -5
  44. package/dist/{chunk-FFA4LDAO.cjs → chunk-BDIZGBDA.cjs} +8 -3
  45. package/dist/{chunk-YDJA5ETO.js → chunk-BG4OQUKP.js} +1 -1
  46. package/dist/chunk-BKGPWAEE.js +94 -0
  47. package/dist/{chunk-3DVEGFBZ.js → chunk-BODVOW7B.js} +64 -13
  48. package/dist/{chunk-7GJR65DQ.js → chunk-BXV5O6VU.js} +9 -8
  49. package/dist/{chunk-HUA44A35.cjs → chunk-BZ73ZQTE.cjs} +17 -11
  50. package/dist/{chunk-T7HQBZZB.cjs → chunk-C2E3GJEE.cjs} +12 -9
  51. package/dist/{chunk-UP6YRP44.js → chunk-C5SVIQG3.js} +10 -5
  52. package/dist/{chunk-4YQ2OJAL.js → chunk-D2XFTCRP.js} +1 -1
  53. package/dist/{chunk-R5PZPF55.js → chunk-DEAEO7RI.js} +1 -1
  54. package/dist/chunk-DMPVI3YK.cjs +400 -0
  55. package/dist/{chunk-DRXFJR7F.cjs → chunk-DMXN5LJB.cjs} +17 -16
  56. package/dist/{chunk-PVSYZXS7.js → chunk-DTXY7JDL.js} +11 -10
  57. package/dist/{chunk-C26EN22G.cjs → chunk-DUDDZRCS.cjs} +9 -5
  58. package/dist/{chunk-WT367RVU.js → chunk-E7YL3AHT.js} +15 -9
  59. package/dist/{chunk-CHVXUA3O.cjs → chunk-EV53SLSB.cjs} +4 -4
  60. package/dist/{chunk-VQDWNDP5.js → chunk-GD4AFYJ3.js} +1 -1
  61. package/dist/{chunk-AQNY2M6Q.cjs → chunk-GIZL57FE.cjs} +3 -1
  62. package/dist/{chunk-I4HVBWYF.js → chunk-GLAE5K5W.js} +7 -2
  63. package/dist/{chunk-4AMTDSQ3.cjs → chunk-HDSEJMWI.cjs} +6 -3
  64. package/dist/{chunk-ZWS3KSMK.js → chunk-HQQ4NKER.js} +5 -2
  65. package/dist/{chunk-WBDPILKI.cjs → chunk-HVOBMOZ2.cjs} +6 -2
  66. package/dist/{chunk-CMNQAF6C.js → chunk-IJFTBVSD.js} +12 -9
  67. package/dist/{chunk-RDGYHJ52.js → chunk-IPI3JXKP.js} +9 -6
  68. package/dist/chunk-JS7IPR7P.js +249 -0
  69. package/dist/{chunk-CPO5KEQS.cjs → chunk-KC5FPUOF.cjs} +2 -2
  70. package/dist/{chunk-TUO5SZRD.cjs → chunk-L42HTMMR.cjs} +2 -2
  71. package/dist/chunk-LOXOD4IS.cjs +8630 -0
  72. package/dist/{chunk-6DSJ7XST.cjs → chunk-LQ5V5YC7.cjs} +13 -10
  73. package/dist/chunk-M6N5HSY3.js +209 -0
  74. package/dist/{chunk-LJCSSR5V.cjs → chunk-MNCWB5F7.cjs} +5 -5
  75. package/dist/{chunk-BTVNRLSE.js → chunk-MYNHJHDZ.js} +1 -1
  76. package/dist/{chunk-O3EX3SAD.cjs → chunk-N4ZSG6JJ.cjs} +2 -2
  77. package/dist/{chunk-OO7EKEJH.cjs → chunk-NBD4PL2E.cjs} +17 -14
  78. package/dist/chunk-NF7RIHJK.js +45 -0
  79. package/dist/{chunk-KJAZ4YAR.cjs → chunk-NGBN2NGH.cjs} +76 -25
  80. package/dist/{chunk-MRDZHNCF.cjs → chunk-NRORJRD4.cjs} +4 -4
  81. package/dist/{chunk-OTS4YFSZ.cjs → chunk-OKABWSWA.cjs} +7 -3
  82. package/dist/{chunk-4BZ65NIH.js → chunk-OLG7LZBD.js} +1 -1
  83. package/dist/{chunk-KZ7VMQTC.js → chunk-OMEH2EVE.js} +5 -1
  84. package/dist/{chunk-LCBOOA7S.js → chunk-P5VDZ6PV.js} +1 -1
  85. package/dist/{chunk-V5MTBGM4.cjs → chunk-PA2H2263.cjs} +6 -2
  86. package/dist/chunk-PGRH5Q77.cjs +249 -0
  87. package/dist/chunk-PNSRJT46.js +380 -0
  88. package/dist/{chunk-UL5T2XIY.cjs → chunk-PSED4Z4X.cjs} +13 -11
  89. package/dist/{chunk-PGH3MHPP.js → chunk-PWLLLJHU.js} +3 -1
  90. package/dist/{chunk-DOTAX65F.js → chunk-PYLR4J2D.js} +8 -4
  91. package/dist/{chunk-3SDEZTZD.js → chunk-QC6IUDDJ.js} +1 -1
  92. package/dist/{chunk-WJICM4SK.cjs → chunk-QM7HZCQW.cjs} +11 -6
  93. package/dist/chunk-QRQ5EX7I.cjs +380 -0
  94. package/dist/{chunk-RX4KPL6H.js → chunk-QU64XI5X.js} +9 -6
  95. package/dist/{chunk-LKIKNRUP.js → chunk-R4OLUJV7.js} +8 -5
  96. package/dist/{chunk-FSTLJIR5.cjs → chunk-R7SDL3DJ.cjs} +16 -13
  97. package/dist/{chunk-LY5VN3B3.cjs → chunk-RJP3SZ7Q.cjs} +41 -253
  98. package/dist/{chunk-KS45GREN.js → chunk-RJXNNIFW.js} +7 -4
  99. package/dist/{chunk-LYMZDJX5.cjs → chunk-S5G7OEN2.cjs} +26 -18
  100. package/dist/{chunk-3DGR4GNN.cjs → chunk-SA4JOV4F.cjs} +10 -8
  101. package/dist/chunk-SAGM3TE3.cjs +94 -0
  102. package/dist/{chunk-WCN5WDOI.cjs → chunk-TSY7JHIV.cjs} +2 -2
  103. package/dist/chunk-U23U52ZN.cjs +124 -0
  104. package/dist/chunk-UET7BDX2.js +8630 -0
  105. package/dist/{chunk-J7VV7JAB.js → chunk-UM4QEO36.js} +6 -4
  106. package/dist/{chunk-NCLCL7JK.js → chunk-WD5ZF6HE.js} +1 -1
  107. package/dist/{chunk-HF65HHDU.cjs → chunk-WH5RW7DV.cjs} +24 -22
  108. package/dist/{chunk-GSOEIEOU.js → chunk-WJ276BIP.js} +5 -1
  109. package/dist/{chunk-OXJCLU3X.js → chunk-WLTVF77A.js} +1 -1
  110. package/dist/{chunk-WGO4ACS7.cjs → chunk-WOGJXDBU.cjs} +3 -3
  111. package/dist/{chunk-QJ53OSGF.js → chunk-WRJLBHWB.js} +6 -2
  112. package/dist/chunk-X4OLP5C5.cjs +209 -0
  113. package/dist/{chunk-HWDP4HQO.cjs → chunk-XL77XYI2.cjs} +4 -4
  114. package/dist/{chunk-QAJM6VG5.js → chunk-XLI7SHCH.js} +2 -2
  115. package/dist/chunk-Y27LG4BQ.cjs +45 -0
  116. package/dist/chunk-YKSSNFDZ.js +400 -0
  117. package/dist/{chunk-VRI7EXV6.js → chunk-YMDLUTF2.js} +5 -1
  118. package/dist/{chunk-J2RUI7GJ.js → chunk-YVY27BJT.js} +5 -3
  119. package/dist/{chunk-K6CZ2AGI.js → chunk-ZBIBLOZL.js} +35 -247
  120. package/dist/completion-HVSWU5GR.cjs +13 -0
  121. package/dist/completion-WJ2MVNDH.js +13 -0
  122. package/dist/constants-RBQTR32A.cjs +20 -0
  123. package/dist/{constants-OFIAR4E5.js → constants-V6J54N3X.js} +1 -1
  124. package/dist/export-NN7F5ANA.js +11 -0
  125. package/dist/export-UPS3AK2P.cjs +11 -0
  126. package/dist/feedback-KPNRMSP4.js +14 -0
  127. package/dist/feedback-OTXZVKE7.cjs +14 -0
  128. package/dist/help-M7NFPCM4.js +58 -0
  129. package/dist/help-UBHIUDQR.cjs +58 -0
  130. package/dist/history-2KUM6GN4.cjs +13 -0
  131. package/dist/history-RZFT34Q7.js +13 -0
  132. package/dist/hooks-7QSUBHBM.cjs +12 -0
  133. package/dist/hooks-S4MD4QSR.js +12 -0
  134. package/dist/i18n-6NKENUIV.js +32 -0
  135. package/dist/i18n-MXQXQOVE.cjs +32 -0
  136. package/dist/ide-5STDV43A.cjs +11 -0
  137. package/dist/ide-W2NYXOWQ.js +11 -0
  138. package/dist/index.cjs +15320 -12906
  139. package/dist/index.js +15465 -13051
  140. package/dist/init-FG5KEJCZ.cjs +9 -0
  141. package/dist/init-TV4MJDYK.js +9 -0
  142. package/dist/language-52Q7CSAY.cjs +16 -0
  143. package/dist/language-FXFDGOBF.js +16 -0
  144. package/dist/localProjectPermissions-2EATUDZM.cjs +17 -0
  145. package/dist/{localProjectPermissions-FD5AK5FB.js → localProjectPermissions-WQYMGI42.js} +2 -2
  146. package/dist/login-AN42IOBK.js +18 -0
  147. package/dist/login-I65V4TGU.cjs +18 -0
  148. package/dist/logout-KK5UWGNG.js +16 -0
  149. package/dist/logout-VYYNWBHZ.cjs +16 -0
  150. package/dist/mcp-4SKTDECJ.js +15 -0
  151. package/dist/mcp-AGWPTMAX.cjs +15 -0
  152. package/dist/mcp-install-3NN2HAYR.cjs +473 -0
  153. package/dist/mcp-install-KTV52DQK.js +473 -0
  154. package/dist/memory-LG4K6XV6.cjs +9 -0
  155. package/dist/{memory-4GSP7NKV.js → memory-LRDK2SYC.js} +2 -1
  156. package/dist/model-P5D7ATE7.cjs +9 -0
  157. package/dist/{model-HKEFSH5E.js → model-WBFJIGUN.js} +2 -1
  158. package/dist/{new-EEZC4XXV.js → new-5A7RQEKI.js} +2 -1
  159. package/dist/new-EAATWI2G.cjs +9 -0
  160. package/dist/permissions-5URK6C44.js +12 -0
  161. package/dist/permissions-CJUDVG63.cjs +12 -0
  162. package/dist/quit-A33JHDG7.cjs +9 -0
  163. package/dist/quit-IYBLN3DB.js +9 -0
  164. package/dist/resume-OPSJTCH7.cjs +12 -0
  165. package/dist/resume-TOWEEN5D.js +12 -0
  166. package/dist/search-GOLIE5BA.js +14 -0
  167. package/dist/search-H42HGUK5.cjs +14 -0
  168. package/dist/{sessions-4KXIT76T.js → sessions-B5NENDKY.js} +2 -1
  169. package/dist/sessions-YHAVEMWY.cjs +9 -0
  170. package/dist/share-3YWFZGNM.cjs +13 -0
  171. package/dist/share-T6I2LRGS.js +13 -0
  172. package/dist/{skills-PB4HXV4R.js → skills-ICEQ2TNC.js} +2 -1
  173. package/dist/skills-LFVNZOMF.cjs +13 -0
  174. package/dist/{skills-install-UBBNXWD5.js → skills-install-6RN7FVCP.js} +9 -8
  175. package/dist/{skills-install-7SFS24HY.cjs → skills-install-LU6GA2WF.cjs} +14 -13
  176. package/dist/skills-new-5BM5PDFX.cjs +14 -0
  177. package/dist/skills-new-KWBWOX74.js +14 -0
  178. package/dist/status-BAGXGSKE.js +10 -0
  179. package/dist/status-BMD2UFHC.cjs +10 -0
  180. package/dist/sync-6M3WRKMH.cjs +39 -0
  181. package/dist/sync-73D2MP65.cjs +16 -0
  182. package/dist/{sync-LYKDHRFM.js → sync-EXYX7HXW.js} +2 -2
  183. package/dist/sync-LL6M67CN.js +16 -0
  184. package/dist/theme-IFEI2IBJ.cjs +16 -0
  185. package/dist/theme-U3SKEULY.js +16 -0
  186. package/dist/ui/questionModal.cjs +28 -0
  187. package/dist/ui/questionModal.d.cts +11 -0
  188. package/dist/ui/questionModal.d.ts +11 -0
  189. package/dist/ui/questionModal.js +28 -0
  190. package/dist/undo-4DS67OAW.cjs +9 -0
  191. package/dist/undo-YMALVAPN.js +9 -0
  192. package/package.json +9 -8
  193. package/dist/CommunitySkillsCache-N2RWBCY2.cjs +0 -7
  194. package/dist/MemoryManager-J7APSLZ7.js +0 -7
  195. package/dist/MemoryManager-RLLYVIDY.cjs +0 -7
  196. package/dist/PermissionManager-ISI5OAJK.cjs +0 -10
  197. package/dist/SessionManager-7MF76Q3Q.cjs +0 -9
  198. package/dist/SkillsRegistry-UTK2YT4M.cjs +0 -8
  199. package/dist/add-dir-OMK3Y4DM.cjs +0 -8
  200. package/dist/agents-N2ZB4O2A.cjs +0 -9
  201. package/dist/agents-ZMT7HBRT.js +0 -9
  202. package/dist/agents-new-3EWS2NR3.cjs +0 -11
  203. package/dist/agents-new-TCGUYK5I.js +0 -11
  204. package/dist/automode-BRHUHGXU.cjs +0 -8
  205. package/dist/chunk-6SM6N7DJ.js +0 -2828
  206. package/dist/chunk-BEIG7V7Q.cjs +0 -51
  207. package/dist/chunk-L5QWMGLV.cjs +0 -2828
  208. package/dist/chunk-Z3Q2AFDS.js +0 -51
  209. package/dist/completion-NCSTSKTL.cjs +0 -11
  210. package/dist/completion-NTZERPAZ.js +0 -11
  211. package/dist/constants-B2X7KDIH.cjs +0 -20
  212. package/dist/export-5AJNVX4O.cjs +0 -9
  213. package/dist/export-ZQHTLV4W.js +0 -9
  214. package/dist/feedback-F7BMGSV6.cjs +0 -12
  215. package/dist/feedback-NL7CWTRY.js +0 -12
  216. package/dist/help-PKC6QCNG.js +0 -10
  217. package/dist/help-UEELQRHP.cjs +0 -10
  218. package/dist/hooks-AX5VPCZ3.cjs +0 -10
  219. package/dist/hooks-V22HVLQT.js +0 -10
  220. package/dist/init-DML7AOII.js +0 -8
  221. package/dist/init-SLLSDDJN.cjs +0 -8
  222. package/dist/language-IEKARNQH.js +0 -13
  223. package/dist/language-ULQCKXAD.cjs +0 -13
  224. package/dist/localProjectPermissions-7FI3XF4K.cjs +0 -17
  225. package/dist/login-PD3DFJLM.js +0 -15
  226. package/dist/login-VHGT4YKT.cjs +0 -15
  227. package/dist/logout-2QXNFGDT.js +0 -13
  228. package/dist/logout-A4SMKEFO.cjs +0 -13
  229. package/dist/memory-CFNC7RJH.cjs +0 -8
  230. package/dist/model-TKVEJ5BC.cjs +0 -8
  231. package/dist/new-EB2MBQXA.cjs +0 -8
  232. package/dist/permissions-S7433NQJ.js +0 -10
  233. package/dist/permissions-YZ6WCDBL.cjs +0 -10
  234. package/dist/quit-2RYFGIJP.cjs +0 -8
  235. package/dist/quit-RSYIERO5.js +0 -8
  236. package/dist/resume-54ERVSFM.cjs +0 -10
  237. package/dist/resume-YJ5CVKAP.js +0 -10
  238. package/dist/search-4TEQMUPU.js +0 -11
  239. package/dist/search-QGLS4SV7.cjs +0 -11
  240. package/dist/sessions-7RTCPVNE.cjs +0 -8
  241. package/dist/share-2B2T3AUU.cjs +0 -11
  242. package/dist/share-SZMXZIA3.js +0 -11
  243. package/dist/skills-HVQNCTGK.cjs +0 -12
  244. package/dist/skills-new-5FSDAJWE.js +0 -12
  245. package/dist/skills-new-IOTZYE6F.cjs +0 -12
  246. package/dist/status-AGPSKXSW.js +0 -9
  247. package/dist/status-WOINF556.cjs +0 -9
  248. package/dist/sync-64MZDWGG.js +0 -14
  249. package/dist/sync-F5ECJW25.cjs +0 -39
  250. package/dist/sync-W5UR7BEP.cjs +0 -14
  251. package/dist/theme-CWG3ZLHB.cjs +0 -13
  252. package/dist/theme-HQKV7YAP.js +0 -13
  253. package/dist/undo-2WR2ZIEC.cjs +0 -8
  254. package/dist/undo-7QJBXARS.js +0 -8
@@ -1,14 +1,17 @@
1
1
  import {
2
2
  loadConfig,
3
3
  saveConfig
4
- } from "./chunk-K6CZ2AGI.js";
4
+ } from "./chunk-ZBIBLOZL.js";
5
+ import {
6
+ t
7
+ } from "./chunk-UET7BDX2.js";
5
8
 
6
9
  // src/commands/sync.ts
7
10
  import chalk from "chalk";
8
11
  import readline from "readline";
9
12
  var metadata = {
10
13
  command: "/sync",
11
- description: "Manage settings sync (view status, enable/disable, trigger sync)",
14
+ description: t("commands.sync.description"),
12
15
  implemented: true
13
16
  };
14
17
  var globalSyncService = null;
@@ -62,7 +65,6 @@ function renderSyncUI(data, ctx) {
62
65
  return new Promise((resolve) => {
63
66
  const tabs = ["Status", "Settings", "Activity"];
64
67
  let currentTab = 0;
65
- let needsRefresh = false;
66
68
  const input = process.stdin;
67
69
  const isTTY = input.isTTY;
68
70
  const wasRaw = input.isRaw;
@@ -135,7 +137,7 @@ function renderSyncUI(data, ctx) {
135
137
  await saveConfig(config);
136
138
  data.enabled = newEnabled;
137
139
  console.log(chalk.cyan(`
138
- Sync ${newEnabled ? "enabled" : "disabled"}`));
140
+ ${newEnabled ? t("commands.sync.enabled") : t("commands.sync.disabled")}`));
139
141
  await sleep(1e3);
140
142
  render();
141
143
  } catch (err) {
@@ -3,7 +3,7 @@ import {
3
3
  showInput,
4
4
  showModal,
5
5
  showPassword
6
- } from "./chunk-6SM6N7DJ.js";
6
+ } from "./chunk-PNSRJT46.js";
7
7
 
8
8
  // src/utils/prompt.ts
9
9
  async function safePrompt(questions) {
@@ -1,33 +1,35 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkLY5VN3B3cjs = require('./chunk-LY5VN3B3.cjs');
3
+ var _chunkRJP3SZ7Qcjs = require('./chunk-RJP3SZ7Q.cjs');
4
4
 
5
5
 
6
+ var _chunkQRQ5EX7Icjs = require('./chunk-QRQ5EX7I.cjs');
6
7
 
7
8
 
8
9
 
9
10
 
10
11
 
11
- var _chunkL5QWMGLVcjs = require('./chunk-L5QWMGLV.cjs');
12
+
13
+ var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
12
14
 
13
15
  // src/commands/language.ts
14
16
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
15
17
  async function language(ctx) {
16
- const currentLocale = _chunkL5QWMGLVcjs.getCurrentLocale.call(void 0, );
17
- const currentDisplayName = _chunkL5QWMGLVcjs.LANGUAGE_DISPLAY_NAMES[currentLocale];
18
+ const currentLocale = _chunkLOXOD4IScjs.getCurrentLocale.call(void 0, );
19
+ const currentDisplayName = _chunkLOXOD4IScjs.LANGUAGE_DISPLAY_NAMES[currentLocale];
18
20
  console.log(_chalk2.default.cyan(`
19
- \u{1F310} ${_chunkL5QWMGLVcjs.t.call(void 0, "commands.language.title")}
21
+ \u{1F310} ${_chunkLOXOD4IScjs.t.call(void 0, "commands.language.title")}
20
22
  `));
21
- console.log(_chalk2.default.gray(`${_chunkL5QWMGLVcjs.t.call(void 0, "commands.language.currentLanguage", { language: currentDisplayName })}`));
23
+ console.log(_chalk2.default.gray(`${_chunkLOXOD4IScjs.t.call(void 0, "commands.language.currentLanguage", { language: currentDisplayName })}`));
22
24
  console.log();
23
- const options = _chunkL5QWMGLVcjs.SUPPORTED_LOCALES.map((locale) => ({
24
- label: locale === currentLocale ? `${_chunkL5QWMGLVcjs.LANGUAGE_DISPLAY_NAMES[locale]} (${_chunkL5QWMGLVcjs.t.call(void 0, "common.current")})` : _chunkL5QWMGLVcjs.LANGUAGE_DISPLAY_NAMES[locale],
25
+ const options = _chunkLOXOD4IScjs.SUPPORTED_LOCALES.map((locale) => ({
26
+ label: locale === currentLocale ? `${_chunkLOXOD4IScjs.LANGUAGE_DISPLAY_NAMES[locale]} (${_chunkLOXOD4IScjs.t.call(void 0, "common.current")})` : _chunkLOXOD4IScjs.LANGUAGE_DISPLAY_NAMES[locale],
25
27
  value: locale
26
28
  }));
27
- const result = await _chunkL5QWMGLVcjs.showModal.call(void 0, {
28
- title: _chunkL5QWMGLVcjs.t.call(void 0, "commands.language.selectPrompt"),
29
+ const result = await _chunkQRQ5EX7Icjs.showModal.call(void 0, {
30
+ title: _chunkLOXOD4IScjs.t.call(void 0, "commands.language.selectPrompt"),
29
31
  options,
30
- initialIndex: _chunkL5QWMGLVcjs.SUPPORTED_LOCALES.indexOf(currentLocale)
32
+ initialIndex: _chunkLOXOD4IScjs.SUPPORTED_LOCALES.indexOf(currentLocale)
31
33
  });
32
34
  if (!result) {
33
35
  console.log(_chalk2.default.gray("\nLanguage selection cancelled."));
@@ -36,31 +38,31 @@ async function language(ctx) {
36
38
  const selected = result.value;
37
39
  if (selected === currentLocale) {
38
40
  console.log(_chalk2.default.gray(`
39
- ${_chunkL5QWMGLVcjs.t.call(void 0, "commands.language.noChange")}`));
41
+ ${_chunkLOXOD4IScjs.t.call(void 0, "commands.language.noChange")}`));
40
42
  return null;
41
43
  }
42
- await _chunkL5QWMGLVcjs.changeLanguage.call(void 0, selected);
44
+ await _chunkLOXOD4IScjs.changeLanguage.call(void 0, selected);
43
45
  ctx.config.ui = { ...ctx.config.ui, locale: selected };
44
- await _chunkLY5VN3B3cjs.saveConfig.call(void 0, ctx.config);
45
- const newDisplayName = _chunkL5QWMGLVcjs.LANGUAGE_DISPLAY_NAMES[selected];
46
+ await _chunkRJP3SZ7Qcjs.saveConfig.call(void 0, ctx.config);
47
+ const newDisplayName = _chunkLOXOD4IScjs.LANGUAGE_DISPLAY_NAMES[selected];
46
48
  console.log(_chalk2.default.green(`
47
- \u2713 ${_chunkL5QWMGLVcjs.t.call(void 0, "commands.language.changed", { language: newDisplayName })}`));
49
+ \u2713 ${_chunkLOXOD4IScjs.t.call(void 0, "commands.language.changed", { language: newDisplayName })}`));
48
50
  console.log();
49
51
  return null;
50
52
  }
51
53
  async function languageInfo() {
52
- const currentLocale = _chunkL5QWMGLVcjs.getCurrentLocale.call(void 0, );
53
- const currentDisplayName = _chunkL5QWMGLVcjs.LANGUAGE_DISPLAY_NAMES[currentLocale];
54
+ const currentLocale = _chunkLOXOD4IScjs.getCurrentLocale.call(void 0, );
55
+ const currentDisplayName = _chunkLOXOD4IScjs.LANGUAGE_DISPLAY_NAMES[currentLocale];
54
56
  console.log(_chalk2.default.cyan(`
55
- \u{1F310} ${_chunkL5QWMGLVcjs.t.call(void 0, "commands.language.title")}
57
+ \u{1F310} ${_chunkLOXOD4IScjs.t.call(void 0, "commands.language.title")}
56
58
  `));
57
- console.log(_chalk2.default.gray(`${_chunkL5QWMGLVcjs.t.call(void 0, "commands.language.currentLanguage", { language: currentDisplayName })}`));
59
+ console.log(_chalk2.default.gray(`${_chunkLOXOD4IScjs.t.call(void 0, "commands.language.currentLanguage", { language: currentDisplayName })}`));
58
60
  console.log(_chalk2.default.gray(`Locale code: ${_chalk2.default.white(currentLocale)}`));
59
61
  console.log();
60
62
  console.log(_chalk2.default.gray("Supported languages:"));
61
- for (const locale of _chunkL5QWMGLVcjs.SUPPORTED_LOCALES) {
63
+ for (const locale of _chunkLOXOD4IScjs.SUPPORTED_LOCALES) {
62
64
  const marker = locale === currentLocale ? _chalk2.default.green("\u25CF") : _chalk2.default.gray("\u25CB");
63
- console.log(` ${marker} ${_chunkL5QWMGLVcjs.LANGUAGE_DISPLAY_NAMES[locale]}`);
65
+ console.log(` ${marker} ${_chunkLOXOD4IScjs.LANGUAGE_DISPLAY_NAMES[locale]}`);
64
66
  }
65
67
  console.log();
66
68
  return null;
@@ -1,10 +1,14 @@
1
+ import {
2
+ t
3
+ } from "./chunk-UET7BDX2.js";
4
+
1
5
  // src/commands/quit.ts
2
6
  async function quit() {
3
7
  return "/quit";
4
8
  }
5
9
  var metadata = {
6
10
  command: "/quit",
7
- description: "end the current Autohand session",
11
+ description: t("commands.quit.description"),
8
12
  implemented: true
9
13
  };
10
14
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PROJECT_DIR_NAME
3
- } from "./chunk-PGH3MHPP.js";
3
+ } from "./chunk-PWLLLJHU.js";
4
4
 
5
5
  // src/permissions/localProjectPermissions.ts
6
6
  import fs from "fs-extra";
@@ -3,7 +3,7 @@
3
3
  var _chunkJHGIWNHLcjs = require('./chunk-JHGIWNHL.cjs');
4
4
 
5
5
 
6
- var _chunkAQNY2M6Qcjs = require('./chunk-AQNY2M6Q.cjs');
6
+ var _chunkGIZL57FEcjs = require('./chunk-GIZL57FE.cjs');
7
7
 
8
8
  // src/skills/SkillsRegistry.ts
9
9
  var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
@@ -232,7 +232,7 @@ var SkillsRegistry = class {
232
232
  this.workspaceRoot = workspaceRoot;
233
233
  const claudeProjectSkillsDir = _path2.default.join(workspaceRoot, ".claude", "skills");
234
234
  await this.loadFromDirectory(claudeProjectSkillsDir, "claude-project", false);
235
- const autohandProjectSkillsDir = _path2.default.join(workspaceRoot, _chunkAQNY2M6Qcjs.PROJECT_DIR_NAME, "skills");
235
+ const autohandProjectSkillsDir = _path2.default.join(workspaceRoot, _chunkGIZL57FEcjs.PROJECT_DIR_NAME, "skills");
236
236
  await this.loadFromDirectory(autohandProjectSkillsDir, "autohand-project", true);
237
237
  }
238
238
  /**
@@ -291,7 +291,7 @@ var SkillsRegistry = class {
291
291
  async setWorkspaceWithAutoCopy(workspaceRoot) {
292
292
  this.workspaceRoot = workspaceRoot;
293
293
  const claudeProjectSkillsDir = _path2.default.join(workspaceRoot, ".claude", "skills");
294
- const autohandProjectSkillsDir = _path2.default.join(workspaceRoot, _chunkAQNY2M6Qcjs.PROJECT_DIR_NAME, "skills");
294
+ const autohandProjectSkillsDir = _path2.default.join(workspaceRoot, _chunkGIZL57FEcjs.PROJECT_DIR_NAME, "skills");
295
295
  await this.addLocationWithAutoCopy(
296
296
  claudeProjectSkillsDir,
297
297
  "claude-project",
@@ -1,8 +1,12 @@
1
+ import {
2
+ t
3
+ } from "./chunk-UET7BDX2.js";
4
+
1
5
  // src/commands/sessions.ts
2
6
  import chalk from "chalk";
3
7
  var metadata = {
4
8
  command: "/sessions",
5
- description: "list all sessions",
9
+ description: t("commands.sessions.description"),
6
10
  implemented: true
7
11
  };
8
12
  async function sessions(ctx) {
@@ -12,7 +16,7 @@ async function sessions(ctx) {
12
16
  projectFilter ? { project: projectFilter } : void 0
13
17
  );
14
18
  if (allSessions.length === 0) {
15
- console.log(chalk.gray("No sessions found."));
19
+ console.log(chalk.gray(t("commands.sessions.noSessions")));
16
20
  return null;
17
21
  }
18
22
  console.log(chalk.cyan(`
@@ -0,0 +1,209 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+ var _chunkDUDDZRCScjs = require('./chunk-DUDDZRCS.cjs');
4
+
5
+
6
+ var _chunkWH5RW7DVcjs = require('./chunk-WH5RW7DV.cjs');
7
+
8
+
9
+ var _chunkSAGM3TE3cjs = require('./chunk-SAGM3TE3.cjs');
10
+
11
+
12
+ var _chunk46WX5IO2cjs = require('./chunk-46WX5IO2.cjs');
13
+
14
+
15
+ var _chunkU23U52ZNcjs = require('./chunk-U23U52ZN.cjs');
16
+
17
+
18
+
19
+ var _chunkDMPVI3YKcjs = require('./chunk-DMPVI3YK.cjs');
20
+
21
+
22
+
23
+
24
+ var _chunk34OGUMROcjs = require('./chunk-34OGUMRO.cjs');
25
+
26
+
27
+ var _chunk5BQ57AZCcjs = require('./chunk-5BQ57AZC.cjs');
28
+
29
+
30
+ var _chunkS5G7OEN2cjs = require('./chunk-S5G7OEN2.cjs');
31
+
32
+
33
+ var _chunkOKABWSWAcjs = require('./chunk-OKABWSWA.cjs');
34
+
35
+
36
+ var _chunkDMXN5LJBcjs = require('./chunk-DMXN5LJB.cjs');
37
+
38
+
39
+ var _chunkSA4JOV4Fcjs = require('./chunk-SA4JOV4F.cjs');
40
+
41
+
42
+ var _chunkLQ5V5YC7cjs = require('./chunk-LQ5V5YC7.cjs');
43
+
44
+
45
+ var _chunkNGBN2NGHcjs = require('./chunk-NGBN2NGH.cjs');
46
+
47
+
48
+ var _chunkC2E3GJEEcjs = require('./chunk-C2E3GJEE.cjs');
49
+
50
+
51
+ var _chunk5FZM7KLBcjs = require('./chunk-5FZM7KLB.cjs');
52
+
53
+
54
+ var _chunkR7SDL3DJcjs = require('./chunk-R7SDL3DJ.cjs');
55
+
56
+
57
+ var _chunkNRORJRD4cjs = require('./chunk-NRORJRD4.cjs');
58
+
59
+
60
+ var _chunkBDIZGBDAcjs = require('./chunk-BDIZGBDA.cjs');
61
+
62
+
63
+ var _chunkHDSEJMWIcjs = require('./chunk-HDSEJMWI.cjs');
64
+
65
+
66
+ var _chunk3DQSBW4Bcjs = require('./chunk-3DQSBW4B.cjs');
67
+
68
+
69
+ var _chunkZ4J4W6YQcjs = require('./chunk-Z4J4W6YQ.cjs');
70
+
71
+
72
+ var _chunkM7RVTUWEcjs = require('./chunk-M7RVTUWE.cjs');
73
+
74
+
75
+ var _chunk5NZA4UB4cjs = require('./chunk-5NZA4UB4.cjs');
76
+
77
+
78
+ var _chunkPSED4Z4Xcjs = require('./chunk-PSED4Z4X.cjs');
79
+
80
+
81
+ var _chunkPA2H2263cjs = require('./chunk-PA2H2263.cjs');
82
+
83
+
84
+ var _chunkHVOBMOZ2cjs = require('./chunk-HVOBMOZ2.cjs');
85
+
86
+
87
+ var _chunkBZ73ZQTEcjs = require('./chunk-BZ73ZQTE.cjs');
88
+
89
+
90
+ var _chunk65GTO4QMcjs = require('./chunk-65GTO4QM.cjs');
91
+
92
+
93
+ var _chunkMFK6HE47cjs = require('./chunk-MFK6HE47.cjs');
94
+
95
+
96
+ var _chunkQM7HZCQWcjs = require('./chunk-QM7HZCQW.cjs');
97
+
98
+
99
+ var _chunkNBD4PL2Ecjs = require('./chunk-NBD4PL2E.cjs');
100
+
101
+
102
+ var _chunkULQ6MDSJcjs = require('./chunk-ULQ6MDSJ.cjs');
103
+
104
+
105
+ var _chunkAEYOIPHDcjs = require('./chunk-AEYOIPHD.cjs');
106
+
107
+
108
+ var _chunkVXCMGBXYcjs = require('./chunk-VXCMGBXY.cjs');
109
+
110
+
111
+ var _chunkANUQFV43cjs = require('./chunk-ANUQFV43.cjs');
112
+
113
+
114
+ var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
115
+
116
+ // src/commands/help.ts
117
+ var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
118
+ var _terminallink = require('terminal-link'); var _terminallink2 = _interopRequireDefault(_terminallink);
119
+
120
+ // src/core/slashCommands.ts
121
+ var SLASH_COMMANDS = [
122
+ _chunkHVOBMOZ2cjs.metadata,
123
+ _chunkAEYOIPHDcjs.metadata,
124
+ _chunkVXCMGBXYcjs.metadata,
125
+ _chunkANUQFV43cjs.metadata,
126
+ _chunkPA2H2263cjs.metadata,
127
+ metadata37,
128
+ aliasMetadata,
129
+ _chunkBZ73ZQTEcjs.metadata,
130
+ _chunk65GTO4QMcjs.metadata,
131
+ _chunkMFK6HE47cjs.metadata,
132
+ _chunkQM7HZCQWcjs.metadata,
133
+ _chunkNRORJRD4cjs.metadata,
134
+ _chunkNBD4PL2Ecjs.metadata,
135
+ _chunkBDIZGBDAcjs.metadata,
136
+ _chunkHDSEJMWIcjs.metadata,
137
+ _chunk3DQSBW4Bcjs.metadata,
138
+ _chunkZ4J4W6YQcjs.metadata,
139
+ _chunkM7RVTUWEcjs.metadata,
140
+ _chunk5NZA4UB4cjs.metadata,
141
+ _chunkPSED4Z4Xcjs.metadata,
142
+ _chunkLQ5V5YC7cjs.metadata,
143
+ _chunkNGBN2NGHcjs.metadata,
144
+ _chunkC2E3GJEEcjs.metadata,
145
+ _chunk5FZM7KLBcjs.metadata,
146
+ _chunkR7SDL3DJcjs.metadata,
147
+ _chunk34OGUMROcjs.metadata,
148
+ _chunk34OGUMROcjs.useMetadata,
149
+ _chunk34OGUMROcjs.installMetadata,
150
+ _chunk5BQ57AZCcjs.metadata,
151
+ _chunkS5G7OEN2cjs.metadata,
152
+ _chunkOKABWSWAcjs.metadata,
153
+ _chunkDMXN5LJBcjs.metadata,
154
+ _chunkSA4JOV4Fcjs.metadata,
155
+ _chunkDUDDZRCScjs.metadata,
156
+ _chunkWH5RW7DVcjs.metadata,
157
+ _chunkULQ6MDSJcjs.metadata,
158
+ _chunkSAGM3TE3cjs.metadata,
159
+ _chunk46WX5IO2cjs.metadata,
160
+ _chunkU23U52ZNcjs.metadata,
161
+ _chunkDMPVI3YKcjs.metadata,
162
+ _chunkDMPVI3YKcjs.installMetadata
163
+ ].filter((cmd) => cmd != null && typeof cmd.command === "string");
164
+
165
+ // src/commands/help.ts
166
+ async function help() {
167
+ console.log(_chalk2.default.cyan(`
168
+ ${_chunkLOXOD4IScjs.t.call(void 0, "commands.help.title")}
169
+ `));
170
+ const commands = SLASH_COMMANDS.filter((cmd) => cmd.implemented && cmd.command !== "/?").sort((a, b) => a.command.localeCompare(b.command));
171
+ const maxLen = Math.max(...commands.map((c) => c.command.length)) + 2;
172
+ for (const { command, description } of commands) {
173
+ console.log(` ${_chalk2.default.yellow(command.padEnd(maxLen))} ${_chalk2.default.gray(description)}`);
174
+ }
175
+ console.log(_chalk2.default.cyan(`
176
+ ${_chunkLOXOD4IScjs.t.call(void 0, "commands.help.tips.title")}
177
+ `));
178
+ console.log(_chalk2.default.gray(` \u2022 ${_chunkLOXOD4IScjs.t.call(void 0, "commands.help.tips.mention")}`));
179
+ console.log(_chalk2.default.gray(` \u2022 ${_chunkLOXOD4IScjs.t.call(void 0, "commands.help.tips.arrows")}`));
180
+ console.log(_chalk2.default.gray(` \u2022 ${_chunkLOXOD4IScjs.t.call(void 0, "commands.help.tips.tab")}`));
181
+ console.log(_chalk2.default.gray(` \u2022 ${_chunkLOXOD4IScjs.t.call(void 0, "commands.help.tips.escape")}
182
+ `));
183
+ const docLink = _terminallink2.default.call(void 0, "docs.autohand.ai", "https://docs.autohand.ai");
184
+ console.log(_chalk2.default.gray(` ${_chunkLOXOD4IScjs.t.call(void 0, "commands.help.docsLink", { link: docLink })}
185
+ `));
186
+ return null;
187
+ }
188
+ var metadata37 = {
189
+ command: "/help",
190
+ description: "describe available slash commands and tips",
191
+ implemented: true
192
+ };
193
+ var aliasMetadata = {
194
+ command: "/?",
195
+ description: "alias for /help",
196
+ implemented: true
197
+ };
198
+
199
+
200
+
201
+
202
+
203
+
204
+ exports.help = help; exports.metadata = metadata37; exports.aliasMetadata = aliasMetadata; exports.SLASH_COMMANDS = SLASH_COMMANDS;
205
+ /**
206
+ * @license
207
+ * Copyright 2025 Autohand AI LLC
208
+ * SPDX-License-Identifier: Apache-2.0
209
+ */
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkCPO5KEQScjs = require('./chunk-CPO5KEQS.cjs');
5
+ var _chunkKC5FPUOFcjs = require('./chunk-KC5FPUOF.cjs');
6
6
 
7
7
  // src/permissions/PermissionManager.ts
8
8
  var DEFAULT_SECURITY_BLACKLIST = [
@@ -121,7 +121,7 @@ var PermissionManager = class {
121
121
  async initLocalSettings() {
122
122
  if (!this.workspaceRoot || this.localSettingsLoaded) return;
123
123
  try {
124
- const localSettings = await _chunkCPO5KEQScjs.loadLocalProjectSettings.call(void 0, this.workspaceRoot);
124
+ const localSettings = await _chunkKC5FPUOFcjs.loadLocalProjectSettings.call(void 0, this.workspaceRoot);
125
125
  if (_optionalChain([localSettings, 'optionalAccess', _ => _.permissions])) {
126
126
  this.localSettings = localSettings.permissions;
127
127
  }
@@ -133,7 +133,7 @@ var PermissionManager = class {
133
133
  * Get merged settings (global + local)
134
134
  */
135
135
  getMergedSettings() {
136
- return _chunkCPO5KEQScjs.mergePermissions.call(void 0, this.settings, this.localSettings);
136
+ return _chunkKC5FPUOFcjs.mergePermissions.call(void 0, this.settings, this.localSettings);
137
137
  }
138
138
  /**
139
139
  * Set permission mode (can be overridden by CLI flags)
@@ -193,7 +193,7 @@ var PermissionManager = class {
193
193
  const pattern = this.contextToPattern(context);
194
194
  if (allowed && this.workspaceRoot) {
195
195
  try {
196
- await _chunkCPO5KEQScjs.addToLocalWhitelist.call(void 0, this.workspaceRoot, pattern);
196
+ await _chunkKC5FPUOFcjs.addToLocalWhitelist.call(void 0, this.workspaceRoot, pattern);
197
197
  if (!this.localSettings) {
198
198
  this.localSettings = { whitelist: [] };
199
199
  }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  safePrompt
3
- } from "./chunk-NCLCL7JK.js";
3
+ } from "./chunk-WD5ZF6HE.js";
4
4
  import {
5
5
  AUTOHAND_PATHS
6
- } from "./chunk-PGH3MHPP.js";
6
+ } from "./chunk-PWLLLJHU.js";
7
7
 
8
8
  // src/commands/agents-new.ts
9
9
  import path from "path";
@@ -0,0 +1,45 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+ var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
6
+
7
+ // src/ui/i18n/I18nContext.tsx
8
+ var _react = require('react');
9
+ var _jsxruntime = require('react/jsx-runtime');
10
+ var defaultContextValue = {
11
+ t: _chunkLOXOD4IScjs.t,
12
+ locale: "en"
13
+ };
14
+ var I18nContext = _react.createContext.call(void 0, defaultContextValue);
15
+ var I18nProvider = ({ children }) => {
16
+ const [locale, setLocale] = _react.useState.call(void 0, _chunkLOXOD4IScjs.getCurrentLocale.call(void 0, ));
17
+ _react.useEffect.call(void 0, () => {
18
+ const unsubscribe = _chunkLOXOD4IScjs.onLanguageChange.call(void 0, (newLocale) => {
19
+ setLocale(newLocale);
20
+ });
21
+ return unsubscribe;
22
+ }, []);
23
+ const value = _react.useMemo.call(void 0,
24
+ () => ({
25
+ t: _chunkLOXOD4IScjs.t,
26
+ locale
27
+ }),
28
+ [locale]
29
+ );
30
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, I18nContext.Provider, { value, children });
31
+ };
32
+ function useTranslation() {
33
+ const context = _react.useContext.call(void 0, I18nContext);
34
+ return context;
35
+ }
36
+
37
+
38
+
39
+
40
+ exports.I18nProvider = I18nProvider; exports.useTranslation = useTranslation;
41
+ /**
42
+ * @license
43
+ * Copyright 2025 Autohand AI LLC
44
+ * SPDX-License-Identifier: Apache-2.0
45
+ */