autohand-cli 0.7.14 → 0.8.0
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/assets/icon.png +0 -0
- package/dist/AgentRegistry-7LDL5HJH.js +10 -0
- package/dist/AgentRegistry-NQCLWABO.cjs +10 -0
- package/dist/{AutomodeManager-NGRAO2MH.js → AutomodeManager-MWLKGPZK.js} +2 -0
- package/dist/{AutomodeManager-ZKQMBM4T.cjs → AutomodeManager-NYIZNODK.cjs} +3 -1
- package/dist/CommunitySkillsCache-6QPRMTJO.js +8 -0
- package/dist/CommunitySkillsCache-GTQMOCCO.cjs +8 -0
- package/dist/{GitHubRegistryFetcher-US2JJID4.js → GitHubRegistryFetcher-6JQ5JEDZ.js} +1 -0
- package/dist/{GitHubRegistryFetcher-K744NNAJ.cjs → GitHubRegistryFetcher-S7QFUEKV.cjs} +1 -0
- package/dist/HookManager-Q2KYMCP4.cjs +7 -0
- package/dist/HookManager-TTP4Y6DC.js +7 -0
- package/dist/ImportWizard-IWVPRKFF.cjs +466 -0
- package/dist/ImportWizard-KASGQPUY.js +466 -0
- package/dist/McpClientManager-7RM6YT35.js +8 -0
- package/dist/McpClientManager-RKD7C6OY.cjs +8 -0
- package/dist/MemoryManager-GUNLRP5S.js +8 -0
- package/dist/MemoryManager-TNSGKDKX.cjs +8 -0
- package/dist/PermissionManager-2GO5PQ6M.cjs +11 -0
- package/dist/{PermissionManager-U5OMGR3L.js → PermissionManager-K7UWSNB6.js} +4 -3
- package/dist/ProjectProfiler-UMJJSOCE.js +194 -0
- package/dist/ProjectProfiler-ZDWR2ODG.cjs +194 -0
- package/dist/ProviderFactory-EFFQBRQ6.cjs +9 -0
- package/dist/ProviderFactory-S3LWTQQC.js +9 -0
- package/dist/SessionManager-FEUAU3ZJ.cjs +10 -0
- package/dist/SessionManager-IKWAK2PI.js +10 -0
- package/dist/SkillsRegistry-GDEGFP6O.cjs +9 -0
- package/dist/SkillsRegistry-SI5RUHQ4.js +9 -0
- package/dist/SubAgent-I75HELJG.js +11 -0
- package/dist/SubAgent-K3QP6WHC.cjs +11 -0
- package/dist/{SyncApiClient-AYXYSOJM.js → SyncApiClient-LVIO4C2S.js} +1 -0
- package/dist/{SyncApiClient-ID3KXEMA.cjs → SyncApiClient-ZNYMT36M.cjs} +1 -0
- package/dist/about-B2AGTV6N.js +12 -0
- package/dist/about-V2HWEZZO.cjs +12 -0
- package/dist/actionExecutor-6XCVL2SJ.js +19 -0
- package/dist/actionExecutor-YRUJNB5G.cjs +19 -0
- package/dist/add-dir-7FBQ5IFV.js +10 -0
- package/dist/add-dir-ALBSYRV3.cjs +10 -0
- package/dist/agents/builtin/code-cleaner.md +14 -0
- package/dist/agents/builtin/docs-writer.md +14 -0
- package/dist/agents/builtin/researcher.md +14 -0
- package/dist/agents/builtin/reviewer.md +15 -0
- package/dist/agents/builtin/tester.md +15 -0
- package/dist/agents/builtin/todo-resolver.md +15 -0
- package/dist/agents-FCGEWTA3.cjs +12 -0
- package/dist/agents-FENGUSJD.js +12 -0
- package/dist/agents-new-FU3O55CO.js +14 -0
- package/dist/agents-new-SAFTJ7TK.cjs +14 -0
- package/dist/assets/icon.png +0 -0
- package/dist/automode-CYLGXQ4A.cjs +10 -0
- package/dist/automode-O7G3DUYN.js +10 -0
- package/dist/{cc-UTTLESTY.js → cc-7LEIJ3KF.js} +1 -0
- package/dist/{cc-2W6M7J45.cjs → cc-Q5MM4AWC.cjs} +1 -0
- package/dist/{chunk-N4ZSG6JJ.cjs → chunk-22D2CNTP.cjs} +2 -2
- package/dist/chunk-24QIWILL.js +51 -0
- package/dist/{chunk-MYNHJHDZ.js → chunk-2AA5MFES.js} +1 -1
- package/dist/{chunk-KWRUQRXR.js → chunk-2ELK5DMH.js} +44 -10
- package/dist/chunk-2JYIR3EC.cjs +1176 -0
- package/dist/{chunk-CRQKDBLD.js → chunk-2RIAPTET.js} +90 -66
- package/dist/{chunk-TSY7JHIV.cjs → chunk-33A755XB.cjs} +2 -2
- package/dist/chunk-3OEDGIFW.js +42 -0
- package/dist/{chunk-P5VDZ6PV.js → chunk-3PDTTAKJ.js} +1 -1
- package/dist/{chunk-ULMPJUJW.cjs → chunk-3WCOFXQS.cjs} +23 -23
- package/dist/{chunk-PDKNHU5G.cjs → chunk-4HKTYHNL.cjs} +22 -16
- package/dist/{chunk-Z4J4W6YQ.cjs → chunk-4JNNTOGF.cjs} +2 -48
- package/dist/chunk-55B6SBHK.js +260 -0
- package/dist/chunk-5DDDUUBM.cjs +29 -0
- package/dist/{chunk-TQB222ZB.js → chunk-5EIEWVYX.js} +2 -2
- package/dist/{chunk-SMHY3Q7B.cjs → chunk-5GGX6WNY.cjs} +54 -22
- package/dist/{chunk-3S4DEIJP.cjs → chunk-5IXII4HX.cjs} +2 -2
- package/dist/{chunk-3KBBARKO.js → chunk-5OBNULPU.js} +85 -28
- package/dist/{chunk-VVBBEYTH.cjs → chunk-5YJG6H6P.cjs} +10 -10
- package/dist/{chunk-PKOAXQKW.cjs → chunk-63WXWFDI.cjs} +11 -11
- package/dist/{chunk-DSKVMFRM.cjs → chunk-643VRA5S.cjs} +12 -4
- package/dist/{chunk-L5ZFPWHY.js → chunk-6OYHF6MF.js} +12 -4
- package/dist/chunk-7GDVDSNI.js +1176 -0
- package/dist/chunk-7QEE6SW6.cjs +260 -0
- package/dist/chunk-7UOUW76C.js +603 -0
- package/dist/{chunk-SZP4ULM5.cjs → chunk-AFN7LH5N.cjs} +17 -17
- package/dist/chunk-AHD5JJ6F.cjs +78 -0
- package/dist/{chunk-WLTVF77A.js → chunk-ALYU6VTM.js} +1 -1
- package/dist/{chunk-BRXIEKJ3.cjs → chunk-AMT2UZBI.cjs} +5 -5
- package/dist/{chunk-SFNT5DYE.cjs → chunk-BT35E7NE.cjs} +4 -4
- package/dist/{chunk-NUHYCFHW.cjs → chunk-BVKXEQVG.cjs} +54 -65
- package/dist/chunk-CDMGQR4L.cjs +4470 -0
- package/dist/chunk-CNBKZEX5.cjs +109 -0
- package/dist/{chunk-GD4AFYJ3.js → chunk-CVVEYUFR.js} +1 -1
- package/dist/chunk-CWALFEGU.js +58 -0
- package/dist/{chunk-MTALRU7R.cjs → chunk-D3YCFT5O.cjs} +3 -3
- package/dist/{chunk-CH4SPVFD.cjs → chunk-D6VG7B5X.cjs} +9 -3
- package/dist/{chunk-TOTDRAWG.js → chunk-DH7DKCUL.js} +1 -1
- package/dist/{chunk-RFNCTE4V.cjs → chunk-DLG43ZJ7.cjs} +2 -2
- package/dist/chunk-DN573ME7.cjs +1675 -0
- package/dist/{chunk-63BXZQZW.js → chunk-E23CMMNJ.js} +20 -4
- package/dist/{chunk-4HA7IHLJ.cjs → chunk-EEGK5DYE.cjs} +32 -16
- package/dist/{chunk-DTFR3WD6.js → chunk-EF4LKUQY.js} +1 -1
- package/dist/{chunk-PWLLLJHU.js → chunk-EGFT4PGW.js} +3 -1
- package/dist/{chunk-S47TCZDL.js → chunk-EIU7K7CM.js} +7 -7
- package/dist/{chunk-BISFR6ZL.js → chunk-EPNYD4NV.js} +1 -1
- package/dist/chunk-EZMINVLU.js +123 -0
- package/dist/{chunk-LYMTYC67.js → chunk-F23EVNJU.js} +2 -2
- package/dist/chunk-FHK7UDOJ.cjs +42 -0
- package/dist/chunk-FMB3TSWP.cjs +218 -0
- package/dist/{chunk-XBUMKEFN.cjs → chunk-FPAE6ORV.cjs} +91 -34
- package/dist/{chunk-DEAEO7RI.js → chunk-FYZ67R4R.js} +1 -1
- package/dist/{chunk-6SHHB2VD.js → chunk-G7SZIOHF.js} +2 -2
- package/dist/{chunk-FB6JWNJS.js → chunk-GBHDROGL.js} +54 -65
- package/dist/chunk-GCHELXLO.js +131 -0
- package/dist/{chunk-XPOHYKR3.js → chunk-GHSBZ3YB.js} +2 -2
- package/dist/chunk-GLBAF54O.js +218 -0
- package/dist/chunk-GO3N7LRW.cjs +131 -0
- package/dist/{chunk-Y2ZSH3YF.cjs → chunk-H6ZGZEBG.cjs} +57 -23
- package/dist/{chunk-DSCQPWUB.cjs → chunk-HA7OAVOB.cjs} +15 -15
- package/dist/{chunk-NMWEDN4Z.js → chunk-HFMLWH7B.js} +108 -0
- package/dist/{chunk-D2XFTCRP.js → chunk-HQ7YZKXE.js} +1 -1
- package/dist/{chunk-L42HTMMR.cjs → chunk-HTLINWX6.cjs} +2 -2
- package/dist/chunk-IETRBBMP.cjs +603 -0
- package/dist/chunk-IQ5RXU6O.js +1675 -0
- package/dist/{chunk-GVZPIQWB.js → chunk-ITB3FS72.js} +11 -5
- package/dist/{chunk-B6EBHCK2.cjs → chunk-IUMJYXBX.cjs} +6 -6
- package/dist/{chunk-ZBIBLOZL.js → chunk-IVM5F2AE.js} +500 -317
- package/dist/{chunk-GRSVQ5YZ.js → chunk-IWVQ2EW3.js} +44 -12
- package/dist/chunk-JJWCQLOU.cjs +59 -0
- package/dist/{chunk-KXAAEROY.js → chunk-JMFDD7IZ.js} +2 -2
- package/dist/chunk-JSBRDJBE.js +30 -0
- package/dist/chunk-LJFUXC56.cjs +123 -0
- package/dist/chunk-LL3PQ2U6.js +4470 -0
- package/dist/chunk-LQ4LQQG6.cjs +27 -0
- package/dist/chunk-LQGVEP3E.js +109 -0
- package/dist/{chunk-425MT6Y5.cjs → chunk-LVE6Z5SL.cjs} +9 -9
- package/dist/{chunk-XL77XYI2.cjs → chunk-LXDOQTXQ.cjs} +4 -4
- package/dist/{chunk-BG4OQUKP.js → chunk-MBBY4ZIK.js} +1 -1
- package/dist/{chunk-ZXIQCYYV.cjs → chunk-MGMXR67S.cjs} +9 -9
- package/dist/{chunk-FHUNAB2K.cjs → chunk-MHLE6AVN.cjs} +33 -6
- package/dist/chunk-MHSDHPC4.cjs +58 -0
- package/dist/chunk-MUBW5UDH.cjs +55 -0
- package/dist/{chunk-MNSTWHK3.cjs → chunk-MVWOQBCC.cjs} +11 -11
- package/dist/chunk-N254NRHT.cjs +30 -0
- package/dist/{chunk-SRLY7K6J.js → chunk-OBLIITWJ.js} +2 -2
- package/dist/{chunk-SIGWDEPS.cjs → chunk-OI7OIGNB.cjs} +10 -10
- package/dist/{chunk-V7YTCNMN.cjs → chunk-OPR34VHL.cjs} +5 -5
- package/dist/chunk-OUHQZFN4.js +78 -0
- package/dist/{chunk-HMRDNRTH.js → chunk-PEC45WYS.js} +2 -2
- package/dist/{chunk-OSUWEUZE.js → chunk-PUOE5BCN.js} +1 -1
- package/dist/chunk-Q2VYSHWU.js +59 -0
- package/dist/chunk-Q3MJ6CYS.cjs +193 -0
- package/dist/{chunk-QRGPAUST.js → chunk-Q5RN7RXC.js} +2 -2
- package/dist/{chunk-43XS26AQ.cjs → chunk-Q5RX3XGB.cjs} +4 -4
- package/dist/chunk-QCLYBIMM.cjs +51 -0
- package/dist/chunk-QMAKTSZB.cjs +48 -0
- package/dist/chunk-QT2VZNFA.js +29 -0
- package/dist/{chunk-3XJD56Z4.js → chunk-QUFAULH7.js} +9 -3
- package/dist/{chunk-RJP3SZ7Q.cjs → chunk-RD5XAJR2.cjs} +492 -309
- package/dist/chunk-RGR6ME5J.cjs +844 -0
- package/dist/{chunk-EOGKE5GD.cjs → chunk-RKJTGGMU.cjs} +221 -126
- package/dist/{chunk-NMGF2KUN.js → chunk-RO46YAPI.js} +1 -1
- package/dist/{chunk-2U5HFVRO.cjs → chunk-RVUQKMXX.cjs} +108 -0
- package/dist/chunk-S52YW5ZQ.js +844 -0
- package/dist/{chunk-ZLOTP56B.cjs → chunk-S6BDWWUG.cjs} +5 -5
- package/dist/{chunk-6DWXHBAY.js → chunk-SAHBLB3E.js} +222 -127
- package/dist/chunk-SALLHB2I.js +27 -0
- package/dist/{chunk-GIZL57FE.cjs → chunk-SEKD5FH3.cjs} +3 -1
- package/dist/{chunk-DZHR34H6.cjs → chunk-SHFA46CS.cjs} +8 -8
- package/dist/{chunk-MILZEEUV.js → chunk-SIHRD34Z.js} +2 -2
- package/dist/{chunk-BPTBKO7D.js → chunk-SO3QQJAZ.js} +216 -36
- package/dist/{chunk-HSPWX4Z2.cjs → chunk-SRQW3B6J.cjs} +223 -43
- package/dist/{chunk-MY3TZER2.js → chunk-T63AMO6H.js} +1 -1
- package/dist/{chunk-X765A7J5.js → chunk-TERCG25S.js} +1 -1
- package/dist/{chunk-WOGJXDBU.cjs → chunk-TFSRRZWP.cjs} +3 -3
- package/dist/{chunk-RRZS5A53.js → chunk-TQHOVHRS.js} +1 -1
- package/dist/{chunk-JHOQABEF.js → chunk-TWEKBHUO.js} +5 -5
- package/dist/chunk-U3WDY42C.cjs +42 -0
- package/dist/{chunk-CKN2BLHK.cjs → chunk-UBS46QL3.cjs} +2 -2
- package/dist/{chunk-H3GBSPK5.js → chunk-UGTFKUW4.js} +14 -6
- package/dist/chunk-UJTCTTUF.cjs +271 -0
- package/dist/{chunk-RUZB43HU.cjs → chunk-UTI6ZQEY.cjs} +22 -14
- package/dist/{chunk-OLG7LZBD.js → chunk-VG34MG2U.js} +1 -1
- package/dist/{chunk-ZKZRFH37.cjs → chunk-VJYPP6PP.cjs} +6 -6
- package/dist/{chunk-YHGTBPEC.js → chunk-VNQ5GL34.js} +1 -1
- package/dist/{chunk-XDVG3NM4.js → chunk-W3X6PAC7.js} +2 -48
- package/dist/{chunk-FK2DVRPJ.js → chunk-WFUUXADU.js} +2 -2
- package/dist/{chunk-R5OO7MEB.cjs → chunk-WGTJOIB7.cjs} +22 -22
- package/dist/{chunk-VHBUKGRG.js → chunk-WJDPVW7T.js} +4 -4
- package/dist/chunk-WNUVPKBW.js +42 -0
- package/dist/{chunk-EV53SLSB.cjs → chunk-WPVWQSL7.cjs} +4 -4
- package/dist/chunk-WQ3VJXZB.js +118 -0
- package/dist/chunk-WTNBX2JO.js +271 -0
- package/dist/chunk-XAV24VYN.js +48 -0
- package/dist/chunk-XDLH4EDL.cjs +118 -0
- package/dist/{chunk-U7CZFKPL.cjs → chunk-XMNHZRUB.cjs} +2 -2
- package/dist/chunk-XUDSXGGV.cjs +1822 -0
- package/dist/{chunk-WQUQ5JMM.js → chunk-XWASJ2QL.js} +4 -4
- package/dist/chunk-Y2SXUCNJ.js +55 -0
- package/dist/{chunk-AIH6GUGB.cjs → chunk-YDCDGTK6.cjs} +5 -5
- package/dist/chunk-YFXTE422.cjs +92 -0
- package/dist/chunk-YKS55CMT.js +1822 -0
- package/dist/{chunk-KC5FPUOF.cjs → chunk-YRLYSQEQ.cjs} +2 -2
- package/dist/{chunk-JWPI6O5Z.js → chunk-YS34SVY5.js} +31 -4
- package/dist/{chunk-FEVHH525.cjs → chunk-YYB42DCU.cjs} +4 -4
- package/dist/chunk-ZK6HOR62.js +92 -0
- package/dist/{chunk-BHV7CBNT.js → chunk-ZSE42BRE.js} +1 -1
- package/dist/clear-ES5WCZRF.cjs +12 -0
- package/dist/clear-J7XS6T5W.js +12 -0
- package/dist/completion-XQTDTJLK.cjs +14 -0
- package/dist/completion-XR6ZONJQ.js +14 -0
- package/dist/config-2TB3A55J.js +18 -0
- package/dist/config-RDMVIV26.cjs +18 -0
- package/dist/constants-6CPCJ3DY.cjs +21 -0
- package/dist/{constants-V6J54N3X.js → constants-UFM5B232.js} +2 -1
- package/dist/{defaultHooks-WLMRQUXG.cjs → defaultHooks-RCXPHF4M.cjs} +3 -1
- package/dist/{defaultHooks-R56VYG7I.js → defaultHooks-RDRMER3Z.js} +2 -0
- package/dist/export-EWAYH353.cjs +12 -0
- package/dist/export-ZWA6XGVS.js +12 -0
- package/dist/extractSessionMemories-SDW2MVBQ.cjs +7 -0
- package/dist/extractSessionMemories-V7K42ZHW.js +7 -0
- package/dist/feedback-5RV6ODW4.js +15 -0
- package/dist/feedback-ZPITHFJR.cjs +15 -0
- package/dist/filesystem-3SGCW2BF.js +10 -0
- package/dist/filesystem-MCFXJQ6R.cjs +10 -0
- package/dist/formatters-6K7QVWQL.cjs +10 -0
- package/dist/formatters-DQHO5I36.js +10 -0
- package/dist/{help-LKKQU2TN.js → help-I5GRCA3S.js} +3 -2
- package/dist/help-X52PZM24.cjs +12 -0
- package/dist/history-4WIOZ4TW.cjs +14 -0
- package/dist/{history-AV4XBFRK.js → history-OCHJBJW7.js} +3 -2
- package/dist/hooks-IAVTXUAI.cjs +13 -0
- package/dist/hooks-YF6HL23E.js +13 -0
- package/dist/{i18n-BSAPXM56.js → i18n-KHBXUALK.js} +2 -1
- package/dist/i18n-MVQIAZWS.cjs +33 -0
- package/dist/ide-4R3BEBIS.js +12 -0
- package/dist/ide-C7WSPQTR.cjs +12 -0
- package/dist/import-2ICSKDL7.cjs +10 -0
- package/dist/import-EAAX5HJR.js +170 -0
- package/dist/import-KRVVYJCZ.js +10 -0
- package/dist/import-PQJPNXA4.cjs +170 -0
- package/dist/index.cjs +7503 -11251
- package/dist/index.js +8735 -12483
- package/dist/init-6K3NRDOM.js +10 -0
- package/dist/init-AOUGGITS.cjs +10 -0
- package/dist/language-Q7YFDVSR.cjs +18 -0
- package/dist/language-Y6ZC7LET.js +18 -0
- package/dist/{lint-44UQJ673.cjs → lint-D5UOJWIK.cjs} +1 -0
- package/dist/{lint-TA2ZHVLM.js → lint-NJPZWVN2.js} +1 -0
- package/dist/{localProjectPermissions-WQYMGI42.js → localProjectPermissions-N77HA3XK.js} +3 -2
- package/dist/localProjectPermissions-UFSMNTBJ.cjs +18 -0
- package/dist/login-6OAH2NEH.cjs +20 -0
- package/dist/login-DL3377MD.js +20 -0
- package/dist/logout-ELQBUMTU.cjs +18 -0
- package/dist/logout-TLYA5W45.js +18 -0
- package/dist/mcp-BHOIBYUB.js +18 -0
- package/dist/mcp-TNUEXR5T.cjs +18 -0
- package/dist/{mcp-install-2KVKRAMQ.cjs → mcp-install-GROTZHAW.cjs} +26 -14
- package/dist/{mcp-install-77UXRN6R.js → mcp-install-KSADVDBE.js} +21 -9
- package/dist/memory-6DRFA43C.js +10 -0
- package/dist/memory-IORZE6WF.cjs +10 -0
- package/dist/message-JUBOK2VU.js +9 -0
- package/dist/message-ZJ5AYAMT.cjs +9 -0
- package/dist/model-CJPSPGIC.cjs +10 -0
- package/dist/model-MQXC56ES.js +10 -0
- package/dist/new-7D2B7IWM.cjs +12 -0
- package/dist/new-7VYM36RC.js +12 -0
- package/dist/{patch-BAAQIYSW.js → patch-5F6VBIT3.js} +2 -0
- package/dist/{patch-J32X2QQP.cjs → patch-MOD7QC3D.cjs} +3 -1
- package/dist/permissions-MM77OSFO.js +13 -0
- package/dist/permissions-W2F62DJ6.cjs +13 -0
- package/dist/{plan-JFGNRL2S.js → plan-G5CEKJI4.js} +1 -0
- package/dist/{plan-B3CW5DXJ.cjs → plan-QKOHE3LH.cjs} +1 -0
- package/dist/quit-7D2RDGTD.cjs +10 -0
- package/dist/quit-PKBSEJOL.js +10 -0
- package/dist/registry-A5XLMQVC.cjs +1828 -0
- package/dist/registry-WQLWHOLY.js +1828 -0
- package/dist/resume-FBKXSDOA.js +13 -0
- package/dist/resume-KLPDYPWQ.cjs +13 -0
- package/dist/search-7RNYTCNO.js +17 -0
- package/dist/search-UESMQZC3.cjs +17 -0
- package/dist/{session-T3TAZ5ZU.cjs → session-BSU2L5UI.cjs} +1 -0
- package/dist/{session-H5QWKE5E.js → session-SZMRN5KG.js} +1 -0
- package/dist/sessions-TSSUFWIJ.cjs +10 -0
- package/dist/sessions-WAXBUQTU.js +10 -0
- package/dist/settings-D6JXX5RG.js +30 -0
- package/dist/settings-RKYGXKDG.cjs +30 -0
- package/dist/share-GLX4YHS4.cjs +14 -0
- package/dist/share-U2M2KBFJ.js +14 -0
- package/dist/skills-63QLZMUO.cjs +14 -0
- package/dist/{skills-LJZA6PVJ.js → skills-BAMMXP3Q.js} +3 -2
- package/dist/{skills-install-MQINL3EC.js → skills-install-QNQWC2MV.js} +99 -28
- package/dist/{skills-install-IKJZN4G2.cjs → skills-install-UMK5H3SO.cjs} +107 -36
- package/dist/skills-new-NYKNHJHV.cjs +15 -0
- package/dist/skills-new-NZFGFKML.js +15 -0
- package/dist/slashCommands-EJ23C3Z4.cjs +69 -0
- package/dist/slashCommands-JQIL4EWX.js +69 -0
- package/dist/status-BKC7GBNQ.js +11 -0
- package/dist/status-FU3CPJWQ.cjs +11 -0
- package/dist/sync-3IEIHXIP.cjs +18 -0
- package/dist/sync-7JMZVEQD.cjs +40 -0
- package/dist/{sync-EXYX7HXW.js → sync-KWX67OUN.js} +3 -2
- package/dist/sync-YVPFT7SL.js +18 -0
- package/dist/tasks-5FPBIFLC.js +9 -0
- package/dist/tasks-TXGKGNH6.cjs +9 -0
- package/dist/team-GVK5L73L.cjs +9 -0
- package/dist/team-RWIKCLTG.js +9 -0
- package/dist/teammate-3C4MLRGH.js +139 -0
- package/dist/teammate-7C3UDQSH.cjs +139 -0
- package/dist/theme-A2CEHI7W.js +18 -0
- package/dist/theme-LNOQOVR4.cjs +18 -0
- package/dist/ui/questionModal.cjs +7 -25
- package/dist/ui/questionModal.js +6 -24
- package/dist/undo-F2IZJQUV.js +10 -0
- package/dist/undo-QEV42XLU.cjs +10 -0
- package/dist/update-TVAJMMBC.js +82 -0
- package/dist/update-Z6BIIQDC.cjs +82 -0
- package/package.json +9 -3
- package/dist/CommunitySkillsCache-ILWHWE5P.js +0 -7
- package/dist/CommunitySkillsCache-KHC6RUJW.cjs +0 -7
- package/dist/HookManager-X47HCM5G.cjs +0 -6
- package/dist/HookManager-ZXKHCD7U.js +0 -6
- package/dist/MemoryManager-6ZT7IDO5.cjs +0 -7
- package/dist/MemoryManager-AJGS5AKB.js +0 -7
- package/dist/PermissionManager-HG6W2DGU.cjs +0 -10
- package/dist/SessionManager-BJ2G6VV4.cjs +0 -9
- package/dist/SessionManager-ENPGYK5J.js +0 -9
- package/dist/SkillsRegistry-6ZFOCT25.cjs +0 -8
- package/dist/SkillsRegistry-C2SHOZ5D.js +0 -8
- package/dist/about-3BJTNSLK.js +0 -11
- package/dist/about-EABQNJGV.cjs +0 -11
- package/dist/add-dir-7FD4DMDA.cjs +0 -9
- package/dist/add-dir-LOYJ4YB5.js +0 -9
- package/dist/agents-2Y6ASV7C.js +0 -10
- package/dist/agents-UOSPKLQL.cjs +0 -10
- package/dist/agents-new-23NSGAM5.js +0 -13
- package/dist/agents-new-WI2EL7IJ.cjs +0 -13
- package/dist/automode-LGWTY3UX.js +0 -9
- package/dist/automode-WLBQ7MN7.cjs +0 -9
- package/dist/chunk-5UBW2BGC.js +0 -33
- package/dist/chunk-I6DBWNLN.cjs +0 -169
- package/dist/chunk-IZBCMJHJ.cjs +0 -33
- package/dist/completion-7WGMHKOR.cjs +0 -13
- package/dist/completion-KH33NSGP.js +0 -13
- package/dist/constants-RBQTR32A.cjs +0 -20
- package/dist/export-3QN3IH7A.js +0 -11
- package/dist/export-BI54X3MP.cjs +0 -11
- package/dist/feedback-CI4OIPOS.cjs +0 -14
- package/dist/feedback-GFPL5STE.js +0 -14
- package/dist/formatters-N5IJKYZY.cjs +0 -8
- package/dist/formatters-UG6VZJJ5.js +0 -8
- package/dist/help-CWMUGD3V.cjs +0 -11
- package/dist/history-73VBEMSI.cjs +0 -13
- package/dist/hooks-62UDQBGH.cjs +0 -12
- package/dist/hooks-XORDJD5X.js +0 -12
- package/dist/i18n-X2IU2EZD.cjs +0 -32
- package/dist/ide-RPKZALQV.js +0 -11
- package/dist/ide-YMNXJB6A.cjs +0 -11
- package/dist/init-J5HR4R7U.js +0 -9
- package/dist/init-JCC7RVMC.cjs +0 -9
- package/dist/language-AZISJCEZ.js +0 -16
- package/dist/language-F65RA6FZ.cjs +0 -16
- package/dist/localProjectPermissions-2EATUDZM.cjs +0 -17
- package/dist/login-5HLPMECE.js +0 -18
- package/dist/login-ISWYYBXP.cjs +0 -18
- package/dist/logout-3EKZM5J3.cjs +0 -16
- package/dist/logout-GE7TSZ24.js +0 -16
- package/dist/mcp-EW64QRFA.cjs +0 -15
- package/dist/mcp-VHS7AMF2.js +0 -15
- package/dist/memory-2I473RU3.js +0 -9
- package/dist/memory-JZ6NPSP3.cjs +0 -9
- package/dist/model-GXZLARPT.js +0 -9
- package/dist/model-Y274DBDO.cjs +0 -9
- package/dist/new-BG5VIGZ7.cjs +0 -9
- package/dist/new-YXFDQOA7.js +0 -9
- package/dist/permissions-QILEAGBP.cjs +0 -12
- package/dist/permissions-WVEOVMWO.js +0 -12
- package/dist/quit-NC32OEJG.cjs +0 -9
- package/dist/quit-WRRIGU33.js +0 -9
- package/dist/resume-GJIKIDPR.cjs +0 -12
- package/dist/resume-RMJNCAOK.js +0 -12
- package/dist/search-UIWIXB73.js +0 -14
- package/dist/search-WQNXDA2E.cjs +0 -14
- package/dist/sessions-HPFX2GDD.js +0 -9
- package/dist/sessions-SAQU6MFA.cjs +0 -9
- package/dist/share-2WH5ZVOO.cjs +0 -13
- package/dist/share-PSSWWVV5.js +0 -13
- package/dist/skills-YTYGART7.cjs +0 -13
- package/dist/skills-new-3WCU3CWB.js +0 -14
- package/dist/skills-new-O5LFVFZU.cjs +0 -14
- package/dist/slashCommands-7IRDOXOQ.cjs +0 -55
- package/dist/slashCommands-C6CAQA25.js +0 -55
- package/dist/status-4EDV2LSY.cjs +0 -10
- package/dist/status-NU7TJDCE.js +0 -10
- package/dist/sync-3GFSEIAZ.js +0 -16
- package/dist/sync-6M3WRKMH.cjs +0 -39
- package/dist/sync-CQNQDNTJ.cjs +0 -16
- package/dist/theme-EMJGULMI.cjs +0 -16
- package/dist/theme-FGDSXNU3.js +0 -16
- package/dist/undo-CTXQYE7C.cjs +0 -9
- package/dist/undo-HX2ZMECP.js +0 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkRVUQKMXXcjs = require('./chunk-RVUQKMXX.cjs');
|
|
4
4
|
|
|
5
5
|
// src/commands/add-dir.ts
|
|
6
6
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
@@ -286,7 +286,7 @@ async function addDir(ctx, args) {
|
|
|
286
286
|
}
|
|
287
287
|
const resolvedPath = _path2.default.resolve(dirPath);
|
|
288
288
|
if (!await _fsextra2.default.pathExists(resolvedPath)) {
|
|
289
|
-
console.log(_chalk2.default.red(
|
|
289
|
+
console.log(_chalk2.default.red(_chunkRVUQKMXXcjs.t.call(void 0, "commands.addDir.notFound", { path: dirPath })));
|
|
290
290
|
return null;
|
|
291
291
|
}
|
|
292
292
|
const stats = await _fsextra2.default.stat(resolvedPath);
|
|
@@ -305,17 +305,17 @@ async function addDir(ctx, args) {
|
|
|
305
305
|
return null;
|
|
306
306
|
}
|
|
307
307
|
if (ctx.additionalDirs.includes(resolvedPath)) {
|
|
308
|
-
console.log(_chalk2.default.yellow(
|
|
308
|
+
console.log(_chalk2.default.yellow(_chunkRVUQKMXXcjs.t.call(void 0, "commands.addDir.alreadyAdded", { path: resolvedPath })));
|
|
309
309
|
return null;
|
|
310
310
|
}
|
|
311
311
|
ctx.addAdditionalDir(resolvedPath);
|
|
312
|
-
console.log(_chalk2.default.green(
|
|
312
|
+
console.log(_chalk2.default.green(_chunkRVUQKMXXcjs.t.call(void 0, "commands.addDir.added", { path: resolvedPath })));
|
|
313
313
|
console.log(_chalk2.default.gray("You can now read, write, and modify files in this directory."));
|
|
314
314
|
return null;
|
|
315
315
|
}
|
|
316
316
|
var metadata = {
|
|
317
317
|
command: "/add-dir",
|
|
318
|
-
description:
|
|
318
|
+
description: _chunkRVUQKMXXcjs.t.call(void 0, "commands.addDir.description"),
|
|
319
319
|
implemented: true
|
|
320
320
|
};
|
|
321
321
|
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
saveConfig
|
|
3
|
-
} from "./chunk-ZBIBLOZL.js";
|
|
4
|
-
import {
|
|
5
|
-
showModal,
|
|
6
|
-
showPassword
|
|
7
|
-
} from "./chunk-3KBBARKO.js";
|
|
8
|
-
|
|
9
|
-
// src/commands/search.ts
|
|
10
|
-
import chalk from "chalk";
|
|
11
|
-
|
|
12
1
|
// src/actions/web.ts
|
|
13
2
|
import * as https from "https";
|
|
14
3
|
import * as http from "http";
|
|
4
|
+
import { existsSync } from "fs";
|
|
5
|
+
import { spawn } from "child_process";
|
|
15
6
|
var globalSearchConfig = {
|
|
16
|
-
provider: "
|
|
7
|
+
provider: "google"
|
|
17
8
|
};
|
|
18
9
|
function configureSearch(config) {
|
|
19
10
|
globalSearchConfig = { ...globalSearchConfig, ...config };
|
|
@@ -21,19 +12,176 @@ function configureSearch(config) {
|
|
|
21
12
|
function getSearchConfig() {
|
|
22
13
|
return { ...globalSearchConfig };
|
|
23
14
|
}
|
|
15
|
+
function isSearchConfigured() {
|
|
16
|
+
const config = getSearchConfig();
|
|
17
|
+
const braveKey = config.braveApiKey ?? process.env.BRAVE_SEARCH_API_KEY;
|
|
18
|
+
const parallelKey = config.parallelApiKey ?? process.env.PARALLEL_API_KEY;
|
|
19
|
+
switch (config.provider) {
|
|
20
|
+
case "brave":
|
|
21
|
+
return !!braveKey;
|
|
22
|
+
case "parallel":
|
|
23
|
+
return !!parallelKey;
|
|
24
|
+
case "google":
|
|
25
|
+
return true;
|
|
26
|
+
// Google scraping doesn't need an API key
|
|
27
|
+
case "duckduckgo":
|
|
28
|
+
default:
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function findChromePath() {
|
|
33
|
+
const platform = process.platform;
|
|
34
|
+
const paths = [];
|
|
35
|
+
if (platform === "darwin") {
|
|
36
|
+
paths.push(
|
|
37
|
+
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
|
|
38
|
+
"/Applications/Chromium.app/Contents/MacOS/Chromium",
|
|
39
|
+
"/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
if (platform === "linux") {
|
|
43
|
+
paths.push(
|
|
44
|
+
"/usr/bin/google-chrome",
|
|
45
|
+
"/usr/bin/google-chrome-stable",
|
|
46
|
+
"/usr/bin/chromium",
|
|
47
|
+
"/usr/bin/chromium-browser",
|
|
48
|
+
"/snap/bin/chromium"
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
if (platform === "win32") {
|
|
52
|
+
const programFiles = process.env.PROGRAMFILES ?? "C:\\Program Files";
|
|
53
|
+
const programFilesX86 = process.env["PROGRAMFILES(X86)"] ?? "C:\\Program Files (x86)";
|
|
54
|
+
const localAppData = process.env.LOCALAPPDATA ?? "";
|
|
55
|
+
paths.push(
|
|
56
|
+
`${programFiles}\\Google\\Chrome\\Application\\chrome.exe`,
|
|
57
|
+
`${programFilesX86}\\Google\\Chrome\\Application\\chrome.exe`,
|
|
58
|
+
`${localAppData}\\Google\\Chrome\\Application\\chrome.exe`
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
for (const p of paths) {
|
|
62
|
+
if (existsSync(p)) {
|
|
63
|
+
return p;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
function parseGoogleResultsFromDOM(html, maxResults) {
|
|
69
|
+
if (html.includes("unusual traffic") || html.includes("captcha-form") || html.includes("g-recaptcha") || html.includes("sorry/index")) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
if (html.includes("<noscript") && !html.includes('class="g"')) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
const results = [];
|
|
76
|
+
const gBlockRegex = /<div\s+class="g"[^>]*>([\s\S]*?)(?=<div\s+class="g"|<footer|$)/gi;
|
|
77
|
+
let blockMatch;
|
|
78
|
+
while ((blockMatch = gBlockRegex.exec(html)) !== null && results.length < maxResults) {
|
|
79
|
+
const block = blockMatch[1];
|
|
80
|
+
let url = null;
|
|
81
|
+
const urlMatch = block.match(/<a[^>]*href="(\/url\?q=([^&"]+)|https?:\/\/[^"]+)"[^>]*>/i);
|
|
82
|
+
if (urlMatch) {
|
|
83
|
+
if (urlMatch[2]) {
|
|
84
|
+
url = decodeURIComponent(urlMatch[2]);
|
|
85
|
+
} else {
|
|
86
|
+
url = urlMatch[1];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (!url || url.includes("google.com") || !url.startsWith("http")) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const titleMatch = block.match(/<h3[^>]*>([\s\S]*?)<\/h3>/i);
|
|
93
|
+
const title = titleMatch ? htmlToText(titleMatch[1]).trim() : "";
|
|
94
|
+
if (!title) continue;
|
|
95
|
+
let snippet = "";
|
|
96
|
+
const snippetMatch = block.match(
|
|
97
|
+
/class="(?:VwiC3b|st|aCOpRe|s3v9rd)[^"]*"[^>]*>([\s\S]*?)<\/(?:div|span)>/i
|
|
98
|
+
);
|
|
99
|
+
if (snippetMatch) {
|
|
100
|
+
snippet = htmlToText(snippetMatch[1]).trim().slice(0, 300);
|
|
101
|
+
}
|
|
102
|
+
results.push({ title, url, snippet });
|
|
103
|
+
}
|
|
104
|
+
if (results.length === 0) {
|
|
105
|
+
const linkH3Regex = /<a[^>]*href="(\/url\?q=(https?:\/\/[^&"]+)[^"]*|https?:\/\/[^"]+)"[^>]*>[\s\S]*?<h3[^>]*>([\s\S]*?)<\/h3>/gi;
|
|
106
|
+
let match;
|
|
107
|
+
while ((match = linkH3Regex.exec(html)) !== null && results.length < maxResults) {
|
|
108
|
+
const url = match[2] ? decodeURIComponent(match[2]) : match[1];
|
|
109
|
+
const title = htmlToText(match[3]).trim();
|
|
110
|
+
if (!url || !title || url.includes("google.com") || !url.startsWith("http")) continue;
|
|
111
|
+
results.push({ title, url, snippet: "" });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return results;
|
|
115
|
+
}
|
|
116
|
+
async function chromeHeadlessFetch(url, timeout = 2e4) {
|
|
117
|
+
const chromePath = findChromePath();
|
|
118
|
+
if (!chromePath) {
|
|
119
|
+
throw new Error(
|
|
120
|
+
"Google Chrome or Chromium not found. Install Chrome or configure a different search provider with /search."
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
return new Promise((resolve, reject) => {
|
|
124
|
+
const args = [
|
|
125
|
+
"--headless=new",
|
|
126
|
+
"--dump-dom",
|
|
127
|
+
"--no-sandbox",
|
|
128
|
+
"--disable-gpu",
|
|
129
|
+
"--disable-extensions",
|
|
130
|
+
"--disable-dev-shm-usage",
|
|
131
|
+
"--disable-background-networking",
|
|
132
|
+
"--disable-default-apps",
|
|
133
|
+
"--disable-sync",
|
|
134
|
+
"--no-first-run",
|
|
135
|
+
"--mute-audio",
|
|
136
|
+
url
|
|
137
|
+
];
|
|
138
|
+
let stdout = "";
|
|
139
|
+
let stderr = "";
|
|
140
|
+
let killed = false;
|
|
141
|
+
const proc = spawn(chromePath, args, {
|
|
142
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
143
|
+
timeout
|
|
144
|
+
});
|
|
145
|
+
proc.stdout.on("data", (data) => {
|
|
146
|
+
stdout += data.toString();
|
|
147
|
+
if (stdout.length > 5e5) {
|
|
148
|
+
killed = true;
|
|
149
|
+
proc.kill("SIGTERM");
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
proc.stderr.on("data", (data) => {
|
|
153
|
+
stderr += data.toString();
|
|
154
|
+
});
|
|
155
|
+
proc.on("close", (code) => {
|
|
156
|
+
if (killed) {
|
|
157
|
+
resolve(stdout.slice(0, 5e5));
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (code !== 0 && code !== null) {
|
|
161
|
+
reject(new Error(`Chrome exited with code ${code}: ${stderr.slice(0, 500)}`));
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
resolve(stdout);
|
|
165
|
+
});
|
|
166
|
+
proc.on("error", (err) => {
|
|
167
|
+
reject(new Error(`Failed to launch Chrome: ${err.message}`));
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
24
171
|
async function simpleFetch(url, options = {}) {
|
|
25
172
|
const timeout = options.timeout ?? 1e4;
|
|
26
173
|
const maxLength = options.maxLength ?? 5e4;
|
|
27
174
|
return new Promise((resolve, reject) => {
|
|
28
175
|
const parsedUrl = new URL(url);
|
|
29
176
|
const protocol = parsedUrl.protocol === "https:" ? https : http;
|
|
177
|
+
const defaultHeaders = {
|
|
178
|
+
"User-Agent": "Autohand-CLI/1.0 (https://autohand.ai)",
|
|
179
|
+
"Accept": "text/html,application/json,text/plain,*/*",
|
|
180
|
+
"Accept-Language": "en-US,en;q=0.9"
|
|
181
|
+
};
|
|
30
182
|
const req = protocol.get(url, {
|
|
31
183
|
timeout,
|
|
32
|
-
headers:
|
|
33
|
-
"User-Agent": "Autohand-CLI/1.0 (https://autohand.ai)",
|
|
34
|
-
"Accept": "text/html,application/json,text/plain,*/*",
|
|
35
|
-
"Accept-Language": "en-US,en;q=0.9"
|
|
36
|
-
}
|
|
184
|
+
headers: options.headers ?? defaultHeaders
|
|
37
185
|
}, (res) => {
|
|
38
186
|
if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
|
|
39
187
|
simpleFetch(res.headers.location, options).then(resolve).catch(reject);
|
|
@@ -97,11 +245,65 @@ async function webSearch(query, options = {}) {
|
|
|
97
245
|
);
|
|
98
246
|
}
|
|
99
247
|
return parallelSearch(enhancedQuery, parallelApiKey, maxResults);
|
|
248
|
+
case "google":
|
|
249
|
+
return googleSearch(enhancedQuery, maxResults);
|
|
100
250
|
case "duckduckgo":
|
|
101
251
|
default:
|
|
102
252
|
return duckduckgoSearch(enhancedQuery, maxResults);
|
|
103
253
|
}
|
|
104
254
|
}
|
|
255
|
+
async function googleSearch(query, maxResults) {
|
|
256
|
+
const searchUrl = `https://www.google.com/search?q=${encodeURIComponent(query)}&num=${maxResults}&hl=en`;
|
|
257
|
+
const chromePath = findChromePath();
|
|
258
|
+
if (chromePath) {
|
|
259
|
+
try {
|
|
260
|
+
const html = await chromeHeadlessFetch(searchUrl, 25e3);
|
|
261
|
+
const results = parseGoogleResultsFromDOM(html, maxResults);
|
|
262
|
+
if (results.length > 0) {
|
|
263
|
+
return results;
|
|
264
|
+
}
|
|
265
|
+
if (html.includes("unusual traffic") || html.includes("captcha") || html.includes("g-recaptcha")) {
|
|
266
|
+
throw new Error(
|
|
267
|
+
"Google blocked this search with a CAPTCHA. Your IP may be rate-limited. Configure Brave Search (free 2K queries/month) with /search command: https://brave.com/search/api/"
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
} catch (error) {
|
|
271
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
272
|
+
if (msg.includes("CAPTCHA") || msg.includes("blocked")) {
|
|
273
|
+
throw error;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
try {
|
|
278
|
+
const html = await simpleFetch(searchUrl, {
|
|
279
|
+
timeout: 15e3,
|
|
280
|
+
maxLength: 2e5,
|
|
281
|
+
headers: {
|
|
282
|
+
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
|
283
|
+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
|
284
|
+
"Accept-Language": "en-US,en;q=0.9"
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
if (html.includes("unusual traffic") || html.includes("captcha") || html.includes("sorry/index")) {
|
|
288
|
+
throw new Error(
|
|
289
|
+
"Google blocked this search request. Configure Brave Search (free 2K queries/month) with /search command: https://brave.com/search/api/"
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
const results = parseGoogleResultsFromDOM(html, maxResults);
|
|
293
|
+
if (results.length > 0) {
|
|
294
|
+
return results;
|
|
295
|
+
}
|
|
296
|
+
} catch (error) {
|
|
297
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
298
|
+
if (msg.includes("blocked") || msg.includes("CAPTCHA")) {
|
|
299
|
+
throw new Error(`Google search failed: ${msg}`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
const hasChrome = !!chromePath;
|
|
303
|
+
throw new Error(
|
|
304
|
+
`Google search failed: Could not retrieve results${hasChrome ? "" : " (Chrome not installed)"}. Configure Brave Search for reliable results: /search \u2192 Brave (free 2K queries/month at https://brave.com/search/api/)`
|
|
305
|
+
);
|
|
306
|
+
}
|
|
105
307
|
async function duckduckgoSearch(query, maxResults) {
|
|
106
308
|
try {
|
|
107
309
|
const searchUrl = `https://html.duckduckgo.com/html/?q=${encodeURIComponent(query)}`;
|
|
@@ -462,117 +664,15 @@ function formatPackageInfo(info) {
|
|
|
462
664
|
return lines.join("\n");
|
|
463
665
|
}
|
|
464
666
|
|
|
465
|
-
// src/commands/search.ts
|
|
466
|
-
async function search(ctx) {
|
|
467
|
-
const currentConfig = getSearchConfig();
|
|
468
|
-
const config = ctx.config;
|
|
469
|
-
console.log(chalk.bold("\nWeb Search Configuration\n"));
|
|
470
|
-
console.log(chalk.gray(`Current provider: ${chalk.cyan(currentConfig.provider)}`));
|
|
471
|
-
const braveKeySet = !!(currentConfig.braveApiKey || process.env.BRAVE_SEARCH_API_KEY);
|
|
472
|
-
const parallelKeySet = !!(currentConfig.parallelApiKey || process.env.PARALLEL_API_KEY);
|
|
473
|
-
console.log(chalk.gray(`Brave API key: ${braveKeySet ? chalk.green("configured") : chalk.yellow("not set")}`));
|
|
474
|
-
console.log(chalk.gray(`Parallel API key: ${parallelKeySet ? chalk.green("configured") : chalk.yellow("not set")}`));
|
|
475
|
-
console.log();
|
|
476
|
-
const providerOptions = [
|
|
477
|
-
{
|
|
478
|
-
label: `DuckDuckGo ${chalk.gray("(no API key required, may be blocked by CAPTCHA)")}`,
|
|
479
|
-
value: "duckduckgo"
|
|
480
|
-
},
|
|
481
|
-
{
|
|
482
|
-
label: `Brave Search ${chalk.gray("(requires API key)")} ${braveKeySet ? chalk.green("\u2713") : ""}`,
|
|
483
|
-
value: "brave"
|
|
484
|
-
},
|
|
485
|
-
{
|
|
486
|
-
label: `Parallel.ai ${chalk.gray("(requires API key)")} ${parallelKeySet ? chalk.green("\u2713") : ""}`,
|
|
487
|
-
value: "parallel"
|
|
488
|
-
}
|
|
489
|
-
];
|
|
490
|
-
try {
|
|
491
|
-
const result = await showModal({
|
|
492
|
-
title: "Select search provider:",
|
|
493
|
-
options: providerOptions,
|
|
494
|
-
initialIndex: providerOptions.findIndex((c) => c.value === currentConfig.provider)
|
|
495
|
-
});
|
|
496
|
-
if (!result) {
|
|
497
|
-
console.log(chalk.gray("Search configuration cancelled."));
|
|
498
|
-
return null;
|
|
499
|
-
}
|
|
500
|
-
const provider = result.value;
|
|
501
|
-
let braveApiKey = currentConfig.braveApiKey;
|
|
502
|
-
let parallelApiKey = currentConfig.parallelApiKey;
|
|
503
|
-
if (provider === "brave" && !braveKeySet) {
|
|
504
|
-
console.log(chalk.gray("\nGet your free Brave Search API key at: https://brave.com/search/api/\n"));
|
|
505
|
-
const apiKey = await showPassword({
|
|
506
|
-
title: "Enter Brave Search API key:"
|
|
507
|
-
});
|
|
508
|
-
if (apiKey?.trim()) {
|
|
509
|
-
braveApiKey = apiKey.trim();
|
|
510
|
-
} else {
|
|
511
|
-
console.log(chalk.yellow("No API key entered. Brave Search will not work without an API key."));
|
|
512
|
-
return null;
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
if (provider === "parallel" && !parallelKeySet) {
|
|
516
|
-
console.log(chalk.gray("\nGet your Parallel.ai API key at: https://platform.parallel.ai\n"));
|
|
517
|
-
const apiKey = await showPassword({
|
|
518
|
-
title: "Enter Parallel.ai API key:"
|
|
519
|
-
});
|
|
520
|
-
if (apiKey?.trim()) {
|
|
521
|
-
parallelApiKey = apiKey.trim();
|
|
522
|
-
} else {
|
|
523
|
-
console.log(chalk.yellow("No API key entered. Parallel.ai Search will not work without an API key."));
|
|
524
|
-
return null;
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
configureSearch({
|
|
528
|
-
provider,
|
|
529
|
-
braveApiKey,
|
|
530
|
-
parallelApiKey
|
|
531
|
-
});
|
|
532
|
-
if (config) {
|
|
533
|
-
config.search = {
|
|
534
|
-
provider,
|
|
535
|
-
braveApiKey,
|
|
536
|
-
parallelApiKey
|
|
537
|
-
};
|
|
538
|
-
await saveConfig(config);
|
|
539
|
-
console.log(chalk.green(`
|
|
540
|
-
\u2713 Search provider set to ${provider} and saved to config`));
|
|
541
|
-
} else {
|
|
542
|
-
console.log(chalk.green(`
|
|
543
|
-
\u2713 Search provider set to ${provider} (session only)`));
|
|
544
|
-
}
|
|
545
|
-
switch (provider) {
|
|
546
|
-
case "duckduckgo":
|
|
547
|
-
console.log(chalk.gray("Note: DuckDuckGo may block automated requests with a CAPTCHA."));
|
|
548
|
-
break;
|
|
549
|
-
case "brave":
|
|
550
|
-
console.log(chalk.gray("Brave Search is now active. Free tier allows 2,000 queries/month."));
|
|
551
|
-
break;
|
|
552
|
-
case "parallel":
|
|
553
|
-
console.log(chalk.gray("Parallel.ai Search is now active with deep research capabilities."));
|
|
554
|
-
break;
|
|
555
|
-
}
|
|
556
|
-
return null;
|
|
557
|
-
} catch (error) {
|
|
558
|
-
throw error;
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
var metadata = {
|
|
562
|
-
command: "/search",
|
|
563
|
-
description: "configure web search provider (brave, duckduckgo, parallel)",
|
|
564
|
-
implemented: true
|
|
565
|
-
};
|
|
566
|
-
|
|
567
667
|
export {
|
|
568
668
|
configureSearch,
|
|
669
|
+
getSearchConfig,
|
|
670
|
+
isSearchConfigured,
|
|
569
671
|
webSearch,
|
|
570
672
|
fetchUrl,
|
|
571
673
|
getPackageInfo,
|
|
572
674
|
formatSearchResults,
|
|
573
|
-
formatPackageInfo
|
|
574
|
-
search,
|
|
575
|
-
metadata
|
|
675
|
+
formatPackageInfo
|
|
576
676
|
};
|
|
577
677
|
/**
|
|
578
678
|
* @license
|
|
@@ -582,8 +682,3 @@ export {
|
|
|
582
682
|
* Web search and URL fetching capabilities for up-to-date information
|
|
583
683
|
* about packages, dependencies, documentation, and changelogs.
|
|
584
684
|
*/
|
|
585
|
-
/**
|
|
586
|
-
* @license
|
|
587
|
-
* Copyright 2025 Autohand AI LLC
|
|
588
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
589
|
-
*/
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
showModal
|
|
3
|
+
} from "./chunk-5OBNULPU.js";
|
|
4
|
+
|
|
5
|
+
// src/ui/questionModal.tsx
|
|
6
|
+
async function showQuestionModal(options) {
|
|
7
|
+
const { question, suggestedAnswers } = options;
|
|
8
|
+
const modalOptions = suggestedAnswers?.map((answer) => ({
|
|
9
|
+
label: answer,
|
|
10
|
+
value: answer
|
|
11
|
+
})) ?? [];
|
|
12
|
+
const result = await showModal({
|
|
13
|
+
title: question,
|
|
14
|
+
options: modalOptions,
|
|
15
|
+
allowCustomInput: true
|
|
16
|
+
});
|
|
17
|
+
return result?.value ?? null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
showQuestionModal
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* @license
|
|
25
|
+
* Copyright 2025 Autohand AI LLC
|
|
26
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
27
|
+
*/
|
|
@@ -26,7 +26,9 @@ var AUTOHAND_PATHS = {
|
|
|
26
26
|
/** Plan files for plan mode */
|
|
27
27
|
plans: _path2.default.join(AUTOHAND_HOME, "plans"),
|
|
28
28
|
/** MCP community registry cache */
|
|
29
|
-
mcpCache: _path2.default.join(AUTOHAND_HOME, "community-mcp", "cache")
|
|
29
|
+
mcpCache: _path2.default.join(AUTOHAND_HOME, "community-mcp", "cache"),
|
|
30
|
+
/** Auto-report data */
|
|
31
|
+
reporting: _path2.default.join(AUTOHAND_HOME, "reporting")
|
|
30
32
|
};
|
|
31
33
|
var AUTOHAND_FILES = {
|
|
32
34
|
/** Main config file */
|
|
@@ -1,17 +1,17 @@
|
|
|
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
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkUJTCTTUFcjs = require('./chunk-UJTCTTUF.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkRVUQKMXXcjs = require('./chunk-RVUQKMXX.cjs');
|
|
8
8
|
|
|
9
9
|
// src/commands/sync.ts
|
|
10
10
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
11
11
|
var _readline = require('readline'); var _readline2 = _interopRequireDefault(_readline);
|
|
12
12
|
var metadata = {
|
|
13
13
|
command: "/sync",
|
|
14
|
-
description:
|
|
14
|
+
description: _chunkRVUQKMXXcjs.t.call(void 0, "commands.sync.description"),
|
|
15
15
|
implemented: true
|
|
16
16
|
};
|
|
17
17
|
var globalSyncService = null;
|
|
@@ -22,7 +22,7 @@ function getSyncService() {
|
|
|
22
22
|
return globalSyncService;
|
|
23
23
|
}
|
|
24
24
|
async function sync(ctx) {
|
|
25
|
-
const config = await
|
|
25
|
+
const config = await _chunkUJTCTTUFcjs.loadConfig.call(void 0, );
|
|
26
26
|
const isLoggedIn = Boolean(_optionalChain([config, 'access', _ => _.auth, 'optionalAccess', _2 => _2.token]) && _optionalChain([config, 'access', _3 => _3.auth, 'optionalAccess', _4 => _4.user]));
|
|
27
27
|
if (!isLoggedIn) {
|
|
28
28
|
console.log(_chalk2.default.yellow("\nSettings sync requires authentication."));
|
|
@@ -119,7 +119,7 @@ function renderSyncUI(data, ctx) {
|
|
|
119
119
|
} else {
|
|
120
120
|
console.log(_chalk2.default.red(`Sync failed: ${result.error}`));
|
|
121
121
|
}
|
|
122
|
-
const config = await
|
|
122
|
+
const config = await _chunkUJTCTTUFcjs.loadConfig.call(void 0, );
|
|
123
123
|
Object.assign(data, await gatherSyncData(ctx, config));
|
|
124
124
|
} catch (err) {
|
|
125
125
|
console.log(_chalk2.default.red(`Sync error: ${err}`));
|
|
@@ -131,13 +131,13 @@ function renderSyncUI(data, ctx) {
|
|
|
131
131
|
}
|
|
132
132
|
if (char === "e") {
|
|
133
133
|
try {
|
|
134
|
-
const config = await
|
|
134
|
+
const config = await _chunkUJTCTTUFcjs.loadConfig.call(void 0, );
|
|
135
135
|
const newEnabled = _optionalChain([config, 'access', _16 => _16.sync, 'optionalAccess', _17 => _17.enabled]) === false;
|
|
136
136
|
config.sync = { ...config.sync, enabled: newEnabled };
|
|
137
|
-
await
|
|
137
|
+
await _chunkUJTCTTUFcjs.saveConfig.call(void 0, config);
|
|
138
138
|
data.enabled = newEnabled;
|
|
139
139
|
console.log(_chalk2.default.cyan(`
|
|
140
|
-
${newEnabled ?
|
|
140
|
+
${newEnabled ? _chunkRVUQKMXXcjs.t.call(void 0, "commands.sync.enabled") : _chunkRVUQKMXXcjs.t.call(void 0, "commands.sync.disabled")}`));
|
|
141
141
|
await sleep(1e3);
|
|
142
142
|
render();
|
|
143
143
|
} catch (err) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
t
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HFMLWH7B.js";
|
|
4
4
|
|
|
5
5
|
// src/commands/automode.ts
|
|
6
6
|
import chalk from "chalk";
|
|
@@ -137,7 +137,7 @@ function showHelp() {
|
|
|
137
137
|
${chalk.cyan("Auto-Mode: Autonomous Development Loops")}
|
|
138
138
|
|
|
139
139
|
Auto-mode lets autohand work autonomously on tasks through
|
|
140
|
-
iterative improvement cycles
|
|
140
|
+
iterative improvement cycles-inspired by the Ralph technique.
|
|
141
141
|
|
|
142
142
|
${chalk.yellow("Usage:")}
|
|
143
143
|
/automode <prompt> Start auto-mode with a task
|