autohand-cli 0.8.3 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/README.md +191 -74
  2. package/dist/{AgentRegistry-ODDXPAFR.js → AgentRegistry-GOV7FN2O.js} +2 -2
  3. package/dist/AgentRegistry-J2C6JBZ3.cjs +10 -0
  4. package/dist/{AutomodeManager-EOVHGRPP.js → AutomodeManager-APLLPEYJ.js} +31 -17
  5. package/dist/{AutomodeManager-6ATBE7Q5.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
  6. package/dist/CommunitySkillsCache-22BB3J6H.cjs +8 -0
  7. package/dist/{CommunitySkillsCache-QLE57BN5.js → CommunitySkillsCache-ZACDPD4J.js} +2 -2
  8. package/dist/GitHubRegistryFetcher-CYJLF2XL.cjs +7 -0
  9. package/dist/{GitHubRegistryFetcher-NT5GFZXS.js → GitHubRegistryFetcher-J2BWPXJF.js} +1 -1
  10. package/dist/{HookManager-B2F35M27.js → HookManager-2S6AHOC3.js} +1 -1
  11. package/dist/{HookManager-PFAFE3FK.cjs → HookManager-TVEQI5ZU.cjs} +2 -2
  12. package/dist/{ImportWizard-OHRKBANZ.js → ImportWizard-AEBMAKXE.js} +33 -9
  13. package/dist/{ImportWizard-CJRZPPHL.cjs → ImportWizard-AF2XL6DS.cjs} +37 -13
  14. package/dist/LearnAdvisor-KKEQ5QCV.js +9 -0
  15. package/dist/LearnAdvisor-Q7RAYLPF.cjs +9 -0
  16. package/dist/{McpClientManager-NQ3EW2IF.cjs → McpClientManager-BNSKLHIN.cjs} +2 -2
  17. package/dist/{McpClientManager-VBIMGKXU.js → McpClientManager-SL35BR24.js} +1 -1
  18. package/dist/MemoryManager-PMNAEZMB.cjs +8 -0
  19. package/dist/{MemoryManager-2LAT7IHS.js → MemoryManager-QZRLTUB5.js} +2 -2
  20. package/dist/NVIDIAProvider-C3FWQOBZ.cjs +14 -0
  21. package/dist/NVIDIAProvider-SJPY3ONR.js +14 -0
  22. package/dist/{PermissionManager-7NQHRCHY.js → PermissionManager-MT7KBNNR.js} +3 -3
  23. package/dist/PermissionManager-URCNP5EC.cjs +11 -0
  24. package/dist/{ProjectProfiler-UG42W6WD.cjs → ProjectProfiler-CDAE7ECW.cjs} +1 -0
  25. package/dist/{ProjectProfiler-P4QJQWWA.js → ProjectProfiler-NZTJDRHD.js} +1 -0
  26. package/dist/ProviderFactory-56N3ECE4.cjs +12 -0
  27. package/dist/{ProviderFactory-2IYJ5OPW.js → ProviderFactory-RB4RVAF6.js} +4 -1
  28. package/dist/SessionManager-2IZGWASQ.cjs +10 -0
  29. package/dist/{SessionManager-4U4JFQ3C.js → SessionManager-554PHVPC.js} +2 -2
  30. package/dist/SkillsRegistry-GMRVONOQ.cjs +9 -0
  31. package/dist/{SkillsRegistry-RFEINXRT.js → SkillsRegistry-NHHMIUYJ.js} +2 -2
  32. package/dist/SubAgent-4GOR2FIJ.js +13 -0
  33. package/dist/SubAgent-ZJMDH4FI.cjs +13 -0
  34. package/dist/{SyncApiClient-B5RT2ECG.js → SyncApiClient-G3FM65IV.js} +1 -1
  35. package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
  36. package/dist/about-3USFSGOH.js +15 -0
  37. package/dist/about-QR52U5DD.cjs +15 -0
  38. package/dist/acp-5Y2W6OZP.js +1556 -0
  39. package/dist/acp-GSYE75OB.cjs +1556 -0
  40. package/dist/actionExecutor-KHUU3Z3Q.cjs +28 -0
  41. package/dist/actionExecutor-PLQJZLZV.js +28 -0
  42. package/dist/add-dir-BTAD5OZS.cjs +11 -0
  43. package/dist/{add-dir-TUJM3PG5.js → add-dir-HCERJDBR.js} +3 -2
  44. package/dist/agent-B3EVT7NN.cjs +126 -0
  45. package/dist/agent-SATQ3WZ3.js +126 -0
  46. package/dist/agents/builtin/code-cleaner.md +1 -1
  47. package/dist/agents/builtin/docs-writer.md +1 -1
  48. package/dist/agents/builtin/researcher.md +2 -2
  49. package/dist/agents/builtin/reviewer.md +1 -1
  50. package/dist/agents/builtin/tester.md +1 -1
  51. package/dist/agents/builtin/todo-resolver.md +1 -1
  52. package/dist/agents-44CRJGM7.cjs +18 -0
  53. package/dist/agents-NN4ZAJ7R.js +18 -0
  54. package/dist/agents-new-6D6G4QS6.cjs +17 -0
  55. package/dist/agents-new-7GAQ25EK.js +17 -0
  56. package/dist/{autoSkill-LQEVQFIH.js → autoSkill-66PKCYTW.js} +2 -2
  57. package/dist/autoSkill-VQLGBELN.cjs +20 -0
  58. package/dist/automode-45DWV4TN.cjs +10 -0
  59. package/dist/{automode-R6P3VHLS.js → automode-BUF3VGXU.js} +2 -2
  60. package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
  61. package/dist/browserToolBridge-F5N66PE7.js +58 -0
  62. package/dist/chrome-Q2U73HZB.cjs +50 -0
  63. package/dist/chrome-Q54OALOK.cjs +21 -0
  64. package/dist/chrome-Y3T7EIHG.js +50 -0
  65. package/dist/chrome-ZNJ46OYW.js +21 -0
  66. package/dist/chromeSkill-53TH55PM.js +105 -0
  67. package/dist/chromeSkill-THW7N4IY.cjs +105 -0
  68. package/dist/{chunk-HXGBSJL5.cjs → chunk-22SCR3EV.cjs} +2 -2
  69. package/dist/chunk-26G7YGOW.js +367 -0
  70. package/dist/{chunk-3L53OA4E.cjs → chunk-2ESQR35E.cjs} +10 -10
  71. package/dist/chunk-2H5O745H.js +63 -0
  72. package/dist/{chunk-ULDM2SNB.js → chunk-2IW5YFJ4.js} +48 -47
  73. package/dist/{chunk-U55TWFJI.cjs → chunk-2VHB43IX.cjs} +24 -6
  74. package/dist/chunk-3EDDDZS2.cjs +5 -0
  75. package/dist/{chunk-X5VSP65C.cjs → chunk-3ICORF7M.cjs} +4 -4
  76. package/dist/chunk-3OF56EMA.cjs +197 -0
  77. package/dist/chunk-3UC6DMFI.cjs +93 -0
  78. package/dist/{chunk-64H4FRM3.cjs → chunk-3UHRCHKB.cjs} +32 -34
  79. package/dist/{chunk-JCLYQ2JC.js → chunk-3ZOOH44N.js} +12 -6
  80. package/dist/{chunk-TUD3Z3BD.js → chunk-44ZWOBTI.js} +136 -55
  81. package/dist/chunk-4567QNRB.js +444 -0
  82. package/dist/chunk-45CHNQM6.cjs +517 -0
  83. package/dist/chunk-46MTALKD.js +44 -0
  84. package/dist/{chunk-WHE2SWHU.js → chunk-4E7SHPNQ.js} +2 -2
  85. package/dist/chunk-4LMUDS2K.js +124 -0
  86. package/dist/{chunk-W7RYQJLO.cjs → chunk-4XFHP2SN.cjs} +46 -15
  87. package/dist/chunk-4XVLNOFA.js +360 -0
  88. package/dist/{chunk-GBHDROGL.js → chunk-575PXZX7.js} +16 -4
  89. package/dist/chunk-5A7ZL64N.js +139 -0
  90. package/dist/chunk-5GCQ5UMV.cjs +85 -0
  91. package/dist/chunk-5JTTM5SC.js +59 -0
  92. package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
  93. package/dist/{chunk-KLWJIPU2.cjs → chunk-5SFV2NCY.cjs} +20 -16
  94. package/dist/chunk-5ZNYX4VH.cjs +71 -0
  95. package/dist/{chunk-A4IJHHV7.cjs → chunk-63ANVAOJ.cjs} +52 -11
  96. package/dist/{chunk-MYISNQH4.js → chunk-65LRPW5W.js} +1 -1
  97. package/dist/chunk-6AYJCDTA.js +360 -0
  98. package/dist/{chunk-X2MSVKDV.js → chunk-6HF6XSCC.js} +2 -2
  99. package/dist/{chunk-AEJH23FO.cjs → chunk-6JWCGQJU.cjs} +6 -6
  100. package/dist/chunk-6OECOAK5.cjs +360 -0
  101. package/dist/chunk-6R25D2H5.js +121 -0
  102. package/dist/chunk-7DJJGKM6.js +77 -0
  103. package/dist/{chunk-VG34MG2U.js → chunk-7IRQ7JEH.js} +9 -6
  104. package/dist/chunk-7MY4JHER.js +27 -0
  105. package/dist/chunk-7PJKTSRN.js +152 -0
  106. package/dist/{chunk-SKYG33B2.cjs → chunk-7PT646AL.cjs} +3 -3
  107. package/dist/chunk-7WAUCLLQ.js +229 -0
  108. package/dist/{chunk-U46VYPLR.cjs → chunk-7XTUL7ZD.cjs} +9 -9
  109. package/dist/chunk-AE2ILW25.cjs +152 -0
  110. package/dist/{chunk-T2M64VHA.cjs → chunk-AOKXYGBQ.cjs} +61 -41
  111. package/dist/chunk-AQ5PVHOC.cjs +113 -0
  112. package/dist/{chunk-N2BLVUPM.cjs → chunk-AZ47LKD5.cjs} +3 -3
  113. package/dist/chunk-B4HSNOIH.cjs +354 -0
  114. package/dist/chunk-B76FJKEJ.cjs +184 -0
  115. package/dist/chunk-BP37FVBM.js +85 -0
  116. package/dist/chunk-BQU3HAE7.js +21 -0
  117. package/dist/chunk-BYE7RQFZ.cjs +121 -0
  118. package/dist/chunk-C46B72VK.js +1034 -0
  119. package/dist/{chunk-HIVRCQS2.js → chunk-C5QIQQ37.js} +56 -25
  120. package/dist/chunk-CCIDL4SA.js +19931 -0
  121. package/dist/{chunk-XVUHNWMX.js → chunk-CECH6QQP.js} +17 -19
  122. package/dist/chunk-CFAWTLSC.js +13 -0
  123. package/dist/{chunk-ZYQMLKOK.cjs → chunk-CK4HAHVY.cjs} +212 -70
  124. package/dist/chunk-CO2AADYU.cjs +360 -0
  125. package/dist/chunk-CRTCZ4WL.cjs +19931 -0
  126. package/dist/chunk-CSTUTDTH.js +75 -0
  127. package/dist/{chunk-K2C56QGS.cjs → chunk-D546G7DA.cjs} +1650 -479
  128. package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
  129. package/dist/{chunk-G4CAKI3V.js → chunk-DGBPWODD.js} +7 -2
  130. package/dist/chunk-DHUQZ53B.cjs +29 -0
  131. package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
  132. package/dist/{chunk-5K6NGAVM.js → chunk-DNSD7DVJ.js} +67 -52
  133. package/dist/{chunk-RDF37HKB.cjs → chunk-DSSCERHI.cjs} +3 -2
  134. package/dist/{chunk-NAJ4IZKD.cjs → chunk-EA2MS25U.cjs} +8 -6
  135. package/dist/{chunk-SJAVBCOA.js → chunk-EEHWALXA.js} +94 -3
  136. package/dist/chunk-ES2HJQ4N.js +37 -0
  137. package/dist/{chunk-G27PQQFD.js → chunk-EYHKL4QC.js} +1 -1
  138. package/dist/{chunk-SV2WA57F.js → chunk-FBQJZKFX.js} +38 -15
  139. package/dist/chunk-FFBDRUO5.cjs +59 -0
  140. package/dist/{chunk-N7LI55V4.js → chunk-FFHSCM5M.js} +15 -8
  141. package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
  142. package/dist/chunk-FQVG6ZHF.js +197 -0
  143. package/dist/{chunk-J2GSFVUV.cjs → chunk-GAOPJ5S3.cjs} +74 -59
  144. package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
  145. package/dist/chunk-GSDV75A5.js +715 -0
  146. package/dist/chunk-GWY26SUD.cjs +63 -0
  147. package/dist/{chunk-TUAITHWL.js → chunk-H426KOGY.js} +2 -1
  148. package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
  149. package/dist/chunk-HC2Q6A3E.cjs +4967 -0
  150. package/dist/{chunk-3WVJEL7K.cjs → chunk-HDK2EHVH.cjs} +3 -1
  151. package/dist/{chunk-5IXII4HX.cjs → chunk-HG3ZASBH.cjs} +23 -16
  152. package/dist/chunk-HK5A54AV.cjs +280 -0
  153. package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
  154. package/dist/chunk-HSWWM6AM.js +2340 -0
  155. package/dist/chunk-HTU4W3GB.js +183 -0
  156. package/dist/{chunk-HLHTG5ZU.cjs → chunk-HVCIB4SW.cjs} +14 -12
  157. package/dist/chunk-HXHE2KAO.js +385 -0
  158. package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
  159. package/dist/{chunk-SLQAYV3W.js → chunk-HZWU6IO3.js} +11 -2
  160. package/dist/chunk-I2ZK3AOD.js +866 -0
  161. package/dist/chunk-IEPLQ47J.js +719 -0
  162. package/dist/chunk-J5HE6CUM.cjs +124 -0
  163. package/dist/{chunk-LIEXWM2M.js → chunk-JAQO6XDB.js} +19 -1
  164. package/dist/chunk-JB3JCYBJ.js +113 -0
  165. package/dist/chunk-JCUHCH37.cjs +247 -0
  166. package/dist/{chunk-FPHU2ES6.cjs → chunk-JM3ZTQUK.cjs} +19 -9
  167. package/dist/{chunk-NDMIPTV4.js → chunk-JMJRFSNJ.js} +8 -3
  168. package/dist/{chunk-ZLSGXMGQ.js → chunk-JMN3GZU6.js} +2 -0
  169. package/dist/chunk-JPFRI4L4.js +4967 -0
  170. package/dist/{chunk-BVKXEQVG.cjs → chunk-JV5HVCHU.cjs} +22 -10
  171. package/dist/chunk-KA2U6MY2.js +388 -0
  172. package/dist/{chunk-SEKD5FH3.cjs → chunk-KASXKDF2.cjs} +8 -3
  173. package/dist/chunk-KJ26T7GM.cjs +367 -0
  174. package/dist/chunk-KM7R5YPS.cjs +385 -0
  175. package/dist/{chunk-MBBY4ZIK.js → chunk-KMP6Y3LJ.js} +4 -1
  176. package/dist/chunk-KWXGDSYT.js +184 -0
  177. package/dist/{chunk-C5IJIM2V.cjs → chunk-L46OUKW5.cjs} +68 -37
  178. package/dist/{chunk-6UJMCWRY.js → chunk-L6OH44HL.js} +19 -9
  179. package/dist/chunk-LANGD5CO.js +280 -0
  180. package/dist/{chunk-APIXPPMT.js → chunk-LEZEWKPA.js} +1004 -39
  181. package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
  182. package/dist/chunk-LJD7KR3L.cjs +44 -0
  183. package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
  184. package/dist/{chunk-QXH5RCFI.js → chunk-M5DK524Z.js} +2 -2
  185. package/dist/chunk-M7B7RRBK.cjs +1034 -0
  186. package/dist/chunk-MANJ67D3.js +3897 -0
  187. package/dist/{chunk-HPHJ73GU.cjs → chunk-MGNXABSU.cjs} +9 -9
  188. package/dist/{chunk-6ZCULLCA.js → chunk-MMKZSJUN.js} +1 -1
  189. package/dist/{chunk-DVUHHH3B.cjs → chunk-MQQH4XQH.cjs} +4 -4
  190. package/dist/chunk-MUNUUFU7.cjs +21 -0
  191. package/dist/{chunk-DVZOENQ7.cjs → chunk-MZN6JBRZ.cjs} +9 -4
  192. package/dist/{chunk-OOKY3HPZ.js → chunk-NB6M6ESM.js} +50 -9
  193. package/dist/{chunk-BYONM7UM.js → chunk-NBGOIFKP.js} +265 -18
  194. package/dist/chunk-NHWHEW7M.cjs +75 -0
  195. package/dist/chunk-NQZH5CR2.cjs +468 -0
  196. package/dist/{chunk-EGPXJERY.cjs → chunk-NV6LCD2I.cjs} +119 -28
  197. package/dist/chunk-NVATU4V6.cjs +44 -0
  198. package/dist/{chunk-YZXUDM5X.js → chunk-NZ3ZWLUW.js} +204 -62
  199. package/dist/chunk-NZ7GCK7Y.cjs +92 -0
  200. package/dist/{chunk-VEKDGU2Q.cjs → chunk-NZQFKXM3.cjs} +49 -25
  201. package/dist/chunk-O5GI6SR3.js +59 -0
  202. package/dist/{chunk-56SWIDEL.cjs → chunk-OCATAKXV.cjs} +57 -56
  203. package/dist/{chunk-SKV2F3NM.js → chunk-OIGYWOL6.js} +1 -1
  204. package/dist/{chunk-IFFXSTOM.cjs → chunk-ONVYXTUT.cjs} +3 -3
  205. package/dist/chunk-OR67YXQK.cjs +13 -0
  206. package/dist/chunk-OV3T5MUH.cjs +715 -0
  207. package/dist/{chunk-OHUZKDGX.js → chunk-P4FUTSVK.js} +3 -3
  208. package/dist/chunk-P6SLT2F4.cjs +139 -0
  209. package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
  210. package/dist/chunk-PCM3N3CL.cjs +37 -0
  211. package/dist/{chunk-2AA5MFES.js → chunk-PGFLPURU.js} +8 -5
  212. package/dist/{chunk-DJDE4DTT.cjs → chunk-PIXQ2AVM.cjs} +25 -19
  213. package/dist/chunk-PNIAIOMZ.cjs +229 -0
  214. package/dist/{chunk-HTLINWX6.cjs → chunk-PQBYFEBL.cjs} +16 -13
  215. package/dist/{chunk-22D2CNTP.cjs → chunk-PSAH4ZQB.cjs} +5 -2
  216. package/dist/{chunk-3VTAFAL2.js → chunk-PTTZI4QZ.js} +16 -12
  217. package/dist/{chunk-WPVWQSL7.cjs → chunk-PY73W5MQ.cjs} +16 -13
  218. package/dist/{chunk-EGMZDTSL.js → chunk-PZZMIYII.js} +10 -2
  219. package/dist/{chunk-HBZU3RBZ.js → chunk-Q3BS6FPM.js} +34 -10
  220. package/dist/chunk-QBYGMMDD.js +517 -0
  221. package/dist/chunk-QLZOMZO5.cjs +388 -0
  222. package/dist/{chunk-ADUFCS4Q.cjs → chunk-QQ64HEHP.cjs} +160 -79
  223. package/dist/{chunk-L3TWPROA.js → chunk-QRQF3556.js} +44 -24
  224. package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
  225. package/dist/chunk-RAKO7UN7.js +114 -0
  226. package/dist/{chunk-7TQH3CL4.cjs → chunk-RBXBH6EB.cjs} +78 -35
  227. package/dist/chunk-RFUKZIJF.cjs +78 -0
  228. package/dist/chunk-RS2E32YB.js +71 -0
  229. package/dist/{chunk-OLSBBZW6.cjs → chunk-S5JNQIGL.cjs} +5 -5
  230. package/dist/{chunk-FTYY5JJD.js → chunk-S5QKRA2V.js} +2 -2
  231. package/dist/chunk-SD3NTC7D.cjs +77 -0
  232. package/dist/{chunk-KPELYZ6L.js → chunk-SDLY4X3G.js} +2 -2
  233. package/dist/{chunk-IDFF5J2E.js → chunk-SFFEKZGC.js} +38 -7
  234. package/dist/{chunk-EGFT4PGW.js → chunk-SHRLFX6F.js} +8 -3
  235. package/dist/{chunk-3WICOC33.js → chunk-SNDDZG5H.js} +124 -84
  236. package/dist/{chunk-CZXGCVTR.cjs → chunk-SOVR7S3T.cjs} +2 -2
  237. package/dist/chunk-SPQ7QIQ6.js +78 -0
  238. package/dist/{chunk-XRZEUWKF.js → chunk-SRMGWMQO.js} +1 -1
  239. package/dist/{chunk-R33VKSH5.cjs → chunk-SVVP4UUZ.cjs} +11 -11
  240. package/dist/{chunk-7BTSG4ME.cjs → chunk-SY2P3Z5W.cjs} +1004 -39
  241. package/dist/chunk-SZD45IDG.js +468 -0
  242. package/dist/{chunk-3O3MOK5C.cjs → chunk-TE4SYTWR.cjs} +1114 -142
  243. package/dist/chunk-TH26BQJG.js +101 -0
  244. package/dist/{chunk-QNGEW5TC.js → chunk-TR6NECEZ.js} +1 -1
  245. package/dist/{chunk-YGN4CQIP.js → chunk-TYBPTKFT.js} +1 -1
  246. package/dist/{chunk-GJH7XMSK.js → chunk-U2QUMKCB.js} +8 -6
  247. package/dist/{chunk-47CKWKEX.cjs → chunk-U6PLSPMD.cjs} +9 -4
  248. package/dist/chunk-UOQECODR.js +34 -0
  249. package/dist/chunk-UR27UDTB.js +354 -0
  250. package/dist/chunk-UWZ4G3SQ.js +93 -0
  251. package/dist/{chunk-Y72HH2TF.cjs → chunk-V3SZLWEQ.cjs} +33 -24
  252. package/dist/chunk-V4HGZSKQ.cjs +183 -0
  253. package/dist/{chunk-3PDTTAKJ.js → chunk-V5ELP2XE.js} +19 -12
  254. package/dist/{chunk-3K2ESU53.cjs → chunk-VKOXFT4L.cjs} +2 -2
  255. package/dist/{chunk-XTB6VJVQ.cjs → chunk-VLGGMQUN.cjs} +6 -6
  256. package/dist/chunk-VQHSYAPZ.cjs +3897 -0
  257. package/dist/chunk-VUGOOGHB.js +400 -0
  258. package/dist/chunk-W5QLA6WP.cjs +866 -0
  259. package/dist/chunk-WBU4Q4GS.cjs +400 -0
  260. package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
  261. package/dist/chunk-WJYFLQ7G.cjs +27 -0
  262. package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
  263. package/dist/{chunk-ZSPXQYG2.js → chunk-WNJXIACY.js} +7 -5
  264. package/dist/{chunk-AYS2ASM7.js → chunk-WPE2XHVX.js} +1 -1
  265. package/dist/chunk-WTB7AFL6.cjs +101 -0
  266. package/dist/{chunk-JYTDYJVW.js → chunk-X3TI5TJJ.js} +1 -1
  267. package/dist/chunk-X5P6QQOB.cjs +719 -0
  268. package/dist/{chunk-245KJE5Y.cjs → chunk-X7XMITIL.cjs} +14 -6
  269. package/dist/chunk-XF2WIKHR.cjs +34 -0
  270. package/dist/{chunk-DV2ZHK7B.cjs → chunk-XNIMSVS6.cjs} +49 -26
  271. package/dist/chunk-XW3XCK4E.cjs +59 -0
  272. package/dist/{chunk-N23UAW4I.js → chunk-XZVDYC5U.js} +7 -2
  273. package/dist/chunk-Y5BDE24P.cjs +444 -0
  274. package/dist/{chunk-NAGQ2PDC.js → chunk-YC5OBZQU.js} +1604 -433
  275. package/dist/chunk-YISPVAXO.cjs +2340 -0
  276. package/dist/{chunk-KQGPTCQJ.js → chunk-YQDI753V.js} +68 -25
  277. package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
  278. package/dist/{chunk-NNPAM4HC.cjs → chunk-YWH55BWK.cjs} +15 -6
  279. package/dist/{chunk-X2YOZQIP.cjs → chunk-YWTIXHU6.cjs} +266 -19
  280. package/dist/{chunk-XX2ZO7DS.js → chunk-YXM6SA7P.js} +25 -16
  281. package/dist/chunk-YZWE7XSM.js +5 -0
  282. package/dist/chunk-ZASDSY7P.cjs +114 -0
  283. package/dist/{chunk-2UC22DJU.js → chunk-ZNGRLCFQ.js} +30 -4
  284. package/dist/{chunk-KANW6OYC.cjs → chunk-ZNYZB7XY.cjs} +34 -8
  285. package/dist/{chunk-NA6WQDYW.js → chunk-ZPLCAXJW.js} +1088 -116
  286. package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
  287. package/dist/chunk-ZUYYHKQA.js +44 -0
  288. package/dist/clear-QJXU25IF.cjs +12 -0
  289. package/dist/{clear-A3N4GK2S.js → clear-Y5TO3RZA.js} +3 -3
  290. package/dist/communityInstaller-LXMVKVAV.cjs +22 -0
  291. package/dist/{communityInstaller-LOP2EDH5.js → communityInstaller-RVL4STPS.js} +8 -5
  292. package/dist/completion-JX4T2ONW.cjs +17 -0
  293. package/dist/completion-SE3XYG74.js +17 -0
  294. package/dist/config-3224PRW4.cjs +21 -0
  295. package/dist/{config-HPJPKTO6.js → config-7KPHKFTP.js} +7 -4
  296. package/dist/{constants-LISJW3DD.js → constants-EJFAWJQI.js} +1 -1
  297. package/dist/constants-MCCGUU5F.cjs +21 -0
  298. package/dist/{defaultHooks-IHSJR2AX.cjs → defaultHooks-2V2CQL63.cjs} +25 -10
  299. package/dist/{defaultHooks-KUKHK3AG.js → defaultHooks-TMHDU3FS.js} +25 -10
  300. package/dist/export-BJVIDZC4.js +15 -0
  301. package/dist/export-KU4557HK.cjs +15 -0
  302. package/dist/feature-K3LG5IJP.cjs +14 -0
  303. package/dist/feature-V4JF5TNJ.js +14 -0
  304. package/dist/features-5OJTLKS7.js +23 -0
  305. package/dist/features-VCBJQXCX.cjs +23 -0
  306. package/dist/feedback-D4437VE4.js +18 -0
  307. package/dist/feedback-VZPEHGFY.cjs +18 -0
  308. package/dist/fffSearchProvider-2YCNKOYD.js +412 -0
  309. package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
  310. package/dist/{filesystem-Z7BWAWMZ.js → filesystem-L6DQKGWK.js} +3 -2
  311. package/dist/filesystem-PGUPCMVK.cjs +11 -0
  312. package/dist/go-X4E6BCD6.js +12 -0
  313. package/dist/go-XREVFS5I.cjs +12 -0
  314. package/dist/goal-4M3J6JS2.cjs +16 -0
  315. package/dist/goal-EI66BV7W.js +16 -0
  316. package/dist/help-GGFS7WHY.cjs +12 -0
  317. package/dist/{help-GFQXNZOK.js → help-MLIROWKM.js} +2 -2
  318. package/dist/{history-E3N6BJP7.js → history-GQJ6RZD6.js} +2 -2
  319. package/dist/history-J4LUIOSI.cjs +14 -0
  320. package/dist/hooks-FSRIUS6A.cjs +18 -0
  321. package/dist/hooks-PPFHCF7T.js +18 -0
  322. package/dist/i18n-CI6VFXL5.cjs +33 -0
  323. package/dist/{i18n-SY7QRM22.js → i18n-Q7UZJRPL.js} +1 -1
  324. package/dist/ide-BUSVE54P.js +15 -0
  325. package/dist/ide-YR27BPGM.cjs +15 -0
  326. package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
  327. package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
  328. package/dist/{import-W7SVLSTC.js → import-3VBKI6BN.js} +3 -3
  329. package/dist/{import-ADI37ZUR.cjs → import-C7S6UJMW.cjs} +3 -3
  330. package/dist/import-DBK4OCDF.cjs +10 -0
  331. package/dist/{import-KGKKZ3B7.js → import-U47DXCA7.js} +2 -2
  332. package/dist/index.cjs +837 -23011
  333. package/dist/index.d.cts +95 -0
  334. package/dist/index.d.ts +95 -0
  335. package/dist/index.js +864 -23038
  336. package/dist/init-OXTYS72D.cjs +10 -0
  337. package/dist/{init-7MFK626E.js → init-Q2O4R42R.js} +2 -2
  338. package/dist/inkMode-VUE6ZDLD.cjs +7 -0
  339. package/dist/inkMode-WBNFOSAT.js +7 -0
  340. package/dist/inputPrompt-3CFZDUBH.js +90 -0
  341. package/dist/inputPrompt-JMACL4EB.cjs +90 -0
  342. package/dist/language-EK3M6UBV.cjs +22 -0
  343. package/dist/language-Q3RUGGOW.js +22 -0
  344. package/dist/learn-3DSX7DYG.cjs +23 -0
  345. package/dist/learn-OPOH5L43.js +23 -0
  346. package/dist/login-GST7MWXJ.cjs +27 -0
  347. package/dist/login-Q7DZKAX4.js +27 -0
  348. package/dist/logout-2G7OUK7I.cjs +24 -0
  349. package/dist/logout-FNBBL2UI.js +24 -0
  350. package/dist/mcp-AH3MMUBU.js +21 -0
  351. package/dist/mcp-DW7R63IB.cjs +21 -0
  352. package/dist/{mcp-install-2FEROZTL.js → mcp-install-222PCKSW.js} +18 -10
  353. package/dist/{mcp-install-WM6BQRI5.cjs → mcp-install-IA4ZS2SV.cjs} +22 -14
  354. package/dist/memory-6NX3DAIY.cjs +10 -0
  355. package/dist/{memory-J73WZH2I.js → memory-VB46T5H3.js} +2 -2
  356. package/dist/model-64NAELFS.cjs +10 -0
  357. package/dist/{model-AES267IN.js → model-SJJG64AM.js} +2 -2
  358. package/dist/new-DU5SOOOY.cjs +12 -0
  359. package/dist/{new-5CLF3MKH.js → new-ERZ5C6CN.js} +3 -3
  360. package/dist/onboarding-2U2BV2KE.cjs +36 -0
  361. package/dist/onboarding-ZQXMPSMJ.js +36 -0
  362. package/dist/permissions-7ACNFK7A.js +10 -0
  363. package/dist/permissions-GSNNV7RJ.cjs +10 -0
  364. package/dist/plan-XEJMOT55.cjs +13 -0
  365. package/dist/{plan-65HMS5HQ.js → plan-YYUAXPTL.js} +3 -1
  366. package/dist/pr-review-CW6J7P62.cjs +9 -0
  367. package/dist/pr-review-YZSBQVT2.js +9 -0
  368. package/dist/{quit-XDZYRSPU.js → quit-WY6T267G.js} +2 -2
  369. package/dist/quit-XIRE2KRE.cjs +10 -0
  370. package/dist/rawMode-6W5AXAKI.cjs +7 -0
  371. package/dist/rawMode-GFNLXQPU.js +7 -0
  372. package/dist/{registry-PTHWERKC.js → registry-4DXUDKJN.js} +29 -44
  373. package/dist/{registry-IVT4G2RT.cjs → registry-UEO3ETZ7.cjs} +65 -80
  374. package/dist/repeat-P4FAPE3Y.cjs +17 -0
  375. package/dist/{repeat-EVCWUL6Z.js → repeat-RALE6AUO.js} +7 -3
  376. package/dist/resume-RQZ3WXBP.cjs +17 -0
  377. package/dist/resume-XSXZMDMD.js +17 -0
  378. package/dist/review-QHP2KP4Q.js +9 -0
  379. package/dist/review-UWHWQHCB.cjs +9 -0
  380. package/dist/ripgrep-67SCU2BA.cjs +9 -0
  381. package/dist/ripgrep-VHJQQ55W.js +9 -0
  382. package/dist/rpc-XH7QLN4H.js +3874 -0
  383. package/dist/rpc-YF54T7JU.cjs +3874 -0
  384. package/dist/search-VXXFGZWU.cjs +21 -0
  385. package/dist/search-YAWGX7P7.js +21 -0
  386. package/dist/{sessions-6GWEBMKS.js → sessions-NJYHJOEL.js} +2 -2
  387. package/dist/sessions-OSG3UJEZ.cjs +10 -0
  388. package/dist/settings-SO2UIGWV.cjs +42 -0
  389. package/dist/settings-ZXUQH3DO.js +42 -0
  390. package/dist/setup-KG7EGKF5.js +30 -0
  391. package/dist/setup-RSOPCQ57.cjs +30 -0
  392. package/dist/share-WFAGZ5PY.js +17 -0
  393. package/dist/share-ZU3SGACF.cjs +17 -0
  394. package/dist/skills-KBVAQAD2.cjs +29 -0
  395. package/dist/skills-NBTNDVAY.js +29 -0
  396. package/dist/{skills-ZZCIAS7C.js → skills-OB6RDW7D.js} +10 -7
  397. package/dist/{skills-PG542VEB.cjs → skills-ZROBG3RZ.cjs} +13 -10
  398. package/dist/{skills-install-SRC3Z2MS.js → skills-install-BHTIEMKH.js} +21 -70
  399. package/dist/{skills-install-67DOBPJC.cjs → skills-install-ILX6QVEF.cjs} +34 -83
  400. package/dist/skills-new-B45VQ2PP.cjs +18 -0
  401. package/dist/skills-new-YMRP2HNO.js +18 -0
  402. package/dist/slashCommands-53VYIBJU.js +105 -0
  403. package/dist/slashCommands-BG2RGGZ6.cjs +105 -0
  404. package/dist/status-CQ2IUOVK.cjs +24 -0
  405. package/dist/status-E7IGNVPC.js +24 -0
  406. package/dist/summarizer-DGPHE5IQ.js +17 -0
  407. package/dist/summarizer-JNXLUAQG.cjs +17 -0
  408. package/dist/sync-7C25MOT2.js +22 -0
  409. package/dist/{sync-VU2NSJ4O.js → sync-OCJN4ZSO.js} +3 -3
  410. package/dist/sync-XRP46IVG.cjs +40 -0
  411. package/dist/sync-ZMFVE7T4.cjs +22 -0
  412. package/dist/{teammate-SXRVXNQV.cjs → teammate-D77B6QRT.cjs} +31 -9
  413. package/dist/{teammate-SD26GR37.js → teammate-EZCMHOIL.js} +30 -8
  414. package/dist/templates-ARG2VRWW.cjs +11 -0
  415. package/dist/templates-UGVZV3KJ.js +11 -0
  416. package/dist/theme-KKRDE6P7.cjs +22 -0
  417. package/dist/theme-XF7XIWBQ.js +22 -0
  418. package/dist/tools-3PPTTKFV.js +9 -0
  419. package/dist/tools-THIQA7WC.cjs +9 -0
  420. package/dist/ui/questionModal.cjs +8 -5
  421. package/dist/ui/questionModal.js +7 -4
  422. package/dist/{undo-OL2EDBRY.js → undo-GNUTFXCW.js} +2 -2
  423. package/dist/undo-U4KN7QQM.cjs +10 -0
  424. package/dist/usage-QSTNSDAO.js +24 -0
  425. package/dist/usage-YDEMQBNQ.cjs +24 -0
  426. package/dist/web-3BA2WV37.cjs +37 -0
  427. package/dist/web-6FYGBX5K.js +37 -0
  428. package/dist/workspaceSafety-MDJGHK6D.cjs +9 -0
  429. package/dist/workspaceSafety-XOUMUBVB.js +9 -0
  430. package/dist/yolo-GF2YD7ZI.js +9 -0
  431. package/dist/yolo-OGDA7HNC.cjs +9 -0
  432. package/dist/yoloMode-3DJDA75U.cjs +17 -0
  433. package/dist/yoloMode-4JOOSU26.js +17 -0
  434. package/package.json +51 -49
  435. package/dist/AgentRegistry-HRPN6ZOF.cjs +0 -10
  436. package/dist/CommunitySkillsCache-KE435RAR.cjs +0 -8
  437. package/dist/GitHubRegistryFetcher-I45SESIL.cjs +0 -7
  438. package/dist/LearnAdvisor-FLBA6FDD.js +0 -9
  439. package/dist/LearnAdvisor-GG3CXQF3.cjs +0 -9
  440. package/dist/MemoryManager-2LQPIYVE.cjs +0 -8
  441. package/dist/PermissionManager-X57BXHJ6.cjs +0 -11
  442. package/dist/ProviderFactory-KPJOGQWF.cjs +0 -9
  443. package/dist/SessionManager-YBJAZXNO.cjs +0 -10
  444. package/dist/SkillsRegistry-7O72A6TZ.cjs +0 -9
  445. package/dist/SubAgent-JT4HZHN7.js +0 -11
  446. package/dist/SubAgent-VPNYDWAU.cjs +0 -11
  447. package/dist/SyncApiClient-HQXJL5BT.cjs +0 -11
  448. package/dist/about-4DB5KTHW.js +0 -12
  449. package/dist/about-LXAOXZFT.cjs +0 -12
  450. package/dist/actionExecutor-23JB2WUC.js +0 -19
  451. package/dist/actionExecutor-X5UEZSKH.cjs +0 -19
  452. package/dist/add-dir-YC37DMSF.cjs +0 -10
  453. package/dist/agents-YF3BSUU5.js +0 -12
  454. package/dist/agents-ZOUHPMYR.cjs +0 -12
  455. package/dist/agents-new-HSH4GQPG.js +0 -14
  456. package/dist/agents-new-VYUDOCE7.cjs +0 -14
  457. package/dist/autoSkill-X5W52WOE.cjs +0 -20
  458. package/dist/automode-SJGM7VEI.cjs +0 -10
  459. package/dist/chunk-ALYU6VTM.js +0 -105
  460. package/dist/chunk-B53A2NM2.js +0 -2030
  461. package/dist/chunk-BJXSNT46.js +0 -100
  462. package/dist/chunk-CB4E2T5N.cjs +0 -312
  463. package/dist/chunk-DNUOXBHL.js +0 -539
  464. package/dist/chunk-EFX2QSZX.cjs +0 -33
  465. package/dist/chunk-GCXYXLRA.cjs +0 -111
  466. package/dist/chunk-H2ZRHQQV.js +0 -33
  467. package/dist/chunk-HNRPK5MY.cjs +0 -85
  468. package/dist/chunk-HVKOZ2VP.cjs +0 -115
  469. package/dist/chunk-JJLYWH5Y.cjs +0 -100
  470. package/dist/chunk-LWUJFGOZ.js +0 -115
  471. package/dist/chunk-MERYP6AM.cjs +0 -539
  472. package/dist/chunk-MZAPWNAC.cjs +0 -207
  473. package/dist/chunk-NTSDP2WB.js +0 -226
  474. package/dist/chunk-OUZQXMHL.cjs +0 -226
  475. package/dist/chunk-PGESAU2W.cjs +0 -2030
  476. package/dist/chunk-SYVYLZZF.cjs +0 -24
  477. package/dist/chunk-SZOLA6FR.js +0 -111
  478. package/dist/chunk-VWDHR4HV.js +0 -168
  479. package/dist/chunk-Y45G6ZO5.cjs +0 -168
  480. package/dist/chunk-YRLYSQEQ.cjs +0 -105
  481. package/dist/chunk-ZYVS43MU.js +0 -312
  482. package/dist/clear-GK4IEUUS.cjs +0 -12
  483. package/dist/communityInstaller-XXC7RLE4.cjs +0 -19
  484. package/dist/completion-HWABSAEL.js +0 -14
  485. package/dist/completion-IUUVQG4D.cjs +0 -14
  486. package/dist/config-HF7WOLZF.cjs +0 -18
  487. package/dist/constants-PEO3P2SJ.cjs +0 -21
  488. package/dist/export-QJAV2FCZ.js +0 -12
  489. package/dist/export-XSRFXGWU.cjs +0 -12
  490. package/dist/feedback-4TCIL3ML.cjs +0 -15
  491. package/dist/feedback-SJ6VVEY3.js +0 -15
  492. package/dist/filesystem-W56QZUJF.cjs +0 -10
  493. package/dist/help-ISBVQL3S.cjs +0 -12
  494. package/dist/history-XQ4GTSFU.cjs +0 -14
  495. package/dist/hooks-CJNKJ5PF.js +0 -13
  496. package/dist/hooks-UTMBTAXT.cjs +0 -13
  497. package/dist/i18n-N7QQ7A5M.cjs +0 -33
  498. package/dist/ide-RTA4UJV4.js +0 -12
  499. package/dist/ide-VWVOLIFF.cjs +0 -12
  500. package/dist/immediateCommandRouter-BW34JNXL.js +0 -9
  501. package/dist/immediateCommandRouter-SHOVNB5X.cjs +0 -9
  502. package/dist/import-ZLJVONXH.cjs +0 -10
  503. package/dist/init-TBKAB4LZ.cjs +0 -10
  504. package/dist/language-MDSHEXHB.cjs +0 -18
  505. package/dist/language-PXTQSHIG.js +0 -18
  506. package/dist/learn-623TW5EK.cjs +0 -20
  507. package/dist/learn-BCPV7GM2.js +0 -20
  508. package/dist/localProjectPermissions-BHQXEWZJ.cjs +0 -18
  509. package/dist/localProjectPermissions-GMOUYQM6.js +0 -18
  510. package/dist/login-QMVEETWJ.js +0 -20
  511. package/dist/login-QYMXAL3K.cjs +0 -20
  512. package/dist/logout-2CMTDAOJ.js +0 -18
  513. package/dist/logout-ZOHVZAUK.cjs +0 -18
  514. package/dist/mcp-IUVKK65S.js +0 -18
  515. package/dist/mcp-TXC7PYG3.cjs +0 -18
  516. package/dist/memory-WRIHDEPK.cjs +0 -10
  517. package/dist/model-RLP75SF5.cjs +0 -10
  518. package/dist/new-HLSFL6A4.cjs +0 -12
  519. package/dist/permissions-GP6FTGZ2.js +0 -13
  520. package/dist/permissions-O6EKKPOG.cjs +0 -13
  521. package/dist/plan-MCAXDIM2.cjs +0 -11
  522. package/dist/quit-TQX6GXA5.cjs +0 -10
  523. package/dist/repeat-BSPS5TWD.cjs +0 -13
  524. package/dist/resume-2GOPDLL4.cjs +0 -13
  525. package/dist/resume-37IUVDA6.js +0 -13
  526. package/dist/search-7KUSHIBL.cjs +0 -17
  527. package/dist/search-OJGDRIMA.js +0 -17
  528. package/dist/sessions-CYYCHSQG.cjs +0 -10
  529. package/dist/settings-2D7CAO66.cjs +0 -30
  530. package/dist/settings-BXR6SBJP.js +0 -30
  531. package/dist/share-BXQY5IQU.js +0 -14
  532. package/dist/share-OSFXZBGS.cjs +0 -14
  533. package/dist/skills-FL6O6AOM.cjs +0 -26
  534. package/dist/skills-PNKQZRNK.js +0 -26
  535. package/dist/skills-new-XFMEHHIF.cjs +0 -15
  536. package/dist/skills-new-ZNZPHUKS.js +0 -15
  537. package/dist/slashCommands-LLCNPK3X.js +0 -76
  538. package/dist/slashCommands-RXZZS6RE.cjs +0 -76
  539. package/dist/status-BCECUJXT.cjs +0 -11
  540. package/dist/status-EFO7MQU3.js +0 -11
  541. package/dist/sync-IJYJ6KKM.js +0 -18
  542. package/dist/sync-LFT6SBPF.cjs +0 -18
  543. package/dist/sync-U7SDPBNZ.cjs +0 -40
  544. package/dist/theme-AWBHSG7J.cjs +0 -18
  545. package/dist/theme-TQLBPJ2E.js +0 -18
  546. package/dist/undo-IBBGP7A2.cjs +0 -10
@@ -0,0 +1,139 @@
1
+ import {
2
+ PROJECT_DIR_NAME
3
+ } from "./chunk-SHRLFX6F.js";
4
+
5
+ // src/permissions/localProjectPermissions.ts
6
+ import fs from "fs-extra";
7
+ import path from "path";
8
+ var LOCAL_SETTINGS_FILE = "settings.local.json";
9
+ function normalizePermissionSettings(settings) {
10
+ if (!settings) {
11
+ return settings;
12
+ }
13
+ const allowList = settings.allowList ?? settings.whitelist ?? [];
14
+ const denyList = settings.denyList ?? settings.blacklist ?? [];
15
+ return {
16
+ ...settings,
17
+ allowList,
18
+ denyList,
19
+ whitelist: void 0,
20
+ blacklist: void 0
21
+ };
22
+ }
23
+ function getLocalSettingsPath(workspaceRoot) {
24
+ return path.join(workspaceRoot, PROJECT_DIR_NAME, LOCAL_SETTINGS_FILE);
25
+ }
26
+ async function loadLocalProjectSettings(workspaceRoot) {
27
+ const settingsPath = getLocalSettingsPath(workspaceRoot);
28
+ try {
29
+ if (await fs.pathExists(settingsPath)) {
30
+ const content = await fs.readFile(settingsPath, "utf8");
31
+ const parsed = JSON.parse(content);
32
+ return {
33
+ ...parsed,
34
+ permissions: normalizePermissionSettings(parsed.permissions)
35
+ };
36
+ }
37
+ } catch (error) {
38
+ console.error(`Warning: Failed to parse local settings at ${settingsPath}:`, error.message);
39
+ }
40
+ return null;
41
+ }
42
+ async function saveLocalProjectSettings(workspaceRoot, settings) {
43
+ const settingsPath = getLocalSettingsPath(workspaceRoot);
44
+ const dir = path.dirname(settingsPath);
45
+ await fs.ensureDir(dir);
46
+ const toSave = {
47
+ ...settings,
48
+ version: 1
49
+ };
50
+ await fs.writeJson(settingsPath, toSave, { spaces: 2 });
51
+ }
52
+ async function addToLocalAllowList(workspaceRoot, pattern) {
53
+ const current = await loadLocalProjectSettings(workspaceRoot) || {};
54
+ const permissions = normalizePermissionSettings(current.permissions) || {};
55
+ const allowList = permissions.allowList || [];
56
+ if (!allowList.includes(pattern)) {
57
+ allowList.push(pattern);
58
+ await saveLocalProjectSettings(workspaceRoot, {
59
+ ...current,
60
+ permissions: {
61
+ ...permissions,
62
+ allowList
63
+ }
64
+ });
65
+ }
66
+ }
67
+ async function addToLocalDenyList(workspaceRoot, pattern) {
68
+ const current = await loadLocalProjectSettings(workspaceRoot) || {};
69
+ const permissions = normalizePermissionSettings(current.permissions) || {};
70
+ const denyList = permissions.denyList || [];
71
+ if (!denyList.includes(pattern)) {
72
+ denyList.push(pattern);
73
+ await saveLocalProjectSettings(workspaceRoot, {
74
+ ...current,
75
+ permissions: {
76
+ ...permissions,
77
+ denyList
78
+ }
79
+ });
80
+ }
81
+ }
82
+ function mergePermissions(globalSettings, localSettings) {
83
+ const normalizedGlobal = normalizePermissionSettings(globalSettings) ?? {};
84
+ const normalizedLocal = normalizePermissionSettings(localSettings);
85
+ if (!normalizedLocal) {
86
+ return normalizedGlobal;
87
+ }
88
+ return {
89
+ // Global settings as base
90
+ ...normalizedGlobal,
91
+ // Local mode overrides global if set
92
+ mode: normalizedLocal.mode || normalizedGlobal.mode,
93
+ allowList: [
94
+ ...normalizedGlobal.allowList || [],
95
+ ...normalizedLocal.allowList || []
96
+ ].filter((v, i, a) => a.indexOf(v) === i),
97
+ denyList: [
98
+ ...normalizedGlobal.denyList || [],
99
+ ...normalizedLocal.denyList || []
100
+ ].filter((v, i, a) => a.indexOf(v) === i),
101
+ // Merge rules (local rules checked first)
102
+ rules: [
103
+ ...normalizedLocal.rules || [],
104
+ ...normalizedGlobal.rules || []
105
+ ],
106
+ // Use local rememberSession if set, otherwise global
107
+ rememberSession: normalizedLocal.rememberSession ?? normalizedGlobal.rememberSession,
108
+ allowPatterns: [
109
+ ...normalizedGlobal.allowPatterns || [],
110
+ ...normalizedLocal.allowPatterns || []
111
+ ],
112
+ denyPatterns: [
113
+ ...normalizedGlobal.denyPatterns || [],
114
+ ...normalizedLocal.denyPatterns || []
115
+ ],
116
+ availableTools: [
117
+ ...normalizedGlobal.availableTools || [],
118
+ ...normalizedLocal.availableTools || []
119
+ ],
120
+ excludedTools: [
121
+ ...normalizedGlobal.excludedTools || [],
122
+ ...normalizedLocal.excludedTools || []
123
+ ],
124
+ allPathsAllowed: normalizedLocal.allPathsAllowed ?? normalizedGlobal.allPathsAllowed,
125
+ allUrlsAllowed: normalizedLocal.allUrlsAllowed ?? normalizedGlobal.allUrlsAllowed
126
+ };
127
+ }
128
+
129
+ export {
130
+ loadLocalProjectSettings,
131
+ addToLocalAllowList,
132
+ addToLocalDenyList,
133
+ mergePermissions
134
+ };
135
+ /**
136
+ * Local Project Permissions
137
+ * Handles per-project permission settings stored in .autohand/settings.local.json
138
+ * @license Apache-2.0
139
+ */
@@ -0,0 +1,85 @@
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 _chunkYISPVAXOcjs = require('./chunk-YISPVAXO.cjs');
4
+
5
+
6
+
7
+
8
+ var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
9
+
10
+
11
+
12
+
13
+ var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
14
+
15
+ // src/commands/setup.ts
16
+ var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
17
+ var metadata = {
18
+ command: "/setup",
19
+ description: _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.description"), () => ( "Run the setup wizard to configure or reconfigure Autohand")),
20
+ implemented: true
21
+ };
22
+ async function setup(ctx) {
23
+ if (ctx.isNonInteractive) {
24
+ return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.interactiveOnly"), () => ( "Setup requires an interactive terminal. Use the --setup CLI flag instead."));
25
+ }
26
+ const { locale: detectedLocale } = _chunkSY2P3Z5Wcjs.detectLocale.call(void 0, );
27
+ const locale = _nullishCoalesce(detectedLocale, () => ( "en"));
28
+ await _chunkSY2P3Z5Wcjs.initI18n.call(void 0, locale);
29
+ const config = await _chunkX5P6QQOBcjs.loadConfig.call(void 0, _optionalChain([ctx, 'access', _ => _.config, 'optionalAccess', _2 => _2.configPath]), ctx.workspaceRoot);
30
+ const workspaceRoot = _chunkX5P6QQOBcjs.resolveWorkspaceRoot.call(void 0, config, ctx.workspaceRoot);
31
+ if (ctx.eventEmitter) {
32
+ ctx.eventEmitter.emit("setup:started", {
33
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
34
+ locale,
35
+ workspaceRoot
36
+ });
37
+ }
38
+ const wizard = new (0, _chunkYISPVAXOcjs.SetupWizard)(workspaceRoot, config);
39
+ const result = await wizard.run({ force: true, skipWelcome: false });
40
+ if (result.cancelled) {
41
+ if (ctx.eventEmitter) {
42
+ ctx.eventEmitter.emit("setup:cancelled", {
43
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
44
+ step: "user_cancelled"
45
+ });
46
+ }
47
+ return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.cancelled"), () => ( "Setup cancelled."));
48
+ }
49
+ if (!result.success) {
50
+ if (ctx.eventEmitter) {
51
+ ctx.eventEmitter.emit("setup:error", {
52
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
53
+ error: "setup_failed"
54
+ });
55
+ }
56
+ return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.failed"), () => ( "Setup failed. Please try again."));
57
+ }
58
+ const newConfig = { ...config, ...result.config };
59
+ await _chunkX5P6QQOBcjs.saveConfig.call(void 0, newConfig);
60
+ if (ctx.eventEmitter) {
61
+ const provider = result.config.provider;
62
+ const providerConfig = provider && result.config[provider];
63
+ const model = providerConfig && typeof providerConfig === "object" && "model" in providerConfig ? providerConfig.model : void 0;
64
+ ctx.eventEmitter.emit("setup:complete", {
65
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
66
+ success: true,
67
+ provider,
68
+ model,
69
+ skippedSteps: result.skippedSteps,
70
+ agentsFileCreated: result.agentsFileCreated
71
+ });
72
+ }
73
+ console.log(_chalk2.default.green(_nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.complete"), () => ( "\nSetup complete!"))));
74
+ return null;
75
+ }
76
+
77
+
78
+
79
+
80
+ exports.metadata = metadata; exports.setup = setup;
81
+ /**
82
+ * @license
83
+ * Copyright 2025 Autohand AI LLC
84
+ * SPDX-License-Identifier: Apache-2.0
85
+ */
@@ -0,0 +1,59 @@
1
+ // src/commands/review.ts
2
+ import chalk from "chalk";
3
+ import path from "path";
4
+ import fse from "fs-extra";
5
+ var metadata = {
6
+ command: "/review",
7
+ description: "staff-level code review with 10 actionable findings",
8
+ implemented: true
9
+ };
10
+ async function review(ctx, args = []) {
11
+ const userInstructions = args.join(" ").trim();
12
+ const skillPath = path.resolve(
13
+ path.dirname(new URL(import.meta.url).pathname),
14
+ "../skills/builtin/code-reviewer/SKILL.md"
15
+ );
16
+ let skillBody = "";
17
+ try {
18
+ const content = await fse.readFile(skillPath, "utf-8");
19
+ const bodyMatch = content.match(/^---[\s\S]*?---\s*([\s\S]*)$/);
20
+ skillBody = bodyMatch ? bodyMatch[1].trim() : content;
21
+ } catch {
22
+ skillBody = "Perform a thorough code review analyzing architecture, security, performance, error handling, and maintainability.";
23
+ }
24
+ const parts = [
25
+ skillBody,
26
+ "",
27
+ "## Review Target",
28
+ `Workspace: ${ctx.workspaceRoot}`
29
+ ];
30
+ if (userInstructions) {
31
+ parts.push("", "## Additional Focus", userInstructions);
32
+ }
33
+ parts.push(
34
+ "",
35
+ "## Instructions",
36
+ "Start the review now. Use the available tools (read_file, fff_grep, fff_find, list_tree, git_status, git_diff) to gather context, then deliver your 10-dimension review."
37
+ );
38
+ const prompt = parts.join("\n");
39
+ if (ctx.isNonInteractive || !ctx.queueInstruction) {
40
+ return prompt;
41
+ }
42
+ ctx.queueInstruction(prompt);
43
+ console.log(chalk.cyan("\n Starting code review..."));
44
+ if (userInstructions) {
45
+ console.log(chalk.gray(` Focus: ${userInstructions}`));
46
+ }
47
+ console.log(chalk.gray(" Analyzing 10 dimensions: architecture, security, performance, and more.\n"));
48
+ return null;
49
+ }
50
+
51
+ export {
52
+ metadata,
53
+ review
54
+ };
55
+ /**
56
+ * @license
57
+ * Copyright 2026 Autohand AI LLC
58
+ * SPDX-License-Identifier: Apache-2.0
59
+ */
@@ -1,12 +1,74 @@
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(); } }
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(); } } var _class;
2
2
 
3
- var _chunkLJFUXC56cjs = require('./chunk-LJFUXC56.cjs');
3
+ var _chunkHXQREVTAcjs = require('./chunk-HXQREVTA.cjs');
4
+
5
+
6
+ var _chunkXF2WIKHRcjs = require('./chunk-XF2WIKHR.cjs');
4
7
 
5
8
  // src/actions/filesystem.ts
6
9
  var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
7
10
  var _path = require('path'); var _path2 = _interopRequireDefault(_path);
8
11
  var _child_process = require('child_process');
9
12
  var _diff = require('diff');
13
+
14
+ // src/utils/patchValidator.ts
15
+ function validateAndFixPatch(patch) {
16
+ const lines = patch.split("\n");
17
+ const result = [];
18
+ let i = 0;
19
+ while (i < lines.length) {
20
+ const line = lines[i];
21
+ const hunkMatch = line.match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
22
+ if (hunkMatch) {
23
+ i++;
24
+ const hunkLines = [];
25
+ while (i < lines.length) {
26
+ const nextLine = lines[i];
27
+ if (nextLine.match(/^@@ /) || nextLine.match(/^(---|\+\+\+|Index:|diff\s)/) || nextLine === "===================================================================") {
28
+ break;
29
+ }
30
+ hunkLines.push(nextLine);
31
+ i++;
32
+ }
33
+ let oldCount = 0;
34
+ let newCount = 0;
35
+ for (const hunkLine of hunkLines) {
36
+ if (hunkLine.length === 0) continue;
37
+ const firstChar = hunkLine[0];
38
+ if (firstChar === "-") {
39
+ oldCount++;
40
+ } else if (firstChar === "+") {
41
+ newCount++;
42
+ } else if (firstChar === " " || firstChar === " ") {
43
+ oldCount++;
44
+ newCount++;
45
+ } else if (firstChar === "\\") {
46
+ } else {
47
+ oldCount++;
48
+ newCount++;
49
+ }
50
+ }
51
+ const oldStart = hunkMatch[1];
52
+ const newStart = hunkMatch[3];
53
+ let correctedHeader;
54
+ if (oldCount === 0) {
55
+ correctedHeader = `@@ -${parseInt(oldStart) + 1} +${newStart},${newCount} @@`;
56
+ } else if (newCount === 0) {
57
+ correctedHeader = `@@ -${oldStart},${oldCount} +${parseInt(newStart) + 1} @@`;
58
+ } else {
59
+ correctedHeader = `@@ -${oldStart},${oldCount} +${newStart},${newCount} @@`;
60
+ }
61
+ result.push(correctedHeader);
62
+ result.push(...hunkLines);
63
+ } else {
64
+ result.push(line);
65
+ i++;
66
+ }
67
+ }
68
+ return result.join("\n");
69
+ }
70
+
71
+ // src/actions/filesystem.ts
10
72
  var FILE_LIMITS = {
11
73
  /** Maximum file size for read operations (10MB) */
12
74
  MAX_READ_SIZE: 10 * 1024 * 1024,
@@ -19,17 +81,19 @@ var FILE_LIMITS = {
19
81
  /** Maximum undo stack size */
20
82
  MAX_UNDO_STACK: 100
21
83
  };
22
- var FileActionManager = class {
23
- constructor(workspaceRoot, additionalDirs = []) {
24
- this.undoStack = [];
25
- // Preview mode state
26
- this.previewMode = false;
27
- this.pendingChanges = [];
28
- this.batchId = null;
29
- this.changeCounter = 0;
30
- this.onBatchChange = null;
31
- this.currentToolId = "";
32
- this.currentToolName = "";
84
+ var FileActionManager = (_class = class {
85
+ __init() {this.undoStack = []}
86
+
87
+
88
+ // Preview mode state
89
+ __init2() {this.previewMode = false}
90
+ __init3() {this.pendingChanges = []}
91
+ __init4() {this.batchId = null}
92
+ __init5() {this.changeCounter = 0}
93
+ __init6() {this.onBatchChange = null}
94
+ __init7() {this.currentToolId = ""}
95
+ __init8() {this.currentToolName = ""}
96
+ constructor(workspaceRoot, additionalDirs = []) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);_class.prototype.__init5.call(this);_class.prototype.__init6.call(this);_class.prototype.__init7.call(this);_class.prototype.__init8.call(this);
33
97
  const resolvedRoot = _path2.default.resolve(workspaceRoot);
34
98
  try {
35
99
  this.workspaceRoot = _fsextra2.default.realpathSync(resolvedRoot);
@@ -186,6 +250,14 @@ var FileActionManager = class {
186
250
  get root() {
187
251
  return this.workspaceRoot;
188
252
  }
253
+ setWorkspaceRoot(workspaceRoot) {
254
+ const resolvedRoot = _path2.default.resolve(workspaceRoot);
255
+ try {
256
+ this.workspaceRoot = _fsextra2.default.realpathSync(resolvedRoot);
257
+ } catch (e4) {
258
+ this.workspaceRoot = resolvedRoot;
259
+ }
260
+ }
189
261
  async readFile(target) {
190
262
  const filePath = this.resolvePath(target);
191
263
  const exists = await _fsextra2.default.pathExists(filePath);
@@ -235,7 +307,8 @@ var FileActionManager = class {
235
307
  async applyPatch(target, patch, description) {
236
308
  const filePath = this.resolvePath(target);
237
309
  const current = await this.readFileSafe(target);
238
- const updated = _diff.applyPatch.call(void 0, current, patch);
310
+ const fixedPatch = validateAndFixPatch(patch);
311
+ const updated = _diff.applyPatch.call(void 0, current, fixedPatch);
239
312
  if (updated === false) {
240
313
  throw new Error(`Failed to apply patch to ${target}`);
241
314
  }
@@ -261,7 +334,7 @@ var FileActionManager = class {
261
334
  }
262
335
  search(query, relativePath) {
263
336
  const searchDir = this.resolvePath(_nullishCoalesce(relativePath, () => ( ".")));
264
- const rgResult = _child_process.spawnSync.call(void 0, "rg", [
337
+ const rgResult = _child_process.spawnSync.call(void 0, _chunkXF2WIKHRcjs.resolveRipgrepCommand.call(void 0, ), [
265
338
  "--line-number",
266
339
  "--color",
267
340
  "never",
@@ -321,7 +394,7 @@ var FileActionManager = class {
321
394
  const limit = _nullishCoalesce(opts.limit, () => ( 5));
322
395
  const window = _nullishCoalesce(opts.window, () => ( 400));
323
396
  const baseDir = this.resolvePath(_nullishCoalesce(opts.relativePath, () => ( ".")));
324
- const ignoreFilter = new (0, _chunkLJFUXC56cjs.GitIgnoreParser)(baseDir);
397
+ const ignoreFilter = new (0, _chunkHXQREVTAcjs.GitIgnoreParser)(baseDir);
325
398
  const results = [];
326
399
  const stack = [baseDir];
327
400
  const lowerQuery = query.toLowerCase();
@@ -421,7 +494,7 @@ var FileActionManager = class {
421
494
  file: normalizedRel || _path2.default.basename(current),
422
495
  snippet
423
496
  });
424
- } catch (e4) {
497
+ } catch (e5) {
425
498
  continue;
426
499
  }
427
500
  }
@@ -443,24 +516,13 @@ var FileActionManager = class {
443
516
  resolvePath(target) {
444
517
  const normalized = _path2.default.isAbsolute(target) ? target : _path2.default.join(this.workspaceRoot, target);
445
518
  const resolved = _path2.default.resolve(normalized);
446
- let realPath;
447
- try {
448
- realPath = _fsextra2.default.realpathSync(resolved);
449
- } catch (e5) {
450
- const parentDir = _path2.default.dirname(resolved);
451
- try {
452
- const realParent = _fsextra2.default.realpathSync(parentDir);
453
- realPath = _path2.default.join(realParent, _path2.default.basename(resolved));
454
- } catch (e6) {
455
- realPath = resolved;
456
- }
457
- }
519
+ const realPath = this.resolveRealPathOrAncestor(resolved);
458
520
  const allAllowedRoots = [this.workspaceRoot, ...this.additionalDirs];
459
521
  for (const allowedRoot of allAllowedRoots) {
460
522
  let realRoot;
461
523
  try {
462
524
  realRoot = _fsextra2.default.realpathSync(allowedRoot);
463
- } catch (e7) {
525
+ } catch (e6) {
464
526
  realRoot = allowedRoot;
465
527
  }
466
528
  const rootWithSep = realRoot.endsWith(_path2.default.sep) ? realRoot : `${realRoot}${_path2.default.sep}`;
@@ -471,6 +533,21 @@ var FileActionManager = class {
471
533
  const allowedDirsList = allAllowedRoots.join(", ");
472
534
  throw new Error(`Path ${target} escapes the allowed directories: ${allowedDirsList}`);
473
535
  }
536
+ resolveRealPathOrAncestor(resolvedPath) {
537
+ let probe = resolvedPath;
538
+ while (true) {
539
+ try {
540
+ const realProbe = _fsextra2.default.realpathSync(probe);
541
+ return probe === resolvedPath ? realProbe : _path2.default.join(realProbe, _path2.default.relative(probe, resolvedPath));
542
+ } catch (e7) {
543
+ const parent = _path2.default.dirname(probe);
544
+ if (parent === probe) {
545
+ return resolvedPath;
546
+ }
547
+ probe = parent;
548
+ }
549
+ }
550
+ }
474
551
  walkFallback(query, baseDir) {
475
552
  const hits = [];
476
553
  const stack = [baseDir];
@@ -590,7 +667,7 @@ var FileActionManager = class {
590
667
  return `${hit.file}:${hit.line}
591
668
  ${snippet.join("\n")}`;
592
669
  }
593
- };
670
+ }, _class);
594
671
 
595
672
 
596
673
 
@@ -1,21 +1,21 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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; }
2
2
 
3
- var _chunkY45G6ZO5cjs = require('./chunk-Y45G6ZO5.cjs');
3
+ var _chunkCO2AADYUcjs = require('./chunk-CO2AADYU.cjs');
4
4
 
5
5
 
6
- var _chunkOLSBBZW6cjs = require('./chunk-OLSBBZW6.cjs');
6
+ var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
7
7
 
8
8
 
9
- var _chunkCB4E2T5Ncjs = require('./chunk-CB4E2T5N.cjs');
9
+ var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
10
10
 
11
11
 
12
- var _chunk7BTSG4MEcjs = require('./chunk-7BTSG4ME.cjs');
12
+ var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
13
13
 
14
14
  // src/commands/logout.ts
15
15
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
16
16
  var metadata = {
17
17
  command: "/logout",
18
- description: _chunk7BTSG4MEcjs.t.call(void 0, "commands.logout.description"),
18
+ description: _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.logout.description"),
19
19
  implemented: true
20
20
  };
21
21
  async function logout(ctx) {
@@ -26,31 +26,35 @@ async function logout(ctx) {
26
26
  return null;
27
27
  }
28
28
  const userName = _optionalChain([config, 'access', _3 => _3.auth, 'access', _4 => _4.user, 'optionalAccess', _5 => _5.name]) || _optionalChain([config, 'access', _6 => _6.auth, 'access', _7 => _7.user, 'optionalAccess', _8 => _8.email]) || "user";
29
- const result = await _chunkOLSBBZW6cjs.safePrompt.call(void 0, {
30
- type: "confirm",
31
- name: "confirm",
32
- message: `Log out from ${_chalk2.default.cyan(userName)}?`,
33
- initial: true
29
+ const selected = await _chunkCK4HAHVYcjs.showModal.call(void 0, {
30
+ title: `Log out from ${_chalk2.default.cyan(userName)}?`,
31
+ options: [
32
+ { label: "Yes", value: "yes" },
33
+ { label: "No", value: "no" }
34
+ ]
34
35
  });
35
- if (!result || !result.confirm) {
36
- console.log(_chalk2.default.gray(_chunk7BTSG4MEcjs.t.call(void 0, "commands.logout.cancelled")));
36
+ if (!selected || selected.value === "no") {
37
+ console.log(_chalk2.default.gray(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.logout.cancelled")));
37
38
  return null;
38
39
  }
39
- const authClient = _chunkY45G6ZO5cjs.getAuthClient.call(void 0, );
40
+ const authClient = _chunkCO2AADYUcjs.getAuthClient.call(void 0, );
40
41
  try {
41
42
  await authClient.logout(config.auth.token);
42
43
  } catch (e) {
43
44
  }
45
+ if (ctx.currentSession) {
46
+ await ctx.currentSession.save();
47
+ }
44
48
  const updatedConfig = {
45
49
  ...config,
46
50
  auth: void 0
47
51
  };
48
- await _chunkCB4E2T5Ncjs.saveConfig.call(void 0, updatedConfig);
52
+ await _chunkX5P6QQOBcjs.saveConfig.call(void 0, updatedConfig);
49
53
  console.log();
50
- console.log(_chalk2.default.green(_chunk7BTSG4MEcjs.t.call(void 0, "commands.logout.success")));
54
+ console.log(_chalk2.default.green(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.logout.success")));
51
55
  console.log(_chalk2.default.gray("Your local session has been cleared."));
52
56
  console.log();
53
- return null;
57
+ process.exit(0);
54
58
  }
55
59
 
56
60
 
@@ -0,0 +1,71 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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/session/chatLog.ts
2
+ function decodeJsonStringLiteral(value) {
3
+ try {
4
+ return JSON.parse(`"${value}"`);
5
+ } catch (e) {
6
+ return value;
7
+ }
8
+ }
9
+ function extractJsonStringField(raw, field) {
10
+ const match = raw.match(new RegExp(`"${field}"\\s*:\\s*"((?:\\\\.|[^"\\\\])*)"`, "s"));
11
+ return _optionalChain([match, 'optionalAccess', _ => _[1]]) ? decodeJsonStringLiteral(match[1]) : null;
12
+ }
13
+ function getAssistantChatLogContent(content) {
14
+ const trimmed = content.trim();
15
+ if (!trimmed) {
16
+ return null;
17
+ }
18
+ try {
19
+ const parsed = JSON.parse(trimmed);
20
+ for (const field of ["finalResponse", "response", "content", "message"]) {
21
+ const value = parsed[field];
22
+ if (typeof value === "string" && value.trim()) {
23
+ return value.trim();
24
+ }
25
+ }
26
+ return null;
27
+ } catch (e2) {
28
+ const finalResponse = _nullishCoalesce(extractJsonStringField(trimmed, "finalResponse"), () => ( extractJsonStringField(trimmed, "response")));
29
+ if (_optionalChain([finalResponse, 'optionalAccess', _2 => _2.trim, 'call', _3 => _3()])) {
30
+ return finalResponse.trim();
31
+ }
32
+ if (trimmed.startsWith("{") || trimmed.includes('"thought"')) {
33
+ return null;
34
+ }
35
+ return trimmed;
36
+ }
37
+ }
38
+ function buildSessionChatLog(messages) {
39
+ const chatMessages = [];
40
+ for (const message of messages) {
41
+ if (message.role === "user") {
42
+ const content = message.content.trim();
43
+ if (content) {
44
+ chatMessages.push({ role: "user", content });
45
+ }
46
+ continue;
47
+ }
48
+ if (message.role === "assistant") {
49
+ const content = getAssistantChatLogContent(message.content);
50
+ if (content) {
51
+ chatMessages.push({ role: "assistant", content });
52
+ }
53
+ }
54
+ }
55
+ return chatMessages;
56
+ }
57
+ function formatChatLogPreview(content, maxLength = 100) {
58
+ const singleLine = content.replace(/\n/g, " ").replace(/\s+/g, " ").trim();
59
+ return singleLine.length > maxLength ? `${singleLine.slice(0, maxLength)}...` : singleLine;
60
+ }
61
+
62
+
63
+
64
+
65
+
66
+ exports.getAssistantChatLogContent = getAssistantChatLogContent; exports.buildSessionChatLog = buildSessionChatLog; exports.formatChatLogPreview = formatChatLogPreview;
67
+ /**
68
+ * @license
69
+ * Copyright 2026 Autohand AI LLC
70
+ * SPDX-License-Identifier: Apache-2.0
71
+ */