autohand-cli 0.9.0 → 0.9.2
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.
- package/README.md +118 -76
- package/dist/AgentRegistry-BBQRODQC.cjs +18 -0
- package/dist/AgentRegistry-JBXZUPML.js +18 -0
- package/dist/{CommunitySkillsCache-ZEQWP6YM.js → CommunitySkillsCache-CI7UN2DX.js} +2 -2
- package/dist/CommunitySkillsCache-XTQ6RMTA.cjs +8 -0
- package/dist/{HookManager-CWLTFKWO.js → HookManager-BELBPQQI.js} +1 -1
- package/dist/{HookManager-TMAJQU4S.cjs → HookManager-ZL2CLAJW.cjs} +2 -2
- package/dist/{ImportWizard-MQXEED2U.cjs → ImportWizard-U6CIJREW.cjs} +13 -13
- package/dist/{ImportWizard-QBKQEXDW.js → ImportWizard-VJFSWSUQ.js} +4 -4
- package/dist/LearnAdvisor-LAURA3IB.cjs +9 -0
- package/dist/LearnAdvisor-RFOBXFG7.js +9 -0
- package/dist/MemoryManager-3A2VRPF2.js +9 -0
- package/dist/MemoryManager-UOEQZIDC.cjs +9 -0
- package/dist/{NVIDIAProvider-2HR737UE.js → NVIDIAProvider-AFNJNWJM.js} +1 -1
- package/dist/NVIDIAProvider-L5GTYRCQ.cjs +14 -0
- package/dist/{PermissionManager-KMYILJ4Z.js → PermissionManager-N2LDSOYF.js} +3 -3
- package/dist/PermissionManager-ZNURIEYR.cjs +11 -0
- package/dist/ProviderFactory-3BFS65V7.cjs +13 -0
- package/dist/{ProviderFactory-HFPRVQ25.js → ProviderFactory-XUT6BSGB.js} +4 -2
- package/dist/SessionManager-LGPQIA57.cjs +10 -0
- package/dist/{SessionManager-PNBTJJTQ.js → SessionManager-OR4KDDDS.js} +2 -2
- package/dist/{SkillsRegistry-4RRD5GMX.js → SkillsRegistry-IL3GWROU.js} +2 -2
- package/dist/SkillsRegistry-PM34DQNA.cjs +9 -0
- package/dist/SubAgent-2WG4QQB5.cjs +13 -0
- package/dist/SubAgent-ICGN23TQ.js +13 -0
- package/dist/{SyncApiClient-LRPFNCKJ.js → SyncApiClient-G3FM65IV.js} +1 -1
- package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
- package/dist/{about-BW3PDZUU.js → about-OYVGQMJJ.js} +5 -4
- package/dist/about-U2BH7HDR.cjs +15 -0
- package/dist/{acp-VHEL7BOW.js → acp-JWHGXZL5.js} +207 -102
- package/dist/{acp-EOETGAHC.cjs → acp-S37JOBCS.cjs} +226 -121
- package/dist/actionExecutor-2QEPMELQ.cjs +28 -0
- package/dist/actionExecutor-6NCCORRB.js +28 -0
- package/dist/add-dir-KFUHSIR2.cjs +11 -0
- package/dist/{add-dir-VFX7QT4E.js → add-dir-MM2BM2Z2.js} +2 -2
- package/dist/agent-DUIYLIVN.js +132 -0
- package/dist/agent-YYEHGDAK.cjs +132 -0
- package/dist/agents-GBGG4CW7.cjs +19 -0
- package/dist/agents-ZH34C72F.js +19 -0
- package/dist/agents-new-ERXLS7SB.cjs +17 -0
- package/dist/agents-new-EVTGPTA4.js +17 -0
- package/dist/{autoSkill-EFMK6WU6.js → autoSkill-HEWKJ5JV.js} +2 -2
- package/dist/autoSkill-YL6PN6AV.cjs +20 -0
- package/dist/automode-4BJ7FNPL.cjs +10 -0
- package/dist/{automode-BMYSRM34.js → automode-S4U7A7Q2.js} +2 -2
- package/dist/chrome-45ZXHL5N.cjs +22 -0
- package/dist/{chrome-NHJ44WUN.js → chrome-BBSRVG6S.js} +2 -2
- package/dist/chrome-IFVZRHAT.cjs +50 -0
- package/dist/chrome-MYE6DNA2.js +22 -0
- package/dist/chunk-24CEJYEG.cjs +579 -0
- package/dist/{chunk-47PHDKNW.cjs → chunk-255GIVM2.cjs} +6 -6
- package/dist/{chunk-DIZTWFVR.cjs → chunk-2BDSR2OW.cjs} +238 -61
- package/dist/{chunk-BL2UC7HC.js → chunk-2BPIR7LA.js} +121 -4
- package/dist/{chunk-BQ22N3TX.cjs → chunk-2NY7OHBF.cjs} +47 -27
- package/dist/chunk-2WUNHTXL.js +303 -0
- package/dist/{chunk-HQWQZML5.cjs → chunk-34B6ZO6W.cjs} +124 -7
- package/dist/{chunk-5JTTM5SC.js → chunk-3BJN7GAH.js} +1 -1
- package/dist/{chunk-4256YRCO.cjs → chunk-3CAXECWJ.cjs} +30 -17
- package/dist/{chunk-KNTUI4TZ.cjs → chunk-3CBYUBZC.cjs} +5 -5
- package/dist/chunk-3DF3GZQ7.js +277 -0
- package/dist/{chunk-E26KKI46.cjs → chunk-3JURXAL6.cjs} +61 -8
- package/dist/{chunk-MOJ7ADW4.cjs → chunk-3KWAP2Y3.cjs} +88 -9
- package/dist/{chunk-OHWMWKJQ.js → chunk-3MCK6UBL.js} +1 -1
- package/dist/{chunk-5VHP6HDQ.js → chunk-3TH7IK4M.js} +62 -9
- package/dist/{chunk-ACDQGA4Z.js → chunk-3V77OB3W.js} +7 -72
- package/dist/{chunk-HS4USDND.cjs → chunk-3Y5UEK7K.cjs} +4 -4
- package/dist/{chunk-XV2HXRHX.js → chunk-4GPPSBEZ.js} +3 -3
- package/dist/chunk-5CMBAJ6K.js +377 -0
- package/dist/{chunk-MO4KP6XS.cjs → chunk-5YRXFBYZ.cjs} +35 -6
- package/dist/chunk-5ZNYX4VH.cjs +71 -0
- package/dist/chunk-6AC2TT26.js +156 -0
- package/dist/{chunk-UGFVM77J.cjs → chunk-6EIQ6A6U.cjs} +2 -2
- package/dist/{chunk-SWCQM52V.js → chunk-6HSEDXVF.js} +4 -4
- package/dist/{chunk-QQ7PANOP.js → chunk-6NUXK62F.js} +1 -1
- package/dist/{chunk-5CMYEM3R.cjs → chunk-6TGCAPYH.cjs} +62 -9
- package/dist/{chunk-NMQ47RCG.js → chunk-6W3SZCSP.js} +1 -1
- package/dist/{chunk-VRMZO6TB.js → chunk-73LV3DDZ.js} +7 -6
- package/dist/{chunk-3GUEUCZK.js → chunk-7BGGLIQF.js} +85 -1
- package/dist/{chunk-RBHANOYY.js → chunk-7DJJGKM6.js} +47 -3
- package/dist/{chunk-LQBONA55.cjs → chunk-7EEK7CRR.cjs} +85 -1
- package/dist/chunk-7TO3PDMV.cjs +324 -0
- package/dist/chunk-7UU22RSH.cjs +277 -0
- package/dist/{chunk-E6GFD7VR.cjs → chunk-A3GAM6FM.cjs} +11 -11
- package/dist/{chunk-DEQVRSV5.cjs → chunk-A7DJU75T.cjs} +8 -8
- package/dist/{chunk-DPSIGY6L.cjs → chunk-AAAO4ERQ.cjs} +9 -9
- package/dist/{chunk-FQAVGSPW.js → chunk-AAJLMP57.js} +2 -2
- package/dist/chunk-ABR756QN.js +529 -0
- package/dist/{chunk-JYKPWK5O.js → chunk-APFGDIPD.js} +3 -1
- package/dist/{chunk-Y3M2DABP.js → chunk-APQYRMYL.js} +4 -4
- package/dist/{chunk-Q2IL4DDI.cjs → chunk-AZKOIF2G.cjs} +62 -19
- package/dist/{chunk-MXVIDIC6.cjs → chunk-AZLHUPNC.cjs} +2 -2
- package/dist/chunk-B55VCYSQ.cjs +30 -0
- package/dist/{chunk-WZV6UVPY.js → chunk-BLQUMSM3.js} +1 -1
- package/dist/{chunk-PHJO5YAL.cjs → chunk-BXKPX6K4.cjs} +9 -9
- package/dist/{chunk-3KLSNNRW.cjs → chunk-C66FN2LP.cjs} +4 -4
- package/dist/{chunk-OV3PVUYN.js → chunk-CH7KUFAS.js} +9 -9
- package/dist/{chunk-CWINVFRI.cjs → chunk-CILSXOPI.cjs} +17 -17
- package/dist/{chunk-3UT7R3XV.js → chunk-CM24K6ZT.js} +145 -12
- package/dist/chunk-CMEZ42F2.cjs +303 -0
- package/dist/{chunk-46C73ZKK.cjs → chunk-CNQKIWIS.cjs} +152 -19
- package/dist/{chunk-5JFTY3VU.js → chunk-CSTUTDTH.js} +2 -1
- package/dist/{chunk-REMGR23V.cjs → chunk-CSUGNNJY.cjs} +10 -4
- package/dist/{chunk-TBOLJDUG.js → chunk-D6HB3H3L.js} +31 -11
- package/dist/{chunk-OM24WXEE.js → chunk-D7AYKVKW.js} +2 -2
- package/dist/{chunk-6GUODJKM.cjs → chunk-DLCXWOWT.cjs} +23 -23
- package/dist/{chunk-CH2J4PVE.cjs → chunk-DMM2BKSV.cjs} +121 -28
- package/dist/{chunk-M4KNC5BQ.js → chunk-DW3DPV77.js} +1 -1
- package/dist/chunk-ECQD2QC3.cjs +33 -0
- package/dist/{chunk-UEIXJG45.js → chunk-EEYOS3UC.js} +116 -80
- package/dist/{chunk-7HPWMALN.js → chunk-EF2EN5CR.js} +2 -2
- package/dist/{chunk-7LWQCE4Y.cjs → chunk-EFXFURDY.cjs} +192 -58
- package/dist/chunk-EK34UZPB.cjs +40 -0
- package/dist/{chunk-7JLT2VNW.cjs → chunk-FJR6EZLO.cjs} +9666 -7201
- package/dist/{chunk-GZ6DV2UG.js → chunk-FPO7YNPQ.js} +1 -1
- package/dist/{chunk-O64I2GYI.js → chunk-FS4I6BNR.js} +1 -1
- package/dist/{chunk-MX75JYIY.js → chunk-FSJ2MNOC.js} +3 -3
- package/dist/{chunk-7RFJB75Y.js → chunk-GEHZMC4G.js} +11 -8
- package/dist/{chunk-UWFG2R2I.cjs → chunk-GO6C2RAR.cjs} +36 -9
- package/dist/{chunk-WGLBC5AY.cjs → chunk-GSMR6V36.cjs} +4 -4
- package/dist/{chunk-Z3XSSF7B.js → chunk-GSZWATME.js} +1 -1
- package/dist/{chunk-7MU7LWF3.cjs → chunk-GYLGCR6F.cjs} +5 -5
- package/dist/{chunk-O6TQP7U7.cjs → chunk-H3OOWNYQ.cjs} +3 -3
- package/dist/{chunk-2QL6MNXG.js → chunk-H65446XW.js} +115 -20
- package/dist/chunk-H7HXRRHK.js +324 -0
- package/dist/{chunk-ZZ63NW7A.cjs → chunk-HN2JTDN5.cjs} +17 -17
- package/dist/{chunk-AOKCI722.cjs → chunk-HNXUZ5OY.cjs} +2 -2
- package/dist/{chunk-AUYSIEVV.cjs → chunk-HOYT3E65.cjs} +3 -3
- package/dist/{chunk-DMRXF5DU.js → chunk-HTPY5ESD.js} +3 -3
- package/dist/chunk-HTU4W3GB.js +183 -0
- package/dist/{chunk-3DDL2E55.cjs → chunk-HVLWH2AF.cjs} +10 -10
- package/dist/{chunk-HSCUPEA4.cjs → chunk-HZTEU4W5.cjs} +74 -105
- package/dist/{chunk-XGMI6IYB.cjs → chunk-I5T7LPFP.cjs} +7 -7
- package/dist/{chunk-XIVFAD2L.js → chunk-IB5CJXE7.js} +173 -12
- package/dist/chunk-INNXFLDR.cjs +388 -0
- package/dist/{chunk-75EDROHL.cjs → chunk-JFLEP3T7.cjs} +10 -10
- package/dist/chunk-JJGDOBFL.js +40 -0
- package/dist/{chunk-VBOFPU5M.cjs → chunk-JM3ZTQUK.cjs} +13 -9
- package/dist/{chunk-HJIXWGQZ.js → chunk-JSU46T6K.js} +1 -1
- package/dist/{chunk-AT7OWLY5.js → chunk-K6WN6BT4.js} +1 -1
- package/dist/{chunk-LN7D3EJZ.js → chunk-KA2U6MY2.js} +4 -3
- package/dist/{chunk-3S563FNF.cjs → chunk-KIQH3SMT.cjs} +34 -31
- package/dist/{chunk-BWF4VDYE.js → chunk-KPRXHIE2.js} +54 -85
- package/dist/{chunk-Z4LIPMPM.js → chunk-L6OH44HL.js} +13 -9
- package/dist/{chunk-A7HHCIDQ.js → chunk-LIO3RX2Z.js} +2 -2
- package/dist/{chunk-DLP436GI.js → chunk-LOSXLH7P.js} +110 -17
- package/dist/{chunk-IEXKKKOF.cjs → chunk-LSOR72PB.cjs} +23 -23
- package/dist/{chunk-IAGCRVJ3.js → chunk-MA3AVDCC.js} +55 -12
- package/dist/{chunk-B5CGDNMR.js → chunk-ME3S2WIR.js} +3 -3
- package/dist/{chunk-HKYZSUQ5.js → chunk-NC2I2M4P.js} +4 -4
- package/dist/{chunk-GBMDFWJX.cjs → chunk-NC4A4LVC.cjs} +13 -13
- package/dist/{chunk-E46DJH5S.js → chunk-NGEK5FCJ.js} +176 -3
- package/dist/{chunk-TQ33WBY5.cjs → chunk-NHWHEW7M.cjs} +2 -1
- package/dist/{chunk-62RTC3XX.js → chunk-NKW6CHXQ.js} +1 -1
- package/dist/{chunk-3PXKRVCW.js → chunk-NOWCRKP2.js} +10 -4
- package/dist/{chunk-HXJEGMGB.js → chunk-NUB2LMB6.js} +2 -2
- package/dist/chunk-NVATU4V6.cjs +44 -0
- package/dist/chunk-O246MKIW.cjs +267 -0
- package/dist/{chunk-QCHIDZBA.js → chunk-OGFWL2PS.js} +1 -1
- package/dist/{chunk-JJ4KA7HK.cjs → chunk-ONNGAR6W.cjs} +415 -551
- package/dist/{chunk-TKKN34TV.js → chunk-OOFR6A62.js} +33 -4
- package/dist/{chunk-6NVAK6CK.js → chunk-OZ7FHO7J.js} +2 -2
- package/dist/{chunk-2CGE7ZV3.cjs → chunk-P5EWGUI2.cjs} +201 -28
- package/dist/{chunk-GGLKUENP.js → chunk-P6BQJPAI.js} +191 -14
- package/dist/{chunk-TWQDAUZU.js → chunk-PG2JIU5M.js} +60 -7
- package/dist/chunk-PI27G2ED.cjs +377 -0
- package/dist/{chunk-YV63VW4K.js → chunk-PI7LRPL6.js} +1 -1
- package/dist/{chunk-TXPSTCG7.cjs → chunk-PMPEC5HN.cjs} +18 -15
- package/dist/{chunk-ROLA6EFO.cjs → chunk-PYUP7AKY.cjs} +14 -14
- package/dist/{chunk-BFQDQRDE.js → chunk-QC5Z3ZT5.js} +2 -2
- package/dist/chunk-QDO4L2A7.cjs +156 -0
- package/dist/{chunk-LFDPTJYF.cjs → chunk-QDXRI5AM.cjs} +1 -1
- package/dist/{chunk-3LJJG5YY.cjs → chunk-QLZOMZO5.cjs} +4 -3
- package/dist/chunk-QVXMSQOG.js +430 -0
- package/dist/{chunk-ZHJ7JGME.cjs → chunk-R4UKBKDY.cjs} +11 -11
- package/dist/{chunk-IGMPWJ2I.cjs → chunk-R75AWII3.cjs} +118 -23
- package/dist/{chunk-VGEV44V2.cjs → chunk-RD5PLUIX.cjs} +191 -30
- package/dist/{chunk-I24CWKKK.js → chunk-RGB34CV5.js} +3 -3
- package/dist/{chunk-CHI52KFR.cjs → chunk-RJCZLFHE.cjs} +246 -39
- package/dist/{chunk-D2OSPLYC.cjs → chunk-RKWNM2BJ.cjs} +2 -2
- package/dist/{chunk-FGT6KK6T.js → chunk-RMVONICR.js} +3 -3
- package/dist/{chunk-Q6AC3PHY.cjs → chunk-RPSYRJL7.cjs} +10 -4
- package/dist/chunk-RS2E32YB.js +71 -0
- package/dist/chunk-RWKU2X7O.js +388 -0
- package/dist/chunk-RZLEGVMH.cjs +565 -0
- package/dist/{chunk-5F6ZKSHO.js → chunk-S2L3Y677.js} +1 -1
- package/dist/{chunk-ARBEHFCG.js → chunk-S7KVUIOS.js} +1 -1
- package/dist/{chunk-AC7DZ6SK.cjs → chunk-SACJJ6NO.cjs} +5 -3
- package/dist/{chunk-IKUMVBCW.cjs → chunk-SD3NTC7D.cjs} +48 -4
- package/dist/{chunk-CBFH2J3O.js → chunk-SJQU2ZFR.js} +246 -39
- package/dist/{chunk-GWO66KBI.js → chunk-SKAQKQFF.js} +12 -2
- package/dist/chunk-T4DXP5OP.js +30 -0
- package/dist/{chunk-CFFE4VA3.js → chunk-T6FTB6K2.js} +1 -1
- package/dist/{chunk-U4C3HW6P.js → chunk-T6N6GRFT.js} +13 -10
- package/dist/{chunk-D6GZBSOX.js → chunk-TJFKA6A7.js} +82 -3
- package/dist/{chunk-2HOLOHVK.js → chunk-TJZUPS4Z.js} +163 -299
- package/dist/{chunk-RBZ7AFX7.cjs → chunk-TLKHZ425.cjs} +2 -2
- package/dist/{chunk-J2K57QM7.cjs → chunk-TQ24NLXO.cjs} +6 -6
- package/dist/{chunk-LUMV3DB2.js → chunk-TWBAU46X.js} +1 -1
- package/dist/{chunk-OPNI6O7F.cjs → chunk-TZB5XADL.cjs} +4 -4
- package/dist/{chunk-6HH236FV.cjs → chunk-UAYXZXWU.cjs} +4 -4
- package/dist/{chunk-MPULXVC4.cjs → chunk-UKBFNBDO.cjs} +11 -11
- package/dist/chunk-UMJYX5KD.js +565 -0
- package/dist/chunk-USKYTHDL.cjs +235 -0
- package/dist/chunk-V4HGZSKQ.cjs +183 -0
- package/dist/{chunk-MQESBFBZ.cjs → chunk-VAJUSZMC.cjs} +21 -20
- package/dist/{chunk-PQLKJCIE.js → chunk-VGQG4NBJ.js} +2 -2
- package/dist/chunk-VLUIVJ3J.js +235 -0
- package/dist/chunk-VOBINVMV.cjs +430 -0
- package/dist/{chunk-L4F7SUYL.js → chunk-VSHKKCSH.js} +16 -5
- package/dist/{chunk-LDJQ5QHG.cjs → chunk-VSZU3MGA.cjs} +28 -17
- package/dist/{chunk-YFXTE422.cjs → chunk-VWHAUB77.cjs} +8 -3
- package/dist/{chunk-EZJHLOWP.js → chunk-VXGYFX45.js} +20 -7
- package/dist/{chunk-JIMSII7R.js → chunk-WH6YUQDB.js} +193 -59
- package/dist/{chunk-VKBIE6I6.js → chunk-WQ6TD55V.js} +2 -2
- package/dist/{chunk-ZR46OJNZ.js → chunk-WQWECXTY.js} +3 -3
- package/dist/{chunk-SOLBYSLY.cjs → chunk-WVDJUJH6.cjs} +2 -2
- package/dist/{chunk-QKP772OZ.js → chunk-X24VIVDZ.js} +963 -103
- package/dist/{chunk-37M5UM6I.js → chunk-X4NRTLXD.js} +7 -1
- package/dist/chunk-X53SHYCG.js +27 -0
- package/dist/{chunk-PUD76XQT.cjs → chunk-XB2Z4ZAK.cjs} +5 -5
- package/dist/chunk-Y47OJGLB.cjs +27 -0
- package/dist/{chunk-WRTXCQ3V.cjs → chunk-Y4MN27V3.cjs} +1080 -220
- package/dist/{chunk-ZK6HOR62.js → chunk-YEHFYZFU.js} +7 -2
- package/dist/{chunk-FFBDRUO5.cjs → chunk-YICIUY23.cjs} +1 -1
- package/dist/{chunk-PDHT7LQS.cjs → chunk-YMXYC777.cjs} +3 -3
- package/dist/{chunk-TJNBASFD.cjs → chunk-Z3GRWK6O.cjs} +8 -8
- package/dist/{chunk-JP3YHTQ2.cjs → chunk-Z5GG2KSL.cjs} +4 -4
- package/dist/{chunk-ZPD2AO3U.js → chunk-ZER7DYQK.js} +2 -2
- package/dist/{chunk-UXLW45ZE.cjs → chunk-ZFDXZEZJ.cjs} +25 -90
- package/dist/chunk-ZFV4HJA6.js +579 -0
- package/dist/chunk-ZHMYTI5D.cjs +529 -0
- package/dist/{chunk-CCVMREXI.js → chunk-ZLR2TFBC.js} +35 -8
- package/dist/{chunk-J5ADZN6V.cjs → chunk-ZTWNU5QZ.cjs} +20 -20
- package/dist/chunk-ZUYYHKQA.js +44 -0
- package/dist/{chunk-AUFNACED.js → chunk-ZVLVLDYN.js} +9086 -6621
- package/dist/clear-AJGXD2BB.cjs +12 -0
- package/dist/{clear-OFLFQ3MR.js → clear-HAHDSWKW.js} +3 -3
- package/dist/communityInstaller-IRR6M3N6.cjs +22 -0
- package/dist/{communityInstaller-COB2KTOW.js → communityInstaller-OLKEUGMX.js} +6 -6
- package/dist/completion-G7Z436TF.cjs +17 -0
- package/dist/{completion-PT4VM2H2.js → completion-ZS3AXJ6A.js} +5 -5
- package/dist/{config-R4O7GBTY.js → config-OWYAQPCX.js} +5 -3
- package/dist/config-W2BHT2QE.cjs +22 -0
- package/dist/{constants-HVCHVQAF.js → constants-AS6K67AA.js} +5 -3
- package/dist/constants-B4W5BT7F.cjs +23 -0
- package/dist/{export-3PK3VFCE.js → export-5HIU3KMD.js} +5 -5
- package/dist/export-GFD32UY2.cjs +15 -0
- package/dist/{extractSessionMemories-A2JX5WJ2.js → extractSessionMemories-K6ZVAW2F.js} +1 -1
- package/dist/{extractSessionMemories-XL3MS37F.cjs → extractSessionMemories-LLOIJR5U.cjs} +2 -2
- package/dist/feature-KP74CZ3F.cjs +14 -0
- package/dist/feature-OPNVMB2E.js +14 -0
- package/dist/features-LT55MURX.cjs +24 -0
- package/dist/features-ZDIU26WX.js +24 -0
- package/dist/feedback-7WTJFQ6S.js +18 -0
- package/dist/feedback-CEOJ3453.cjs +18 -0
- package/dist/go-2CY5SZNR.js +16 -0
- package/dist/go-O2CSQON4.cjs +16 -0
- package/dist/goal-DL2N2AWT.cjs +16 -0
- package/dist/goal-IJS7VZSG.js +16 -0
- package/dist/help-RNOGDEBA.cjs +12 -0
- package/dist/{help-X3OAZ3CY.js → help-TCWD2IRH.js} +2 -2
- package/dist/{history-YKFPHBJN.js → history-ATOR5OQV.js} +2 -2
- package/dist/history-UUSGX2AL.cjs +14 -0
- package/dist/{hooks-7TA4PIIB.js → hooks-R3Z5QKUP.js} +6 -6
- package/dist/hooks-RWM5UY67.cjs +18 -0
- package/dist/{i18n-2KBUU7XL.js → i18n-4QI4TD4I.js} +1 -1
- package/dist/i18n-MFAEU5RV.cjs +33 -0
- package/dist/ide-6PBTCCUQ.js +15 -0
- package/dist/ide-UE3G7NMQ.cjs +15 -0
- package/dist/{import-I7T4ZHYL.cjs → import-2IG76KAN.cjs} +6 -4
- package/dist/{import-JWPYKXCZ.js → import-E47QL4DW.js} +2 -2
- package/dist/import-NQDNBFUL.cjs +10 -0
- package/dist/{import-4CHYLS4K.js → import-VQIHGJWS.js} +6 -4
- package/dist/index.cjs +512 -305
- package/dist/index.d.cts +40 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +402 -195
- package/dist/init-DX3RDGDT.cjs +10 -0
- package/dist/{init-262MWZV4.js → init-Q54OAAFZ.js} +2 -2
- package/dist/{inputPrompt-YGBHDUEP.js → inputPrompt-V2VBDRM7.js} +3 -3
- package/dist/inputPrompt-WVGVWAHS.cjs +90 -0
- package/dist/language-I6KXAOXD.js +23 -0
- package/dist/language-XMIVOH5E.cjs +23 -0
- package/dist/learn-JPVVGTKU.js +23 -0
- package/dist/learn-NLSHI2MZ.cjs +23 -0
- package/dist/login-NABQYLYC.cjs +28 -0
- package/dist/login-XPOVFSWN.js +28 -0
- package/dist/logout-HNHCGB4Q.js +25 -0
- package/dist/logout-SKGDXJSW.cjs +25 -0
- package/dist/{mcp-5O6PUL4G.js → mcp-EN73YFGZ.js} +8 -6
- package/dist/mcp-TADZCPJQ.cjs +22 -0
- package/dist/{mcp-install-P6DHES7V.cjs → mcp-install-2GKWWBAS.cjs} +15 -13
- package/dist/{mcp-install-6XWXLFVY.js → mcp-install-3TBTVSHW.js} +10 -8
- package/dist/memory-GRXFTDIN.cjs +10 -0
- package/dist/{memory-Q54CESNM.js → memory-K2P3CDCH.js} +2 -2
- package/dist/{model-6AJ77PJG.js → model-DEG22OWA.js} +2 -2
- package/dist/model-OSD74T7Z.cjs +10 -0
- package/dist/new-4NWBOATU.cjs +12 -0
- package/dist/{new-ZXHEWC2S.js → new-KJAP2MB6.js} +3 -3
- package/dist/onboarding-2U5WE2OA.js +39 -0
- package/dist/onboarding-5DZFCO5Q.cjs +39 -0
- package/dist/permissions-KY5I6YQ3.cjs +10 -0
- package/dist/{permissions-YHJMVA6L.js → permissions-TKYON7PP.js} +2 -2
- package/dist/{plan-YYUAXPTL.js → plan-DYHHLZSS.js} +1 -1
- package/dist/plan-PYKP652W.cjs +13 -0
- package/dist/quit-GSKJL42O.js +14 -0
- package/dist/quit-TQSRTBUT.cjs +14 -0
- package/dist/{registry-34GL6BNJ.js → registry-EZ4V4TUQ.js} +1339 -1
- package/dist/{registry-V24W7YK6.cjs → registry-LCWYI4IB.cjs} +1378 -40
- package/dist/resume-4VWJXARX.cjs +17 -0
- package/dist/resume-TLHWWWFN.js +17 -0
- package/dist/{review-QHP2KP4Q.js → review-CSK4IYTO.js} +1 -1
- package/dist/review-XLJEUH5K.cjs +9 -0
- package/dist/{rpc-S3DGW6KV.js → rpc-3DLQBDWU.js} +301 -130
- package/dist/{rpc-NPS3PU4O.cjs → rpc-O36WUU3L.cjs} +399 -228
- package/dist/search-DSX2CY4A.cjs +22 -0
- package/dist/search-I3QUDUQL.js +22 -0
- package/dist/sessionBranching-DVNOUWJT.cjs +19 -0
- package/dist/sessionBranching-FKV4CR36.js +19 -0
- package/dist/sessions-3JUOT3ED.cjs +10 -0
- package/dist/{sessions-IYAXMK23.js → sessions-VWMDIPOS.js} +2 -2
- package/dist/settings-FT2LZZUV.js +45 -0
- package/dist/settings-RL4KNWHB.cjs +45 -0
- package/dist/setup-HQEJVOYT.js +32 -0
- package/dist/setup-MN54LKOL.cjs +32 -0
- package/dist/share-BUAFZNBX.cjs +17 -0
- package/dist/share-CGB6MAVJ.js +17 -0
- package/dist/skills/builtin/code-reviewer/SKILL.md +64 -0
- package/dist/skills/builtin/goal-writer/SKILL.md +124 -0
- package/dist/{skills-VWOMV3CR.js → skills-7DKR3HRZ.js} +8 -8
- package/dist/{skills-MVIZNHT4.js → skills-BBBENOEY.js} +9 -9
- package/dist/skills-OQM7IHAF.cjs +29 -0
- package/dist/{skills-GGMZOVIE.cjs → skills-RA2PKL63.cjs} +10 -10
- package/dist/{skills-install-VTAMCNNY.cjs → skills-install-D7K476SL.cjs} +16 -16
- package/dist/{skills-install-QBA5RCV6.js → skills-install-T4SOKJSL.js} +9 -9
- package/dist/skills-new-S33NGEU3.js +18 -0
- package/dist/skills-new-UVYH53MD.cjs +18 -0
- package/dist/slashCommands-MWOUDSQP.js +111 -0
- package/dist/slashCommands-XASURUTV.cjs +111 -0
- package/dist/squad-PIIYDFVH.cjs +15 -0
- package/dist/squad-VHYOVEJP.js +15 -0
- package/dist/status-GHFTXQBL.js +25 -0
- package/dist/status-WXMIJIU3.cjs +25 -0
- package/dist/statusline-2K7AC6ZQ.js +21 -0
- package/dist/statusline-GROI4HOC.cjs +21 -0
- package/dist/sync-254WF6JI.cjs +42 -0
- package/dist/sync-2DIZN4EH.cjs +24 -0
- package/dist/{sync-7BILIQHP.js → sync-J6I2ZUKQ.js} +6 -4
- package/dist/{sync-7OKF6636.js → sync-Z3LVSEEV.js} +8 -5
- package/dist/{teammate-J6PHGL23.cjs → teammate-EXR76PEQ.cjs} +9 -8
- package/dist/{teammate-GZQSCIMS.js → teammate-K4DAOFEQ.js} +8 -7
- package/dist/templates-ARG2VRWW.cjs +11 -0
- package/dist/templates-UGVZV3KJ.js +11 -0
- package/dist/theme-MVQDSU47.js +23 -0
- package/dist/theme-QAKEYWJG.cjs +23 -0
- package/dist/ui/questionModal.cjs +6 -6
- package/dist/ui/questionModal.js +5 -5
- package/dist/{undo-SZEHLX7X.js → undo-5AU47JHF.js} +2 -2
- package/dist/undo-ME6WKUXZ.cjs +10 -0
- package/dist/usage-QTKO2YMD.js +25 -0
- package/dist/usage-TYNJKVER.cjs +25 -0
- package/package.json +10 -4
- package/dist/AgentRegistry-EGBDIUAK.cjs +0 -10
- package/dist/AgentRegistry-XPWSVO3Q.js +0 -10
- package/dist/CommunitySkillsCache-2OIUV227.cjs +0 -8
- package/dist/LearnAdvisor-46FG2XIP.js +0 -9
- package/dist/LearnAdvisor-XBRDNAGH.cjs +0 -9
- package/dist/MemoryManager-34L4YOKA.cjs +0 -8
- package/dist/MemoryManager-WJMLPWGU.js +0 -8
- package/dist/NVIDIAProvider-MVTL62PR.cjs +0 -14
- package/dist/PermissionManager-5OOJ7FAT.cjs +0 -11
- package/dist/ProviderFactory-C3YPXTDD.cjs +0 -11
- package/dist/SessionManager-WAPTFMDO.cjs +0 -10
- package/dist/SkillsRegistry-7AJP74GJ.cjs +0 -9
- package/dist/SubAgent-FDIH3DXB.js +0 -11
- package/dist/SubAgent-HVL2ICVZ.cjs +0 -11
- package/dist/SyncApiClient-VMBOLQ6H.cjs +0 -11
- package/dist/about-FCAX37YC.cjs +0 -14
- package/dist/actionExecutor-33I47NZS.js +0 -24
- package/dist/actionExecutor-4YBMR3YH.cjs +0 -24
- package/dist/add-dir-7SS6KSH5.cjs +0 -11
- package/dist/agent-DMRUFU4M.cjs +0 -116
- package/dist/agent-WCJEYQJT.js +0 -116
- package/dist/agents-CHROO3VU.cjs +0 -17
- package/dist/agents-UVDUL65K.js +0 -17
- package/dist/agents-new-AUBWSOXP.js +0 -17
- package/dist/agents-new-Y562WC47.cjs +0 -17
- package/dist/autoSkill-YOLLFTP2.cjs +0 -20
- package/dist/automode-DBLKTTKD.cjs +0 -10
- package/dist/chrome-ATC4OO5I.cjs +0 -20
- package/dist/chrome-O62WXV7F.js +0 -20
- package/dist/chrome-XHJLCO4M.cjs +0 -50
- package/dist/chunk-6XVVIY54.cjs +0 -256
- package/dist/chunk-AU6JAGZJ.cjs +0 -231
- package/dist/chunk-N6O3XUZ2.cjs +0 -23
- package/dist/chunk-VDWJMWDF.js +0 -256
- package/dist/clear-33TWQ2ES.cjs +0 -12
- package/dist/communityInstaller-TWMGPSYM.cjs +0 -22
- package/dist/completion-IIZMHXYP.cjs +0 -17
- package/dist/config-KL6WU7R2.cjs +0 -20
- package/dist/constants-RLMJ5D5P.cjs +0 -21
- package/dist/export-WLGNWEMJ.cjs +0 -15
- package/dist/feedback-G635NCLJ.js +0 -18
- package/dist/feedback-LLMK3TZH.cjs +0 -18
- package/dist/help-BAXLP2M2.cjs +0 -12
- package/dist/history-6HOJSEMT.cjs +0 -14
- package/dist/hooks-XVFU67T2.cjs +0 -18
- package/dist/i18n-MUJMKTFM.cjs +0 -33
- package/dist/ide-CCQ33PGC.cjs +0 -15
- package/dist/ide-VLVFBZ5F.js +0 -15
- package/dist/import-J46F54JY.cjs +0 -10
- package/dist/init-EE5Y7RBL.cjs +0 -10
- package/dist/inputPrompt-IIFKCX5Q.cjs +0 -90
- package/dist/language-CVLPB7OV.js +0 -21
- package/dist/language-ZTWFHUSV.cjs +0 -21
- package/dist/learn-PON7I5QS.js +0 -23
- package/dist/learn-XLRSVNA3.cjs +0 -23
- package/dist/login-223QTGBG.cjs +0 -26
- package/dist/login-6IKTBUBY.js +0 -26
- package/dist/logout-RN2AG6SI.js +0 -23
- package/dist/logout-U3M4FFX7.cjs +0 -23
- package/dist/mcp-NUQ76QQB.cjs +0 -20
- package/dist/memory-CYMDQ2YC.cjs +0 -10
- package/dist/model-IDRCKDML.cjs +0 -10
- package/dist/new-7LEWOUF2.cjs +0 -12
- package/dist/onboarding-FXX7YHSJ.cjs +0 -35
- package/dist/onboarding-JYNMK6NI.js +0 -35
- package/dist/permissions-YBNSANIA.cjs +0 -10
- package/dist/plan-XEJMOT55.cjs +0 -13
- package/dist/quit-B43SJ6E4.cjs +0 -10
- package/dist/quit-GWTNHQSP.js +0 -10
- package/dist/resume-DYVOQN5L.cjs +0 -16
- package/dist/resume-M25UQKOX.js +0 -16
- package/dist/review-UWHWQHCB.cjs +0 -9
- package/dist/search-CPX4PWHP.js +0 -20
- package/dist/search-VUF3M4N3.cjs +0 -20
- package/dist/sessions-JODKER5D.cjs +0 -10
- package/dist/settings-55BNW6BF.js +0 -33
- package/dist/settings-BKTS7OMC.cjs +0 -33
- package/dist/setup-IRC5HQG2.js +0 -29
- package/dist/setup-MMQ7TWOP.cjs +0 -29
- package/dist/share-6JRQECAH.cjs +0 -17
- package/dist/share-YM5MJKMO.js +0 -17
- package/dist/skills-LWSOKOSH.cjs +0 -29
- package/dist/skills-new-GPL46YV2.js +0 -18
- package/dist/skills-new-L5BEZN5V.cjs +0 -18
- package/dist/slashCommands-FBPCIWM5.cjs +0 -95
- package/dist/slashCommands-FCWY5DXW.js +0 -95
- package/dist/status-3B5SDZPL.js +0 -17
- package/dist/status-TTGRF6NC.cjs +0 -17
- package/dist/sync-77CXVVTK.cjs +0 -21
- package/dist/sync-EH4K5U3N.cjs +0 -40
- package/dist/theme-64BYGJ57.cjs +0 -21
- package/dist/theme-YJE6HEON.js +0 -21
- package/dist/undo-PRTEGL2J.cjs +0 -10
|
@@ -1,80 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildSessionChatLog,
|
|
3
|
+
formatChatLogPreview
|
|
4
|
+
} from "./chunk-RS2E32YB.js";
|
|
1
5
|
import {
|
|
2
6
|
showModal
|
|
3
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-LOSXLH7P.js";
|
|
4
8
|
import {
|
|
5
9
|
AUTOHAND_PATHS
|
|
6
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PG2JIU5M.js";
|
|
7
11
|
import {
|
|
8
12
|
t
|
|
9
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-SJQU2ZFR.js";
|
|
10
14
|
|
|
11
15
|
// src/commands/resume.ts
|
|
12
16
|
import chalk from "chalk";
|
|
13
17
|
import fs from "fs-extra";
|
|
14
18
|
import path from "path";
|
|
15
|
-
|
|
16
|
-
// src/session/chatLog.ts
|
|
17
|
-
function decodeJsonStringLiteral(value) {
|
|
18
|
-
try {
|
|
19
|
-
return JSON.parse(`"${value}"`);
|
|
20
|
-
} catch {
|
|
21
|
-
return value;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function extractJsonStringField(raw, field) {
|
|
25
|
-
const match = raw.match(new RegExp(`"${field}"\\s*:\\s*"((?:\\\\.|[^"\\\\])*)"`, "s"));
|
|
26
|
-
return match?.[1] ? decodeJsonStringLiteral(match[1]) : null;
|
|
27
|
-
}
|
|
28
|
-
function getAssistantChatLogContent(content) {
|
|
29
|
-
const trimmed = content.trim();
|
|
30
|
-
if (!trimmed) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
const parsed = JSON.parse(trimmed);
|
|
35
|
-
for (const field of ["finalResponse", "response", "content", "message"]) {
|
|
36
|
-
const value = parsed[field];
|
|
37
|
-
if (typeof value === "string" && value.trim()) {
|
|
38
|
-
return value.trim();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return null;
|
|
42
|
-
} catch {
|
|
43
|
-
const finalResponse = extractJsonStringField(trimmed, "finalResponse") ?? extractJsonStringField(trimmed, "response");
|
|
44
|
-
if (finalResponse?.trim()) {
|
|
45
|
-
return finalResponse.trim();
|
|
46
|
-
}
|
|
47
|
-
if (trimmed.startsWith("{") || trimmed.includes('"thought"')) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
return trimmed;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function buildSessionChatLog(messages) {
|
|
54
|
-
const chatMessages = [];
|
|
55
|
-
for (const message of messages) {
|
|
56
|
-
if (message.role === "user") {
|
|
57
|
-
const content = message.content.trim();
|
|
58
|
-
if (content) {
|
|
59
|
-
chatMessages.push({ role: "user", content });
|
|
60
|
-
}
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
if (message.role === "assistant") {
|
|
64
|
-
const content = getAssistantChatLogContent(message.content);
|
|
65
|
-
if (content) {
|
|
66
|
-
chatMessages.push({ role: "assistant", content });
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return chatMessages;
|
|
71
|
-
}
|
|
72
|
-
function formatChatLogPreview(content, maxLength = 100) {
|
|
73
|
-
const singleLine = content.replace(/\n/g, " ").replace(/\s+/g, " ").trim();
|
|
74
|
-
return singleLine.length > maxLength ? `${singleLine.slice(0, maxLength)}...` : singleLine;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// src/commands/resume.ts
|
|
78
19
|
var metadata = {
|
|
79
20
|
command: "/resume",
|
|
80
21
|
description: t("commands.resume.description"),
|
|
@@ -226,15 +167,9 @@ ${t("commands.resume.resuming", { id: title })}`));
|
|
|
226
167
|
}
|
|
227
168
|
|
|
228
169
|
export {
|
|
229
|
-
buildSessionChatLog,
|
|
230
170
|
metadata,
|
|
231
171
|
resume
|
|
232
172
|
};
|
|
233
|
-
/**
|
|
234
|
-
* @license
|
|
235
|
-
* Copyright 2026 Autohand AI LLC
|
|
236
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
237
|
-
*/
|
|
238
173
|
/**
|
|
239
174
|
* @license
|
|
240
175
|
* Copyright 2025 Autohand AI LLC
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
var _chunkDA7NBAJKcjs = require('./chunk-DA7NBAJK.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkVWHAUB77cjs = require('./chunk-VWHAUB77.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkRJCZLFHEcjs = require('./chunk-RJCZLFHE.cjs');
|
|
10
10
|
|
|
11
11
|
// src/commands/clear.ts
|
|
12
12
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
@@ -17,7 +17,7 @@ async function clearConversation(ctx) {
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
const conversationHistory = _chunkDA7NBAJKcjs.ConversationManager.getInstance().history();
|
|
20
|
-
const saved = await
|
|
20
|
+
const saved = await _chunkVWHAUB77cjs.extractAndSaveSessionMemories.call(void 0, {
|
|
21
21
|
llm: ctx.llm,
|
|
22
22
|
memoryManager: ctx.memoryManager,
|
|
23
23
|
conversationHistory,
|
|
@@ -42,7 +42,7 @@ async function clearConversation(ctx) {
|
|
|
42
42
|
)
|
|
43
43
|
);
|
|
44
44
|
} else {
|
|
45
|
-
console.log(_chalk2.default.cyan(
|
|
45
|
+
console.log(_chalk2.default.cyan(_chunkRJCZLFHEcjs.t.call(void 0, "commands.new.cleared")));
|
|
46
46
|
}
|
|
47
47
|
console.log();
|
|
48
48
|
return null;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SetupWizard
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TJZUPS4Z.js";
|
|
4
4
|
import {
|
|
5
5
|
loadConfig,
|
|
6
6
|
resolveWorkspaceRoot,
|
|
7
7
|
saveConfig
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-CM24K6ZT.js";
|
|
9
9
|
import {
|
|
10
10
|
detectLocale,
|
|
11
11
|
initI18n,
|
|
12
12
|
t
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-SJQU2ZFR.js";
|
|
14
14
|
|
|
15
15
|
// src/commands/setup.ts
|
|
16
16
|
import chalk from "chalk";
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAssistantChatLogContent
|
|
3
|
+
} from "./chunk-RS2E32YB.js";
|
|
4
|
+
import {
|
|
5
|
+
package_default
|
|
6
|
+
} from "./chunk-NOWCRKP2.js";
|
|
7
|
+
import {
|
|
8
|
+
AUTOHAND_FILES
|
|
9
|
+
} from "./chunk-PG2JIU5M.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 handoffSessionMetadata = {
|
|
202
|
+
command: "/handoff session",
|
|
203
|
+
description: "handoff this session to the Autohand Code iOS app",
|
|
204
|
+
implemented: true
|
|
205
|
+
};
|
|
206
|
+
var MAX_MOBILE_SNAPSHOT_MESSAGES = 24;
|
|
207
|
+
var HANDOFF_FLAG = "experimental_handoff";
|
|
208
|
+
function formatUrl(url) {
|
|
209
|
+
return terminalLink.isSupported ? terminalLink(url, url) : chalk.cyan.underline(url);
|
|
210
|
+
}
|
|
211
|
+
function formatExpiry(value) {
|
|
212
|
+
const date = new Date(value);
|
|
213
|
+
if (Number.isNaN(date.getTime())) return value;
|
|
214
|
+
return date.toLocaleString();
|
|
215
|
+
}
|
|
216
|
+
function nativeAppUrl(pairingUrl) {
|
|
217
|
+
const url = new URL(pairingUrl);
|
|
218
|
+
const nativeUrl = new URL("autohand-code://go");
|
|
219
|
+
const pairingId = url.searchParams.get("pairing");
|
|
220
|
+
const token = url.searchParams.get("token");
|
|
221
|
+
if (pairingId) nativeUrl.searchParams.set("pairing", pairingId);
|
|
222
|
+
if (token) nativeUrl.searchParams.set("token", token);
|
|
223
|
+
return nativeUrl.toString();
|
|
224
|
+
}
|
|
225
|
+
function buildMobileSessionSnapshot(session) {
|
|
226
|
+
const messages = [];
|
|
227
|
+
for (const message of session.getMessages()) {
|
|
228
|
+
if (message.role === "user") {
|
|
229
|
+
const content = message.content.trim();
|
|
230
|
+
if (content) {
|
|
231
|
+
messages.push({ role: "user", content, timestamp: message.timestamp });
|
|
232
|
+
}
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
if (message.role === "assistant") {
|
|
236
|
+
const content = getAssistantChatLogContent(message.content);
|
|
237
|
+
if (content) {
|
|
238
|
+
messages.push({ role: "assistant", content, timestamp: message.timestamp });
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
const recentMessages = messages.slice(-MAX_MOBILE_SNAPSHOT_MESSAGES);
|
|
243
|
+
const firstUserMessage = messages.find((message) => message.role === "user");
|
|
244
|
+
const title = firstUserMessage?.content ? firstUserMessage.content.replace(/\s+/g, " ").slice(0, 80) : `Continue ${session.metadata.projectName}`;
|
|
245
|
+
return {
|
|
246
|
+
title,
|
|
247
|
+
summary: session.metadata.summary,
|
|
248
|
+
messageCount: session.metadata.messageCount,
|
|
249
|
+
lastActivity: session.metadata.lastActiveAt,
|
|
250
|
+
messages: recentMessages
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
function parseMode(args, canSteer) {
|
|
254
|
+
if (args.includes("--queue")) return "queue";
|
|
255
|
+
if (args.includes("--steer")) return "steer";
|
|
256
|
+
return canSteer ? "steer" : "queue";
|
|
257
|
+
}
|
|
258
|
+
async function go(ctx, args = []) {
|
|
259
|
+
const mode = parseMode(args, Boolean(ctx.enqueueInstruction));
|
|
260
|
+
if (mode === "steer" && !ctx.enqueueInstruction) {
|
|
261
|
+
return [
|
|
262
|
+
chalk.yellow("Steer mode requires an interactive CLI session."),
|
|
263
|
+
chalk.gray("Run /go --queue to create a durable queue-only handoff from this mode.")
|
|
264
|
+
].join("\n");
|
|
265
|
+
}
|
|
266
|
+
const token = ctx.config?.auth?.token;
|
|
267
|
+
if (!token) {
|
|
268
|
+
return [
|
|
269
|
+
chalk.yellow("Sign in first with /login."),
|
|
270
|
+
chalk.gray("Then run /go again to pair this laptop session with your phone.")
|
|
271
|
+
].join("\n");
|
|
272
|
+
}
|
|
273
|
+
const session = ctx.currentSession ?? ctx.sessionManager.getCurrentSession();
|
|
274
|
+
if (!session) {
|
|
275
|
+
return [
|
|
276
|
+
chalk.yellow("No active session to pair."),
|
|
277
|
+
chalk.gray("Start a conversation, then run /go from the project you want to control remotely.")
|
|
278
|
+
].join("\n");
|
|
279
|
+
}
|
|
280
|
+
const client = ctx.client ?? new MobileHandoffClient({
|
|
281
|
+
baseUrl: getMobileApiBaseUrl(ctx.config)
|
|
282
|
+
});
|
|
283
|
+
try {
|
|
284
|
+
const deviceId = await client.getDeviceId();
|
|
285
|
+
await client.registerDevice(token, {
|
|
286
|
+
deviceId,
|
|
287
|
+
clientType: "cli",
|
|
288
|
+
agentName: `${os.hostname()} Autohand Code`,
|
|
289
|
+
metadata: {
|
|
290
|
+
workspacePath: ctx.workspaceRoot,
|
|
291
|
+
projectName: session.metadata.projectName,
|
|
292
|
+
sessionId: session.metadata.sessionId,
|
|
293
|
+
model: ctx.model,
|
|
294
|
+
provider: ctx.provider,
|
|
295
|
+
platform: process.platform,
|
|
296
|
+
hostname: os.hostname(),
|
|
297
|
+
client: session.metadata.client,
|
|
298
|
+
clientVersion: session.metadata.clientVersion
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
const pairing = await client.createPairing(token, {
|
|
302
|
+
deviceId,
|
|
303
|
+
sessionId: session.metadata.sessionId,
|
|
304
|
+
workspacePath: ctx.workspaceRoot,
|
|
305
|
+
projectName: session.metadata.projectName,
|
|
306
|
+
model: ctx.model,
|
|
307
|
+
provider: ctx.provider,
|
|
308
|
+
capabilities: ["prompt", "approval", "notifications"],
|
|
309
|
+
metadata: {
|
|
310
|
+
platform: process.platform,
|
|
311
|
+
hostname: os.hostname(),
|
|
312
|
+
client: session.metadata.client,
|
|
313
|
+
clientVersion: session.metadata.clientVersion,
|
|
314
|
+
sessionSnapshot: JSON.stringify(buildMobileSessionSnapshot(session))
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
if (mode === "steer" && ctx.enqueueInstruction) {
|
|
318
|
+
startMobileRelay({
|
|
319
|
+
client,
|
|
320
|
+
token,
|
|
321
|
+
deviceId,
|
|
322
|
+
sessionId: session.metadata.sessionId,
|
|
323
|
+
pairingId: pairing.id,
|
|
324
|
+
mode,
|
|
325
|
+
pollIntervalMs: pairing.pollIntervalMs,
|
|
326
|
+
enqueueInstruction: ctx.enqueueInstruction
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
const appUrl = nativeAppUrl(pairing.pairingUrl);
|
|
330
|
+
const qr = await QRCode.toString(pairing.pairingUrl, {
|
|
331
|
+
type: "utf8",
|
|
332
|
+
errorCorrectionLevel: "M"
|
|
333
|
+
});
|
|
334
|
+
return [
|
|
335
|
+
"",
|
|
336
|
+
chalk.bold("Autohand Code mobile handoff"),
|
|
337
|
+
chalk.gray("Scan this with the iOS app to continue this session from your phone."),
|
|
338
|
+
"",
|
|
339
|
+
qr,
|
|
340
|
+
"",
|
|
341
|
+
`${chalk.gray("Scan or open:")} ${formatUrl(pairing.pairingUrl)}`,
|
|
342
|
+
`${chalk.gray("Simulator fallback:")} ${formatUrl(appUrl)}`,
|
|
343
|
+
`${chalk.gray("Project:")} ${chalk.cyan(session.metadata.projectName)}`,
|
|
344
|
+
`${chalk.gray("Session:")} ${chalk.cyan(session.metadata.sessionId)}`,
|
|
345
|
+
`${chalk.gray("Mode:")} ${mode === "steer" ? chalk.green("steer live") : chalk.yellow("queue")}`,
|
|
346
|
+
`${chalk.gray("Relay:")} ${mode === "steer" ? chalk.green("listening for mobile prompts") : chalk.yellow("prompts will wait in the queue")}`,
|
|
347
|
+
`${chalk.gray("Expires:")} ${chalk.cyan(formatExpiry(pairing.expiresAt))}`,
|
|
348
|
+
""
|
|
349
|
+
].join("\n");
|
|
350
|
+
} catch (error) {
|
|
351
|
+
return [
|
|
352
|
+
chalk.red("Could not create mobile handoff."),
|
|
353
|
+
chalk.gray(error.message)
|
|
354
|
+
].join("\n");
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
async function handoffSession(ctx, args = []) {
|
|
358
|
+
const localDefault = ctx.config?.features?.experimentalHandoff === true;
|
|
359
|
+
const enabled = ctx.isFeatureEnabled?.(HANDOFF_FLAG, localDefault) ?? localDefault;
|
|
360
|
+
if (!enabled) {
|
|
361
|
+
return `The /handoff session command is behind ${HANDOFF_FLAG}. Run /features enable ${HANDOFF_FLAG}, then /handoff session again. No restart required.`;
|
|
362
|
+
}
|
|
363
|
+
await ctx.trackFeatureActivation?.(HANDOFF_FLAG, { surface: "slash_command" });
|
|
364
|
+
return go(ctx, args);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
export {
|
|
368
|
+
metadata,
|
|
369
|
+
handoffSessionMetadata,
|
|
370
|
+
go,
|
|
371
|
+
handoffSession
|
|
372
|
+
};
|
|
373
|
+
/**
|
|
374
|
+
* @license
|
|
375
|
+
* Copyright 2026 Autohand AI LLC
|
|
376
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
377
|
+
*/
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkEFXFURDYcjs = require('./chunk-EFXFURDY.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkCSUGNNJYcjs = require('./chunk-CSUGNNJY.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkCNQKIWIScjs = require('./chunk-CNQKIWIS.cjs');
|
|
10
10
|
|
|
11
11
|
// src/reporting/processErrorReporting.ts
|
|
12
12
|
var DEFAULT_API_BASE_URL = "https://api.autohand.ai";
|
|
@@ -45,6 +45,9 @@ function detectClientName(processRef) {
|
|
|
45
45
|
function getLogPrefix(processRef) {
|
|
46
46
|
return detectClientName(processRef) === "acp" ? "[ACP]" : "[DEBUG]";
|
|
47
47
|
}
|
|
48
|
+
function isProcessAutoReportDisabled(processRef) {
|
|
49
|
+
return processRef.env.AUTOHAND_DISABLE_AUTO_REPORT === "1" || processRef.env.AUTOHAND_AUTO_REPORT === "0";
|
|
50
|
+
}
|
|
48
51
|
function captureLastError(reason) {
|
|
49
52
|
globalThis.__autohandLastError = reason;
|
|
50
53
|
}
|
|
@@ -78,11 +81,11 @@ async function getAutoReportManager(processRef, explicitConfigPath) {
|
|
|
78
81
|
const managerPromise = (async () => {
|
|
79
82
|
let config;
|
|
80
83
|
try {
|
|
81
|
-
config = await
|
|
84
|
+
config = await _chunkCNQKIWIScjs.loadConfig.call(void 0, configPath);
|
|
82
85
|
} catch (e) {
|
|
83
86
|
config = buildFallbackConfig(configPath, processRef);
|
|
84
87
|
}
|
|
85
|
-
return new (0,
|
|
88
|
+
return new (0, _chunkEFXFURDYcjs.AutoReportManager)(config, _chunkCSUGNNJYcjs.package_default.version);
|
|
86
89
|
})();
|
|
87
90
|
managerCache.set(cacheKey, managerPromise);
|
|
88
91
|
return managerPromise;
|
|
@@ -94,6 +97,19 @@ function isIgnorableStdinReadError(err, _processRef) {
|
|
|
94
97
|
const maybeError = err;
|
|
95
98
|
return maybeError.code === "EIO" && maybeError.syscall === "read";
|
|
96
99
|
}
|
|
100
|
+
function isIgnorableTerminalPipeError(err) {
|
|
101
|
+
if (!err || typeof err !== "object") {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
const maybeError = err;
|
|
105
|
+
if (maybeError.code === "UV_EPIPE" && maybeError.syscall === "recv") {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
if (maybeError.code !== "EPIPE") {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
return maybeError.syscall === "read" || maybeError.syscall === "write" || /\b(read|write) EPIPE\b/i.test(_nullishCoalesce(maybeError.message, () => ( "")));
|
|
112
|
+
}
|
|
97
113
|
function isIgnorableFilesystemError(err) {
|
|
98
114
|
if (!err || typeof err !== "object") return false;
|
|
99
115
|
const maybeError = err;
|
|
@@ -113,6 +129,7 @@ function isIgnorableUnhandledRejection(reason, processRef) {
|
|
|
113
129
|
return true;
|
|
114
130
|
}
|
|
115
131
|
if (isIgnorableStdinReadError(reason, processRef)) return true;
|
|
132
|
+
if (isIgnorableTerminalPipeError(reason)) return true;
|
|
116
133
|
if (isIgnorableFilesystemError(reason)) return true;
|
|
117
134
|
if (isIgnorableTerminalOrRuntimeError(reason)) return true;
|
|
118
135
|
return false;
|
|
@@ -151,10 +168,13 @@ function describeReasonType(reason) {
|
|
|
151
168
|
}
|
|
152
169
|
async function reportProcessError(reason, options) {
|
|
153
170
|
const processRef = _nullishCoalesce(options.processRef, () => ( process));
|
|
171
|
+
if (isProcessAutoReportDisabled(processRef)) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
154
174
|
if (options.handler === "unhandledRejection" && isIgnorableUnhandledRejection(reason, processRef)) {
|
|
155
175
|
return;
|
|
156
176
|
}
|
|
157
|
-
if (options.handler === "uncaughtException" && (isIgnorableStdinReadError(reason, processRef) || isIgnorableTerminalOrRuntimeError(reason))) {
|
|
177
|
+
if (options.handler === "uncaughtException" && (isIgnorableStdinReadError(reason, processRef) || isIgnorableTerminalPipeError(reason) || isIgnorableTerminalOrRuntimeError(reason))) {
|
|
158
178
|
return;
|
|
159
179
|
}
|
|
160
180
|
captureLastError(reason);
|
|
@@ -186,9 +206,15 @@ function installProcessErrorHandlers(options = {}) {
|
|
|
186
206
|
processRef.exit(code);
|
|
187
207
|
})));
|
|
188
208
|
processRef.on("uncaughtException", (error) => {
|
|
209
|
+
if (isProcessAutoReportDisabled(processRef)) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
189
212
|
if (isIgnorableStdinReadError(error, processRef)) {
|
|
190
213
|
return;
|
|
191
214
|
}
|
|
215
|
+
if (isIgnorableTerminalPipeError(error)) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
192
218
|
if (isIgnorableTerminalOrRuntimeError(error)) {
|
|
193
219
|
return;
|
|
194
220
|
}
|
|
@@ -205,6 +231,9 @@ function installProcessErrorHandlers(options = {}) {
|
|
|
205
231
|
})();
|
|
206
232
|
});
|
|
207
233
|
processRef.on("unhandledRejection", (reason, promise) => {
|
|
234
|
+
if (isProcessAutoReportDisabled(processRef)) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
208
237
|
if (isIgnorableUnhandledRejection(reason, processRef)) {
|
|
209
238
|
return;
|
|
210
239
|
}
|