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,18 +1,50 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkYDCDGTK6cjs = require('./chunk-YDCDGTK6.cjs');
|
|
5
5
|
|
|
6
6
|
// src/ui/ink/components/Modal.tsx
|
|
7
7
|
var _react = require('react');
|
|
8
8
|
var _ink = require('ink');
|
|
9
9
|
var _jsxruntime = require('react/jsx-runtime');
|
|
10
10
|
var OTHER_VALUE = "__other__";
|
|
11
|
+
function resolveInitialCursor(mode, optionsLength, initialIndex, defaultValue) {
|
|
12
|
+
if (mode === "confirm") {
|
|
13
|
+
return defaultValue === false ? 1 : 0;
|
|
14
|
+
}
|
|
15
|
+
if (typeof initialIndex !== "number" || !Number.isFinite(initialIndex) || optionsLength <= 0) {
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
18
|
+
return Math.max(0, Math.min(optionsLength - 1, Math.floor(initialIndex)));
|
|
19
|
+
}
|
|
20
|
+
function unmountAndResolve(instance, value, resolve) {
|
|
21
|
+
instance.unmount();
|
|
22
|
+
process.nextTick(() => resolve(value));
|
|
23
|
+
}
|
|
11
24
|
function Modal(props) {
|
|
12
|
-
const { t } =
|
|
25
|
+
const { t } = _chunkYDCDGTK6cjs.useTranslation.call(void 0, );
|
|
13
26
|
const { title, onCancel } = props;
|
|
14
27
|
const mode = "mode" in props ? props.mode : "select";
|
|
15
|
-
const
|
|
28
|
+
const selectOptionCount = mode === "select" && "options" in props ? props.options.length + ("allowCustomInput" in props && props.allowCustomInput ? 1 : 0) : 0;
|
|
29
|
+
const confirmDefaultValue = mode === "confirm" && typeof props.defaultValue === "boolean" ? props.defaultValue : void 0;
|
|
30
|
+
const maxVisible = mode === "select" && "maxVisible" in props && typeof props.maxVisible === "number" ? props.maxVisible : 10;
|
|
31
|
+
const [cursor, setCursor] = _react.useState.call(void 0,
|
|
32
|
+
() => resolveInitialCursor(
|
|
33
|
+
mode === "confirm" ? "confirm" : "select",
|
|
34
|
+
mode === "confirm" ? 2 : selectOptionCount,
|
|
35
|
+
mode === "select" && "initialIndex" in props ? props.initialIndex : void 0,
|
|
36
|
+
confirmDefaultValue
|
|
37
|
+
)
|
|
38
|
+
);
|
|
39
|
+
const [windowStart, setWindowStart] = _react.useState.call(void 0, () => {
|
|
40
|
+
const initial = resolveInitialCursor(
|
|
41
|
+
mode === "confirm" ? "confirm" : "select",
|
|
42
|
+
mode === "confirm" ? 2 : selectOptionCount,
|
|
43
|
+
mode === "select" && "initialIndex" in props ? props.initialIndex : void 0,
|
|
44
|
+
confirmDefaultValue
|
|
45
|
+
);
|
|
46
|
+
return Math.max(0, initial - Math.floor(maxVisible / 2));
|
|
47
|
+
});
|
|
16
48
|
const [customInput, setCustomInput] = _react.useState.call(void 0, "");
|
|
17
49
|
const [isCustomMode, setIsCustomMode] = _react.useState.call(void 0, false);
|
|
18
50
|
const [inputValue, setInputValue] = _react.useState.call(void 0, () => {
|
|
@@ -44,12 +76,6 @@ function Modal(props) {
|
|
|
44
76
|
}
|
|
45
77
|
return [];
|
|
46
78
|
}, [mode, props, t]);
|
|
47
|
-
_react.useState.call(void 0, () => {
|
|
48
|
-
if (mode === "confirm" && "defaultValue" in props) {
|
|
49
|
-
const defaultIdx = props.defaultValue === false ? 1 : 0;
|
|
50
|
-
setCursor(defaultIdx);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
79
|
const hasNoChoices = mode === "select" && choices.length === 0;
|
|
54
80
|
const findNextEnabled = _react.useCallback.call(void 0,
|
|
55
81
|
(from, direction) => {
|
|
@@ -138,11 +164,27 @@ function Modal(props) {
|
|
|
138
164
|
return;
|
|
139
165
|
}
|
|
140
166
|
if (key.upArrow) {
|
|
141
|
-
setCursor((prev) =>
|
|
167
|
+
setCursor((prev) => {
|
|
168
|
+
const next = findNextEnabled(prev, -1);
|
|
169
|
+
setWindowStart((ws) => {
|
|
170
|
+
if (next < ws) return next;
|
|
171
|
+
if (next >= ws + maxVisible) return Math.max(0, next - maxVisible + 1);
|
|
172
|
+
return ws;
|
|
173
|
+
});
|
|
174
|
+
return next;
|
|
175
|
+
});
|
|
142
176
|
return;
|
|
143
177
|
}
|
|
144
178
|
if (key.downArrow) {
|
|
145
|
-
setCursor((prev) =>
|
|
179
|
+
setCursor((prev) => {
|
|
180
|
+
const next = findNextEnabled(prev, 1);
|
|
181
|
+
setWindowStart((ws) => {
|
|
182
|
+
if (next >= ws + maxVisible) return next - maxVisible + 1;
|
|
183
|
+
if (next < ws) return next;
|
|
184
|
+
return ws;
|
|
185
|
+
});
|
|
186
|
+
return next;
|
|
187
|
+
});
|
|
146
188
|
return;
|
|
147
189
|
}
|
|
148
190
|
if (char && char >= "1" && char <= "9") {
|
|
@@ -191,7 +233,11 @@ function Modal(props) {
|
|
|
191
233
|
if (hasNoChoices) {
|
|
192
234
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Box, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ink.Text, { color: "gray", children: t("ui.noOptionsAvailable") }) });
|
|
193
235
|
}
|
|
194
|
-
|
|
236
|
+
const needsScroll = choices.length > maxVisible;
|
|
237
|
+
const windowEnd = Math.min(windowStart + maxVisible, choices.length);
|
|
238
|
+
const visibleChoices = needsScroll ? choices.slice(windowStart, windowEnd) : choices;
|
|
239
|
+
const items = visibleChoices.map((choice, vi) => {
|
|
240
|
+
const i = needsScroll ? windowStart + vi : vi;
|
|
195
241
|
const isSelected = i === cursor;
|
|
196
242
|
const isDisabled = choice.disabled;
|
|
197
243
|
let color;
|
|
@@ -214,6 +260,23 @@ function Modal(props) {
|
|
|
214
260
|
] })
|
|
215
261
|
] }, `${choice.value}-${i}`);
|
|
216
262
|
});
|
|
263
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
264
|
+
needsScroll && windowStart > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color: "gray", children: [
|
|
265
|
+
" ",
|
|
266
|
+
"\u2191",
|
|
267
|
+
" ",
|
|
268
|
+
windowStart,
|
|
269
|
+
" more above"
|
|
270
|
+
] }),
|
|
271
|
+
items,
|
|
272
|
+
needsScroll && windowEnd < choices.length && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _ink.Text, { color: "gray", children: [
|
|
273
|
+
" ",
|
|
274
|
+
"\u2193",
|
|
275
|
+
" ",
|
|
276
|
+
choices.length - windowEnd,
|
|
277
|
+
" more below"
|
|
278
|
+
] })
|
|
279
|
+
] });
|
|
217
280
|
};
|
|
218
281
|
const renderHint = () => {
|
|
219
282
|
if (mode === "input" || mode === "password") {
|
|
@@ -236,31 +299,30 @@ function Modal(props) {
|
|
|
236
299
|
] });
|
|
237
300
|
}
|
|
238
301
|
async function showModal(options) {
|
|
239
|
-
const { title, options: modalOptions, allowCustomInput, multiSelect } = options;
|
|
302
|
+
const { title, options: modalOptions, allowCustomInput, multiSelect, maxVisible } = options;
|
|
240
303
|
if (!process.stdout.isTTY) {
|
|
241
304
|
return null;
|
|
242
305
|
}
|
|
243
306
|
return new Promise((resolve) => {
|
|
244
307
|
let completed = false;
|
|
245
308
|
const instance = _ink.render.call(void 0,
|
|
246
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
309
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDCDGTK6cjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
247
310
|
Modal,
|
|
248
311
|
{
|
|
249
312
|
title,
|
|
250
313
|
options: modalOptions,
|
|
251
314
|
allowCustomInput,
|
|
252
315
|
multiSelect,
|
|
316
|
+
maxVisible,
|
|
253
317
|
onSelect: (option) => {
|
|
254
318
|
if (completed) return;
|
|
255
319
|
completed = true;
|
|
256
|
-
instance
|
|
257
|
-
resolve(option);
|
|
320
|
+
unmountAndResolve(instance, option, resolve);
|
|
258
321
|
},
|
|
259
322
|
onCancel: () => {
|
|
260
323
|
if (completed) return;
|
|
261
324
|
completed = true;
|
|
262
|
-
instance
|
|
263
|
-
resolve(null);
|
|
325
|
+
unmountAndResolve(instance, null, resolve);
|
|
264
326
|
}
|
|
265
327
|
}
|
|
266
328
|
) }),
|
|
@@ -275,7 +337,7 @@ async function showConfirm(options) {
|
|
|
275
337
|
return new Promise((resolve) => {
|
|
276
338
|
let completed = false;
|
|
277
339
|
const instance = _ink.render.call(void 0,
|
|
278
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
340
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDCDGTK6cjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
279
341
|
Modal,
|
|
280
342
|
{
|
|
281
343
|
mode: "confirm",
|
|
@@ -286,14 +348,12 @@ async function showConfirm(options) {
|
|
|
286
348
|
onConfirm: (confirmed) => {
|
|
287
349
|
if (completed) return;
|
|
288
350
|
completed = true;
|
|
289
|
-
instance
|
|
290
|
-
resolve(confirmed);
|
|
351
|
+
unmountAndResolve(instance, confirmed, resolve);
|
|
291
352
|
},
|
|
292
353
|
onCancel: () => {
|
|
293
354
|
if (completed) return;
|
|
294
355
|
completed = true;
|
|
295
|
-
instance
|
|
296
|
-
resolve(false);
|
|
356
|
+
unmountAndResolve(instance, false, resolve);
|
|
297
357
|
}
|
|
298
358
|
}
|
|
299
359
|
) }),
|
|
@@ -308,7 +368,7 @@ async function showInput(options) {
|
|
|
308
368
|
return new Promise((resolve) => {
|
|
309
369
|
let completed = false;
|
|
310
370
|
const instance = _ink.render.call(void 0,
|
|
311
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
371
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDCDGTK6cjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
312
372
|
Modal,
|
|
313
373
|
{
|
|
314
374
|
mode: "input",
|
|
@@ -319,14 +379,12 @@ async function showInput(options) {
|
|
|
319
379
|
onSubmit: (value) => {
|
|
320
380
|
if (completed) return;
|
|
321
381
|
completed = true;
|
|
322
|
-
instance
|
|
323
|
-
resolve(value);
|
|
382
|
+
unmountAndResolve(instance, value, resolve);
|
|
324
383
|
},
|
|
325
384
|
onCancel: () => {
|
|
326
385
|
if (completed) return;
|
|
327
386
|
completed = true;
|
|
328
|
-
instance
|
|
329
|
-
resolve(null);
|
|
387
|
+
unmountAndResolve(instance, null, resolve);
|
|
330
388
|
}
|
|
331
389
|
}
|
|
332
390
|
) }),
|
|
@@ -341,7 +399,7 @@ async function showPassword(options) {
|
|
|
341
399
|
return new Promise((resolve) => {
|
|
342
400
|
let completed = false;
|
|
343
401
|
const instance = _ink.render.call(void 0,
|
|
344
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
402
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDCDGTK6cjs.I18nProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
345
403
|
Modal,
|
|
346
404
|
{
|
|
347
405
|
mode: "password",
|
|
@@ -351,14 +409,12 @@ async function showPassword(options) {
|
|
|
351
409
|
onSubmit: (value) => {
|
|
352
410
|
if (completed) return;
|
|
353
411
|
completed = true;
|
|
354
|
-
instance
|
|
355
|
-
resolve(value);
|
|
412
|
+
unmountAndResolve(instance, value, resolve);
|
|
356
413
|
},
|
|
357
414
|
onCancel: () => {
|
|
358
415
|
if (completed) return;
|
|
359
416
|
completed = true;
|
|
360
|
-
instance
|
|
361
|
-
resolve(null);
|
|
417
|
+
unmountAndResolve(instance, null, resolve);
|
|
362
418
|
}
|
|
363
419
|
}
|
|
364
420
|
) }),
|
|
@@ -372,7 +428,8 @@ async function showPassword(options) {
|
|
|
372
428
|
|
|
373
429
|
|
|
374
430
|
|
|
375
|
-
|
|
431
|
+
|
|
432
|
+
exports.Modal = Modal; exports.showModal = showModal; exports.showConfirm = showConfirm; exports.showInput = showInput; exports.showPassword = showPassword;
|
|
376
433
|
/**
|
|
377
434
|
* @license
|
|
378
435
|
* Copyright 2025 Autohand AI LLC
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AUTOHAND_PATHS
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import {
|
|
5
|
-
t
|
|
6
|
-
} from "./chunk-NMWEDN4Z.js";
|
|
7
|
-
|
|
8
|
-
// src/commands/agents.ts
|
|
9
|
-
import chalk from "chalk";
|
|
3
|
+
} from "./chunk-EGFT4PGW.js";
|
|
10
4
|
|
|
11
5
|
// src/core/agents/AgentRegistry.ts
|
|
12
6
|
import fs from "fs/promises";
|
|
@@ -19,6 +13,42 @@ var AgentConfigSchema = z.object({
|
|
|
19
13
|
tools: z.array(z.string()),
|
|
20
14
|
model: z.string().optional()
|
|
21
15
|
});
|
|
16
|
+
function extractMarkdownTitle(content) {
|
|
17
|
+
const lines = content.split(/\r?\n/);
|
|
18
|
+
for (const line of lines) {
|
|
19
|
+
const trimmed = line.trim();
|
|
20
|
+
if (!trimmed) continue;
|
|
21
|
+
if (trimmed.startsWith("#")) {
|
|
22
|
+
return trimmed.replace(/^#+\s*/, "").trim() || null;
|
|
23
|
+
}
|
|
24
|
+
return trimmed;
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
function parseMarkdownAgent(content) {
|
|
29
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
|
|
30
|
+
if (!frontmatterMatch) {
|
|
31
|
+
return {
|
|
32
|
+
description: extractMarkdownTitle(content),
|
|
33
|
+
systemPrompt: content,
|
|
34
|
+
tools: []
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const [, frontmatter, body] = frontmatterMatch;
|
|
38
|
+
const meta = {};
|
|
39
|
+
for (const line of frontmatter.split("\n")) {
|
|
40
|
+
const match = line.match(/^(\w+):\s*(.+)$/);
|
|
41
|
+
if (match) {
|
|
42
|
+
meta[match[1]] = match[2].trim();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
description: meta.description || extractMarkdownTitle(body),
|
|
47
|
+
systemPrompt: body.trim(),
|
|
48
|
+
tools: meta.tools ? meta.tools.split(",").map((t) => t.trim()).filter(Boolean) : [],
|
|
49
|
+
model: meta.model
|
|
50
|
+
};
|
|
51
|
+
}
|
|
22
52
|
var AgentRegistry = class _AgentRegistry {
|
|
23
53
|
constructor() {
|
|
24
54
|
this.agents = /* @__PURE__ */ new Map();
|
|
@@ -55,13 +85,14 @@ var AgentRegistry = class _AgentRegistry {
|
|
|
55
85
|
for (const extPath of this.externalPaths) {
|
|
56
86
|
await this.loadAgentsFromDir(extPath, "external");
|
|
57
87
|
}
|
|
88
|
+
await this.loadBuiltinAgents();
|
|
58
89
|
}
|
|
59
90
|
/**
|
|
60
91
|
* Load agents from a specific directory
|
|
61
92
|
*/
|
|
62
93
|
async loadAgentsFromDir(dir, source) {
|
|
63
94
|
try {
|
|
64
|
-
if (source
|
|
95
|
+
if (source !== "builtin" && source !== "external") {
|
|
65
96
|
await fs.mkdir(dir, { recursive: true });
|
|
66
97
|
}
|
|
67
98
|
const exists = await fs.access(dir).then(() => true).catch(() => false);
|
|
@@ -121,15 +152,15 @@ var AgentRegistry = class _AgentRegistry {
|
|
|
121
152
|
const name = path.basename(filePath, path.extname(filePath));
|
|
122
153
|
try {
|
|
123
154
|
const content = await fs.readFile(filePath, "utf-8");
|
|
124
|
-
const
|
|
155
|
+
const parsed = parseMarkdownAgent(content);
|
|
125
156
|
const definition = {
|
|
126
157
|
name,
|
|
127
158
|
path: filePath,
|
|
128
159
|
source,
|
|
129
|
-
description
|
|
130
|
-
systemPrompt:
|
|
131
|
-
tools:
|
|
132
|
-
model:
|
|
160
|
+
description: parsed.description || `Agent ${name}`,
|
|
161
|
+
systemPrompt: parsed.systemPrompt,
|
|
162
|
+
tools: parsed.tools,
|
|
163
|
+
model: parsed.model
|
|
133
164
|
};
|
|
134
165
|
if (!this.agents.has(name)) {
|
|
135
166
|
this.agents.set(name, definition);
|
|
@@ -138,62 +169,20 @@ var AgentRegistry = class _AgentRegistry {
|
|
|
138
169
|
console.warn(`Failed to load agent '${name}': ${error.message}`);
|
|
139
170
|
}
|
|
140
171
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
return trimmed;
|
|
172
|
+
/**
|
|
173
|
+
* Load built-in agent definitions bundled with the package.
|
|
174
|
+
* These have `source: 'builtin'` and lower priority than user agents
|
|
175
|
+
* (loaded after user agents, so first-loaded-wins applies).
|
|
176
|
+
*/
|
|
177
|
+
async loadBuiltinAgents() {
|
|
178
|
+
const builtinDir = path.join(path.dirname(new URL(import.meta.url).pathname), "../../agents/builtin");
|
|
179
|
+
await this.loadAgentsFromDir(builtinDir, "builtin");
|
|
151
180
|
}
|
|
152
|
-
return null;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
// src/commands/agents.ts
|
|
156
|
-
var metadata = {
|
|
157
|
-
command: "/agents",
|
|
158
|
-
description: t("commands.agents.description"),
|
|
159
|
-
implemented: true,
|
|
160
|
-
prd: "prd/sub_agents_architecture.md"
|
|
161
181
|
};
|
|
162
|
-
async function handler() {
|
|
163
|
-
const registry = AgentRegistry.getInstance();
|
|
164
|
-
await registry.loadAgents();
|
|
165
|
-
const agents = registry.getAllAgents();
|
|
166
|
-
if (agents.length === 0) {
|
|
167
|
-
return `${t("commands.agents.noAgents")}
|
|
168
|
-
${chalk.gray(`Path: ${chalk.cyan(registry.getAgentsDirectory())}`)}`;
|
|
169
|
-
}
|
|
170
|
-
let output = chalk.bold(`${t("commands.agents.title")}:
|
|
171
|
-
|
|
172
|
-
`);
|
|
173
|
-
for (const agent of agents) {
|
|
174
|
-
output += `${chalk.green("\u{1F916} " + agent.name)}
|
|
175
|
-
`;
|
|
176
|
-
output += ` ${chalk.gray(agent.description)}
|
|
177
|
-
`;
|
|
178
|
-
output += ` ${chalk.blue("Path:")} ${agent.path}
|
|
179
|
-
`;
|
|
180
|
-
if (agent.model) {
|
|
181
|
-
output += ` ${chalk.yellow("Model:")} ${agent.model}
|
|
182
|
-
`;
|
|
183
|
-
}
|
|
184
|
-
if (agent.tools?.length) {
|
|
185
|
-
output += ` ${chalk.blue("Tools:")} ${agent.tools.join(", ")}
|
|
186
|
-
`;
|
|
187
|
-
}
|
|
188
|
-
output += "\n";
|
|
189
|
-
}
|
|
190
|
-
return output.trim();
|
|
191
|
-
}
|
|
192
182
|
|
|
193
183
|
export {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
handler
|
|
184
|
+
AgentConfigSchema,
|
|
185
|
+
AgentRegistry
|
|
197
186
|
};
|
|
198
187
|
/**
|
|
199
188
|
* @license
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import {
|
|
2
|
+
configureSearch,
|
|
3
|
+
getSearchConfig
|
|
4
|
+
} from "./chunk-SAHBLB3E.js";
|
|
5
|
+
import {
|
|
6
|
+
showModal,
|
|
7
|
+
showPassword
|
|
8
|
+
} from "./chunk-5OBNULPU.js";
|
|
9
|
+
import {
|
|
10
|
+
saveConfig
|
|
11
|
+
} from "./chunk-WTNBX2JO.js";
|
|
12
|
+
|
|
13
|
+
// src/commands/search.ts
|
|
14
|
+
import chalk from "chalk";
|
|
15
|
+
async function search(ctx) {
|
|
16
|
+
const currentConfig = getSearchConfig();
|
|
17
|
+
const config = ctx.config;
|
|
18
|
+
console.log(chalk.bold("\nWeb Search Configuration\n"));
|
|
19
|
+
console.log(chalk.gray(`Current provider: ${chalk.cyan(currentConfig.provider)}`));
|
|
20
|
+
const braveKeySet = !!(currentConfig.braveApiKey || process.env.BRAVE_SEARCH_API_KEY);
|
|
21
|
+
const parallelKeySet = !!(currentConfig.parallelApiKey || process.env.PARALLEL_API_KEY);
|
|
22
|
+
console.log(chalk.gray(`Brave API key: ${braveKeySet ? chalk.green("configured") : chalk.yellow("not set")}`));
|
|
23
|
+
console.log(chalk.gray(`Parallel API key: ${parallelKeySet ? chalk.green("configured") : chalk.yellow("not set")}`));
|
|
24
|
+
console.log();
|
|
25
|
+
const providerOptions = [
|
|
26
|
+
{
|
|
27
|
+
label: `Google ${chalk.gray("(no API key required, recommended default)")}`,
|
|
28
|
+
value: "google"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: `DuckDuckGo ${chalk.gray("(no API key required, may be blocked by CAPTCHA)")}`,
|
|
32
|
+
value: "duckduckgo"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: `Brave Search ${chalk.gray("(requires API key)")} ${braveKeySet ? chalk.green("\u2713") : ""}`,
|
|
36
|
+
value: "brave"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
label: `Parallel.ai ${chalk.gray("(requires API key)")} ${parallelKeySet ? chalk.green("\u2713") : ""}`,
|
|
40
|
+
value: "parallel"
|
|
41
|
+
}
|
|
42
|
+
];
|
|
43
|
+
try {
|
|
44
|
+
const result = await showModal({
|
|
45
|
+
title: "Select search provider:",
|
|
46
|
+
options: providerOptions,
|
|
47
|
+
initialIndex: providerOptions.findIndex((c) => c.value === currentConfig.provider)
|
|
48
|
+
});
|
|
49
|
+
if (!result) {
|
|
50
|
+
console.log(chalk.gray("Search configuration cancelled."));
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const provider = result.value;
|
|
54
|
+
let braveApiKey = currentConfig.braveApiKey;
|
|
55
|
+
let parallelApiKey = currentConfig.parallelApiKey;
|
|
56
|
+
if (provider === "brave" && !braveKeySet) {
|
|
57
|
+
console.log(chalk.gray("\nGet your free Brave Search API key at: https://brave.com/search/api/\n"));
|
|
58
|
+
const apiKey = await showPassword({
|
|
59
|
+
title: "Enter Brave Search API key:"
|
|
60
|
+
});
|
|
61
|
+
if (apiKey?.trim()) {
|
|
62
|
+
braveApiKey = apiKey.trim();
|
|
63
|
+
} else {
|
|
64
|
+
console.log(chalk.yellow("No API key entered. Brave Search will not work without an API key."));
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (provider === "parallel" && !parallelKeySet) {
|
|
69
|
+
console.log(chalk.gray("\nGet your Parallel.ai API key at: https://platform.parallel.ai\n"));
|
|
70
|
+
const apiKey = await showPassword({
|
|
71
|
+
title: "Enter Parallel.ai API key:"
|
|
72
|
+
});
|
|
73
|
+
if (apiKey?.trim()) {
|
|
74
|
+
parallelApiKey = apiKey.trim();
|
|
75
|
+
} else {
|
|
76
|
+
console.log(chalk.yellow("No API key entered. Parallel.ai Search will not work without an API key."));
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
configureSearch({
|
|
81
|
+
provider,
|
|
82
|
+
braveApiKey,
|
|
83
|
+
parallelApiKey
|
|
84
|
+
});
|
|
85
|
+
if (config) {
|
|
86
|
+
config.search = {
|
|
87
|
+
provider,
|
|
88
|
+
braveApiKey,
|
|
89
|
+
parallelApiKey
|
|
90
|
+
};
|
|
91
|
+
await saveConfig(config);
|
|
92
|
+
console.log(chalk.green(`
|
|
93
|
+
\u2713 Search provider set to ${provider} and saved to config`));
|
|
94
|
+
} else {
|
|
95
|
+
console.log(chalk.green(`
|
|
96
|
+
\u2713 Search provider set to ${provider} (session only)`));
|
|
97
|
+
}
|
|
98
|
+
switch (provider) {
|
|
99
|
+
case "google":
|
|
100
|
+
console.log(chalk.gray("Google Search is now active. No API key required."));
|
|
101
|
+
break;
|
|
102
|
+
case "duckduckgo":
|
|
103
|
+
console.log(chalk.gray("Note: DuckDuckGo may block automated requests with a CAPTCHA."));
|
|
104
|
+
break;
|
|
105
|
+
case "brave":
|
|
106
|
+
console.log(chalk.gray("Brave Search is now active. Free tier allows 2,000 queries/month."));
|
|
107
|
+
break;
|
|
108
|
+
case "parallel":
|
|
109
|
+
console.log(chalk.gray("Parallel.ai Search is now active with deep research capabilities."));
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
return null;
|
|
113
|
+
} catch (error) {
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
var metadata = {
|
|
118
|
+
command: "/search",
|
|
119
|
+
description: "configure web search provider (google, brave, duckduckgo, parallel)",
|
|
120
|
+
implemented: true
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
export {
|
|
124
|
+
search,
|
|
125
|
+
metadata
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* @license
|
|
129
|
+
* Copyright 2025 Autohand AI LLC
|
|
130
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
131
|
+
*/
|