autohand-cli 0.9.0 → 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 (414) hide show
  1. package/README.md +20 -2
  2. package/dist/{AgentRegistry-XPWSVO3Q.js → AgentRegistry-GOV7FN2O.js} +2 -2
  3. package/dist/AgentRegistry-J2C6JBZ3.cjs +10 -0
  4. package/dist/CommunitySkillsCache-22BB3J6H.cjs +8 -0
  5. package/dist/{CommunitySkillsCache-ZEQWP6YM.js → CommunitySkillsCache-ZACDPD4J.js} +2 -2
  6. package/dist/{HookManager-CWLTFKWO.js → HookManager-2S6AHOC3.js} +1 -1
  7. package/dist/{HookManager-TMAJQU4S.cjs → HookManager-TVEQI5ZU.cjs} +2 -2
  8. package/dist/{ImportWizard-QBKQEXDW.js → ImportWizard-AEBMAKXE.js} +4 -4
  9. package/dist/{ImportWizard-MQXEED2U.cjs → ImportWizard-AF2XL6DS.cjs} +13 -13
  10. package/dist/LearnAdvisor-KKEQ5QCV.js +9 -0
  11. package/dist/LearnAdvisor-Q7RAYLPF.cjs +9 -0
  12. package/dist/MemoryManager-PMNAEZMB.cjs +8 -0
  13. package/dist/{MemoryManager-WJMLPWGU.js → MemoryManager-QZRLTUB5.js} +2 -2
  14. package/dist/NVIDIAProvider-C3FWQOBZ.cjs +14 -0
  15. package/dist/{NVIDIAProvider-2HR737UE.js → NVIDIAProvider-SJPY3ONR.js} +1 -1
  16. package/dist/{PermissionManager-KMYILJ4Z.js → PermissionManager-MT7KBNNR.js} +3 -3
  17. package/dist/PermissionManager-URCNP5EC.cjs +11 -0
  18. package/dist/ProviderFactory-56N3ECE4.cjs +12 -0
  19. package/dist/{ProviderFactory-HFPRVQ25.js → ProviderFactory-RB4RVAF6.js} +3 -2
  20. package/dist/SessionManager-2IZGWASQ.cjs +10 -0
  21. package/dist/{SessionManager-PNBTJJTQ.js → SessionManager-554PHVPC.js} +2 -2
  22. package/dist/SkillsRegistry-GMRVONOQ.cjs +9 -0
  23. package/dist/{SkillsRegistry-4RRD5GMX.js → SkillsRegistry-NHHMIUYJ.js} +2 -2
  24. package/dist/SubAgent-4GOR2FIJ.js +13 -0
  25. package/dist/SubAgent-ZJMDH4FI.cjs +13 -0
  26. package/dist/{SyncApiClient-LRPFNCKJ.js → SyncApiClient-G3FM65IV.js} +1 -1
  27. package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
  28. package/dist/{about-BW3PDZUU.js → about-3USFSGOH.js} +5 -4
  29. package/dist/about-QR52U5DD.cjs +15 -0
  30. package/dist/{acp-VHEL7BOW.js → acp-5Y2W6OZP.js} +129 -90
  31. package/dist/{acp-EOETGAHC.cjs → acp-GSYE75OB.cjs} +135 -96
  32. package/dist/actionExecutor-KHUU3Z3Q.cjs +28 -0
  33. package/dist/{actionExecutor-33I47NZS.js → actionExecutor-PLQJZLZV.js} +12 -8
  34. package/dist/add-dir-BTAD5OZS.cjs +11 -0
  35. package/dist/{add-dir-VFX7QT4E.js → add-dir-HCERJDBR.js} +2 -2
  36. package/dist/agent-B3EVT7NN.cjs +126 -0
  37. package/dist/agent-SATQ3WZ3.js +126 -0
  38. package/dist/agents-44CRJGM7.cjs +18 -0
  39. package/dist/agents-NN4ZAJ7R.js +18 -0
  40. package/dist/agents-new-6D6G4QS6.cjs +17 -0
  41. package/dist/agents-new-7GAQ25EK.js +17 -0
  42. package/dist/{autoSkill-EFMK6WU6.js → autoSkill-66PKCYTW.js} +2 -2
  43. package/dist/autoSkill-VQLGBELN.cjs +20 -0
  44. package/dist/automode-45DWV4TN.cjs +10 -0
  45. package/dist/{automode-BMYSRM34.js → automode-BUF3VGXU.js} +2 -2
  46. package/dist/chrome-Q2U73HZB.cjs +50 -0
  47. package/dist/chrome-Q54OALOK.cjs +21 -0
  48. package/dist/{chrome-NHJ44WUN.js → chrome-Y3T7EIHG.js} +2 -2
  49. package/dist/chrome-ZNJ46OYW.js +21 -0
  50. package/dist/{chunk-D2OSPLYC.cjs → chunk-22SCR3EV.cjs} +2 -2
  51. package/dist/chunk-26G7YGOW.js +367 -0
  52. package/dist/{chunk-75EDROHL.cjs → chunk-2ESQR35E.cjs} +10 -10
  53. package/dist/{chunk-HKYZSUQ5.js → chunk-2IW5YFJ4.js} +4 -4
  54. package/dist/{chunk-JP3YHTQ2.cjs → chunk-3ICORF7M.cjs} +4 -4
  55. package/dist/{chunk-4256YRCO.cjs → chunk-3UC6DMFI.cjs} +30 -17
  56. package/dist/{chunk-6GUODJKM.cjs → chunk-3UHRCHKB.cjs} +23 -23
  57. package/dist/{chunk-HXJEGMGB.js → chunk-3ZOOH44N.js} +2 -2
  58. package/dist/{chunk-7RFJB75Y.js → chunk-44ZWOBTI.js} +9 -9
  59. package/dist/{chunk-CCVMREXI.js → chunk-4567QNRB.js} +32 -8
  60. package/dist/chunk-45CHNQM6.cjs +517 -0
  61. package/dist/{chunk-6NVAK6CK.js → chunk-4E7SHPNQ.js} +2 -2
  62. package/dist/{chunk-XGMI6IYB.cjs → chunk-4XFHP2SN.cjs} +7 -7
  63. package/dist/chunk-4XVLNOFA.js +360 -0
  64. package/dist/{chunk-D6GZBSOX.js → chunk-575PXZX7.js} +1 -1
  65. package/dist/{chunk-HJIXWGQZ.js → chunk-5A7ZL64N.js} +1 -1
  66. package/dist/{chunk-ROLA6EFO.cjs → chunk-5GCQ5UMV.cjs} +14 -14
  67. package/dist/{chunk-3DDL2E55.cjs → chunk-5SFV2NCY.cjs} +10 -10
  68. package/dist/chunk-5ZNYX4VH.cjs +71 -0
  69. package/dist/{chunk-PDHT7LQS.cjs → chunk-63ANVAOJ.cjs} +3 -3
  70. package/dist/{chunk-GWO66KBI.js → chunk-65LRPW5W.js} +1 -1
  71. package/dist/{chunk-IAGCRVJ3.js → chunk-6AYJCDTA.js} +14 -9
  72. package/dist/{chunk-A7HHCIDQ.js → chunk-6HF6XSCC.js} +2 -2
  73. package/dist/{chunk-47PHDKNW.cjs → chunk-6JWCGQJU.cjs} +6 -6
  74. package/dist/chunk-6OECOAK5.cjs +360 -0
  75. package/dist/{chunk-RBHANOYY.js → chunk-7DJJGKM6.js} +47 -3
  76. package/dist/{chunk-37M5UM6I.js → chunk-7IRQ7JEH.js} +1 -1
  77. package/dist/chunk-7MY4JHER.js +27 -0
  78. package/dist/{chunk-ZR46OJNZ.js → chunk-7PJKTSRN.js} +3 -3
  79. package/dist/{chunk-AC7DZ6SK.cjs → chunk-7PT646AL.cjs} +3 -3
  80. package/dist/{chunk-TKKN34TV.js → chunk-7WAUCLLQ.js} +3 -3
  81. package/dist/{chunk-DPSIGY6L.cjs → chunk-7XTUL7ZD.cjs} +9 -9
  82. package/dist/{chunk-GBMDFWJX.cjs → chunk-AE2ILW25.cjs} +13 -13
  83. package/dist/{chunk-BQ22N3TX.cjs → chunk-AOKXYGBQ.cjs} +27 -22
  84. package/dist/{chunk-REMGR23V.cjs → chunk-AQ5PVHOC.cjs} +7 -2
  85. package/dist/{chunk-AUYSIEVV.cjs → chunk-AZ47LKD5.cjs} +3 -3
  86. package/dist/chunk-B76FJKEJ.cjs +184 -0
  87. package/dist/{chunk-XV2HXRHX.js → chunk-BP37FVBM.js} +3 -3
  88. package/dist/{chunk-JIMSII7R.js → chunk-C46B72VK.js} +57 -10
  89. package/dist/{chunk-L4F7SUYL.js → chunk-C5QIQQ37.js} +3 -3
  90. package/dist/{chunk-AUFNACED.js → chunk-CCIDL4SA.js} +7094 -6126
  91. package/dist/{chunk-OV3PVUYN.js → chunk-CECH6QQP.js} +11 -11
  92. package/dist/{chunk-CH2J4PVE.cjs → chunk-CK4HAHVY.cjs} +13 -13
  93. package/dist/{chunk-Q2IL4DDI.cjs → chunk-CO2AADYU.cjs} +19 -14
  94. package/dist/{chunk-7JLT2VNW.cjs → chunk-CRTCZ4WL.cjs} +7533 -6565
  95. package/dist/{chunk-5JFTY3VU.js → chunk-CSTUTDTH.js} +2 -1
  96. package/dist/{chunk-DIZTWFVR.cjs → chunk-D546G7DA.cjs} +209 -55
  97. package/dist/{chunk-7HPWMALN.js → chunk-DGBPWODD.js} +1 -1
  98. package/dist/{chunk-RBZ7AFX7.cjs → chunk-DHUQZ53B.cjs} +2 -2
  99. package/dist/{chunk-U4C3HW6P.js → chunk-DNSD7DVJ.js} +2 -2
  100. package/dist/{chunk-SOLBYSLY.cjs → chunk-DSSCERHI.cjs} +2 -2
  101. package/dist/{chunk-OPNI6O7F.cjs → chunk-EA2MS25U.cjs} +4 -4
  102. package/dist/{chunk-E46DJH5S.js → chunk-EEHWALXA.js} +94 -3
  103. package/dist/{chunk-CFFE4VA3.js → chunk-EYHKL4QC.js} +1 -1
  104. package/dist/{chunk-FGT6KK6T.js → chunk-FBQJZKFX.js} +3 -3
  105. package/dist/{chunk-I24CWKKK.js → chunk-FFHSCM5M.js} +3 -3
  106. package/dist/{chunk-TXPSTCG7.cjs → chunk-GAOPJ5S3.cjs} +8 -8
  107. package/dist/{chunk-ARBEHFCG.js → chunk-GSDV75A5.js} +1 -1
  108. package/dist/{chunk-Z3XSSF7B.js → chunk-H426KOGY.js} +1 -1
  109. package/dist/{chunk-WRTXCQ3V.cjs → chunk-HC2Q6A3E.cjs} +858 -182
  110. package/dist/{chunk-IGMPWJ2I.cjs → chunk-HG3ZASBH.cjs} +8 -8
  111. package/dist/chunk-HK5A54AV.cjs +280 -0
  112. package/dist/{chunk-2HOLOHVK.js → chunk-HSWWM6AM.js} +136 -15
  113. package/dist/chunk-HTU4W3GB.js +183 -0
  114. package/dist/{chunk-5CMYEM3R.cjs → chunk-HVCIB4SW.cjs} +3 -3
  115. package/dist/chunk-HXHE2KAO.js +385 -0
  116. package/dist/{chunk-NMQ47RCG.js → chunk-HZWU6IO3.js} +5 -2
  117. package/dist/{chunk-ZPD2AO3U.js → chunk-I2ZK3AOD.js} +2 -2
  118. package/dist/{chunk-3UT7R3XV.js → chunk-IEPLQ47J.js} +61 -5
  119. package/dist/{chunk-3PXKRVCW.js → chunk-JB3JCYBJ.js} +7 -2
  120. package/dist/chunk-JCUHCH37.cjs +247 -0
  121. package/dist/{chunk-VBOFPU5M.cjs → chunk-JM3ZTQUK.cjs} +13 -9
  122. package/dist/{chunk-WZV6UVPY.js → chunk-JMJRFSNJ.js} +1 -1
  123. package/dist/{chunk-QKP772OZ.js → chunk-JPFRI4L4.js} +756 -80
  124. package/dist/{chunk-MOJ7ADW4.cjs → chunk-JV5HVCHU.cjs} +2 -2
  125. package/dist/{chunk-LN7D3EJZ.js → chunk-KA2U6MY2.js} +4 -3
  126. package/dist/{chunk-E26KKI46.cjs → chunk-KASXKDF2.cjs} +3 -1
  127. package/dist/chunk-KJ26T7GM.cjs +367 -0
  128. package/dist/chunk-KM7R5YPS.cjs +385 -0
  129. package/dist/{chunk-5F6ZKSHO.js → chunk-KMP6Y3LJ.js} +1 -1
  130. package/dist/chunk-KWXGDSYT.js +184 -0
  131. package/dist/{chunk-LDJQ5QHG.cjs → chunk-L46OUKW5.cjs} +15 -15
  132. package/dist/{chunk-Z4LIPMPM.js → chunk-L6OH44HL.js} +13 -9
  133. package/dist/chunk-LANGD5CO.js +280 -0
  134. package/dist/{chunk-CBFH2J3O.js → chunk-LEZEWKPA.js} +150 -7
  135. package/dist/{chunk-FQAVGSPW.js → chunk-M5DK524Z.js} +2 -2
  136. package/dist/{chunk-7LWQCE4Y.cjs → chunk-M7B7RRBK.cjs} +72 -25
  137. package/dist/{chunk-BWF4VDYE.js → chunk-MANJ67D3.js} +2 -2
  138. package/dist/{chunk-PHJO5YAL.cjs → chunk-MGNXABSU.cjs} +9 -9
  139. package/dist/{chunk-62RTC3XX.js → chunk-MMKZSJUN.js} +1 -1
  140. package/dist/{chunk-3KLSNNRW.cjs → chunk-MQQH4XQH.cjs} +4 -4
  141. package/dist/{chunk-HS4USDND.cjs → chunk-MZN6JBRZ.cjs} +2 -2
  142. package/dist/{chunk-AT7OWLY5.js → chunk-NB6M6ESM.js} +1 -1
  143. package/dist/{chunk-TQ33WBY5.cjs → chunk-NHWHEW7M.cjs} +2 -1
  144. package/dist/chunk-NQZH5CR2.cjs +468 -0
  145. package/dist/{chunk-2CGE7ZV3.cjs → chunk-NV6LCD2I.cjs} +119 -28
  146. package/dist/chunk-NVATU4V6.cjs +44 -0
  147. package/dist/{chunk-DLP436GI.js → chunk-NZ3ZWLUW.js} +2 -2
  148. package/dist/{chunk-IEXKKKOF.cjs → chunk-NZ7GCK7Y.cjs} +23 -23
  149. package/dist/{chunk-MQESBFBZ.cjs → chunk-NZQFKXM3.cjs} +21 -20
  150. package/dist/{chunk-QQ7PANOP.js → chunk-O5GI6SR3.js} +1 -1
  151. package/dist/{chunk-J5ADZN6V.cjs → chunk-OCATAKXV.cjs} +20 -20
  152. package/dist/{chunk-JYKPWK5O.js → chunk-OIGYWOL6.js} +1 -1
  153. package/dist/{chunk-O6TQP7U7.cjs → chunk-ONVYXTUT.cjs} +3 -3
  154. package/dist/{chunk-MPULXVC4.cjs → chunk-OV3T5MUH.cjs} +11 -11
  155. package/dist/{chunk-DMRXF5DU.js → chunk-P4FUTSVK.js} +3 -3
  156. package/dist/{chunk-MXVIDIC6.cjs → chunk-P6SLT2F4.cjs} +2 -2
  157. package/dist/{chunk-BL2UC7HC.js → chunk-PGFLPURU.js} +1 -1
  158. package/dist/{chunk-CWINVFRI.cjs → chunk-PIXQ2AVM.cjs} +17 -17
  159. package/dist/{chunk-MO4KP6XS.cjs → chunk-PNIAIOMZ.cjs} +5 -5
  160. package/dist/{chunk-HQWQZML5.cjs → chunk-PQBYFEBL.cjs} +2 -2
  161. package/dist/{chunk-UGFVM77J.cjs → chunk-PSAH4ZQB.cjs} +2 -2
  162. package/dist/{chunk-Y3M2DABP.js → chunk-PTTZI4QZ.js} +4 -4
  163. package/dist/{chunk-Q6AC3PHY.cjs → chunk-PY73W5MQ.cjs} +4 -4
  164. package/dist/{chunk-B5CGDNMR.js → chunk-PZZMIYII.js} +3 -3
  165. package/dist/{chunk-VRMZO6TB.js → chunk-Q3BS6FPM.js} +7 -6
  166. package/dist/chunk-QBYGMMDD.js +517 -0
  167. package/dist/{chunk-3LJJG5YY.cjs → chunk-QLZOMZO5.cjs} +4 -3
  168. package/dist/{chunk-3S563FNF.cjs → chunk-QQ64HEHP.cjs} +31 -31
  169. package/dist/{chunk-TBOLJDUG.js → chunk-QRQF3556.js} +12 -7
  170. package/dist/{chunk-ZZ63NW7A.cjs → chunk-RBXBH6EB.cjs} +17 -17
  171. package/dist/{chunk-PUD76XQT.cjs → chunk-RFUKZIJF.cjs} +5 -5
  172. package/dist/chunk-RS2E32YB.js +71 -0
  173. package/dist/{chunk-7MU7LWF3.cjs → chunk-S5JNQIGL.cjs} +5 -5
  174. package/dist/{chunk-BFQDQRDE.js → chunk-S5QKRA2V.js} +2 -2
  175. package/dist/{chunk-IKUMVBCW.cjs → chunk-SD3NTC7D.cjs} +48 -4
  176. package/dist/{chunk-PQLKJCIE.js → chunk-SDLY4X3G.js} +2 -2
  177. package/dist/{chunk-VKBIE6I6.js → chunk-SFFEKZGC.js} +2 -2
  178. package/dist/{chunk-TWQDAUZU.js → chunk-SHRLFX6F.js} +3 -1
  179. package/dist/{chunk-UEIXJG45.js → chunk-SNDDZG5H.js} +88 -72
  180. package/dist/{chunk-AOKCI722.cjs → chunk-SOVR7S3T.cjs} +2 -2
  181. package/dist/{chunk-M4KNC5BQ.js → chunk-SPQ7QIQ6.js} +1 -1
  182. package/dist/{chunk-QCHIDZBA.js → chunk-SRMGWMQO.js} +1 -1
  183. package/dist/{chunk-ZHJ7JGME.cjs → chunk-SVVP4UUZ.cjs} +11 -11
  184. package/dist/{chunk-CHI52KFR.cjs → chunk-SY2P3Z5W.cjs} +150 -7
  185. package/dist/chunk-SZD45IDG.js +468 -0
  186. package/dist/{chunk-VGEV44V2.cjs → chunk-TE4SYTWR.cjs} +189 -28
  187. package/dist/{chunk-YV63VW4K.js → chunk-TR6NECEZ.js} +1 -1
  188. package/dist/{chunk-GZ6DV2UG.js → chunk-TYBPTKFT.js} +1 -1
  189. package/dist/{chunk-5VHP6HDQ.js → chunk-U2QUMKCB.js} +1 -1
  190. package/dist/{chunk-6HH236FV.cjs → chunk-U6PLSPMD.cjs} +2 -2
  191. package/dist/{chunk-EZJHLOWP.js → chunk-UWZ4G3SQ.js} +20 -7
  192. package/dist/{chunk-UXLW45ZE.cjs → chunk-V3SZLWEQ.cjs} +25 -90
  193. package/dist/chunk-V4HGZSKQ.cjs +183 -0
  194. package/dist/{chunk-2QL6MNXG.js → chunk-V5ELP2XE.js} +6 -6
  195. package/dist/{chunk-N6O3XUZ2.cjs → chunk-VKOXFT4L.cjs} +2 -2
  196. package/dist/{chunk-J2K57QM7.cjs → chunk-VLGGMQUN.cjs} +6 -6
  197. package/dist/{chunk-HSCUPEA4.cjs → chunk-VQHSYAPZ.cjs} +11 -11
  198. package/dist/{chunk-DEQVRSV5.cjs → chunk-W5QLA6WP.cjs} +8 -8
  199. package/dist/chunk-WJYFLQ7G.cjs +27 -0
  200. package/dist/{chunk-MX75JYIY.js → chunk-WNJXIACY.js} +3 -3
  201. package/dist/{chunk-OHWMWKJQ.js → chunk-WPE2XHVX.js} +1 -1
  202. package/dist/{chunk-O64I2GYI.js → chunk-X3TI5TJJ.js} +1 -1
  203. package/dist/{chunk-46C73ZKK.cjs → chunk-X5P6QQOB.cjs} +66 -10
  204. package/dist/{chunk-TJNBASFD.cjs → chunk-X7XMITIL.cjs} +8 -8
  205. package/dist/{chunk-E6GFD7VR.cjs → chunk-XNIMSVS6.cjs} +11 -11
  206. package/dist/{chunk-WGLBC5AY.cjs → chunk-XW3XCK4E.cjs} +4 -4
  207. package/dist/{chunk-OM24WXEE.js → chunk-XZVDYC5U.js} +1 -1
  208. package/dist/{chunk-UWFG2R2I.cjs → chunk-Y5BDE24P.cjs} +33 -9
  209. package/dist/{chunk-GGLKUENP.js → chunk-YC5OBZQU.js} +161 -7
  210. package/dist/{chunk-JJ4KA7HK.cjs → chunk-YISPVAXO.cjs} +371 -250
  211. package/dist/{chunk-SWCQM52V.js → chunk-YQDI753V.js} +4 -4
  212. package/dist/{chunk-KNTUI4TZ.cjs → chunk-YWH55BWK.cjs} +9 -6
  213. package/dist/{chunk-ACDQGA4Z.js → chunk-YXM6SA7P.js} +7 -72
  214. package/dist/{chunk-3GUEUCZK.js → chunk-ZNGRLCFQ.js} +2 -0
  215. package/dist/{chunk-LQBONA55.cjs → chunk-ZNYZB7XY.cjs} +2 -0
  216. package/dist/{chunk-XIVFAD2L.js → chunk-ZPLCAXJW.js} +172 -11
  217. package/dist/chunk-ZUYYHKQA.js +44 -0
  218. package/dist/clear-QJXU25IF.cjs +12 -0
  219. package/dist/{clear-OFLFQ3MR.js → clear-Y5TO3RZA.js} +2 -2
  220. package/dist/communityInstaller-LXMVKVAV.cjs +22 -0
  221. package/dist/{communityInstaller-COB2KTOW.js → communityInstaller-RVL4STPS.js} +6 -6
  222. package/dist/completion-JX4T2ONW.cjs +17 -0
  223. package/dist/{completion-PT4VM2H2.js → completion-SE3XYG74.js} +5 -5
  224. package/dist/config-3224PRW4.cjs +21 -0
  225. package/dist/{config-R4O7GBTY.js → config-7KPHKFTP.js} +4 -3
  226. package/dist/{constants-HVCHVQAF.js → constants-EJFAWJQI.js} +1 -1
  227. package/dist/constants-MCCGUU5F.cjs +21 -0
  228. package/dist/{export-3PK3VFCE.js → export-BJVIDZC4.js} +5 -5
  229. package/dist/export-KU4557HK.cjs +15 -0
  230. package/dist/feature-K3LG5IJP.cjs +14 -0
  231. package/dist/feature-V4JF5TNJ.js +14 -0
  232. package/dist/features-5OJTLKS7.js +23 -0
  233. package/dist/features-VCBJQXCX.cjs +23 -0
  234. package/dist/feedback-D4437VE4.js +18 -0
  235. package/dist/feedback-VZPEHGFY.cjs +18 -0
  236. package/dist/go-X4E6BCD6.js +12 -0
  237. package/dist/go-XREVFS5I.cjs +12 -0
  238. package/dist/goal-4M3J6JS2.cjs +16 -0
  239. package/dist/goal-EI66BV7W.js +16 -0
  240. package/dist/help-GGFS7WHY.cjs +12 -0
  241. package/dist/{help-X3OAZ3CY.js → help-MLIROWKM.js} +2 -2
  242. package/dist/{history-YKFPHBJN.js → history-GQJ6RZD6.js} +2 -2
  243. package/dist/history-J4LUIOSI.cjs +14 -0
  244. package/dist/hooks-FSRIUS6A.cjs +18 -0
  245. package/dist/{hooks-7TA4PIIB.js → hooks-PPFHCF7T.js} +6 -6
  246. package/dist/i18n-CI6VFXL5.cjs +33 -0
  247. package/dist/{i18n-2KBUU7XL.js → i18n-Q7UZJRPL.js} +1 -1
  248. package/dist/ide-BUSVE54P.js +15 -0
  249. package/dist/ide-YR27BPGM.cjs +15 -0
  250. package/dist/{import-4CHYLS4K.js → import-3VBKI6BN.js} +3 -3
  251. package/dist/{import-I7T4ZHYL.cjs → import-C7S6UJMW.cjs} +3 -3
  252. package/dist/import-DBK4OCDF.cjs +10 -0
  253. package/dist/{import-JWPYKXCZ.js → import-U47DXCA7.js} +2 -2
  254. package/dist/index.cjs +267 -170
  255. package/dist/index.d.cts +2 -0
  256. package/dist/index.d.ts +2 -0
  257. package/dist/index.js +165 -68
  258. package/dist/init-OXTYS72D.cjs +10 -0
  259. package/dist/{init-262MWZV4.js → init-Q2O4R42R.js} +2 -2
  260. package/dist/{inputPrompt-YGBHDUEP.js → inputPrompt-3CFZDUBH.js} +2 -2
  261. package/dist/inputPrompt-JMACL4EB.cjs +90 -0
  262. package/dist/language-EK3M6UBV.cjs +22 -0
  263. package/dist/language-Q3RUGGOW.js +22 -0
  264. package/dist/learn-3DSX7DYG.cjs +23 -0
  265. package/dist/learn-OPOH5L43.js +23 -0
  266. package/dist/login-GST7MWXJ.cjs +27 -0
  267. package/dist/login-Q7DZKAX4.js +27 -0
  268. package/dist/logout-2G7OUK7I.cjs +24 -0
  269. package/dist/logout-FNBBL2UI.js +24 -0
  270. package/dist/{mcp-5O6PUL4G.js → mcp-AH3MMUBU.js} +7 -6
  271. package/dist/mcp-DW7R63IB.cjs +21 -0
  272. package/dist/{mcp-install-6XWXLFVY.js → mcp-install-222PCKSW.js} +9 -8
  273. package/dist/{mcp-install-P6DHES7V.cjs → mcp-install-IA4ZS2SV.cjs} +14 -13
  274. package/dist/memory-6NX3DAIY.cjs +10 -0
  275. package/dist/{memory-Q54CESNM.js → memory-VB46T5H3.js} +2 -2
  276. package/dist/model-64NAELFS.cjs +10 -0
  277. package/dist/{model-6AJ77PJG.js → model-SJJG64AM.js} +2 -2
  278. package/dist/new-DU5SOOOY.cjs +12 -0
  279. package/dist/{new-ZXHEWC2S.js → new-ERZ5C6CN.js} +2 -2
  280. package/dist/onboarding-2U2BV2KE.cjs +36 -0
  281. package/dist/{onboarding-JYNMK6NI.js → onboarding-ZQXMPSMJ.js} +14 -13
  282. package/dist/{permissions-YHJMVA6L.js → permissions-7ACNFK7A.js} +2 -2
  283. package/dist/permissions-GSNNV7RJ.cjs +10 -0
  284. package/dist/{quit-GWTNHQSP.js → quit-WY6T267G.js} +2 -2
  285. package/dist/quit-XIRE2KRE.cjs +10 -0
  286. package/dist/{registry-34GL6BNJ.js → registry-4DXUDKJN.js} +1 -1
  287. package/dist/{registry-V24W7YK6.cjs → registry-UEO3ETZ7.cjs} +21 -21
  288. package/dist/resume-RQZ3WXBP.cjs +17 -0
  289. package/dist/resume-XSXZMDMD.js +17 -0
  290. package/dist/{rpc-S3DGW6KV.js → rpc-XH7QLN4H.js} +251 -107
  291. package/dist/{rpc-NPS3PU4O.cjs → rpc-YF54T7JU.cjs} +347 -203
  292. package/dist/search-VXXFGZWU.cjs +21 -0
  293. package/dist/search-YAWGX7P7.js +21 -0
  294. package/dist/{sessions-IYAXMK23.js → sessions-NJYHJOEL.js} +2 -2
  295. package/dist/sessions-OSG3UJEZ.cjs +10 -0
  296. package/dist/settings-SO2UIGWV.cjs +42 -0
  297. package/dist/{settings-55BNW6BF.js → settings-ZXUQH3DO.js} +17 -8
  298. package/dist/setup-KG7EGKF5.js +30 -0
  299. package/dist/setup-RSOPCQ57.cjs +30 -0
  300. package/dist/share-WFAGZ5PY.js +17 -0
  301. package/dist/share-ZU3SGACF.cjs +17 -0
  302. package/dist/skills-KBVAQAD2.cjs +29 -0
  303. package/dist/{skills-VWOMV3CR.js → skills-NBTNDVAY.js} +8 -8
  304. package/dist/{skills-MVIZNHT4.js → skills-OB6RDW7D.js} +9 -9
  305. package/dist/{skills-GGMZOVIE.cjs → skills-ZROBG3RZ.cjs} +10 -10
  306. package/dist/{skills-install-QBA5RCV6.js → skills-install-BHTIEMKH.js} +7 -7
  307. package/dist/{skills-install-VTAMCNNY.cjs → skills-install-ILX6QVEF.cjs} +15 -15
  308. package/dist/skills-new-B45VQ2PP.cjs +18 -0
  309. package/dist/skills-new-YMRP2HNO.js +18 -0
  310. package/dist/slashCommands-53VYIBJU.js +105 -0
  311. package/dist/slashCommands-BG2RGGZ6.cjs +105 -0
  312. package/dist/status-CQ2IUOVK.cjs +24 -0
  313. package/dist/status-E7IGNVPC.js +24 -0
  314. package/dist/{sync-7OKF6636.js → sync-7C25MOT2.js} +6 -5
  315. package/dist/{sync-7BILIQHP.js → sync-OCJN4ZSO.js} +3 -3
  316. package/dist/sync-XRP46IVG.cjs +40 -0
  317. package/dist/sync-ZMFVE7T4.cjs +22 -0
  318. package/dist/{teammate-J6PHGL23.cjs → teammate-D77B6QRT.cjs} +9 -8
  319. package/dist/{teammate-GZQSCIMS.js → teammate-EZCMHOIL.js} +8 -7
  320. package/dist/templates-ARG2VRWW.cjs +11 -0
  321. package/dist/templates-UGVZV3KJ.js +11 -0
  322. package/dist/theme-KKRDE6P7.cjs +22 -0
  323. package/dist/theme-XF7XIWBQ.js +22 -0
  324. package/dist/ui/questionModal.cjs +6 -6
  325. package/dist/ui/questionModal.js +5 -5
  326. package/dist/{undo-SZEHLX7X.js → undo-GNUTFXCW.js} +2 -2
  327. package/dist/undo-U4KN7QQM.cjs +10 -0
  328. package/dist/usage-QSTNSDAO.js +24 -0
  329. package/dist/usage-YDEMQBNQ.cjs +24 -0
  330. package/package.json +7 -2
  331. package/dist/AgentRegistry-EGBDIUAK.cjs +0 -10
  332. package/dist/CommunitySkillsCache-2OIUV227.cjs +0 -8
  333. package/dist/LearnAdvisor-46FG2XIP.js +0 -9
  334. package/dist/LearnAdvisor-XBRDNAGH.cjs +0 -9
  335. package/dist/MemoryManager-34L4YOKA.cjs +0 -8
  336. package/dist/NVIDIAProvider-MVTL62PR.cjs +0 -14
  337. package/dist/PermissionManager-5OOJ7FAT.cjs +0 -11
  338. package/dist/ProviderFactory-C3YPXTDD.cjs +0 -11
  339. package/dist/SessionManager-WAPTFMDO.cjs +0 -10
  340. package/dist/SkillsRegistry-7AJP74GJ.cjs +0 -9
  341. package/dist/SubAgent-FDIH3DXB.js +0 -11
  342. package/dist/SubAgent-HVL2ICVZ.cjs +0 -11
  343. package/dist/SyncApiClient-VMBOLQ6H.cjs +0 -11
  344. package/dist/about-FCAX37YC.cjs +0 -14
  345. package/dist/actionExecutor-4YBMR3YH.cjs +0 -24
  346. package/dist/add-dir-7SS6KSH5.cjs +0 -11
  347. package/dist/agent-DMRUFU4M.cjs +0 -116
  348. package/dist/agent-WCJEYQJT.js +0 -116
  349. package/dist/agents-CHROO3VU.cjs +0 -17
  350. package/dist/agents-UVDUL65K.js +0 -17
  351. package/dist/agents-new-AUBWSOXP.js +0 -17
  352. package/dist/agents-new-Y562WC47.cjs +0 -17
  353. package/dist/autoSkill-YOLLFTP2.cjs +0 -20
  354. package/dist/automode-DBLKTTKD.cjs +0 -10
  355. package/dist/chrome-ATC4OO5I.cjs +0 -20
  356. package/dist/chrome-O62WXV7F.js +0 -20
  357. package/dist/chrome-XHJLCO4M.cjs +0 -50
  358. package/dist/chunk-6XVVIY54.cjs +0 -256
  359. package/dist/chunk-AU6JAGZJ.cjs +0 -231
  360. package/dist/chunk-VDWJMWDF.js +0 -256
  361. package/dist/clear-33TWQ2ES.cjs +0 -12
  362. package/dist/communityInstaller-TWMGPSYM.cjs +0 -22
  363. package/dist/completion-IIZMHXYP.cjs +0 -17
  364. package/dist/config-KL6WU7R2.cjs +0 -20
  365. package/dist/constants-RLMJ5D5P.cjs +0 -21
  366. package/dist/export-WLGNWEMJ.cjs +0 -15
  367. package/dist/feedback-G635NCLJ.js +0 -18
  368. package/dist/feedback-LLMK3TZH.cjs +0 -18
  369. package/dist/help-BAXLP2M2.cjs +0 -12
  370. package/dist/history-6HOJSEMT.cjs +0 -14
  371. package/dist/hooks-XVFU67T2.cjs +0 -18
  372. package/dist/i18n-MUJMKTFM.cjs +0 -33
  373. package/dist/ide-CCQ33PGC.cjs +0 -15
  374. package/dist/ide-VLVFBZ5F.js +0 -15
  375. package/dist/import-J46F54JY.cjs +0 -10
  376. package/dist/init-EE5Y7RBL.cjs +0 -10
  377. package/dist/inputPrompt-IIFKCX5Q.cjs +0 -90
  378. package/dist/language-CVLPB7OV.js +0 -21
  379. package/dist/language-ZTWFHUSV.cjs +0 -21
  380. package/dist/learn-PON7I5QS.js +0 -23
  381. package/dist/learn-XLRSVNA3.cjs +0 -23
  382. package/dist/login-223QTGBG.cjs +0 -26
  383. package/dist/login-6IKTBUBY.js +0 -26
  384. package/dist/logout-RN2AG6SI.js +0 -23
  385. package/dist/logout-U3M4FFX7.cjs +0 -23
  386. package/dist/mcp-NUQ76QQB.cjs +0 -20
  387. package/dist/memory-CYMDQ2YC.cjs +0 -10
  388. package/dist/model-IDRCKDML.cjs +0 -10
  389. package/dist/new-7LEWOUF2.cjs +0 -12
  390. package/dist/onboarding-FXX7YHSJ.cjs +0 -35
  391. package/dist/permissions-YBNSANIA.cjs +0 -10
  392. package/dist/quit-B43SJ6E4.cjs +0 -10
  393. package/dist/resume-DYVOQN5L.cjs +0 -16
  394. package/dist/resume-M25UQKOX.js +0 -16
  395. package/dist/search-CPX4PWHP.js +0 -20
  396. package/dist/search-VUF3M4N3.cjs +0 -20
  397. package/dist/sessions-JODKER5D.cjs +0 -10
  398. package/dist/settings-BKTS7OMC.cjs +0 -33
  399. package/dist/setup-IRC5HQG2.js +0 -29
  400. package/dist/setup-MMQ7TWOP.cjs +0 -29
  401. package/dist/share-6JRQECAH.cjs +0 -17
  402. package/dist/share-YM5MJKMO.js +0 -17
  403. package/dist/skills-LWSOKOSH.cjs +0 -29
  404. package/dist/skills-new-GPL46YV2.js +0 -18
  405. package/dist/skills-new-L5BEZN5V.cjs +0 -18
  406. package/dist/slashCommands-FBPCIWM5.cjs +0 -95
  407. package/dist/slashCommands-FCWY5DXW.js +0 -95
  408. package/dist/status-3B5SDZPL.js +0 -17
  409. package/dist/status-TTGRF6NC.cjs +0 -17
  410. package/dist/sync-77CXVVTK.cjs +0 -21
  411. package/dist/sync-EH4K5U3N.cjs +0 -40
  412. package/dist/theme-64BYGJ57.cjs +0 -21
  413. package/dist/theme-YJE6HEON.js +0 -21
  414. package/dist/undo-PRTEGL2J.cjs +0 -10
@@ -0,0 +1,360 @@
1
+ import {
2
+ getAssistantChatLogContent
3
+ } from "./chunk-RS2E32YB.js";
4
+ import {
5
+ package_default
6
+ } from "./chunk-JB3JCYBJ.js";
7
+ import {
8
+ AUTOHAND_FILES
9
+ } from "./chunk-SHRLFX6F.js";
10
+
11
+ // src/commands/go.ts
12
+ import os from "os";
13
+ import chalk from "chalk";
14
+ import QRCode from "qrcode";
15
+ import terminalLink from "terminal-link";
16
+
17
+ // src/mobile/MobileHandoffClient.ts
18
+ import crypto from "crypto";
19
+ import fs from "fs-extra";
20
+ import path from "path";
21
+ var DEFAULT_API_BASE_URL = "https://api.autohand.ai";
22
+ var DEFAULT_TIMEOUT_MS = 1e4;
23
+ function getMobileApiBaseUrl(config) {
24
+ return (config?.api?.baseUrl || process.env.AUTOHAND_API_URL || DEFAULT_API_BASE_URL).replace(/\/+$/, "");
25
+ }
26
+ var MobileHandoffClient = class {
27
+ baseUrl;
28
+ timeoutMs;
29
+ constructor(config = {}) {
30
+ this.baseUrl = (config.baseUrl || DEFAULT_API_BASE_URL).replace(/\/+$/, "");
31
+ this.timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;
32
+ }
33
+ async getDeviceId() {
34
+ try {
35
+ await fs.ensureDir(path.dirname(AUTOHAND_FILES.deviceId));
36
+ if (await fs.pathExists(AUTOHAND_FILES.deviceId)) {
37
+ const existing = (await fs.readFile(AUTOHAND_FILES.deviceId, "utf8")).trim();
38
+ if (existing) return existing;
39
+ }
40
+ const next = crypto.randomUUID();
41
+ await fs.writeFile(AUTOHAND_FILES.deviceId, next);
42
+ return next;
43
+ } catch {
44
+ return crypto.randomUUID();
45
+ }
46
+ }
47
+ async registerDevice(token, payload) {
48
+ await this.request("/v1/devices/register", token, {
49
+ method: "POST",
50
+ body: JSON.stringify({
51
+ deviceId: payload.deviceId,
52
+ clientType: payload.clientType ?? "cli",
53
+ agentName: payload.agentName,
54
+ metadata: payload.metadata
55
+ }),
56
+ headers: {
57
+ "X-Device-ID": payload.deviceId
58
+ }
59
+ });
60
+ }
61
+ async createPairing(token, payload) {
62
+ const data = await this.request(
63
+ "/v1/mobile/pairings",
64
+ token,
65
+ {
66
+ method: "POST",
67
+ body: JSON.stringify(payload),
68
+ headers: {
69
+ "X-CLI-Version": package_default.version,
70
+ "X-Device-ID": payload.deviceId
71
+ }
72
+ }
73
+ );
74
+ if (data.success !== true || !data.pairing?.pairingUrl) {
75
+ throw new Error(data.error || "Invalid mobile pairing response");
76
+ }
77
+ return data.pairing;
78
+ }
79
+ async sendRelayHeartbeat(token, payload) {
80
+ await this.request(`/v1/mobile/sessions/${encodeURIComponent(payload.sessionId)}/heartbeat`, token, {
81
+ method: "POST",
82
+ body: JSON.stringify({
83
+ deviceId: payload.deviceId,
84
+ pairingId: payload.pairingId,
85
+ mode: payload.mode
86
+ }),
87
+ headers: {
88
+ "X-Device-ID": payload.deviceId
89
+ }
90
+ });
91
+ }
92
+ async claimWork(token, deviceId) {
93
+ const data = await this.request(
94
+ "/v1/work/claim",
95
+ token,
96
+ {
97
+ method: "POST",
98
+ body: JSON.stringify({ deviceId }),
99
+ headers: {
100
+ "X-Device-ID": deviceId
101
+ },
102
+ allowNotFound: true
103
+ }
104
+ );
105
+ if (data.success === false && data.error === "No work available") {
106
+ return null;
107
+ }
108
+ if (!data.success || !data.work) {
109
+ throw new Error(data.error || "Invalid work claim response");
110
+ }
111
+ return data.work;
112
+ }
113
+ async request(path2, token, options) {
114
+ const controller = new AbortController();
115
+ const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
116
+ try {
117
+ const response = await fetch(`${this.baseUrl}${path2}`, {
118
+ method: options.method,
119
+ headers: {
120
+ Authorization: `Bearer ${token}`,
121
+ "Content-Type": "application/json",
122
+ ...options.headers
123
+ },
124
+ body: options.body,
125
+ signal: controller.signal
126
+ });
127
+ if (options.allowNotFound && response.status === 404) {
128
+ const data = await response.json().catch(() => ({ success: false, error: "No work available" }));
129
+ return data;
130
+ }
131
+ if (!response.ok) {
132
+ const text = await response.text().catch(() => "Unknown error");
133
+ throw new Error(`API error: ${response.status} ${text}`);
134
+ }
135
+ return await response.json();
136
+ } catch (error) {
137
+ if (error.name === "AbortError") {
138
+ throw new Error("Request timeout");
139
+ }
140
+ throw error;
141
+ } finally {
142
+ clearTimeout(timeout);
143
+ }
144
+ }
145
+ };
146
+
147
+ // src/mobile/MobileRelay.ts
148
+ var activeRelay = null;
149
+ function startMobileRelay(options) {
150
+ stopMobileRelay();
151
+ activeRelay = {
152
+ deviceId: options.deviceId,
153
+ timer: setInterval(() => {
154
+ void pollOnce(options);
155
+ }, Math.max(options.pollIntervalMs, 1e3)),
156
+ polling: false
157
+ };
158
+ activeRelay.timer.unref?.();
159
+ void pollOnce(options);
160
+ }
161
+ function stopMobileRelay() {
162
+ if (!activeRelay) return;
163
+ clearInterval(activeRelay.timer);
164
+ activeRelay = null;
165
+ }
166
+ async function pollOnce(options) {
167
+ if (!activeRelay || activeRelay.deviceId !== options.deviceId || activeRelay.polling) {
168
+ return;
169
+ }
170
+ activeRelay.polling = true;
171
+ try {
172
+ try {
173
+ await options.client.sendRelayHeartbeat(options.token, {
174
+ sessionId: options.sessionId,
175
+ deviceId: options.deviceId,
176
+ pairingId: options.pairingId,
177
+ mode: options.mode
178
+ });
179
+ } catch (error) {
180
+ options.onError?.(error);
181
+ }
182
+ const work = await options.client.claimWork(options.token, options.deviceId);
183
+ if (work?.prompt) {
184
+ options.enqueueInstruction(work.prompt);
185
+ }
186
+ } catch (error) {
187
+ options.onError?.(error);
188
+ } finally {
189
+ if (activeRelay?.deviceId === options.deviceId) {
190
+ activeRelay.polling = false;
191
+ }
192
+ }
193
+ }
194
+
195
+ // src/commands/go.ts
196
+ var metadata = {
197
+ command: "/go",
198
+ description: "pair this session with the Autohand Code iOS app",
199
+ implemented: true
200
+ };
201
+ var MAX_MOBILE_SNAPSHOT_MESSAGES = 24;
202
+ function formatUrl(url) {
203
+ return terminalLink.isSupported ? terminalLink(url, url) : chalk.cyan.underline(url);
204
+ }
205
+ function formatExpiry(value) {
206
+ const date = new Date(value);
207
+ if (Number.isNaN(date.getTime())) return value;
208
+ return date.toLocaleString();
209
+ }
210
+ function nativeAppUrl(pairingUrl) {
211
+ const url = new URL(pairingUrl);
212
+ const nativeUrl = new URL("autohand-code://go");
213
+ const pairingId = url.searchParams.get("pairing");
214
+ const token = url.searchParams.get("token");
215
+ if (pairingId) nativeUrl.searchParams.set("pairing", pairingId);
216
+ if (token) nativeUrl.searchParams.set("token", token);
217
+ return nativeUrl.toString();
218
+ }
219
+ function buildMobileSessionSnapshot(session) {
220
+ const messages = [];
221
+ for (const message of session.getMessages()) {
222
+ if (message.role === "user") {
223
+ const content = message.content.trim();
224
+ if (content) {
225
+ messages.push({ role: "user", content, timestamp: message.timestamp });
226
+ }
227
+ continue;
228
+ }
229
+ if (message.role === "assistant") {
230
+ const content = getAssistantChatLogContent(message.content);
231
+ if (content) {
232
+ messages.push({ role: "assistant", content, timestamp: message.timestamp });
233
+ }
234
+ }
235
+ }
236
+ const recentMessages = messages.slice(-MAX_MOBILE_SNAPSHOT_MESSAGES);
237
+ const firstUserMessage = messages.find((message) => message.role === "user");
238
+ const title = firstUserMessage?.content ? firstUserMessage.content.replace(/\s+/g, " ").slice(0, 80) : `Continue ${session.metadata.projectName}`;
239
+ return {
240
+ title,
241
+ summary: session.metadata.summary,
242
+ messageCount: session.metadata.messageCount,
243
+ lastActivity: session.metadata.lastActiveAt,
244
+ messages: recentMessages
245
+ };
246
+ }
247
+ function parseMode(args, canSteer) {
248
+ if (args.includes("--queue")) return "queue";
249
+ if (args.includes("--steer")) return "steer";
250
+ return canSteer ? "steer" : "queue";
251
+ }
252
+ async function go(ctx, args = []) {
253
+ const mode = parseMode(args, Boolean(ctx.enqueueInstruction));
254
+ if (mode === "steer" && !ctx.enqueueInstruction) {
255
+ return [
256
+ chalk.yellow("Steer mode requires an interactive CLI session."),
257
+ chalk.gray("Run /go --queue to create a durable queue-only handoff from this mode.")
258
+ ].join("\n");
259
+ }
260
+ const token = ctx.config?.auth?.token;
261
+ if (!token) {
262
+ return [
263
+ chalk.yellow("Sign in first with /login."),
264
+ chalk.gray("Then run /go again to pair this laptop session with your phone.")
265
+ ].join("\n");
266
+ }
267
+ const session = ctx.currentSession ?? ctx.sessionManager.getCurrentSession();
268
+ if (!session) {
269
+ return [
270
+ chalk.yellow("No active session to pair."),
271
+ chalk.gray("Start a conversation, then run /go from the project you want to control remotely.")
272
+ ].join("\n");
273
+ }
274
+ const client = ctx.client ?? new MobileHandoffClient({
275
+ baseUrl: getMobileApiBaseUrl(ctx.config)
276
+ });
277
+ try {
278
+ const deviceId = await client.getDeviceId();
279
+ await client.registerDevice(token, {
280
+ deviceId,
281
+ clientType: "cli",
282
+ agentName: `${os.hostname()} Autohand Code`,
283
+ metadata: {
284
+ workspacePath: ctx.workspaceRoot,
285
+ projectName: session.metadata.projectName,
286
+ sessionId: session.metadata.sessionId,
287
+ model: ctx.model,
288
+ provider: ctx.provider,
289
+ platform: process.platform,
290
+ hostname: os.hostname(),
291
+ client: session.metadata.client,
292
+ clientVersion: session.metadata.clientVersion
293
+ }
294
+ });
295
+ const pairing = await client.createPairing(token, {
296
+ deviceId,
297
+ sessionId: session.metadata.sessionId,
298
+ workspacePath: ctx.workspaceRoot,
299
+ projectName: session.metadata.projectName,
300
+ model: ctx.model,
301
+ provider: ctx.provider,
302
+ capabilities: ["prompt", "approval", "notifications"],
303
+ metadata: {
304
+ platform: process.platform,
305
+ hostname: os.hostname(),
306
+ client: session.metadata.client,
307
+ clientVersion: session.metadata.clientVersion,
308
+ sessionSnapshot: JSON.stringify(buildMobileSessionSnapshot(session))
309
+ }
310
+ });
311
+ if (mode === "steer" && ctx.enqueueInstruction) {
312
+ startMobileRelay({
313
+ client,
314
+ token,
315
+ deviceId,
316
+ sessionId: session.metadata.sessionId,
317
+ pairingId: pairing.id,
318
+ mode,
319
+ pollIntervalMs: pairing.pollIntervalMs,
320
+ enqueueInstruction: ctx.enqueueInstruction
321
+ });
322
+ }
323
+ const appUrl = nativeAppUrl(pairing.pairingUrl);
324
+ const qr = await QRCode.toString(pairing.pairingUrl, {
325
+ type: "utf8",
326
+ errorCorrectionLevel: "M"
327
+ });
328
+ return [
329
+ "",
330
+ chalk.bold("Autohand Code mobile handoff"),
331
+ chalk.gray("Scan this with the iOS app to continue this session from your phone."),
332
+ "",
333
+ qr,
334
+ "",
335
+ `${chalk.gray("Scan or open:")} ${formatUrl(pairing.pairingUrl)}`,
336
+ `${chalk.gray("Simulator fallback:")} ${formatUrl(appUrl)}`,
337
+ `${chalk.gray("Project:")} ${chalk.cyan(session.metadata.projectName)}`,
338
+ `${chalk.gray("Session:")} ${chalk.cyan(session.metadata.sessionId)}`,
339
+ `${chalk.gray("Mode:")} ${mode === "steer" ? chalk.green("steer live") : chalk.yellow("queue")}`,
340
+ `${chalk.gray("Relay:")} ${mode === "steer" ? chalk.green("listening for mobile prompts") : chalk.yellow("prompts will wait in the queue")}`,
341
+ `${chalk.gray("Expires:")} ${chalk.cyan(formatExpiry(pairing.expiresAt))}`,
342
+ ""
343
+ ].join("\n");
344
+ } catch (error) {
345
+ return [
346
+ chalk.red("Could not create mobile handoff."),
347
+ chalk.gray(error.message)
348
+ ].join("\n");
349
+ }
350
+ }
351
+
352
+ export {
353
+ metadata,
354
+ go
355
+ };
356
+ /**
357
+ * @license
358
+ * Copyright 2026 Autohand AI LLC
359
+ * SPDX-License-Identifier: Apache-2.0
360
+ */
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AUTOHAND_PATHS
3
- } from "./chunk-TWQDAUZU.js";
3
+ } from "./chunk-SHRLFX6F.js";
4
4
 
5
5
  // src/core/agents/AgentRegistry.ts
6
6
  import fs from "fs/promises";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PROJECT_DIR_NAME
3
- } from "./chunk-TWQDAUZU.js";
3
+ } from "./chunk-SHRLFX6F.js";
4
4
 
5
5
  // src/permissions/localProjectPermissions.ts
6
6
  import fs from "fs-extra";
@@ -1,33 +1,33 @@
1
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
2
 
3
- var _chunkJJ4KA7HKcjs = require('./chunk-JJ4KA7HK.cjs');
3
+ var _chunkYISPVAXOcjs = require('./chunk-YISPVAXO.cjs');
4
4
 
5
5
 
6
6
 
7
7
 
8
- var _chunk46C73ZKKcjs = require('./chunk-46C73ZKK.cjs');
8
+ var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
9
9
 
10
10
 
11
11
 
12
12
 
13
- var _chunkCHI52KFRcjs = require('./chunk-CHI52KFR.cjs');
13
+ var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
14
14
 
15
15
  // src/commands/setup.ts
16
16
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
17
17
  var metadata = {
18
18
  command: "/setup",
19
- description: _nullishCoalesce(_chunkCHI52KFRcjs.t.call(void 0, "commands.setup.description"), () => ( "Run the setup wizard to configure or reconfigure Autohand")),
19
+ description: _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.description"), () => ( "Run the setup wizard to configure or reconfigure Autohand")),
20
20
  implemented: true
21
21
  };
22
22
  async function setup(ctx) {
23
23
  if (ctx.isNonInteractive) {
24
- return _nullishCoalesce(_chunkCHI52KFRcjs.t.call(void 0, "commands.setup.interactiveOnly"), () => ( "Setup requires an interactive terminal. Use the --setup CLI flag instead."));
24
+ return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.interactiveOnly"), () => ( "Setup requires an interactive terminal. Use the --setup CLI flag instead."));
25
25
  }
26
- const { locale: detectedLocale } = _chunkCHI52KFRcjs.detectLocale.call(void 0, );
26
+ const { locale: detectedLocale } = _chunkSY2P3Z5Wcjs.detectLocale.call(void 0, );
27
27
  const locale = _nullishCoalesce(detectedLocale, () => ( "en"));
28
- await _chunkCHI52KFRcjs.initI18n.call(void 0, locale);
29
- const config = await _chunk46C73ZKKcjs.loadConfig.call(void 0, _optionalChain([ctx, 'access', _ => _.config, 'optionalAccess', _2 => _2.configPath]), ctx.workspaceRoot);
30
- const workspaceRoot = _chunk46C73ZKKcjs.resolveWorkspaceRoot.call(void 0, config, ctx.workspaceRoot);
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
31
  if (ctx.eventEmitter) {
32
32
  ctx.eventEmitter.emit("setup:started", {
33
33
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -35,7 +35,7 @@ async function setup(ctx) {
35
35
  workspaceRoot
36
36
  });
37
37
  }
38
- const wizard = new (0, _chunkJJ4KA7HKcjs.SetupWizard)(workspaceRoot, config);
38
+ const wizard = new (0, _chunkYISPVAXOcjs.SetupWizard)(workspaceRoot, config);
39
39
  const result = await wizard.run({ force: true, skipWelcome: false });
40
40
  if (result.cancelled) {
41
41
  if (ctx.eventEmitter) {
@@ -44,7 +44,7 @@ async function setup(ctx) {
44
44
  step: "user_cancelled"
45
45
  });
46
46
  }
47
- return _nullishCoalesce(_chunkCHI52KFRcjs.t.call(void 0, "commands.setup.cancelled"), () => ( "Setup cancelled."));
47
+ return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.cancelled"), () => ( "Setup cancelled."));
48
48
  }
49
49
  if (!result.success) {
50
50
  if (ctx.eventEmitter) {
@@ -53,10 +53,10 @@ async function setup(ctx) {
53
53
  error: "setup_failed"
54
54
  });
55
55
  }
56
- return _nullishCoalesce(_chunkCHI52KFRcjs.t.call(void 0, "commands.setup.failed"), () => ( "Setup failed. Please try again."));
56
+ return _nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.failed"), () => ( "Setup failed. Please try again."));
57
57
  }
58
58
  const newConfig = { ...config, ...result.config };
59
- await _chunk46C73ZKKcjs.saveConfig.call(void 0, newConfig);
59
+ await _chunkX5P6QQOBcjs.saveConfig.call(void 0, newConfig);
60
60
  if (ctx.eventEmitter) {
61
61
  const provider = result.config.provider;
62
62
  const providerConfig = provider && result.config[provider];
@@ -70,7 +70,7 @@ async function setup(ctx) {
70
70
  agentsFileCreated: result.agentsFileCreated
71
71
  });
72
72
  }
73
- console.log(_chalk2.default.green(_nullishCoalesce(_chunkCHI52KFRcjs.t.call(void 0, "commands.setup.complete"), () => ( "\nSetup complete!"))));
73
+ console.log(_chalk2.default.green(_nullishCoalesce(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.setup.complete"), () => ( "\nSetup complete!"))));
74
74
  return null;
75
75
  }
76
76
 
@@ -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 _chunkQ2IL4DDIcjs = require('./chunk-Q2IL4DDI.cjs');
3
+ var _chunkCO2AADYUcjs = require('./chunk-CO2AADYU.cjs');
4
4
 
5
5
 
6
- var _chunkCH2J4PVEcjs = require('./chunk-CH2J4PVE.cjs');
6
+ var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
7
7
 
8
8
 
9
- var _chunk46C73ZKKcjs = require('./chunk-46C73ZKK.cjs');
9
+ var _chunkX5P6QQOBcjs = require('./chunk-X5P6QQOB.cjs');
10
10
 
11
11
 
12
- var _chunkCHI52KFRcjs = require('./chunk-CHI52KFR.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: _chunkCHI52KFRcjs.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,7 +26,7 @@ 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 selected = await _chunkCH2J4PVEcjs.showModal.call(void 0, {
29
+ const selected = await _chunkCK4HAHVYcjs.showModal.call(void 0, {
30
30
  title: `Log out from ${_chalk2.default.cyan(userName)}?`,
31
31
  options: [
32
32
  { label: "Yes", value: "yes" },
@@ -34,10 +34,10 @@ async function logout(ctx) {
34
34
  ]
35
35
  });
36
36
  if (!selected || selected.value === "no") {
37
- console.log(_chalk2.default.gray(_chunkCHI52KFRcjs.t.call(void 0, "commands.logout.cancelled")));
37
+ console.log(_chalk2.default.gray(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.logout.cancelled")));
38
38
  return null;
39
39
  }
40
- const authClient = _chunkQ2IL4DDIcjs.getAuthClient.call(void 0, );
40
+ const authClient = _chunkCO2AADYUcjs.getAuthClient.call(void 0, );
41
41
  try {
42
42
  await authClient.logout(config.auth.token);
43
43
  } catch (e) {
@@ -49,9 +49,9 @@ async function logout(ctx) {
49
49
  ...config,
50
50
  auth: void 0
51
51
  };
52
- await _chunk46C73ZKKcjs.saveConfig.call(void 0, updatedConfig);
52
+ await _chunkX5P6QQOBcjs.saveConfig.call(void 0, updatedConfig);
53
53
  console.log();
54
- console.log(_chalk2.default.green(_chunkCHI52KFRcjs.t.call(void 0, "commands.logout.success")));
54
+ console.log(_chalk2.default.green(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.logout.success")));
55
55
  console.log(_chalk2.default.gray("Your local session has been cleared."));
56
56
  console.log();
57
57
  process.exit(0);
@@ -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
+ */
@@ -1,12 +1,12 @@
1
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
2
 
3
- var _chunkCHI52KFRcjs = require('./chunk-CHI52KFR.cjs');
3
+ var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
4
4
 
5
5
  // src/commands/automode.ts
6
6
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
7
7
  var metadata = {
8
8
  command: "/automode",
9
- description: _chunkCHI52KFRcjs.t.call(void 0, "commands.automode.description"),
9
+ description: _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.automode.description"),
10
10
  implemented: true,
11
11
  subcommands: [
12
12
  { name: "on", description: "Enable interactive auto-mode for this session" },
@@ -129,7 +129,7 @@ function handleStatus(manager, interactiveEnabled) {
129
129
  "",
130
130
  ` Session: ${state.sessionId}`,
131
131
  ` Status: ${state.status}`,
132
- ` ${_chunkCHI52KFRcjs.t.call(void 0, "commands.automode.iteration", { current: String(state.currentIteration), max: String(state.maxIterations) })}`,
132
+ ` ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.automode.iteration", { current: String(state.currentIteration), max: String(state.maxIterations) })}`,
133
133
  ` Files created: ${state.filesCreated}`,
134
134
  ` Files modified: ${state.filesModified}`
135
135
  );
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  t
3
- } from "./chunk-CBFH2J3O.js";
3
+ } from "./chunk-LEZEWKPA.js";
4
4
 
5
5
  // src/commands/quit.ts
6
6
  async function quit() {