autohand-cli 0.7.14 → 0.8.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 +97 -2
- 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-35YBJ4AM.cjs +466 -0
- package/dist/ImportWizard-XH7CINCH.js +466 -0
- package/dist/LearnAdvisor-A4Q5PPBI.js +9 -0
- package/dist/LearnAdvisor-GASQD7HT.cjs +9 -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-U5OMGR3L.js → PermissionManager-ATUV34LQ.js} +4 -3
- package/dist/PermissionManager-KMN53FJP.cjs +11 -0
- package/dist/ProjectProfiler-UMJJSOCE.js +194 -0
- package/dist/ProjectProfiler-ZDWR2ODG.cjs +194 -0
- package/dist/ProviderFactory-MR5B23QJ.js +9 -0
- package/dist/ProviderFactory-VFGCJJX6.cjs +9 -0
- package/dist/SessionManager-FEUAU3ZJ.cjs +10 -0
- package/dist/SessionManager-IKWAK2PI.js +10 -0
- package/dist/SkillsRegistry-KPQFTRIT.cjs +9 -0
- package/dist/SkillsRegistry-XJSKPDF2.js +9 -0
- package/dist/SubAgent-NYH6GWQ3.js +11 -0
- package/dist/SubAgent-PZKBDUBA.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-HHTF2YFL.js +12 -0
- package/dist/about-JGRVNNQC.cjs +12 -0
- package/dist/actionExecutor-U6IBN2TU.cjs +19 -0
- package/dist/actionExecutor-XT5FW3W6.js +19 -0
- package/dist/add-dir-247K3XRY.js +10 -0
- package/dist/add-dir-GS4DXKKH.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-R6ZEFTVR.cjs +12 -0
- package/dist/agents-WJPQWQF2.js +12 -0
- package/dist/agents-new-HKVEIBDJ.js +14 -0
- package/dist/agents-new-X6GTHIO6.cjs +14 -0
- package/dist/assets/icon.png +0 -0
- package/dist/autoSkill-6TGBTEQD.js +20 -0
- package/dist/autoSkill-H4T6VVDA.cjs +20 -0
- package/dist/automode-BC6NVECO.js +10 -0
- package/dist/automode-WN2RSOGW.cjs +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-245KJE5Y.cjs +55 -0
- package/dist/chunk-24QIWILL.js +51 -0
- package/dist/{chunk-MYNHJHDZ.js → chunk-2AA5MFES.js} +1 -1
- package/dist/{chunk-TSY7JHIV.cjs → chunk-33A755XB.cjs} +2 -2
- package/dist/chunk-33RSHBDH.js +131 -0
- package/dist/{chunk-QRGPAUST.js → chunk-34M3HWLR.js} +2 -2
- package/dist/{chunk-U7CZFKPL.cjs → chunk-3K2ESU53.cjs} +2 -2
- package/dist/{chunk-SIGWDEPS.cjs → chunk-3L53OA4E.cjs} +10 -10
- package/dist/chunk-3OEDGIFW.js +42 -0
- package/dist/chunk-3OTU3RS3.cjs +1607 -0
- package/dist/{chunk-MNSTWHK3.cjs → chunk-3PCTTUNW.cjs} +11 -11
- package/dist/{chunk-P5VDZ6PV.js → chunk-3PDTTAKJ.js} +1 -1
- package/dist/chunk-47CKWKEX.cjs +59 -0
- package/dist/{chunk-Z4J4W6YQ.cjs → chunk-4JNNTOGF.cjs} +2 -48
- package/dist/{chunk-GVZPIQWB.js → chunk-4PKF7WPD.js} +11 -5
- package/dist/{chunk-3S4DEIJP.cjs → chunk-5IXII4HX.cjs} +2 -2
- package/dist/{chunk-CRQKDBLD.js → chunk-5P2NXKP3.js} +98 -64
- package/dist/{chunk-DSKVMFRM.cjs → chunk-643VRA5S.cjs} +12 -4
- package/dist/{chunk-VVBBEYTH.cjs → chunk-6HYLHBQG.cjs} +10 -10
- package/dist/{chunk-L5ZFPWHY.js → chunk-6OYHF6MF.js} +12 -4
- package/dist/{chunk-BPTBKO7D.js → chunk-6RF7UKUS.js} +224 -37
- package/dist/{chunk-YHGTBPEC.js → chunk-6ZCULLCA.js} +1 -1
- package/dist/{chunk-VHBUKGRG.js → chunk-72FKPBT5.js} +4 -4
- package/dist/{chunk-2U5HFVRO.cjs → chunk-7BTSG4ME.cjs} +5165 -2194
- package/dist/chunk-7UOUW76C.js +603 -0
- package/dist/{chunk-FEVHH525.cjs → chunk-A4IJHHV7.cjs} +11 -5
- package/dist/{chunk-B6EBHCK2.cjs → chunk-AEJH23FO.cjs} +6 -6
- package/dist/{chunk-WLTVF77A.js → chunk-ALYU6VTM.js} +1 -1
- package/dist/{chunk-NMWEDN4Z.js → chunk-APIXPPMT.js} +5165 -2194
- package/dist/chunk-AS6RTLN7.cjs +203 -0
- package/dist/{chunk-BHV7CBNT.js → chunk-AYS2ASM7.js} +1 -1
- package/dist/{chunk-GRSVQ5YZ.js → chunk-AYSFIUFW.js} +44 -12
- package/dist/{chunk-NUHYCFHW.cjs → chunk-BVKXEQVG.cjs} +54 -65
- package/dist/chunk-BWN2CLLM.cjs +298 -0
- package/dist/{chunk-4HA7IHLJ.cjs → chunk-C5IJIM2V.cjs} +38 -16
- package/dist/{chunk-SRLY7K6J.js → chunk-CAMZTXV6.js} +2 -2
- package/dist/chunk-CDBPBM2K.cjs +29 -0
- package/dist/chunk-CNBKZEX5.cjs +109 -0
- package/dist/{chunk-WQUQ5JMM.js → chunk-CWMZKFTT.js} +4 -4
- package/dist/{chunk-CKN2BLHK.cjs → chunk-CZXGCVTR.cjs} +2 -2
- package/dist/{chunk-SZP4ULM5.cjs → chunk-DJDE4DTT.cjs} +17 -17
- package/dist/chunk-DN573ME7.cjs +1675 -0
- package/dist/chunk-DRE2RXBZ.js +4498 -0
- package/dist/chunk-DSPQEHDT.js +29 -0
- package/dist/{chunk-SFNT5DYE.cjs → chunk-DVUHHH3B.cjs} +4 -4
- package/dist/chunk-DVZOENQ7.cjs +58 -0
- package/dist/{chunk-PWLLLJHU.js → chunk-EGFT4PGW.js} +3 -1
- package/dist/chunk-EGMZDTSL.js +55 -0
- package/dist/chunk-EZMINVLU.js +123 -0
- package/dist/chunk-FHK7UDOJ.cjs +42 -0
- package/dist/{chunk-KWRUQRXR.js → chunk-FKSDEWDH.js} +44 -10
- package/dist/chunk-FMB3TSWP.cjs +218 -0
- package/dist/chunk-FW774QXH.js +1838 -0
- package/dist/{chunk-MY3TZER2.js → chunk-G27PQQFD.js} +1 -1
- package/dist/{chunk-Y2ZSH3YF.cjs → chunk-G3V4SFET.cjs} +57 -23
- package/dist/chunk-G4CAKI3V.js +58 -0
- package/dist/{chunk-FB6JWNJS.js → chunk-GBHDROGL.js} +54 -65
- package/dist/{chunk-DEAEO7RI.js → chunk-GJH7XMSK.js} +15 -1
- package/dist/chunk-GLBAF54O.js +218 -0
- package/dist/{chunk-S47TCZDL.js → chunk-H5SWOLG6.js} +7 -7
- package/dist/chunk-HBXAA3XB.js +83 -0
- package/dist/{chunk-63BXZQZW.js → chunk-HIVRCQS2.js} +26 -4
- package/dist/{chunk-WOGJXDBU.cjs → chunk-HLHTG5ZU.cjs} +18 -4
- package/dist/{chunk-FK2DVRPJ.js → chunk-HLQV64Y5.js} +170 -4
- package/dist/chunk-HOAHWIQ5.cjs +260 -0
- package/dist/{chunk-D2XFTCRP.js → chunk-HQ7YZKXE.js} +1 -1
- package/dist/{chunk-L42HTMMR.cjs → chunk-HTLINWX6.cjs} +2 -2
- package/dist/{chunk-PKOAXQKW.cjs → chunk-HVKOZ2VP.cjs} +11 -11
- package/dist/chunk-HXGBSJL5.cjs +27 -0
- package/dist/chunk-I5IW3T2Y.js +310 -0
- package/dist/chunk-IETRBBMP.cjs +603 -0
- package/dist/{chunk-MTALRU7R.cjs → chunk-IFFXSTOM.cjs} +3 -3
- package/dist/{chunk-V7YTCNMN.cjs → chunk-IKGWDOGU.cjs} +174 -8
- package/dist/chunk-IQ5RXU6O.js +1675 -0
- package/dist/{chunk-ZBIBLOZL.js → chunk-IVM5F2AE.js} +500 -317
- package/dist/chunk-J4Q7XR3G.js +260 -0
- package/dist/{chunk-XL77XYI2.cjs → chunk-J6QET7EF.cjs} +27 -7
- package/dist/{chunk-TQB222ZB.js → chunk-JCLYQ2JC.js} +2 -2
- package/dist/chunk-JSBRDJBE.js +30 -0
- package/dist/{chunk-XPOHYKR3.js → chunk-JX3DFKBI.js} +2 -2
- package/dist/chunk-JYTDYJVW.js +27 -0
- package/dist/{chunk-6SHHB2VD.js → chunk-KPELYZ6L.js} +2 -2
- package/dist/{chunk-ZLOTP56B.cjs → chunk-KWXVKLQ5.cjs} +5 -5
- package/dist/chunk-L3WAH3EM.cjs +131 -0
- package/dist/{chunk-ZXIQCYYV.cjs → chunk-LA7H35XM.cjs} +9 -9
- package/dist/chunk-LENHP55G.cjs +1838 -0
- package/dist/chunk-LJFUXC56.cjs +123 -0
- package/dist/{chunk-R5OO7MEB.cjs → chunk-LNMYK2F5.cjs} +22 -22
- package/dist/chunk-LQGVEP3E.js +109 -0
- package/dist/{chunk-KXAAEROY.js → chunk-LWUJFGOZ.js} +2 -2
- package/dist/chunk-MAKMSQMQ.cjs +504 -0
- package/dist/{chunk-BG4OQUKP.js → chunk-MBBY4ZIK.js} +1 -1
- package/dist/chunk-MSED7RH2.cjs +267 -0
- package/dist/{chunk-NMGF2KUN.js → chunk-MYISNQH4.js} +1 -1
- package/dist/chunk-N23UAW4I.js +59 -0
- package/dist/chunk-N254NRHT.cjs +30 -0
- package/dist/{chunk-TOTDRAWG.js → chunk-NDMIPTV4.js} +1 -1
- package/dist/{chunk-AIH6GUGB.cjs → chunk-NNPAM4HC.cjs} +5 -5
- package/dist/{chunk-HSPWX4Z2.cjs → chunk-O4IF4NJT.cjs} +231 -44
- package/dist/{chunk-DZHR34H6.cjs → chunk-OGV4WJ5L.cjs} +8 -8
- package/dist/chunk-OHUZKDGX.js +348 -0
- package/dist/{chunk-BRXIEKJ3.cjs → chunk-OLSBBZW6.cjs} +5 -5
- package/dist/{chunk-MILZEEUV.js → chunk-OOKY3HPZ.js} +9 -3
- package/dist/chunk-P47WPOXN.js +298 -0
- package/dist/{chunk-ULMPJUJW.cjs → chunk-PRRCJFU3.cjs} +23 -23
- package/dist/{chunk-SMHY3Q7B.cjs → chunk-Q7XSCYND.cjs} +54 -22
- package/dist/chunk-QCLYBIMM.cjs +51 -0
- package/dist/chunk-QMAKTSZB.cjs +48 -0
- package/dist/{chunk-DTFR3WD6.js → chunk-QNGEW5TC.js} +1 -1
- package/dist/chunk-QOXPOR5D.js +267 -0
- package/dist/chunk-R33VKSH5.cjs +348 -0
- 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-GD4AFYJ3.js → chunk-RO6WYEWH.js} +24 -4
- package/dist/chunk-S52YW5ZQ.js +844 -0
- package/dist/{chunk-6DWXHBAY.js → chunk-SAHBLB3E.js} +222 -127
- package/dist/{chunk-JHOQABEF.js → chunk-SCXX4LW5.js} +5 -5
- package/dist/{chunk-GIZL57FE.cjs → chunk-SEKD5FH3.cjs} +3 -1
- package/dist/{chunk-JWPI6O5Z.js → chunk-SKV2F3NM.js} +31 -4
- package/dist/{chunk-FHUNAB2K.cjs → chunk-SKYG33B2.cjs} +33 -6
- package/dist/{chunk-BISFR6ZL.js → chunk-SLQAYV3W.js} +1 -1
- package/dist/{chunk-RFNCTE4V.cjs → chunk-SYVYLZZF.cjs} +2 -2
- package/dist/{chunk-3XJD56Z4.js → chunk-T73IDKDF.js} +10 -3
- package/dist/chunk-TBEGGJNC.cjs +310 -0
- package/dist/{chunk-RRZS5A53.js → chunk-TNZRZQ7Q.js} +1 -1
- package/dist/{chunk-CH4SPVFD.cjs → chunk-TXSDBGKX.cjs} +10 -3
- package/dist/chunk-U3WDY42C.cjs +42 -0
- package/dist/{chunk-425MT6Y5.cjs → chunk-U46VYPLR.cjs} +9 -9
- package/dist/{chunk-OLG7LZBD.js → chunk-VG34MG2U.js} +1 -1
- package/dist/{chunk-XDVG3NM4.js → chunk-W3X6PAC7.js} +2 -48
- package/dist/{chunk-LYMTYC67.js → chunk-WHE2SWHU.js} +2 -2
- package/dist/chunk-WM5PAOTQ.cjs +4498 -0
- 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-HMRDNRTH.js → chunk-X2MSVKDV.js} +2 -2
- package/dist/chunk-X3WS5LDG.js +504 -0
- package/dist/{chunk-43XS26AQ.cjs → chunk-X5VSP65C.cjs} +4 -4
- package/dist/{chunk-DSCQPWUB.cjs → chunk-X5YJ34FZ.cjs} +15 -15
- package/dist/chunk-XAV24VYN.js +48 -0
- package/dist/chunk-XDLH4EDL.cjs +118 -0
- package/dist/{chunk-X765A7J5.js → chunk-XRZEUWKF.js} +1 -1
- package/dist/{chunk-ZKZRFH37.cjs → chunk-XTB6VJVQ.cjs} +6 -6
- package/dist/{chunk-H3GBSPK5.js → chunk-XX2ZO7DS.js} +14 -6
- package/dist/{chunk-RUZB43HU.cjs → chunk-Y72HH2TF.cjs} +22 -14
- package/dist/chunk-YFXTE422.cjs +92 -0
- package/dist/{chunk-OSUWEUZE.js → chunk-YGN4CQIP.js} +1 -1
- package/dist/{chunk-KC5FPUOF.cjs → chunk-YRLYSQEQ.cjs} +2 -2
- package/dist/{chunk-3KBBARKO.js → chunk-YZXUDM5X.js} +85 -28
- package/dist/chunk-Z36XBUMX.cjs +83 -0
- package/dist/chunk-ZK6HOR62.js +92 -0
- package/dist/{chunk-PDKNHU5G.cjs → chunk-ZQE72E6W.cjs} +22 -16
- package/dist/chunk-ZVY2XD6T.js +1607 -0
- package/dist/{chunk-XBUMKEFN.cjs → chunk-ZYQMLKOK.cjs} +91 -34
- package/dist/clear-UO4MNWZW.cjs +12 -0
- package/dist/clear-ZJ5NYP6E.js +12 -0
- package/dist/communityInstaller-6KCFN7YZ.js +19 -0
- package/dist/communityInstaller-PVSOFDZD.cjs +19 -0
- package/dist/completion-MMF2PN2H.js +14 -0
- package/dist/completion-UI5WKHXI.cjs +14 -0
- package/dist/config-E7RINK4R.cjs +18 -0
- package/dist/config-ZN66VXPS.js +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-N4XIVDSL.cjs +12 -0
- package/dist/export-W22L4D5C.js +12 -0
- package/dist/extractSessionMemories-SDW2MVBQ.cjs +7 -0
- package/dist/extractSessionMemories-V7K42ZHW.js +7 -0
- package/dist/feedback-DR6ADSNE.cjs +15 -0
- package/dist/feedback-FEEAP4QW.js +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-2BLR7L43.js} +3 -2
- package/dist/help-AQHGTS7P.cjs +12 -0
- package/dist/{history-AV4XBFRK.js → history-5FZ3M2AK.js} +3 -2
- package/dist/history-NIUDRMKA.cjs +14 -0
- package/dist/hooks-2EY4IPKV.js +13 -0
- package/dist/hooks-LJVORRIG.cjs +13 -0
- package/dist/i18n-ARDG2SMC.cjs +33 -0
- package/dist/{i18n-BSAPXM56.js → i18n-K7QOWIBH.js} +2 -1
- package/dist/ide-GFW6IJHD.js +12 -0
- package/dist/ide-N2ZNSSB3.cjs +12 -0
- package/dist/import-DFVN3KNZ.js +10 -0
- package/dist/import-QEME3E4T.cjs +170 -0
- package/dist/import-UXM3VK7B.js +170 -0
- package/dist/import-ZS6DPGU5.cjs +10 -0
- package/dist/index.cjs +11233 -11804
- package/dist/index.js +12594 -13165
- package/dist/init-PY75HA3S.cjs +10 -0
- package/dist/init-QNMWLAVY.js +10 -0
- package/dist/language-5UE4G2BT.cjs +18 -0
- package/dist/language-UXMHEZUJ.js +18 -0
- package/dist/learn-HJ3FLNZC.cjs +20 -0
- package/dist/learn-MVYS3RU5.js +20 -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-DSE7H63A.js +20 -0
- package/dist/login-V3MEWPKN.cjs +20 -0
- package/dist/logout-BMVCLKKW.js +18 -0
- package/dist/logout-XEG7FHOZ.cjs +18 -0
- package/dist/mcp-PYUR4PHO.js +18 -0
- package/dist/mcp-SG6JFLGC.cjs +18 -0
- package/dist/{mcp-install-2KVKRAMQ.cjs → mcp-install-G27HSS3Z.cjs} +26 -14
- package/dist/{mcp-install-77UXRN6R.js → mcp-install-VESN42PI.js} +21 -9
- package/dist/memory-4ZMMEZ2Z.js +10 -0
- package/dist/memory-QSGMVVGH.cjs +10 -0
- package/dist/message-JUBOK2VU.js +9 -0
- package/dist/message-ZJ5AYAMT.cjs +9 -0
- package/dist/model-NANLBZ4Z.cjs +10 -0
- package/dist/model-ZXNV4AF7.js +10 -0
- package/dist/new-5QJY5JP2.js +12 -0
- package/dist/new-PMMG55UX.cjs +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-LECTCJ4H.cjs +13 -0
- package/dist/permissions-VP5VGIBL.js +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-BKOOPHU5.cjs +10 -0
- package/dist/quit-FVFNYACP.js +10 -0
- package/dist/registry-KWZGYJC2.js +2108 -0
- package/dist/registry-YN4FQPOO.cjs +2108 -0
- package/dist/resume-EXFQSQPH.js +13 -0
- package/dist/resume-PP2IQM5S.cjs +13 -0
- package/dist/search-C56FBN67.cjs +17 -0
- package/dist/search-XGZDYBF4.js +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-54KI3F2Q.js +10 -0
- package/dist/sessions-DDTSPNVW.cjs +10 -0
- package/dist/settings-BDO37TTO.cjs +30 -0
- package/dist/settings-FHRDFPLK.js +30 -0
- package/dist/share-IERCTBGN.cjs +14 -0
- package/dist/share-TGROUE6R.js +14 -0
- package/dist/skills-6OL4OSGA.js +76 -0
- package/dist/skills-FYY6F2WV.cjs +76 -0
- package/dist/skills-OM4IGBAA.cjs +26 -0
- package/dist/skills-S3GRN323.js +26 -0
- package/dist/{skills-install-MQINL3EC.js → skills-install-6CSWC24P.js} +97 -26
- package/dist/{skills-install-IKJZN4G2.cjs → skills-install-O3LZ2ETC.cjs} +106 -35
- package/dist/skills-new-ALD2PTHN.js +15 -0
- package/dist/skills-new-PWLKK7GW.cjs +15 -0
- package/dist/slashCommands-L4ZD33LJ.js +75 -0
- package/dist/slashCommands-YY2VUUDF.cjs +75 -0
- package/dist/status-3PC5XWSS.cjs +11 -0
- package/dist/status-KCLVOYPD.js +11 -0
- package/dist/sync-6SDWG5RK.js +18 -0
- package/dist/sync-7JMZVEQD.cjs +40 -0
- package/dist/{sync-EXYX7HXW.js → sync-KWX67OUN.js} +3 -2
- package/dist/sync-WHURZL3U.cjs +18 -0
- package/dist/tasks-5FPBIFLC.js +9 -0
- package/dist/tasks-TXGKGNH6.cjs +9 -0
- package/dist/team-5YXP3JGR.js +9 -0
- package/dist/team-IIWEZKNR.cjs +9 -0
- package/dist/teammate-2KMKJXAM.cjs +139 -0
- package/dist/teammate-L6EZQ3I2.js +139 -0
- package/dist/theme-BE5A4FPN.cjs +18 -0
- package/dist/theme-YMFCQP7J.js +18 -0
- package/dist/ui/questionModal.cjs +7 -25
- package/dist/ui/questionModal.js +6 -24
- package/dist/undo-KZHUUZTD.cjs +10 -0
- package/dist/undo-NEIEHQVX.js +10 -0
- package/dist/update-TVAJMMBC.js +82 -0
- package/dist/update-Z6BIIQDC.cjs +82 -0
- package/package.json +10 -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-LJZA6PVJ.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
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import {
|
|
2
|
+
showConfirm,
|
|
3
|
+
showInput,
|
|
4
|
+
showModal,
|
|
5
|
+
showPassword
|
|
6
|
+
} from "./chunk-YZXUDM5X.js";
|
|
7
|
+
import {
|
|
8
|
+
saveConfig
|
|
9
|
+
} from "./chunk-P47WPOXN.js";
|
|
10
|
+
import {
|
|
11
|
+
t
|
|
12
|
+
} from "./chunk-APIXPPMT.js";
|
|
13
|
+
|
|
14
|
+
// src/commands/settings.ts
|
|
15
|
+
import chalk from "chalk";
|
|
16
|
+
var SETTING_CATEGORIES = [
|
|
17
|
+
{ id: "ui", labelKey: "commands.settings.categories.ui" },
|
|
18
|
+
{ id: "agent", labelKey: "commands.settings.categories.agent" },
|
|
19
|
+
{ id: "permissions", labelKey: "commands.settings.categories.permissions" },
|
|
20
|
+
{ id: "network", labelKey: "commands.settings.categories.network" },
|
|
21
|
+
{ id: "telemetry", labelKey: "commands.settings.categories.telemetry" },
|
|
22
|
+
{ id: "automode", labelKey: "commands.settings.categories.automode" },
|
|
23
|
+
{ id: "teams", labelKey: "commands.settings.categories.teams" },
|
|
24
|
+
{ id: "search", labelKey: "commands.settings.categories.search" }
|
|
25
|
+
];
|
|
26
|
+
var SETTINGS_REGISTRY = [
|
|
27
|
+
// UI & Display
|
|
28
|
+
{ key: "ui.theme", labelKey: "commands.settings.ui.theme", category: "ui", type: "string", redirect: "/theme" },
|
|
29
|
+
{ key: "ui.locale", labelKey: "commands.settings.ui.locale", category: "ui", type: "string", redirect: "/language" },
|
|
30
|
+
{ key: "ui.autoConfirm", labelKey: "commands.settings.ui.autoConfirm", descriptionKey: "commands.settings.ui.autoConfirmDesc", category: "ui", type: "boolean", defaultValue: false },
|
|
31
|
+
{ key: "ui.showThinking", labelKey: "commands.settings.ui.showThinking", descriptionKey: "commands.settings.ui.showThinkingDesc", category: "ui", type: "boolean", defaultValue: true },
|
|
32
|
+
{ key: "ui.terminalBell", labelKey: "commands.settings.ui.terminalBell", descriptionKey: "commands.settings.ui.terminalBellDesc", category: "ui", type: "boolean", defaultValue: true },
|
|
33
|
+
{ key: "ui.checkForUpdates", labelKey: "commands.settings.ui.checkForUpdates", descriptionKey: "commands.settings.ui.checkForUpdatesDesc", category: "ui", type: "boolean", defaultValue: true },
|
|
34
|
+
{ key: "ui.showCompletionNotification", labelKey: "commands.settings.ui.showCompletionNotification", descriptionKey: "commands.settings.ui.showCompletionNotificationDesc", category: "ui", type: "boolean", defaultValue: true },
|
|
35
|
+
{ key: "ui.promptSuggestions", labelKey: "commands.settings.ui.promptSuggestions", descriptionKey: "commands.settings.ui.promptSuggestionsDesc", category: "ui", type: "boolean", defaultValue: true },
|
|
36
|
+
{ key: "ui.activitySymbol", labelKey: "commands.settings.ui.activitySymbol", descriptionKey: "commands.settings.ui.activitySymbolDesc", category: "ui", type: "string", defaultValue: "\u2733" },
|
|
37
|
+
{ key: "ui.updateCheckInterval", labelKey: "commands.settings.ui.updateCheckInterval", descriptionKey: "commands.settings.ui.updateCheckIntervalDesc", category: "ui", type: "number", defaultValue: 24 },
|
|
38
|
+
// Agent Behavior
|
|
39
|
+
{ key: "agent.maxIterations", labelKey: "commands.settings.agent.maxIterations", descriptionKey: "commands.settings.agent.maxIterationsDesc", category: "agent", type: "number", defaultValue: 100 },
|
|
40
|
+
{ key: "agent.enableRequestQueue", labelKey: "commands.settings.agent.enableRequestQueue", descriptionKey: "commands.settings.agent.enableRequestQueueDesc", category: "agent", type: "boolean", defaultValue: true },
|
|
41
|
+
{ key: "agent.sessionRetryLimit", labelKey: "commands.settings.agent.sessionRetryLimit", descriptionKey: "commands.settings.agent.sessionRetryLimitDesc", category: "agent", type: "number", defaultValue: 3 },
|
|
42
|
+
{ key: "agent.sessionRetryDelay", labelKey: "commands.settings.agent.sessionRetryDelay", descriptionKey: "commands.settings.agent.sessionRetryDelayDesc", category: "agent", type: "number", defaultValue: 1e3 },
|
|
43
|
+
{ key: "agent.debug", labelKey: "commands.settings.agent.debug", descriptionKey: "commands.settings.agent.debugDesc", category: "agent", type: "boolean", defaultValue: false },
|
|
44
|
+
// Permissions
|
|
45
|
+
{ key: "permissions.mode", labelKey: "commands.settings.permissions.mode", descriptionKey: "commands.settings.permissions.modeDesc", category: "permissions", type: "enum", enumValues: ["interactive", "unrestricted", "restricted"], defaultValue: "interactive" },
|
|
46
|
+
{ key: "permissions.rememberSession", labelKey: "commands.settings.permissions.rememberSession", descriptionKey: "commands.settings.permissions.rememberSessionDesc", category: "permissions", type: "boolean", defaultValue: true },
|
|
47
|
+
// Network
|
|
48
|
+
{ key: "network.maxRetries", labelKey: "commands.settings.network.maxRetries", descriptionKey: "commands.settings.network.maxRetriesDesc", category: "network", type: "number", defaultValue: 3 },
|
|
49
|
+
{ key: "network.timeout", labelKey: "commands.settings.network.timeout", descriptionKey: "commands.settings.network.timeoutDesc", category: "network", type: "number", defaultValue: 3e4 },
|
|
50
|
+
{ key: "network.retryDelay", labelKey: "commands.settings.network.retryDelay", descriptionKey: "commands.settings.network.retryDelayDesc", category: "network", type: "number", defaultValue: 1e3 },
|
|
51
|
+
// Telemetry & Reporting
|
|
52
|
+
{ key: "telemetry.enabled", labelKey: "commands.settings.telemetry.enabled", descriptionKey: "commands.settings.telemetry.enabledDesc", category: "telemetry", type: "boolean", defaultValue: false },
|
|
53
|
+
{ key: "autoReport.enabled", labelKey: "commands.settings.telemetry.autoReportEnabled", descriptionKey: "commands.settings.telemetry.autoReportEnabledDesc", category: "telemetry", type: "boolean", defaultValue: true },
|
|
54
|
+
// Auto-mode
|
|
55
|
+
{ key: "automode.maxIterations", labelKey: "commands.settings.automode.maxIterations", descriptionKey: "commands.settings.automode.maxIterationsDesc", category: "automode", type: "number", defaultValue: 50 },
|
|
56
|
+
{ key: "automode.maxRuntime", labelKey: "commands.settings.automode.maxRuntime", descriptionKey: "commands.settings.automode.maxRuntimeDesc", category: "automode", type: "number", defaultValue: 120 },
|
|
57
|
+
{ key: "automode.maxCost", labelKey: "commands.settings.automode.maxCost", descriptionKey: "commands.settings.automode.maxCostDesc", category: "automode", type: "number", defaultValue: 10 },
|
|
58
|
+
{ key: "automode.checkpointInterval", labelKey: "commands.settings.automode.checkpointInterval", descriptionKey: "commands.settings.automode.checkpointIntervalDesc", category: "automode", type: "number", defaultValue: 5 },
|
|
59
|
+
{ key: "automode.useWorktree", labelKey: "commands.settings.automode.useWorktree", descriptionKey: "commands.settings.automode.useWorktreeDesc", category: "automode", type: "boolean", defaultValue: true },
|
|
60
|
+
// Teams
|
|
61
|
+
{ key: "teams.enabled", labelKey: "commands.settings.teams.enabled", descriptionKey: "commands.settings.teams.enabledDesc", category: "teams", type: "boolean", defaultValue: true },
|
|
62
|
+
{ key: "teams.teammateMode", labelKey: "commands.settings.teams.teammateMode", descriptionKey: "commands.settings.teams.teammateModeDesc", category: "teams", type: "enum", enumValues: ["auto", "in-process", "tmux"], defaultValue: "auto" },
|
|
63
|
+
{ key: "teams.maxTeammates", labelKey: "commands.settings.teams.maxTeammates", descriptionKey: "commands.settings.teams.maxTeammatesDesc", category: "teams", type: "number", defaultValue: 5 },
|
|
64
|
+
// Search
|
|
65
|
+
{ key: "search.provider", labelKey: "commands.settings.search.provider", descriptionKey: "commands.settings.search.providerDesc", category: "search", type: "enum", enumValues: ["google", "brave", "duckduckgo", "parallel"], defaultValue: "google" },
|
|
66
|
+
{ key: "search.braveApiKey", labelKey: "commands.settings.search.braveApiKey", descriptionKey: "commands.settings.search.braveApiKeyDesc", category: "search", type: "password" },
|
|
67
|
+
{ key: "search.parallelApiKey", labelKey: "commands.settings.search.parallelApiKey", descriptionKey: "commands.settings.search.parallelApiKeyDesc", category: "search", type: "password" }
|
|
68
|
+
];
|
|
69
|
+
function getNestedValue(obj, path) {
|
|
70
|
+
const parts = path.split(".");
|
|
71
|
+
let current = obj;
|
|
72
|
+
for (const part of parts) {
|
|
73
|
+
if (current == null || typeof current !== "object") return void 0;
|
|
74
|
+
current = current[part];
|
|
75
|
+
}
|
|
76
|
+
return current;
|
|
77
|
+
}
|
|
78
|
+
function setNestedValue(obj, path, value) {
|
|
79
|
+
const parts = path.split(".");
|
|
80
|
+
let current = obj;
|
|
81
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
82
|
+
if (current[parts[i]] == null || typeof current[parts[i]] !== "object") {
|
|
83
|
+
current[parts[i]] = {};
|
|
84
|
+
}
|
|
85
|
+
current = current[parts[i]];
|
|
86
|
+
}
|
|
87
|
+
current[parts[parts.length - 1]] = value;
|
|
88
|
+
}
|
|
89
|
+
function getSettingsForCategory(category) {
|
|
90
|
+
return SETTINGS_REGISTRY.filter((s) => s.category === category);
|
|
91
|
+
}
|
|
92
|
+
function formatSettingValue(value, type) {
|
|
93
|
+
if (value == null || value === void 0) {
|
|
94
|
+
if (type === "password") return chalk.gray("(not set)");
|
|
95
|
+
return chalk.gray("(default)");
|
|
96
|
+
}
|
|
97
|
+
switch (type) {
|
|
98
|
+
case "boolean":
|
|
99
|
+
return value ? chalk.green(t("commands.settings.on")) : chalk.red(t("commands.settings.off"));
|
|
100
|
+
case "password":
|
|
101
|
+
return typeof value === "string" && value.length > 0 ? chalk.gray("****") : chalk.gray("(not set)");
|
|
102
|
+
case "number":
|
|
103
|
+
return chalk.cyan(String(value));
|
|
104
|
+
case "enum":
|
|
105
|
+
case "string":
|
|
106
|
+
return chalk.cyan(String(value));
|
|
107
|
+
default:
|
|
108
|
+
return String(value);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function editSetting(setting, config) {
|
|
112
|
+
const currentValue = getNestedValue(config, setting.key);
|
|
113
|
+
switch (setting.type) {
|
|
114
|
+
case "boolean": {
|
|
115
|
+
const current = currentValue ?? setting.defaultValue ?? false;
|
|
116
|
+
const newValue = await showConfirm({
|
|
117
|
+
title: t(setting.labelKey),
|
|
118
|
+
defaultValue: current
|
|
119
|
+
});
|
|
120
|
+
if (newValue !== current) {
|
|
121
|
+
setNestedValue(config, setting.key, newValue);
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
case "enum": {
|
|
127
|
+
const options = (setting.enumValues ?? []).map((v) => ({
|
|
128
|
+
label: v === String(currentValue) ? `${v} (current)` : v,
|
|
129
|
+
value: v
|
|
130
|
+
}));
|
|
131
|
+
const result = await showModal({
|
|
132
|
+
title: t(setting.labelKey),
|
|
133
|
+
options,
|
|
134
|
+
initialIndex: setting.enumValues?.indexOf(String(currentValue ?? setting.defaultValue)) ?? 0
|
|
135
|
+
});
|
|
136
|
+
if (result && result.value !== String(currentValue)) {
|
|
137
|
+
setNestedValue(config, setting.key, result.value);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
case "string": {
|
|
143
|
+
const result = await showInput({
|
|
144
|
+
title: t(setting.labelKey),
|
|
145
|
+
defaultValue: String(currentValue ?? setting.defaultValue ?? "")
|
|
146
|
+
});
|
|
147
|
+
if (result !== null && result !== String(currentValue)) {
|
|
148
|
+
setNestedValue(config, setting.key, result);
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
case "number": {
|
|
154
|
+
const result = await showInput({
|
|
155
|
+
title: t(setting.labelKey),
|
|
156
|
+
defaultValue: String(currentValue ?? setting.defaultValue ?? ""),
|
|
157
|
+
validate: (v) => {
|
|
158
|
+
const n = Number(v);
|
|
159
|
+
if (isNaN(n) || !Number.isFinite(n)) return "Must be a number";
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
if (result !== null) {
|
|
164
|
+
const numValue = Number(result);
|
|
165
|
+
if (numValue !== currentValue) {
|
|
166
|
+
setNestedValue(config, setting.key, numValue);
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
case "password": {
|
|
173
|
+
const result = await showPassword({
|
|
174
|
+
title: t(setting.labelKey)
|
|
175
|
+
});
|
|
176
|
+
if (result !== null && result !== String(currentValue ?? "")) {
|
|
177
|
+
setNestedValue(config, setting.key, result);
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
default:
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async function showCategorySettings(category, config) {
|
|
187
|
+
while (true) {
|
|
188
|
+
const settings2 = getSettingsForCategory(category);
|
|
189
|
+
const options = settings2.map((s) => {
|
|
190
|
+
const value = getNestedValue(config, s.key);
|
|
191
|
+
const display = formatSettingValue(value, s.type);
|
|
192
|
+
const label = s.redirect ? `${t(s.labelKey)}: ${display} (${s.redirect})` : `${t(s.labelKey)}: ${display}`;
|
|
193
|
+
return {
|
|
194
|
+
label,
|
|
195
|
+
value: s.key,
|
|
196
|
+
description: s.descriptionKey ? t(s.descriptionKey) : void 0
|
|
197
|
+
};
|
|
198
|
+
});
|
|
199
|
+
options.push({ label: t("commands.settings.back"), value: "__back__" });
|
|
200
|
+
const result = await showModal({
|
|
201
|
+
title: t("commands.settings.selectSetting"),
|
|
202
|
+
options
|
|
203
|
+
});
|
|
204
|
+
if (!result || result.value === "__back__") return;
|
|
205
|
+
const setting = SETTINGS_REGISTRY.find((s) => s.key === result.value);
|
|
206
|
+
if (!setting) return;
|
|
207
|
+
if (setting.redirect) {
|
|
208
|
+
console.log(chalk.gray(`
|
|
209
|
+
${t("commands.settings.redirect", { command: chalk.cyan(setting.redirect) })}
|
|
210
|
+
`));
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
const changed = await editSetting(setting, config);
|
|
214
|
+
if (changed) {
|
|
215
|
+
await saveConfig(config);
|
|
216
|
+
console.log(chalk.green(`
|
|
217
|
+
${t("commands.settings.saved")}
|
|
218
|
+
`));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async function settings(ctx) {
|
|
223
|
+
console.log(chalk.cyan(`
|
|
224
|
+
${t("commands.settings.title")}
|
|
225
|
+
`));
|
|
226
|
+
while (true) {
|
|
227
|
+
const options = SETTING_CATEGORIES.map((cat) => ({
|
|
228
|
+
label: t(cat.labelKey),
|
|
229
|
+
value: cat.id
|
|
230
|
+
}));
|
|
231
|
+
const result = await showModal({
|
|
232
|
+
title: t("commands.settings.selectCategory"),
|
|
233
|
+
options
|
|
234
|
+
});
|
|
235
|
+
if (!result) return null;
|
|
236
|
+
await showCategorySettings(result.value, ctx.config);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
var metadata = {
|
|
240
|
+
command: "/settings",
|
|
241
|
+
description: "configure autohand settings",
|
|
242
|
+
implemented: true
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
export {
|
|
246
|
+
SETTING_CATEGORIES,
|
|
247
|
+
SETTINGS_REGISTRY,
|
|
248
|
+
getNestedValue,
|
|
249
|
+
setNestedValue,
|
|
250
|
+
getSettingsForCategory,
|
|
251
|
+
formatSettingValue,
|
|
252
|
+
editSetting,
|
|
253
|
+
settings,
|
|
254
|
+
metadata
|
|
255
|
+
};
|
|
256
|
+
/**
|
|
257
|
+
* @license
|
|
258
|
+
* Copyright 2025 Autohand AI LLC
|
|
259
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
260
|
+
*/
|
|
@@ -1,10 +1,11 @@
|
|
|
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; }
|
|
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
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkYRLYSQEQcjs = require('./chunk-YRLYSQEQ.cjs');
|
|
6
6
|
|
|
7
7
|
// src/permissions/PermissionManager.ts
|
|
8
|
+
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
8
9
|
var DEFAULT_SECURITY_BLACKLIST = [
|
|
9
10
|
// === Sensitive Files (read/write blocked) ===
|
|
10
11
|
// Environment files with secrets
|
|
@@ -121,7 +122,7 @@ var PermissionManager = class {
|
|
|
121
122
|
async initLocalSettings() {
|
|
122
123
|
if (!this.workspaceRoot || this.localSettingsLoaded) return;
|
|
123
124
|
try {
|
|
124
|
-
const localSettings = await
|
|
125
|
+
const localSettings = await _chunkYRLYSQEQcjs.loadLocalProjectSettings.call(void 0, this.workspaceRoot);
|
|
125
126
|
if (_optionalChain([localSettings, 'optionalAccess', _ => _.permissions])) {
|
|
126
127
|
this.localSettings = localSettings.permissions;
|
|
127
128
|
}
|
|
@@ -133,7 +134,7 @@ var PermissionManager = class {
|
|
|
133
134
|
* Get merged settings (global + local)
|
|
134
135
|
*/
|
|
135
136
|
getMergedSettings() {
|
|
136
|
-
return
|
|
137
|
+
return _chunkYRLYSQEQcjs.mergePermissions.call(void 0, this.settings, this.localSettings);
|
|
137
138
|
}
|
|
138
139
|
/**
|
|
139
140
|
* Set permission mode (can be overridden by CLI flags)
|
|
@@ -191,23 +192,31 @@ var PermissionManager = class {
|
|
|
191
192
|
this.sessionCache.set(cacheKey, allowed);
|
|
192
193
|
}
|
|
193
194
|
const pattern = this.contextToPattern(context);
|
|
195
|
+
const dirPattern = allowed && context.path ? this.buildDirectoryWildcard(context) : null;
|
|
194
196
|
if (allowed && this.workspaceRoot) {
|
|
195
197
|
try {
|
|
196
|
-
|
|
198
|
+
const patterns = dirPattern ? [pattern, dirPattern] : [pattern];
|
|
199
|
+
for (const p of patterns) {
|
|
200
|
+
await _chunkYRLYSQEQcjs.addToLocalWhitelist.call(void 0, this.workspaceRoot, p);
|
|
201
|
+
}
|
|
197
202
|
if (!this.localSettings) {
|
|
198
203
|
this.localSettings = { whitelist: [] };
|
|
199
204
|
}
|
|
200
205
|
if (!this.localSettings.whitelist) {
|
|
201
206
|
this.localSettings.whitelist = [];
|
|
202
207
|
}
|
|
203
|
-
|
|
204
|
-
this.localSettings.whitelist.
|
|
208
|
+
for (const p of patterns) {
|
|
209
|
+
if (!this.localSettings.whitelist.includes(p)) {
|
|
210
|
+
this.localSettings.whitelist.push(p);
|
|
211
|
+
}
|
|
205
212
|
}
|
|
206
213
|
} catch (e2) {
|
|
207
214
|
this.addToWhitelist(pattern);
|
|
215
|
+
if (dirPattern) this.addToWhitelist(dirPattern);
|
|
208
216
|
}
|
|
209
217
|
} else if (allowed) {
|
|
210
218
|
this.addToWhitelist(pattern);
|
|
219
|
+
if (dirPattern) this.addToWhitelist(dirPattern);
|
|
211
220
|
} else {
|
|
212
221
|
this.addToBlacklist(pattern);
|
|
213
222
|
}
|
|
@@ -231,6 +240,17 @@ var PermissionManager = class {
|
|
|
231
240
|
}
|
|
232
241
|
return `${tool}:${value}`;
|
|
233
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Build a directory-level wildcard pattern for path-based approvals.
|
|
245
|
+
* E.g., write_file:/project/tests/foo.ts → write_file:/project/tests/*
|
|
246
|
+
* This allows future writes in the same directory to be auto-approved.
|
|
247
|
+
*/
|
|
248
|
+
buildDirectoryWildcard(context) {
|
|
249
|
+
if (!context.path) return null;
|
|
250
|
+
const dir = _path2.default.dirname(context.path);
|
|
251
|
+
if (dir === "." || dir === "/") return null;
|
|
252
|
+
return `${context.tool}:${dir}/*`;
|
|
253
|
+
}
|
|
234
254
|
/**
|
|
235
255
|
* Check if context matches the immutable security blacklist
|
|
236
256
|
* This check CANNOT be bypassed by any mode, whitelist, or user setting
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
8
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
19
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
20
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
21
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
22
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
23
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
24
|
+
mod
|
|
25
|
+
));
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
__commonJS,
|
|
29
|
+
__toESM
|
|
30
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
showModal
|
|
3
|
+
} from "./chunk-YZXUDM5X.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
|
+
*/
|
|
@@ -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 _chunk7BTSG4MEcjs = require('./chunk-7BTSG4ME.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(_chunk7BTSG4MEcjs.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(_chunk7BTSG4MEcjs.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(_chunk7BTSG4MEcjs.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: _chunk7BTSG4MEcjs.t.call(void 0, "commands.addDir.description"),
|
|
319
319
|
implemented: true
|
|
320
320
|
};
|
|
321
321
|
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkRKJTGGMUcjs = require('./chunk-RKJTGGMU.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var _chunkZYQMLKOKcjs = require('./chunk-ZYQMLKOK.cjs');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
var _chunkBWN2CLLMcjs = require('./chunk-BWN2CLLM.cjs');
|
|
12
|
+
|
|
13
|
+
// src/commands/search.ts
|
|
14
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
15
|
+
async function search(ctx) {
|
|
16
|
+
const currentConfig = _chunkRKJTGGMUcjs.getSearchConfig.call(void 0, );
|
|
17
|
+
const config = ctx.config;
|
|
18
|
+
console.log(_chalk2.default.bold("\nWeb Search Configuration\n"));
|
|
19
|
+
console.log(_chalk2.default.gray(`Current provider: ${_chalk2.default.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(_chalk2.default.gray(`Brave API key: ${braveKeySet ? _chalk2.default.green("configured") : _chalk2.default.yellow("not set")}`));
|
|
23
|
+
console.log(_chalk2.default.gray(`Parallel API key: ${parallelKeySet ? _chalk2.default.green("configured") : _chalk2.default.yellow("not set")}`));
|
|
24
|
+
console.log();
|
|
25
|
+
const providerOptions = [
|
|
26
|
+
{
|
|
27
|
+
label: `Google ${_chalk2.default.gray("(no API key required, recommended default)")}`,
|
|
28
|
+
value: "google"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: `DuckDuckGo ${_chalk2.default.gray("(no API key required, may be blocked by CAPTCHA)")}`,
|
|
32
|
+
value: "duckduckgo"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: `Brave Search ${_chalk2.default.gray("(requires API key)")} ${braveKeySet ? _chalk2.default.green("\u2713") : ""}`,
|
|
36
|
+
value: "brave"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
label: `Parallel.ai ${_chalk2.default.gray("(requires API key)")} ${parallelKeySet ? _chalk2.default.green("\u2713") : ""}`,
|
|
40
|
+
value: "parallel"
|
|
41
|
+
}
|
|
42
|
+
];
|
|
43
|
+
try {
|
|
44
|
+
const result = await _chunkZYQMLKOKcjs.showModal.call(void 0, {
|
|
45
|
+
title: "Select search provider:",
|
|
46
|
+
options: providerOptions,
|
|
47
|
+
initialIndex: providerOptions.findIndex((c) => c.value === currentConfig.provider)
|
|
48
|
+
});
|
|
49
|
+
if (!result) {
|
|
50
|
+
console.log(_chalk2.default.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(_chalk2.default.gray("\nGet your free Brave Search API key at: https://brave.com/search/api/\n"));
|
|
58
|
+
const apiKey = await _chunkZYQMLKOKcjs.showPassword.call(void 0, {
|
|
59
|
+
title: "Enter Brave Search API key:"
|
|
60
|
+
});
|
|
61
|
+
if (_optionalChain([apiKey, 'optionalAccess', _ => _.trim, 'call', _2 => _2()])) {
|
|
62
|
+
braveApiKey = apiKey.trim();
|
|
63
|
+
} else {
|
|
64
|
+
console.log(_chalk2.default.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(_chalk2.default.gray("\nGet your Parallel.ai API key at: https://platform.parallel.ai\n"));
|
|
70
|
+
const apiKey = await _chunkZYQMLKOKcjs.showPassword.call(void 0, {
|
|
71
|
+
title: "Enter Parallel.ai API key:"
|
|
72
|
+
});
|
|
73
|
+
if (_optionalChain([apiKey, 'optionalAccess', _3 => _3.trim, 'call', _4 => _4()])) {
|
|
74
|
+
parallelApiKey = apiKey.trim();
|
|
75
|
+
} else {
|
|
76
|
+
console.log(_chalk2.default.yellow("No API key entered. Parallel.ai Search will not work without an API key."));
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
_chunkRKJTGGMUcjs.configureSearch.call(void 0, {
|
|
81
|
+
provider,
|
|
82
|
+
braveApiKey,
|
|
83
|
+
parallelApiKey
|
|
84
|
+
});
|
|
85
|
+
if (config) {
|
|
86
|
+
config.search = {
|
|
87
|
+
provider,
|
|
88
|
+
braveApiKey,
|
|
89
|
+
parallelApiKey
|
|
90
|
+
};
|
|
91
|
+
await _chunkBWN2CLLMcjs.saveConfig.call(void 0, config);
|
|
92
|
+
console.log(_chalk2.default.green(`
|
|
93
|
+
\u2713 Search provider set to ${provider} and saved to config`));
|
|
94
|
+
} else {
|
|
95
|
+
console.log(_chalk2.default.green(`
|
|
96
|
+
\u2713 Search provider set to ${provider} (session only)`));
|
|
97
|
+
}
|
|
98
|
+
switch (provider) {
|
|
99
|
+
case "google":
|
|
100
|
+
console.log(_chalk2.default.gray("Google Search is now active. No API key required."));
|
|
101
|
+
break;
|
|
102
|
+
case "duckduckgo":
|
|
103
|
+
console.log(_chalk2.default.gray("Note: DuckDuckGo may block automated requests with a CAPTCHA."));
|
|
104
|
+
break;
|
|
105
|
+
case "brave":
|
|
106
|
+
console.log(_chalk2.default.gray("Brave Search is now active. Free tier allows 2,000 queries/month."));
|
|
107
|
+
break;
|
|
108
|
+
case "parallel":
|
|
109
|
+
console.log(_chalk2.default.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
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
exports.search = search; exports.metadata = metadata;
|
|
127
|
+
/**
|
|
128
|
+
* @license
|
|
129
|
+
* Copyright 2025 Autohand AI LLC
|
|
130
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
131
|
+
*/
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunk7BTSG4MEcjs = require('./chunk-7BTSG4ME.cjs');
|
|
4
4
|
|
|
5
5
|
// src/commands/help.ts
|
|
6
6
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
7
7
|
var _terminallink = require('terminal-link'); var _terminallink2 = _interopRequireDefault(_terminallink);
|
|
8
8
|
async function help() {
|
|
9
|
-
const { SLASH_COMMANDS } = await Promise.resolve().then(() => _interopRequireWildcard(require("./slashCommands-
|
|
9
|
+
const { SLASH_COMMANDS } = await Promise.resolve().then(() => _interopRequireWildcard(require("./slashCommands-YY2VUUDF.cjs")));
|
|
10
10
|
console.log(_chalk2.default.cyan(`
|
|
11
|
-
${
|
|
11
|
+
${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.title")}
|
|
12
12
|
`));
|
|
13
13
|
const commands = SLASH_COMMANDS.filter((cmd) => cmd.implemented && cmd.command !== "/?").sort((a, b) => a.command.localeCompare(b.command));
|
|
14
14
|
const maxLen = Math.max(...commands.map((c) => c.command.length)) + 2;
|
|
@@ -16,15 +16,15 @@ async function help() {
|
|
|
16
16
|
console.log(` ${_chalk2.default.yellow(command.padEnd(maxLen))} ${_chalk2.default.gray(description)}`);
|
|
17
17
|
}
|
|
18
18
|
console.log(_chalk2.default.cyan(`
|
|
19
|
-
${
|
|
19
|
+
${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.tips.title")}
|
|
20
20
|
`));
|
|
21
|
-
console.log(_chalk2.default.gray(` \u2022 ${
|
|
22
|
-
console.log(_chalk2.default.gray(` \u2022 ${
|
|
23
|
-
console.log(_chalk2.default.gray(` \u2022 ${
|
|
24
|
-
console.log(_chalk2.default.gray(` \u2022 ${
|
|
21
|
+
console.log(_chalk2.default.gray(` \u2022 ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.tips.mention")}`));
|
|
22
|
+
console.log(_chalk2.default.gray(` \u2022 ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.tips.arrows")}`));
|
|
23
|
+
console.log(_chalk2.default.gray(` \u2022 ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.tips.tab")}`));
|
|
24
|
+
console.log(_chalk2.default.gray(` \u2022 ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.tips.escape")}
|
|
25
25
|
`));
|
|
26
26
|
const docLink = _terminallink2.default.call(void 0, "docs.autohand.ai", "https://docs.autohand.ai");
|
|
27
|
-
console.log(_chalk2.default.gray(` ${
|
|
27
|
+
console.log(_chalk2.default.gray(` ${_chunk7BTSG4MEcjs.t.call(void 0, "commands.help.docsLink", { link: docLink })}
|
|
28
28
|
`));
|
|
29
29
|
return null;
|
|
30
30
|
}
|