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
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Autohand Code CLI
2
2
 
3
3
  [![Bun](https://img.shields.io/badge/Bun-%23c61f33?style=flat&logo=bun&logoColor=white)](https://bun.sh)
4
+ [![Discord](https://img.shields.io/badge/Discord-Join%20Us-%235865F2?style=flat&logo=discord&logoColor=white)](https://discord.com/invite/MWTNudaj8E)
4
5
 
5
6
  **An coding agentic CLI that reads, reasons, and writes code across your entire project. No context switching. No copy-paste, No you're absolute right!.**
6
7
 
@@ -55,6 +56,22 @@ autohand -p "fix the TypeScript errors" -y
55
56
  autohand -p "refactor the auth module" -c
56
57
  ```
57
58
 
59
+ ## Editor Extensions
60
+
61
+ Use Autohand directly in your favorite editor:
62
+
63
+ ### VS Code
64
+
65
+ Install the extension from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=AutohandAI.vscode-autohand) or via command line:
66
+
67
+ ```bash
68
+ code --install-extension AutohandAI.vscode-autohand
69
+ ```
70
+
71
+ ### Zed Editor
72
+
73
+ Install from the [Zed Extensions](https://zed.dev/extensions/autohand-acp) marketplace.
74
+
58
75
  ## Usage Modes
59
76
 
60
77
  ### Interactive Mode
@@ -69,6 +86,8 @@ Features:
69
86
 
70
87
  - Type `/` for slash command suggestions
71
88
  - Type `@` for file autocomplete (e.g., `@src/index.ts`)
89
+ - Type `!` to run terminal commands (e.g., `! git status`, `! ls -la`)
90
+ - **Smart Paste**: Paste any amount of code (5+ lines shows compact indicator, full content sent to LLM)
72
91
  - Press `ESC` to cancel in-flight requests
73
92
  - Press `Ctrl+C` twice to exit
74
93
 
@@ -12,7 +12,8 @@ var STATE_FILE_PATH = ".autohand/automode.local.md";
12
12
  var DEFAULT_THRESHOLDS = {
13
13
  noProgress: 3,
14
14
  sameError: 5,
15
- testOnly: 3
15
+ testOnly: 3,
16
+ sameFile: 3
16
17
  };
17
18
  var AutomodeState = class {
18
19
  constructor(workspaceRoot) {
@@ -21,7 +22,8 @@ var AutomodeState = class {
21
22
  this.circuitBreaker = {
22
23
  noProgressCount: 0,
23
24
  sameErrorCount: 0,
24
- testOnlyCount: 0
25
+ testOnlyCount: 0,
26
+ sameFileRepeatCount: 0
25
27
  };
26
28
  this.workspaceRoot = workspaceRoot;
27
29
  }
@@ -65,7 +67,8 @@ var AutomodeState = class {
65
67
  this.circuitBreaker = {
66
68
  noProgressCount: 0,
67
69
  sameErrorCount: 0,
68
- testOnlyCount: 0
70
+ testOnlyCount: 0,
71
+ sameFileRepeatCount: 0
69
72
  };
70
73
  await this.save();
71
74
  return this.state;
@@ -170,7 +173,7 @@ var AutomodeState = class {
170
173
  * Check and update circuit breaker state
171
174
  * Returns true if circuit breaker should trigger
172
175
  */
173
- checkCircuitBreaker(hasFileChanges, errorHash, isTestOnly, thresholds = DEFAULT_THRESHOLDS) {
176
+ checkCircuitBreaker(hasFileChanges, errorHash, isTestOnly, thresholds = DEFAULT_THRESHOLDS, modifiedFiles) {
174
177
  if (!hasFileChanges) {
175
178
  this.circuitBreaker.noProgressCount += 1;
176
179
  if (this.circuitBreaker.noProgressCount >= thresholds.noProgress) {
@@ -210,6 +213,27 @@ var AutomodeState = class {
210
213
  } else {
211
214
  this.circuitBreaker.testOnlyCount = 0;
212
215
  }
216
+ if (modifiedFiles && modifiedFiles.length > 0) {
217
+ const filesKey = [...modifiedFiles].sort().join("\n");
218
+ if (this.circuitBreaker.lastModifiedFiles === filesKey) {
219
+ this.circuitBreaker.sameFileRepeatCount += 1;
220
+ const sameFileThreshold = thresholds.sameFile ?? DEFAULT_THRESHOLDS.sameFile;
221
+ if (this.circuitBreaker.sameFileRepeatCount >= sameFileThreshold) {
222
+ const fileList = modifiedFiles.length === 1 ? modifiedFiles[0] : `${modifiedFiles.length} files`;
223
+ return {
224
+ triggered: true,
225
+ reason: `Same file(s) modified for ${this.circuitBreaker.sameFileRepeatCount} consecutive iterations (${fileList})`
226
+ };
227
+ }
228
+ } else {
229
+ this.circuitBreaker.sameFileRepeatCount = 1;
230
+ this.circuitBreaker.lastModifiedFiles = filesKey;
231
+ }
232
+ } else if (!hasFileChanges) {
233
+ } else {
234
+ this.circuitBreaker.sameFileRepeatCount = 0;
235
+ this.circuitBreaker.lastModifiedFiles = void 0;
236
+ }
213
237
  return { triggered: false };
214
238
  }
215
239
  /**
@@ -801,7 +825,8 @@ var DEFAULTS = {
801
825
  useWorktree: true,
802
826
  noProgressThreshold: 3,
803
827
  sameErrorThreshold: 5,
804
- testOnlyThreshold: 3
828
+ testOnlyThreshold: 3,
829
+ sameFileThreshold: 3
805
830
  };
806
831
  var AutomodeManager = class extends EventEmitter {
807
832
  constructor(config, workspaceRoot, hookManager, session, memoryManager) {
@@ -1027,8 +1052,10 @@ var AutomodeManager = class extends EventEmitter {
1027
1052
  {
1028
1053
  noProgress: this.settings.noProgressThreshold,
1029
1054
  sameError: this.settings.sameErrorThreshold,
1030
- testOnly: this.settings.testOnlyThreshold
1031
- }
1055
+ testOnly: this.settings.testOnlyThreshold,
1056
+ sameFile: this.settings.sameFileThreshold
1057
+ },
1058
+ result.modifiedFiles
1032
1059
  );
1033
1060
  if (circuitResult.triggered) {
1034
1061
  console.log(chalk.yellow(`
@@ -1232,7 +1259,7 @@ var AutomodeManager = class extends EventEmitter {
1232
1259
  /**
1233
1260
  * Set up git worktree for isolation
1234
1261
  */
1235
- async setupWorktree(sessionId) {
1262
+ async setupWorktree(_sessionId) {
1236
1263
  try {
1237
1264
  this.originalBranch = execSync("git rev-parse --abbrev-ref HEAD", {
1238
1265
  cwd: this.workspaceRoot,
@@ -12,7 +12,8 @@ var STATE_FILE_PATH = ".autohand/automode.local.md";
12
12
  var DEFAULT_THRESHOLDS = {
13
13
  noProgress: 3,
14
14
  sameError: 5,
15
- testOnly: 3
15
+ testOnly: 3,
16
+ sameFile: 3
16
17
  };
17
18
  var AutomodeState = class {
18
19
  constructor(workspaceRoot) {
@@ -21,7 +22,8 @@ var AutomodeState = class {
21
22
  this.circuitBreaker = {
22
23
  noProgressCount: 0,
23
24
  sameErrorCount: 0,
24
- testOnlyCount: 0
25
+ testOnlyCount: 0,
26
+ sameFileRepeatCount: 0
25
27
  };
26
28
  this.workspaceRoot = workspaceRoot;
27
29
  }
@@ -65,7 +67,8 @@ var AutomodeState = class {
65
67
  this.circuitBreaker = {
66
68
  noProgressCount: 0,
67
69
  sameErrorCount: 0,
68
- testOnlyCount: 0
70
+ testOnlyCount: 0,
71
+ sameFileRepeatCount: 0
69
72
  };
70
73
  await this.save();
71
74
  return this.state;
@@ -170,7 +173,7 @@ var AutomodeState = class {
170
173
  * Check and update circuit breaker state
171
174
  * Returns true if circuit breaker should trigger
172
175
  */
173
- checkCircuitBreaker(hasFileChanges, errorHash, isTestOnly, thresholds = DEFAULT_THRESHOLDS) {
176
+ checkCircuitBreaker(hasFileChanges, errorHash, isTestOnly, thresholds = DEFAULT_THRESHOLDS, modifiedFiles) {
174
177
  if (!hasFileChanges) {
175
178
  this.circuitBreaker.noProgressCount += 1;
176
179
  if (this.circuitBreaker.noProgressCount >= thresholds.noProgress) {
@@ -210,6 +213,27 @@ var AutomodeState = class {
210
213
  } else {
211
214
  this.circuitBreaker.testOnlyCount = 0;
212
215
  }
216
+ if (modifiedFiles && modifiedFiles.length > 0) {
217
+ const filesKey = [...modifiedFiles].sort().join("\n");
218
+ if (this.circuitBreaker.lastModifiedFiles === filesKey) {
219
+ this.circuitBreaker.sameFileRepeatCount += 1;
220
+ const sameFileThreshold = _nullishCoalesce(thresholds.sameFile, () => ( DEFAULT_THRESHOLDS.sameFile));
221
+ if (this.circuitBreaker.sameFileRepeatCount >= sameFileThreshold) {
222
+ const fileList = modifiedFiles.length === 1 ? modifiedFiles[0] : `${modifiedFiles.length} files`;
223
+ return {
224
+ triggered: true,
225
+ reason: `Same file(s) modified for ${this.circuitBreaker.sameFileRepeatCount} consecutive iterations (${fileList})`
226
+ };
227
+ }
228
+ } else {
229
+ this.circuitBreaker.sameFileRepeatCount = 1;
230
+ this.circuitBreaker.lastModifiedFiles = filesKey;
231
+ }
232
+ } else if (!hasFileChanges) {
233
+ } else {
234
+ this.circuitBreaker.sameFileRepeatCount = 0;
235
+ this.circuitBreaker.lastModifiedFiles = void 0;
236
+ }
213
237
  return { triggered: false };
214
238
  }
215
239
  /**
@@ -801,7 +825,8 @@ var DEFAULTS = {
801
825
  useWorktree: true,
802
826
  noProgressThreshold: 3,
803
827
  sameErrorThreshold: 5,
804
- testOnlyThreshold: 3
828
+ testOnlyThreshold: 3,
829
+ sameFileThreshold: 3
805
830
  };
806
831
  var AutomodeManager = class extends _events.EventEmitter {
807
832
  constructor(config, workspaceRoot, hookManager, session, memoryManager) {
@@ -1027,8 +1052,10 @@ var AutomodeManager = class extends _events.EventEmitter {
1027
1052
  {
1028
1053
  noProgress: this.settings.noProgressThreshold,
1029
1054
  sameError: this.settings.sameErrorThreshold,
1030
- testOnly: this.settings.testOnlyThreshold
1031
- }
1055
+ testOnly: this.settings.testOnlyThreshold,
1056
+ sameFile: this.settings.sameFileThreshold
1057
+ },
1058
+ result.modifiedFiles
1032
1059
  );
1033
1060
  if (circuitResult.triggered) {
1034
1061
  console.log(_chalk2.default.yellow(`
@@ -1232,7 +1259,7 @@ var AutomodeManager = class extends _events.EventEmitter {
1232
1259
  /**
1233
1260
  * Set up git worktree for isolation
1234
1261
  */
1235
- async setupWorktree(sessionId) {
1262
+ async setupWorktree(_sessionId) {
1236
1263
  try {
1237
1264
  this.originalBranch = _child_process.execSync.call(void 0, "git rev-parse --abbrev-ref HEAD", {
1238
1265
  cwd: this.workspaceRoot,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CommunitySkillsCache
3
- } from "./chunk-3YEDXG6S.js";
4
- import "./chunk-EKY5PKQI.js";
3
+ } from "./chunk-BG4OQUKP.js";
4
+ import "./chunk-PWLLLJHU.js";
5
5
  export {
6
6
  CommunitySkillsCache
7
7
  };
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkN4ZSG6JJcjs = require('./chunk-N4ZSG6JJ.cjs');
4
+ require('./chunk-GIZL57FE.cjs');
5
+
6
+
7
+ exports.CommunitySkillsCache = _chunkN4ZSG6JJcjs.CommunitySkillsCache;
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkEV53SLSBcjs = require('./chunk-EV53SLSB.cjs');
4
+ require('./chunk-GIZL57FE.cjs');
5
+
6
+
7
+ exports.MemoryManager = _chunkEV53SLSBcjs.MemoryManager;
@@ -0,0 +1,7 @@
1
+ import {
2
+ MemoryManager
3
+ } from "./chunk-OLG7LZBD.js";
4
+ import "./chunk-PWLLLJHU.js";
5
+ export {
6
+ MemoryManager
7
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkXL77XYI2cjs = require('./chunk-XL77XYI2.cjs');
5
+ require('./chunk-KC5FPUOF.cjs');
6
+ require('./chunk-GIZL57FE.cjs');
7
+
8
+
9
+
10
+ exports.DEFAULT_SECURITY_BLACKLIST = _chunkXL77XYI2cjs.DEFAULT_SECURITY_BLACKLIST; exports.PermissionManager = _chunkXL77XYI2cjs.PermissionManager;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  DEFAULT_SECURITY_BLACKLIST,
3
3
  PermissionManager
4
- } from "./chunk-G77ZY4QG.js";
5
- import "./chunk-P2Z6GDEN.js";
6
- import "./chunk-EKY5PKQI.js";
4
+ } from "./chunk-GD4AFYJ3.js";
5
+ import "./chunk-WLTVF77A.js";
6
+ import "./chunk-PWLLLJHU.js";
7
7
  export {
8
8
  DEFAULT_SECURITY_BLACKLIST,
9
9
  PermissionManager
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkL42HTMMRcjs = require('./chunk-L42HTMMR.cjs');
5
+ require('./chunk-GIZL57FE.cjs');
6
+
7
+
8
+
9
+ exports.Session = _chunkL42HTMMRcjs.Session; exports.SessionManager = _chunkL42HTMMRcjs.SessionManager;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Session,
3
3
  SessionManager
4
- } from "./chunk-AVL4DKQO.js";
5
- import "./chunk-EKY5PKQI.js";
4
+ } from "./chunk-MYNHJHDZ.js";
5
+ import "./chunk-PWLLLJHU.js";
6
6
  export {
7
7
  Session,
8
8
  SessionManager
@@ -0,0 +1,8 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkWOGJXDBUcjs = require('./chunk-WOGJXDBU.cjs');
4
+ require('./chunk-JHGIWNHL.cjs');
5
+ require('./chunk-GIZL57FE.cjs');
6
+
7
+
8
+ exports.SkillsRegistry = _chunkWOGJXDBUcjs.SkillsRegistry;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  SkillsRegistry
3
- } from "./chunk-OBV3UUIL.js";
3
+ } from "./chunk-DEAEO7RI.js";
4
4
  import "./chunk-QHPFA6OE.js";
5
- import "./chunk-EKY5PKQI.js";
5
+ import "./chunk-PWLLLJHU.js";
6
6
  export {
7
7
  SkillsRegistry
8
8
  };
@@ -2,7 +2,7 @@ import {
2
2
  SyncApiClient,
3
3
  getSyncApiClient,
4
4
  resetSyncApiClient
5
- } from "./chunk-MDWULS57.js";
5
+ } from "./chunk-6UJMCWRY.js";
6
6
  export {
7
7
  SyncApiClient,
8
8
  getSyncApiClient,
@@ -0,0 +1,10 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+ var _chunkFPHU2ES6cjs = require('./chunk-FPHU2ES6.cjs');
6
+
7
+
8
+
9
+
10
+ exports.SyncApiClient = _chunkFPHU2ES6cjs.SyncApiClient; exports.getSyncApiClient = _chunkFPHU2ES6cjs.getSyncApiClient; exports.resetSyncApiClient = _chunkFPHU2ES6cjs.resetSyncApiClient;
@@ -0,0 +1,11 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkSAG6IY5Zcjs = require('./chunk-SAG6IY5Z.cjs');
5
+ require('./chunk-EAOEAQGF.cjs');
6
+ require('./chunk-PGRH5Q77.cjs');
7
+ require('./chunk-LOXOD4IS.cjs');
8
+
9
+
10
+
11
+ exports.about = _chunkSAG6IY5Zcjs.about; exports.metadata = _chunkSAG6IY5Zcjs.metadata;
@@ -0,0 +1,11 @@
1
+ import {
2
+ about,
3
+ metadata
4
+ } from "./chunk-HLFZPN65.js";
5
+ import "./chunk-CUBYCLNL.js";
6
+ import "./chunk-JS7IPR7P.js";
7
+ import "./chunk-UET7BDX2.js";
8
+ export {
9
+ about,
10
+ metadata
11
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkDUDDZRCScjs = require('./chunk-DUDDZRCS.cjs');
5
+ require('./chunk-LOXOD4IS.cjs');
6
+
7
+
8
+
9
+ exports.addDir = _chunkDUDDZRCScjs.addDir; exports.metadata = _chunkDUDDZRCScjs.metadata;
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  addDir,
3
3
  metadata
4
- } from "./chunk-DOTAX65F.js";
4
+ } from "./chunk-PYLR4J2D.js";
5
+ import "./chunk-UET7BDX2.js";
5
6
  export {
6
7
  addDir,
7
8
  metadata
@@ -0,0 +1,10 @@
1
+ import {
2
+ handler,
3
+ metadata
4
+ } from "./chunk-C5SVIQG3.js";
5
+ import "./chunk-PWLLLJHU.js";
6
+ import "./chunk-UET7BDX2.js";
7
+ export {
8
+ handler,
9
+ metadata
10
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkQM7HZCQWcjs = require('./chunk-QM7HZCQW.cjs');
5
+ require('./chunk-GIZL57FE.cjs');
6
+ require('./chunk-LOXOD4IS.cjs');
7
+
8
+
9
+
10
+ exports.handler = _chunkQM7HZCQWcjs.handler; exports.metadata = _chunkQM7HZCQWcjs.metadata;
@@ -0,0 +1,13 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkNRORJRD4cjs = require('./chunk-NRORJRD4.cjs');
5
+ require('./chunk-MNCWB5F7.cjs');
6
+ require('./chunk-QRQ5EX7I.cjs');
7
+ require('./chunk-Y27LG4BQ.cjs');
8
+ require('./chunk-GIZL57FE.cjs');
9
+ require('./chunk-LOXOD4IS.cjs');
10
+
11
+
12
+
13
+ exports.createAgent = _chunkNRORJRD4cjs.createAgent; exports.metadata = _chunkNRORJRD4cjs.metadata;
@@ -0,0 +1,13 @@
1
+ import {
2
+ createAgent,
3
+ metadata
4
+ } from "./chunk-XLI7SHCH.js";
5
+ import "./chunk-WD5ZF6HE.js";
6
+ import "./chunk-PNSRJT46.js";
7
+ import "./chunk-NF7RIHJK.js";
8
+ import "./chunk-PWLLLJHU.js";
9
+ import "./chunk-UET7BDX2.js";
10
+ export {
11
+ createAgent,
12
+ metadata
13
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkOKABWSWAcjs = require('./chunk-OKABWSWA.cjs');
5
+ require('./chunk-LOXOD4IS.cjs');
6
+
7
+
8
+
9
+ exports.automode = _chunkOKABWSWAcjs.automode; exports.metadata = _chunkOKABWSWAcjs.metadata;
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  automode,
3
3
  metadata
4
- } from "./chunk-CXZEPTRI.js";
4
+ } from "./chunk-6P3K4YUW.js";
5
+ import "./chunk-UET7BDX2.js";
5
6
  export {
6
7
  automode,
7
8
  metadata
@@ -0,0 +1,8 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkVXCMGBXYcjs = require('./chunk-VXCMGBXY.cjs');
5
+
6
+
7
+
8
+ exports.cc = _chunkVXCMGBXYcjs.cc; exports.metadata = _chunkVXCMGBXYcjs.metadata;
@@ -0,0 +1,8 @@
1
+ import {
2
+ cc,
3
+ metadata
4
+ } from "./chunk-TSV4LVHK.js";
5
+ export {
6
+ cc,
7
+ metadata
8
+ };
@@ -1,4 +1,8 @@
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 _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/skills.ts
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 _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/skills.ts
2
6
  async function skills(ctx, args = []) {
3
7
  const { skillsRegistry } = ctx;
4
8
  if (!skillsRegistry) {
@@ -69,10 +73,10 @@ function listSkills(registry) {
69
73
  const activeSkills = registry.getActiveSkills();
70
74
  const lines = [];
71
75
  lines.push("");
72
- lines.push("\u{1F4DA} **Available Skills**");
76
+ lines.push(`\u{1F4DA} **${_chunkLOXOD4IScjs.t.call(void 0, "commands.skills.title")}**`);
73
77
  lines.push("");
74
78
  if (allSkills.length === 0) {
75
- lines.push("No skills found yet.");
79
+ lines.push(_chunkLOXOD4IScjs.t.call(void 0, "commands.skills.noSkills"));
76
80
  lines.push("");
77
81
  lines.push("**Get started:**");
78
82
  lines.push("");
@@ -226,7 +230,7 @@ async function handleSkillsInstall(ctx, skillName) {
226
230
  if (!workspaceRoot) {
227
231
  return "Workspace root not available.";
228
232
  }
229
- const { skillsInstall } = await Promise.resolve().then(() => _interopRequireWildcard(require("./skills-install-FTGOHOZ4.cjs")));
233
+ const { skillsInstall } = await Promise.resolve().then(() => _interopRequireWildcard(require("./skills-install-LU6GA2WF.cjs")));
230
234
  const result = await skillsInstall(
231
235
  {
232
236
  skillsRegistry,
@@ -238,7 +242,7 @@ async function handleSkillsInstall(ctx, skillName) {
238
242
  }
239
243
  var metadata = {
240
244
  command: "/skills",
241
- description: "list and manage available skills",
245
+ description: _chunkLOXOD4IScjs.t.call(void 0, "commands.skills.description"),
242
246
  implemented: true
243
247
  };
244
248
  var useMetadata = {