autohand-cli 0.8.0 → 0.8.3
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/dist/{AgentRegistry-NQCLWABO.cjs → AgentRegistry-HRPN6ZOF.cjs} +1 -1
- package/dist/{AgentRegistry-7LDL5HJH.js → AgentRegistry-ODDXPAFR.js} +1 -1
- package/dist/{AutomodeManager-NYIZNODK.cjs → AutomodeManager-6ATBE7Q5.cjs} +1 -1
- package/dist/{AutomodeManager-MWLKGPZK.js → AutomodeManager-EOVHGRPP.js} +1 -1
- package/dist/{CommunitySkillsCache-GTQMOCCO.cjs → CommunitySkillsCache-KE435RAR.cjs} +1 -1
- package/dist/{CommunitySkillsCache-6QPRMTJO.js → CommunitySkillsCache-QLE57BN5.js} +1 -1
- package/dist/{GitHubRegistryFetcher-S7QFUEKV.cjs → GitHubRegistryFetcher-I45SESIL.cjs} +1 -1
- package/dist/{GitHubRegistryFetcher-6JQ5JEDZ.js → GitHubRegistryFetcher-NT5GFZXS.js} +1 -1
- package/dist/HookManager-B2F35M27.js +7 -0
- package/dist/HookManager-PFAFE3FK.cjs +7 -0
- package/dist/{ImportWizard-IWVPRKFF.cjs → ImportWizard-CJRZPPHL.cjs} +12 -12
- package/dist/{ImportWizard-KASGQPUY.js → ImportWizard-OHRKBANZ.js} +5 -5
- package/dist/LearnAdvisor-FLBA6FDD.js +9 -0
- package/dist/LearnAdvisor-GG3CXQF3.cjs +9 -0
- package/dist/{McpClientManager-RKD7C6OY.cjs → McpClientManager-NQ3EW2IF.cjs} +1 -1
- package/dist/{McpClientManager-7RM6YT35.js → McpClientManager-VBIMGKXU.js} +1 -1
- package/dist/{MemoryManager-GUNLRP5S.js → MemoryManager-2LAT7IHS.js} +1 -1
- package/dist/{MemoryManager-TNSGKDKX.cjs → MemoryManager-2LQPIYVE.cjs} +1 -1
- package/dist/{PermissionManager-K7UWSNB6.js → PermissionManager-7NQHRCHY.js} +2 -2
- package/dist/PermissionManager-X57BXHJ6.cjs +11 -0
- package/dist/{ProjectProfiler-UMJJSOCE.js → ProjectProfiler-P4QJQWWA.js} +1 -1
- package/dist/{ProjectProfiler-ZDWR2ODG.cjs → ProjectProfiler-UG42W6WD.cjs} +1 -1
- package/dist/{ProviderFactory-S3LWTQQC.js → ProviderFactory-2IYJ5OPW.js} +2 -2
- package/dist/ProviderFactory-KPJOGQWF.cjs +9 -0
- package/dist/{SessionManager-IKWAK2PI.js → SessionManager-4U4JFQ3C.js} +1 -1
- package/dist/{SessionManager-FEUAU3ZJ.cjs → SessionManager-YBJAZXNO.cjs} +1 -1
- package/dist/SkillsRegistry-7O72A6TZ.cjs +9 -0
- package/dist/{SkillsRegistry-SI5RUHQ4.js → SkillsRegistry-RFEINXRT.js} +2 -2
- package/dist/{SubAgent-I75HELJG.js → SubAgent-JT4HZHN7.js} +2 -2
- package/dist/{SubAgent-K3QP6WHC.cjs → SubAgent-VPNYDWAU.cjs} +3 -3
- package/dist/{SyncApiClient-LVIO4C2S.js → SyncApiClient-B5RT2ECG.js} +1 -1
- package/dist/{SyncApiClient-ZNYMT36M.cjs → SyncApiClient-HQXJL5BT.cjs} +1 -1
- package/dist/about-4DB5KTHW.js +12 -0
- package/dist/about-LXAOXZFT.cjs +12 -0
- package/dist/actionExecutor-23JB2WUC.js +19 -0
- package/dist/actionExecutor-X5UEZSKH.cjs +19 -0
- package/dist/add-dir-TUJM3PG5.js +10 -0
- package/dist/add-dir-YC37DMSF.cjs +10 -0
- package/dist/{agents-FENGUSJD.js → agents-YF3BSUU5.js} +3 -3
- package/dist/agents-ZOUHPMYR.cjs +12 -0
- package/dist/agents-new-HSH4GQPG.js +14 -0
- package/dist/agents-new-VYUDOCE7.cjs +14 -0
- package/dist/autoSkill-LQEVQFIH.js +20 -0
- package/dist/autoSkill-X5W52WOE.cjs +20 -0
- package/dist/automode-R6P3VHLS.js +10 -0
- package/dist/automode-SJGM7VEI.cjs +10 -0
- package/dist/{cc-7LEIJ3KF.js → cc-AYEP2CA3.js} +1 -1
- package/dist/{cc-Q5MM4AWC.cjs → cc-S2QLQFBR.cjs} +1 -1
- package/dist/{chunk-MUBW5UDH.cjs → chunk-245KJE5Y.cjs} +4 -4
- package/dist/{chunk-6OYHF6MF.js → chunk-2UC22DJU.js} +3 -3
- package/dist/{chunk-N254NRHT.cjs → chunk-3HT76LNN.cjs} +9 -2
- package/dist/{chunk-XMNHZRUB.cjs → chunk-3K2ESU53.cjs} +2 -2
- package/dist/{chunk-OI7OIGNB.cjs → chunk-3L53OA4E.cjs} +10 -10
- package/dist/{chunk-XUDSXGGV.cjs → chunk-3O3MOK5C.cjs} +169 -46
- package/dist/{chunk-WJDPVW7T.js → chunk-3VTAFAL2.js} +4 -4
- package/dist/{chunk-2RIAPTET.js → chunk-3WICOC33.js} +71 -57
- package/dist/chunk-3WVJEL7K.cjs +568 -0
- package/dist/{chunk-JJWCQLOU.cjs → chunk-47CKWKEX.cjs} +2 -2
- package/dist/{chunk-SRQW3B6J.cjs → chunk-56SWIDEL.cjs} +24 -17
- package/dist/{chunk-OBLIITWJ.js → chunk-5K6NGAVM.js} +2 -2
- package/dist/chunk-64H4FRM3.cjs +340 -0
- package/dist/{chunk-VNQ5GL34.js → chunk-6ZCULLCA.js} +1 -1
- package/dist/{chunk-RVUQKMXX.cjs → chunk-7BTSG4ME.cjs} +5067 -2204
- package/dist/{chunk-H6ZGZEBG.cjs → chunk-7TQH3CL4.cjs} +9 -9
- package/dist/{chunk-YYB42DCU.cjs → chunk-A4IJHHV7.cjs} +10 -4
- package/dist/{chunk-OPR34VHL.cjs → chunk-ADUFCS4Q.cjs} +174 -8
- package/dist/{chunk-IUMJYXBX.cjs → chunk-AEJH23FO.cjs} +6 -6
- package/dist/{chunk-HFMLWH7B.js → chunk-APIXPPMT.js} +5067 -2204
- package/dist/{chunk-ZSE42BRE.js → chunk-AYS2ASM7.js} +1 -1
- package/dist/{chunk-7GDVDSNI.js → chunk-B53A2NM2.js} +989 -135
- package/dist/{chunk-ITB3FS72.js → chunk-BJXSNT46.js} +4 -4
- package/dist/{chunk-IVM5F2AE.js → chunk-BYONM7UM.js} +1 -1
- package/dist/{chunk-EEGK5DYE.cjs → chunk-C5IJIM2V.cjs} +20 -14
- package/dist/{chunk-UJTCTTUF.cjs → chunk-CB4E2T5N.cjs} +49 -8
- package/dist/{chunk-UBS46QL3.cjs → chunk-CZXGCVTR.cjs} +2 -2
- package/dist/{chunk-AFN7LH5N.cjs → chunk-DJDE4DTT.cjs} +17 -17
- package/dist/{chunk-CVVEYUFR.js → chunk-DNUOXBHL.js} +108 -3
- package/dist/{chunk-DN573ME7.cjs → chunk-DRWDEHE5.cjs} +4 -4
- package/dist/{chunk-5GGX6WNY.cjs → chunk-DV2ZHK7B.cjs} +22 -22
- package/dist/{chunk-BT35E7NE.cjs → chunk-DVUHHH3B.cjs} +4 -4
- package/dist/{chunk-MHSDHPC4.cjs → chunk-DVZOENQ7.cjs} +2 -2
- package/dist/chunk-EFX2QSZX.cjs +33 -0
- package/dist/{chunk-Y2SXUCNJ.js → chunk-EGMZDTSL.js} +1 -1
- package/dist/{chunk-7QEE6SW6.cjs → chunk-EGPXJERY.cjs} +26 -26
- package/dist/{chunk-Q5RN7RXC.js → chunk-FTYY5JJD.js} +2 -2
- package/dist/{chunk-T63AMO6H.js → chunk-G27PQQFD.js} +1 -1
- package/dist/{chunk-CWALFEGU.js → chunk-G4CAKI3V.js} +1 -1
- package/dist/{chunk-D6VG7B5X.cjs → chunk-GCXYXLRA.cjs} +2 -1
- package/dist/{chunk-FYZ67R4R.js → chunk-GJH7XMSK.js} +14 -0
- package/dist/chunk-H2ZRHQQV.js +33 -0
- package/dist/{chunk-OUHQZFN4.js → chunk-HBXAA3XB.js} +6 -1
- package/dist/{chunk-XWASJ2QL.js → chunk-HBZU3RBZ.js} +3 -3
- package/dist/{chunk-E23CMMNJ.js → chunk-HIVRCQS2.js} +8 -2
- package/dist/{chunk-TFSRRZWP.cjs → chunk-HLHTG5ZU.cjs} +15 -1
- package/dist/{chunk-3WCOFXQS.cjs → chunk-HNRPK5MY.cjs} +23 -23
- package/dist/{chunk-MGMXR67S.cjs → chunk-HPHJ73GU.cjs} +9 -9
- package/dist/{chunk-63WXWFDI.cjs → chunk-HVKOZ2VP.cjs} +11 -11
- package/dist/{chunk-LQ4LQQG6.cjs → chunk-HXGBSJL5.cjs} +2 -2
- package/dist/{chunk-GCHELXLO.js → chunk-IDFF5J2E.js} +2 -2
- package/dist/{chunk-D3YCFT5O.cjs → chunk-IFFXSTOM.cjs} +3 -3
- package/dist/{chunk-SHFA46CS.cjs → chunk-J2GSFVUV.cjs} +8 -8
- package/dist/{chunk-5EIEWVYX.js → chunk-JCLYQ2JC.js} +2 -2
- package/dist/{chunk-4HKTYHNL.cjs → chunk-JJLYWH5Y.cjs} +17 -17
- package/dist/{chunk-SALLHB2I.js → chunk-JYTDYJVW.js} +1 -1
- package/dist/{chunk-CDMGQR4L.cjs → chunk-K2C56QGS.cjs} +226 -50
- package/dist/{chunk-643VRA5S.cjs → chunk-KANW6OYC.cjs} +3 -3
- package/dist/{chunk-5YJG6H6P.cjs → chunk-KLWJIPU2.cjs} +10 -10
- package/dist/{chunk-G7SZIOHF.js → chunk-KPELYZ6L.js} +2 -2
- package/dist/{chunk-2ELK5DMH.js → chunk-KQGPTCQJ.js} +3 -3
- package/dist/{chunk-S6BDWWUG.cjs → chunk-KWXVKLQ5.cjs} +5 -5
- package/dist/{chunk-EIU7K7CM.js → chunk-L3TWPROA.js} +5 -5
- package/dist/{chunk-JS7IPR7P.js → chunk-LIEXWM2M.js} +12 -1
- package/dist/{chunk-JMFDD7IZ.js → chunk-LWUJFGOZ.js} +2 -2
- package/dist/{chunk-LXDOQTXQ.cjs → chunk-MERYP6AM.cjs} +113 -8
- package/dist/{chunk-RO46YAPI.js → chunk-MYISNQH4.js} +1 -1
- package/dist/chunk-MZAPWNAC.cjs +207 -0
- package/dist/{chunk-Q2VYSHWU.js → chunk-N23UAW4I.js} +1 -1
- package/dist/{chunk-5DDDUUBM.cjs → chunk-N2BLVUPM.cjs} +3 -3
- package/dist/{chunk-TWEKBHUO.js → chunk-N7LI55V4.js} +3 -3
- package/dist/{chunk-YKS55CMT.js → chunk-NA6WQDYW.js} +152 -29
- package/dist/{chunk-LL3PQ2U6.js → chunk-NAGQ2PDC.js} +195 -19
- package/dist/chunk-NAJ4IZKD.cjs +504 -0
- package/dist/{chunk-DH7DKCUL.js → chunk-NDMIPTV4.js} +1 -1
- package/dist/{chunk-YDCDGTK6.cjs → chunk-NNPAM4HC.cjs} +5 -5
- package/dist/{chunk-GHSBZ3YB.js → chunk-NTSDP2WB.js} +2 -2
- package/dist/chunk-OHUZKDGX.js +348 -0
- package/dist/{chunk-AMT2UZBI.cjs → chunk-OLSBBZW6.cjs} +5 -5
- package/dist/{chunk-SIHRD34Z.js → chunk-OOKY3HPZ.js} +8 -2
- package/dist/{chunk-MVWOQBCC.cjs → chunk-OUZQXMHL.cjs} +11 -11
- package/dist/chunk-PGESAU2W.cjs +2030 -0
- package/dist/{chunk-IQ5RXU6O.js → chunk-QEGOB6QV.js} +1 -1
- package/dist/{chunk-JSBRDJBE.js → chunk-QGM4M3NI.js} +8 -1
- package/dist/{chunk-EF4LKUQY.js → chunk-QNGEW5TC.js} +1 -1
- package/dist/{chunk-QT2VZNFA.js → chunk-QXH5RCFI.js} +2 -2
- package/dist/chunk-R33VKSH5.cjs +348 -0
- package/dist/chunk-RDF37HKB.cjs +326 -0
- package/dist/{chunk-55B6SBHK.js → chunk-SJAVBCOA.js} +3 -3
- package/dist/{chunk-YS34SVY5.js → chunk-SKV2F3NM.js} +1 -1
- package/dist/{chunk-MHLE6AVN.cjs → chunk-SKYG33B2.cjs} +3 -3
- package/dist/{chunk-EPNYD4NV.js → chunk-SLQAYV3W.js} +1 -1
- package/dist/{chunk-IWVQ2EW3.js → chunk-SV2WA57F.js} +5 -5
- package/dist/{chunk-DLG43ZJ7.cjs → chunk-SYVYLZZF.cjs} +2 -2
- package/dist/{chunk-QUFAULH7.js → chunk-SZOLA6FR.js} +2 -1
- package/dist/{chunk-WGTJOIB7.cjs → chunk-T2M64VHA.cjs} +13 -13
- package/dist/{chunk-TQHOVHRS.js → chunk-TNZRZQ7Q.js} +1 -1
- package/dist/chunk-TUAITHWL.js +326 -0
- package/dist/{chunk-WFUUXADU.js → chunk-TUD3Z3BD.js} +170 -4
- package/dist/{chunk-LVE6Z5SL.cjs → chunk-U46VYPLR.cjs} +7 -7
- package/dist/{chunk-PGRH5Q77.cjs → chunk-U55TWFJI.cjs} +12 -1
- package/dist/{chunk-SO3QQJAZ.js → chunk-ULDM2SNB.js} +11 -4
- package/dist/{chunk-HA7OAVOB.cjs → chunk-VEKDGU2Q.cjs} +12 -12
- package/dist/{chunk-HQ7YZKXE.js → chunk-VWDHR4HV.js} +2 -2
- package/dist/{chunk-GO3N7LRW.cjs → chunk-W7RYQJLO.cjs} +6 -6
- package/dist/{chunk-F23EVNJU.js → chunk-WHE2SWHU.js} +1 -1
- package/dist/{chunk-PEC45WYS.js → chunk-X2MSVKDV.js} +1 -1
- package/dist/{chunk-RD5XAJR2.cjs → chunk-X2YOZQIP.cjs} +6 -6
- package/dist/{chunk-Q5RX3XGB.cjs → chunk-X5VSP65C.cjs} +2 -2
- package/dist/{chunk-TERCG25S.js → chunk-XRZEUWKF.js} +1 -1
- package/dist/{chunk-VJYPP6PP.cjs → chunk-XTB6VJVQ.cjs} +6 -6
- package/dist/chunk-XVUHNWMX.js +340 -0
- package/dist/{chunk-UGTFKUW4.js → chunk-XX2ZO7DS.js} +2 -2
- package/dist/{chunk-33A755XB.cjs → chunk-Y45G6ZO5.cjs} +3 -3
- package/dist/{chunk-UTI6ZQEY.cjs → chunk-Y72HH2TF.cjs} +9 -9
- package/dist/{chunk-PUOE5BCN.js → chunk-YGN4CQIP.js} +1 -1
- package/dist/{chunk-5OBNULPU.js → chunk-YZXUDM5X.js} +1 -1
- package/dist/{chunk-AHD5JJ6F.cjs → chunk-Z36XBUMX.cjs} +6 -1
- package/dist/chunk-ZLSGXMGQ.js +568 -0
- package/dist/chunk-ZSPXQYG2.js +504 -0
- package/dist/{chunk-FPAE6ORV.cjs → chunk-ZYQMLKOK.cjs} +6 -6
- package/dist/{chunk-WTNBX2JO.js → chunk-ZYVS43MU.js} +47 -6
- package/dist/{clear-J7XS6T5W.js → clear-A3N4GK2S.js} +3 -3
- package/dist/clear-GK4IEUUS.cjs +12 -0
- package/dist/communityInstaller-LOP2EDH5.js +19 -0
- package/dist/communityInstaller-XXC7RLE4.cjs +19 -0
- package/dist/completion-HWABSAEL.js +14 -0
- package/dist/completion-IUUVQG4D.cjs +14 -0
- package/dist/config-HF7WOLZF.cjs +18 -0
- package/dist/{config-2TB3A55J.js → config-HPJPKTO6.js} +4 -4
- package/dist/{constants-UFM5B232.js → constants-LISJW3DD.js} +1 -1
- package/dist/{constants-6CPCJ3DY.cjs → constants-PEO3P2SJ.cjs} +1 -1
- package/dist/{defaultHooks-RCXPHF4M.cjs → defaultHooks-IHSJR2AX.cjs} +1 -1
- package/dist/{defaultHooks-RDRMER3Z.js → defaultHooks-KUKHK3AG.js} +1 -1
- package/dist/export-QJAV2FCZ.js +12 -0
- package/dist/export-XSRFXGWU.cjs +12 -0
- package/dist/{extractSessionMemories-V7K42ZHW.js → extractSessionMemories-A2JX5WJ2.js} +1 -1
- package/dist/{extractSessionMemories-SDW2MVBQ.cjs → extractSessionMemories-XL3MS37F.cjs} +1 -1
- package/dist/feedback-4TCIL3ML.cjs +15 -0
- package/dist/feedback-SJ6VVEY3.js +15 -0
- package/dist/{filesystem-MCFXJQ6R.cjs → filesystem-W56QZUJF.cjs} +1 -1
- package/dist/{filesystem-3SGCW2BF.js → filesystem-Z7BWAWMZ.js} +1 -1
- package/dist/{formatters-6K7QVWQL.cjs → formatters-53XTCNGQ.cjs} +1 -1
- package/dist/{formatters-DQHO5I36.js → formatters-T6KV4BPP.js} +1 -1
- package/dist/{help-I5GRCA3S.js → help-GFQXNZOK.js} +3 -3
- package/dist/help-ISBVQL3S.cjs +12 -0
- package/dist/{history-OCHJBJW7.js → history-E3N6BJP7.js} +3 -3
- package/dist/history-XQ4GTSFU.cjs +14 -0
- package/dist/hooks-CJNKJ5PF.js +13 -0
- package/dist/hooks-UTMBTAXT.cjs +13 -0
- package/dist/i18n-N7QQ7A5M.cjs +33 -0
- package/dist/{i18n-KHBXUALK.js → i18n-SY7QRM22.js} +2 -2
- package/dist/ide-RTA4UJV4.js +12 -0
- package/dist/ide-VWVOLIFF.cjs +12 -0
- package/dist/immediateCommandRouter-BW34JNXL.js +9 -0
- package/dist/immediateCommandRouter-SHOVNB5X.cjs +9 -0
- package/dist/{import-PQJPNXA4.cjs → import-ADI37ZUR.cjs} +4 -4
- package/dist/import-KGKKZ3B7.js +10 -0
- package/dist/{import-EAAX5HJR.js → import-W7SVLSTC.js} +4 -4
- package/dist/import-ZLJVONXH.cjs +10 -0
- package/dist/index.cjs +6270 -2431
- package/dist/index.js +6262 -2423
- package/dist/init-7MFK626E.js +10 -0
- package/dist/init-TBKAB4LZ.cjs +10 -0
- package/dist/language-MDSHEXHB.cjs +18 -0
- package/dist/language-PXTQSHIG.js +18 -0
- package/dist/learn-623TW5EK.cjs +20 -0
- package/dist/learn-BCPV7GM2.js +20 -0
- package/dist/{lint-D5UOJWIK.cjs → lint-4NDGCSCL.cjs} +1 -1
- package/dist/{lint-NJPZWVN2.js → lint-FZ7ZJUB3.js} +1 -1
- package/dist/{localProjectPermissions-UFSMNTBJ.cjs → localProjectPermissions-BHQXEWZJ.cjs} +1 -1
- package/dist/{localProjectPermissions-N77HA3XK.js → localProjectPermissions-GMOUYQM6.js} +1 -1
- package/dist/login-QMVEETWJ.js +20 -0
- package/dist/login-QYMXAL3K.cjs +20 -0
- package/dist/logout-2CMTDAOJ.js +18 -0
- package/dist/logout-ZOHVZAUK.cjs +18 -0
- package/dist/mcp-IUVKK65S.js +18 -0
- package/dist/mcp-TXC7PYG3.cjs +18 -0
- package/dist/{mcp-install-KSADVDBE.js → mcp-install-2FEROZTL.js} +8 -8
- package/dist/{mcp-install-GROTZHAW.cjs → mcp-install-WM6BQRI5.cjs} +12 -12
- package/dist/memory-J73WZH2I.js +10 -0
- package/dist/memory-WRIHDEPK.cjs +10 -0
- package/dist/{message-ZJ5AYAMT.cjs → message-4OKO775J.cjs} +1 -1
- package/dist/{message-JUBOK2VU.js → message-X3LOAAM7.js} +1 -1
- package/dist/model-AES267IN.js +10 -0
- package/dist/model-RLP75SF5.cjs +10 -0
- package/dist/{new-7VYM36RC.js → new-5CLF3MKH.js} +3 -3
- package/dist/new-HLSFL6A4.cjs +12 -0
- package/dist/{patch-MOD7QC3D.cjs → patch-DJ2GPFST.cjs} +1 -1
- package/dist/{patch-5F6VBIT3.js → patch-NIJWIRHS.js} +1 -1
- package/dist/permissions-GP6FTGZ2.js +13 -0
- package/dist/permissions-O6EKKPOG.cjs +13 -0
- package/dist/{plan-G5CEKJI4.js → plan-65HMS5HQ.js} +1 -1
- package/dist/{plan-QKOHE3LH.cjs → plan-MCAXDIM2.cjs} +1 -1
- package/dist/quit-TQX6GXA5.cjs +10 -0
- package/dist/quit-XDZYRSPU.js +10 -0
- package/dist/{registry-A5XLMQVC.cjs → registry-IVT4G2RT.cjs} +299 -19
- package/dist/{registry-WQLWHOLY.js → registry-PTHWERKC.js} +290 -10
- package/dist/repeat-BSPS5TWD.cjs +13 -0
- package/dist/repeat-EVCWUL6Z.js +13 -0
- package/dist/resume-2GOPDLL4.cjs +13 -0
- package/dist/resume-37IUVDA6.js +13 -0
- package/dist/search-7KUSHIBL.cjs +17 -0
- package/dist/search-OJGDRIMA.js +17 -0
- package/dist/{session-BSU2L5UI.cjs → session-LXKC4X5Q.cjs} +1 -1
- package/dist/{session-SZMRN5KG.js → session-NMMO4QOL.js} +1 -1
- package/dist/sessions-6GWEBMKS.js +10 -0
- package/dist/sessions-CYYCHSQG.cjs +10 -0
- package/dist/settings-2D7CAO66.cjs +30 -0
- package/dist/{settings-D6JXX5RG.js → settings-BXR6SBJP.js} +8 -8
- package/dist/share-BXQY5IQU.js +14 -0
- package/dist/share-OSFXZBGS.cjs +14 -0
- package/dist/skills-FL6O6AOM.cjs +26 -0
- package/dist/skills-PG542VEB.cjs +76 -0
- package/dist/skills-PNKQZRNK.js +26 -0
- package/dist/skills-ZZCIAS7C.js +76 -0
- package/dist/{skills-install-UMK5H3SO.cjs → skills-install-67DOBPJC.cjs} +12 -12
- package/dist/{skills-install-QNQWC2MV.js → skills-install-SRC3Z2MS.js} +8 -8
- package/dist/skills-new-XFMEHHIF.cjs +15 -0
- package/dist/skills-new-ZNZPHUKS.js +15 -0
- package/dist/slashCommands-LLCNPK3X.js +76 -0
- package/dist/slashCommands-RXZZS6RE.cjs +76 -0
- package/dist/status-BCECUJXT.cjs +11 -0
- package/dist/status-EFO7MQU3.js +11 -0
- package/dist/sync-IJYJ6KKM.js +18 -0
- package/dist/sync-LFT6SBPF.cjs +18 -0
- package/dist/{sync-7JMZVEQD.cjs → sync-U7SDPBNZ.cjs} +1 -1
- package/dist/{sync-KWX67OUN.js → sync-VU2NSJ4O.js} +1 -1
- package/dist/{tasks-5FPBIFLC.js → tasks-R5MBGAQ6.js} +1 -1
- package/dist/{tasks-TXGKGNH6.cjs → tasks-V4WB3MFR.cjs} +1 -1
- package/dist/team-JESCHGWB.js +9 -0
- package/dist/team-VQQKWGZB.cjs +9 -0
- package/dist/{teammate-3C4MLRGH.js → teammate-SD26GR37.js} +7 -7
- package/dist/{teammate-7C3UDQSH.cjs → teammate-SXRVXNQV.cjs} +7 -7
- package/dist/theme-AWBHSG7J.cjs +18 -0
- package/dist/theme-TQLBPJ2E.js +18 -0
- package/dist/ui/questionModal.cjs +6 -6
- package/dist/ui/questionModal.js +5 -5
- package/dist/undo-IBBGP7A2.cjs +10 -0
- package/dist/undo-OL2EDBRY.js +10 -0
- package/dist/{update-TVAJMMBC.js → update-53WMKYVS.js} +1 -1
- package/dist/{update-Z6BIIQDC.cjs → update-NV6QRYY7.cjs} +1 -1
- package/package.json +2 -1
- package/dist/HookManager-Q2KYMCP4.cjs +0 -7
- package/dist/HookManager-TTP4Y6DC.js +0 -7
- package/dist/PermissionManager-2GO5PQ6M.cjs +0 -11
- package/dist/ProviderFactory-EFFQBRQ6.cjs +0 -9
- package/dist/SkillsRegistry-GDEGFP6O.cjs +0 -9
- package/dist/about-B2AGTV6N.js +0 -12
- package/dist/about-V2HWEZZO.cjs +0 -12
- package/dist/actionExecutor-6XCVL2SJ.js +0 -19
- package/dist/actionExecutor-YRUJNB5G.cjs +0 -19
- package/dist/add-dir-7FBQ5IFV.js +0 -10
- package/dist/add-dir-ALBSYRV3.cjs +0 -10
- package/dist/agents-FCGEWTA3.cjs +0 -12
- package/dist/agents-new-FU3O55CO.js +0 -14
- package/dist/agents-new-SAFTJ7TK.cjs +0 -14
- package/dist/automode-CYLGXQ4A.cjs +0 -10
- package/dist/automode-O7G3DUYN.js +0 -10
- package/dist/chunk-2JYIR3EC.cjs +0 -1176
- package/dist/chunk-Q3MJ6CYS.cjs +0 -193
- package/dist/clear-ES5WCZRF.cjs +0 -12
- package/dist/completion-XQTDTJLK.cjs +0 -14
- package/dist/completion-XR6ZONJQ.js +0 -14
- package/dist/config-RDMVIV26.cjs +0 -18
- package/dist/export-EWAYH353.cjs +0 -12
- package/dist/export-ZWA6XGVS.js +0 -12
- package/dist/feedback-5RV6ODW4.js +0 -15
- package/dist/feedback-ZPITHFJR.cjs +0 -15
- package/dist/help-X52PZM24.cjs +0 -12
- package/dist/history-4WIOZ4TW.cjs +0 -14
- package/dist/hooks-IAVTXUAI.cjs +0 -13
- package/dist/hooks-YF6HL23E.js +0 -13
- package/dist/i18n-MVQIAZWS.cjs +0 -33
- package/dist/ide-4R3BEBIS.js +0 -12
- package/dist/ide-C7WSPQTR.cjs +0 -12
- package/dist/import-2ICSKDL7.cjs +0 -10
- package/dist/import-KRVVYJCZ.js +0 -10
- package/dist/init-6K3NRDOM.js +0 -10
- package/dist/init-AOUGGITS.cjs +0 -10
- package/dist/language-Q7YFDVSR.cjs +0 -18
- package/dist/language-Y6ZC7LET.js +0 -18
- package/dist/login-6OAH2NEH.cjs +0 -20
- package/dist/login-DL3377MD.js +0 -20
- package/dist/logout-ELQBUMTU.cjs +0 -18
- package/dist/logout-TLYA5W45.js +0 -18
- package/dist/mcp-BHOIBYUB.js +0 -18
- package/dist/mcp-TNUEXR5T.cjs +0 -18
- package/dist/memory-6DRFA43C.js +0 -10
- package/dist/memory-IORZE6WF.cjs +0 -10
- package/dist/model-CJPSPGIC.cjs +0 -10
- package/dist/model-MQXC56ES.js +0 -10
- package/dist/new-7D2B7IWM.cjs +0 -12
- package/dist/permissions-MM77OSFO.js +0 -13
- package/dist/permissions-W2F62DJ6.cjs +0 -13
- package/dist/quit-7D2RDGTD.cjs +0 -10
- package/dist/quit-PKBSEJOL.js +0 -10
- package/dist/resume-FBKXSDOA.js +0 -13
- package/dist/resume-KLPDYPWQ.cjs +0 -13
- package/dist/search-7RNYTCNO.js +0 -17
- package/dist/search-UESMQZC3.cjs +0 -17
- package/dist/sessions-TSSUFWIJ.cjs +0 -10
- package/dist/sessions-WAXBUQTU.js +0 -10
- package/dist/settings-RKYGXKDG.cjs +0 -30
- package/dist/share-GLX4YHS4.cjs +0 -14
- package/dist/share-U2M2KBFJ.js +0 -14
- package/dist/skills-63QLZMUO.cjs +0 -14
- package/dist/skills-BAMMXP3Q.js +0 -14
- package/dist/skills-new-NYKNHJHV.cjs +0 -15
- package/dist/skills-new-NZFGFKML.js +0 -15
- package/dist/slashCommands-EJ23C3Z4.cjs +0 -69
- package/dist/slashCommands-JQIL4EWX.js +0 -69
- package/dist/status-BKC7GBNQ.js +0 -11
- package/dist/status-FU3CPJWQ.cjs +0 -11
- package/dist/sync-3IEIHXIP.cjs +0 -18
- package/dist/sync-YVPFT7SL.js +0 -18
- package/dist/team-GVK5L73L.cjs +0 -9
- package/dist/team-RWIKCLTG.js +0 -9
- package/dist/theme-A2CEHI7W.js +0 -18
- package/dist/theme-LNOQOVR4.cjs +0 -18
- package/dist/undo-F2IZJQUV.js +0 -10
- package/dist/undo-QEV42XLU.cjs +0 -10
|
@@ -4,7 +4,13 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __getProtoOf = Object.getPrototypeOf;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var
|
|
7
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
8
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
9
|
+
}) : x)(function(x) {
|
|
10
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
11
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
12
|
+
});
|
|
13
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
8
14
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
9
15
|
};
|
|
10
16
|
var __copyProps = (to, from, except, desc) => {
|
|
@@ -25,6 +31,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
25
31
|
));
|
|
26
32
|
|
|
27
33
|
export {
|
|
34
|
+
__require,
|
|
28
35
|
__commonJS,
|
|
29
36
|
__toESM
|
|
30
37
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
t
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-APIXPPMT.js";
|
|
4
4
|
|
|
5
5
|
// src/commands/import.ts
|
|
6
6
|
var metadata = {
|
|
@@ -9,7 +9,7 @@ var metadata = {
|
|
|
9
9
|
implemented: true
|
|
10
10
|
};
|
|
11
11
|
async function execute(args) {
|
|
12
|
-
const { runImport } = await import("./import-
|
|
12
|
+
const { runImport } = await import("./import-W7SVLSTC.js");
|
|
13
13
|
const source = args[0];
|
|
14
14
|
const flags = args.slice(1);
|
|
15
15
|
const all = flags.includes("--all");
|
|
@@ -0,0 +1,348 @@
|
|
|
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
|
+
|
|
3
|
+
var _chunkZYQMLKOKcjs = require('./chunk-ZYQMLKOK.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkSEKD5FH3cjs = require('./chunk-SEKD5FH3.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunk7BTSG4MEcjs = require('./chunk-7BTSG4ME.cjs');
|
|
11
|
+
|
|
12
|
+
// src/skills/communityInstaller.ts
|
|
13
|
+
var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto);
|
|
14
|
+
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
15
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
16
|
+
|
|
17
|
+
// src/skills/LearnClient.ts
|
|
18
|
+
|
|
19
|
+
var DEFAULT_LIMIT = 5;
|
|
20
|
+
var LearnClient = class {
|
|
21
|
+
search(registry, query, limit = DEFAULT_LIMIT) {
|
|
22
|
+
if (!query.trim()) return [];
|
|
23
|
+
const lowerQuery = query.toLowerCase();
|
|
24
|
+
const matched = registry.skills.filter((skill) => {
|
|
25
|
+
const searchText = [
|
|
26
|
+
skill.name,
|
|
27
|
+
skill.description,
|
|
28
|
+
skill.category,
|
|
29
|
+
...skill.tags || [],
|
|
30
|
+
...skill.languages || [],
|
|
31
|
+
...skill.frameworks || []
|
|
32
|
+
].join(" ").toLowerCase();
|
|
33
|
+
return searchText.includes(lowerQuery);
|
|
34
|
+
});
|
|
35
|
+
matched.sort((a, b) => (_nullishCoalesce(b.downloadCount, () => ( 0))) - (_nullishCoalesce(a.downloadCount, () => ( 0))));
|
|
36
|
+
return matched.slice(0, limit);
|
|
37
|
+
}
|
|
38
|
+
trending(registry, limit = 10) {
|
|
39
|
+
const sorted = [...registry.skills].sort((a, b) => {
|
|
40
|
+
const featuredDiff = Number(Boolean(b.isFeatured)) - Number(Boolean(a.isFeatured));
|
|
41
|
+
if (featuredDiff !== 0) return featuredDiff;
|
|
42
|
+
return (_nullishCoalesce(b.downloadCount, () => ( 0))) - (_nullishCoalesce(a.downloadCount, () => ( 0)));
|
|
43
|
+
});
|
|
44
|
+
return sorted.slice(0, limit);
|
|
45
|
+
}
|
|
46
|
+
findBySlug(registry, slug) {
|
|
47
|
+
let searchName = slug;
|
|
48
|
+
let searchAuthor;
|
|
49
|
+
if (slug.startsWith("@")) {
|
|
50
|
+
const parts = slug.slice(1).split("/");
|
|
51
|
+
if (parts.length === 2) {
|
|
52
|
+
searchAuthor = parts[0].toLowerCase();
|
|
53
|
+
searchName = parts[1].toLowerCase();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const lower = searchName.toLowerCase();
|
|
57
|
+
return registry.skills.find((s) => {
|
|
58
|
+
const nameMatch = s.id.toLowerCase() === lower || s.name.toLowerCase() === lower;
|
|
59
|
+
if (!nameMatch) return false;
|
|
60
|
+
if (searchAuthor && _optionalChain([s, 'access', _ => _.author, 'optionalAccess', _2 => _2.toLowerCase, 'call', _3 => _3()]) !== searchAuthor) return false;
|
|
61
|
+
return true;
|
|
62
|
+
}) || null;
|
|
63
|
+
}
|
|
64
|
+
filterLearnedSkills(skills) {
|
|
65
|
+
return skills.filter(
|
|
66
|
+
(s) => s.metadata && s.metadata["agentskill-slug"]
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
checkUpdates(installedSkills, registry, getShaForSkill) {
|
|
70
|
+
const updates = [];
|
|
71
|
+
for (const skill of installedSkills) {
|
|
72
|
+
const slug = _optionalChain([skill, 'access', _4 => _4.metadata, 'optionalAccess', _5 => _5["agentskill-slug"]]);
|
|
73
|
+
const localSha = _optionalChain([skill, 'access', _6 => _6.metadata, 'optionalAccess', _7 => _7["agentskill-sha"]]);
|
|
74
|
+
if (!slug || !localSha) continue;
|
|
75
|
+
const registrySkill = registry.skills.find(
|
|
76
|
+
(s) => s.id === slug || s.name === slug
|
|
77
|
+
);
|
|
78
|
+
if (!registrySkill) continue;
|
|
79
|
+
const remoteSha = getShaForSkill(registrySkill.id);
|
|
80
|
+
if (remoteSha && remoteSha !== localSha) {
|
|
81
|
+
updates.push({
|
|
82
|
+
name: skill.name,
|
|
83
|
+
slug,
|
|
84
|
+
localSha,
|
|
85
|
+
remoteSha
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return updates;
|
|
90
|
+
}
|
|
91
|
+
static computeContentSha(content) {
|
|
92
|
+
return _crypto.createHash.call(void 0, "sha256").update(content).digest("hex").slice(0, 7);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// src/skills/SkillSecurityScanner.ts
|
|
97
|
+
var THREAT_RULES = [
|
|
98
|
+
// Command injection
|
|
99
|
+
{ category: "command-injection", pattern: /rm\s+-rf\b/i, severity: 15 },
|
|
100
|
+
{ category: "command-injection", pattern: /curl\s+.*\|\s*bash/i, severity: 20 },
|
|
101
|
+
{ category: "command-injection", pattern: /wget\s+.*\|\s*bash/i, severity: 20 },
|
|
102
|
+
{ category: "command-injection", pattern: /\beval\s*\(/i, severity: 15 },
|
|
103
|
+
{ category: "command-injection", pattern: /\bexec\s*\(/i, severity: 12 },
|
|
104
|
+
{ category: "command-injection", pattern: /\bsudo\b/i, severity: 15 },
|
|
105
|
+
{ category: "command-injection", pattern: /chmod\s+777\b/i, severity: 12 },
|
|
106
|
+
// Data exfiltration
|
|
107
|
+
{ category: "data-exfiltration", pattern: /process\.env\b/i, severity: 10 },
|
|
108
|
+
{ category: "data-exfiltration", pattern: /\bcredentials?\b/i, severity: 8 },
|
|
109
|
+
{ category: "data-exfiltration", pattern: /\bapi[_-]?key\b/i, severity: 8 },
|
|
110
|
+
{ category: "data-exfiltration", pattern: /\bsecret[_-]?key\b/i, severity: 10 },
|
|
111
|
+
{ category: "data-exfiltration", pattern: /\.ssh\/id_rsa\b/i, severity: 15 },
|
|
112
|
+
// Encoded payloads
|
|
113
|
+
{ category: "encoded-payload", pattern: /\batob\s*\(/i, severity: 12 },
|
|
114
|
+
{ category: "encoded-payload", pattern: /Buffer\.from\s*\(/i, severity: 8 },
|
|
115
|
+
// Network calls
|
|
116
|
+
{ category: "network-calls", pattern: /\bfetch\s*\(\s*["'`]https?:\/\//i, severity: 10 },
|
|
117
|
+
{ category: "network-calls", pattern: /\bwget\s+https?:\/\//i, severity: 12 },
|
|
118
|
+
{ category: "network-calls", pattern: /\bcurl\s+https?:\/\//i, severity: 8 },
|
|
119
|
+
{ category: "network-calls", pattern: /http\.request\s*\(/i, severity: 10 },
|
|
120
|
+
{ category: "network-calls", pattern: /XMLHttpRequest/i, severity: 10 }
|
|
121
|
+
];
|
|
122
|
+
var SAFE_THRESHOLD = 50;
|
|
123
|
+
var BLOCKED_THRESHOLD = 30;
|
|
124
|
+
var SkillSecurityScanner = class {
|
|
125
|
+
/**
|
|
126
|
+
* Scan skill content for security threats.
|
|
127
|
+
* Returns a score (0-100) and list of matched threats.
|
|
128
|
+
*/
|
|
129
|
+
scan(content) {
|
|
130
|
+
if (!content.trim()) {
|
|
131
|
+
return { score: 100, threats: [], safe: true, blocked: false };
|
|
132
|
+
}
|
|
133
|
+
const lines = content.split("\n");
|
|
134
|
+
const threats = [];
|
|
135
|
+
let deductions = 0;
|
|
136
|
+
for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
|
|
137
|
+
const lineContent = lines[lineIndex];
|
|
138
|
+
for (const rule of THREAT_RULES) {
|
|
139
|
+
if (rule.pattern.test(lineContent)) {
|
|
140
|
+
threats.push({
|
|
141
|
+
category: rule.category,
|
|
142
|
+
pattern: rule.pattern.source,
|
|
143
|
+
line: lineIndex + 1,
|
|
144
|
+
context: lineContent.trim()
|
|
145
|
+
});
|
|
146
|
+
deductions += rule.severity;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const score = Math.max(0, 100 - deductions);
|
|
151
|
+
return {
|
|
152
|
+
score,
|
|
153
|
+
threats,
|
|
154
|
+
safe: score >= SAFE_THRESHOLD,
|
|
155
|
+
blocked: score < BLOCKED_THRESHOLD
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// src/skills/communityInstaller.ts
|
|
161
|
+
async function fetchRegistryWithFallback(cache, fetcher) {
|
|
162
|
+
const cached = await cache.getRegistry();
|
|
163
|
+
if (cached) return cached;
|
|
164
|
+
try {
|
|
165
|
+
const registry = await fetcher.fetchRegistry();
|
|
166
|
+
await cache.setRegistry(registry);
|
|
167
|
+
return registry;
|
|
168
|
+
} catch (e2) {
|
|
169
|
+
return cache.getRegistryIgnoreTTL();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
async function installSkillWithSecurity(ctx, skill, cache, fetcher, scope = "user") {
|
|
173
|
+
const targetDir = scope === "project" ? _path2.default.join(ctx.workspaceRoot, _chunkSEKD5FH3cjs.PROJECT_DIR_NAME, "skills") : _chunkSEKD5FH3cjs.AUTOHAND_PATHS.skills;
|
|
174
|
+
const installed = await ctx.skillsRegistry.isSkillInstalled(skill.id, targetDir);
|
|
175
|
+
if (installed) {
|
|
176
|
+
return _chunk7BTSG4MEcjs.t.call(void 0, "commands.learn.alreadyInstalled", { name: skill.name });
|
|
177
|
+
}
|
|
178
|
+
let files = await cache.getSkillDirectory(skill.id);
|
|
179
|
+
if (!files) {
|
|
180
|
+
try {
|
|
181
|
+
files = await fetcher.fetchSkillDirectory(skill);
|
|
182
|
+
await cache.setSkillDirectory(skill.id, files);
|
|
183
|
+
} catch (err) {
|
|
184
|
+
const msg = err instanceof Error ? err.message : "Unknown error";
|
|
185
|
+
return _chalk2.default.red(`Failed to fetch skill files: ${msg}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const scanner = new SkillSecurityScanner();
|
|
189
|
+
const allContent = Array.from(files.values()).join("\n");
|
|
190
|
+
const scanResult = scanner.scan(allContent);
|
|
191
|
+
if (scanResult.blocked) {
|
|
192
|
+
const lines = [];
|
|
193
|
+
lines.push(_chalk2.default.red(_chunk7BTSG4MEcjs.t.call(void 0, "commands.learn.securityBlocked", { score: String(scanResult.score) })));
|
|
194
|
+
lines.push("");
|
|
195
|
+
for (const threat of scanResult.threats) {
|
|
196
|
+
lines.push(_chalk2.default.red(` [${threat.category}] Line ${threat.line}: ${threat.context}`));
|
|
197
|
+
}
|
|
198
|
+
if (ctx.isNonInteractive) {
|
|
199
|
+
return lines.join("\n");
|
|
200
|
+
}
|
|
201
|
+
lines.push("");
|
|
202
|
+
const override = await _chunkZYQMLKOKcjs.showConfirm.call(void 0, {
|
|
203
|
+
title: _chunk7BTSG4MEcjs.t.call(void 0, "commands.learn.securityOverride"),
|
|
204
|
+
defaultValue: false
|
|
205
|
+
});
|
|
206
|
+
if (!override) {
|
|
207
|
+
return lines.join("\n");
|
|
208
|
+
}
|
|
209
|
+
} else if (!scanResult.safe) {
|
|
210
|
+
console.log(_chalk2.default.yellow(_chunk7BTSG4MEcjs.t.call(void 0, "commands.learn.securityWarning", { score: String(scanResult.score) })));
|
|
211
|
+
for (const threat of scanResult.threats) {
|
|
212
|
+
console.log(_chalk2.default.yellow(` [${threat.category}] Line ${threat.line}: ${threat.context}`));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
if (ctx.hookManager) {
|
|
216
|
+
const hookResults = await ctx.hookManager.executeHooks("pre-learn", {
|
|
217
|
+
tool: "learn",
|
|
218
|
+
args: { slug: skill.id, name: skill.name, scope }
|
|
219
|
+
});
|
|
220
|
+
const blocked = hookResults.some((r) => r.blockingError);
|
|
221
|
+
if (blocked) {
|
|
222
|
+
return _chalk2.default.yellow(_chunk7BTSG4MEcjs.t.call(void 0, "commands.learn.hookBlocked"));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const skillMd = files.get("SKILL.md");
|
|
226
|
+
if (skillMd) {
|
|
227
|
+
const enriched = injectLearnMetadata(skillMd, skill);
|
|
228
|
+
files.set("SKILL.md", enriched);
|
|
229
|
+
}
|
|
230
|
+
const importResult = await ctx.skillsRegistry.importCommunitySkillDirectory(
|
|
231
|
+
skill.id,
|
|
232
|
+
files,
|
|
233
|
+
targetDir
|
|
234
|
+
);
|
|
235
|
+
if (!importResult.success) {
|
|
236
|
+
return _chalk2.default.red(_nullishCoalesce(importResult.error, () => ( "Failed to install skill")));
|
|
237
|
+
}
|
|
238
|
+
if (ctx.hookManager) {
|
|
239
|
+
await ctx.hookManager.executeHooks("post-learn", {
|
|
240
|
+
tool: "learn",
|
|
241
|
+
args: { slug: skill.id, name: skill.name, scope },
|
|
242
|
+
path: importResult.path,
|
|
243
|
+
success: true
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
ctx.skillsRegistry.trackSkillEvent({
|
|
247
|
+
skillName: skill.name,
|
|
248
|
+
source: "community",
|
|
249
|
+
activationType: "explicit",
|
|
250
|
+
action: "install"
|
|
251
|
+
});
|
|
252
|
+
return _chalk2.default.green(_chunk7BTSG4MEcjs.t.call(void 0, "commands.learn.installed", { name: skill.name }));
|
|
253
|
+
}
|
|
254
|
+
function injectLearnMetadata(skillMd, skill) {
|
|
255
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
256
|
+
const sha = LearnClient.computeContentSha(skillMd);
|
|
257
|
+
const metadataEntries = [
|
|
258
|
+
`agentskill-slug: ${skill.id}`,
|
|
259
|
+
`agentskill-owner: ${_nullishCoalesce(skill.author, () => ( "community"))}`,
|
|
260
|
+
`agentskill-sha: ${sha}`,
|
|
261
|
+
`agentskill-installed: ${now}`,
|
|
262
|
+
`agentskill-source: github-registry`
|
|
263
|
+
];
|
|
264
|
+
if (skillMd.startsWith("---")) {
|
|
265
|
+
const endIndex = skillMd.indexOf("---", 3);
|
|
266
|
+
if (endIndex !== -1) {
|
|
267
|
+
const frontmatter = skillMd.slice(0, endIndex);
|
|
268
|
+
const rest = skillMd.slice(endIndex);
|
|
269
|
+
if (frontmatter.includes("metadata:")) {
|
|
270
|
+
const injected = metadataEntries.map((e) => ` ${e}`).join("\n");
|
|
271
|
+
return frontmatter + injected + "\n" + rest;
|
|
272
|
+
}
|
|
273
|
+
const metadataBlock2 = "metadata:\n" + metadataEntries.map((e) => ` ${e}`).join("\n") + "\n";
|
|
274
|
+
return frontmatter + metadataBlock2 + rest;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
const metadataBlock = "---\nmetadata:\n" + metadataEntries.map((e) => ` ${e}`).join("\n") + "\n---\n";
|
|
278
|
+
return metadataBlock + skillMd;
|
|
279
|
+
}
|
|
280
|
+
function computeProjectHash(analysis) {
|
|
281
|
+
const serialized = JSON.stringify({
|
|
282
|
+
languages: analysis.languages.slice().sort(),
|
|
283
|
+
frameworks: analysis.frameworks.slice().sort(),
|
|
284
|
+
patterns: analysis.patterns.slice().sort(),
|
|
285
|
+
packageManager: analysis.packageManager
|
|
286
|
+
});
|
|
287
|
+
return _crypto2.default.createHash("sha256").update(serialized).digest("hex").slice(0, 7);
|
|
288
|
+
}
|
|
289
|
+
function injectGeneratedMetadata(content, skillName, projectHash) {
|
|
290
|
+
const metadataLines = [
|
|
291
|
+
` agentskill-slug: ${skillName}`,
|
|
292
|
+
` agentskill-source: llm-generated`,
|
|
293
|
+
` agentskill-generated-at: ${(/* @__PURE__ */ new Date()).toISOString()}`,
|
|
294
|
+
` agentskill-project-hash: ${projectHash}`
|
|
295
|
+
].join("\n");
|
|
296
|
+
if (content.startsWith("---")) {
|
|
297
|
+
if (content.includes("metadata:")) {
|
|
298
|
+
return content.replace(/metadata:/, `metadata:
|
|
299
|
+
${metadataLines}`);
|
|
300
|
+
}
|
|
301
|
+
const endIndex = content.indexOf("---", 3);
|
|
302
|
+
if (endIndex !== -1) {
|
|
303
|
+
return content.slice(0, endIndex) + `metadata:
|
|
304
|
+
${metadataLines}
|
|
305
|
+
` + content.slice(endIndex);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return `---
|
|
309
|
+
name: ${skillName}
|
|
310
|
+
metadata:
|
|
311
|
+
${metadataLines}
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
${content}`;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
exports.LearnClient = LearnClient; exports.fetchRegistryWithFallback = fetchRegistryWithFallback; exports.installSkillWithSecurity = installSkillWithSecurity; exports.injectLearnMetadata = injectLearnMetadata; exports.computeProjectHash = computeProjectHash; exports.injectGeneratedMetadata = injectGeneratedMetadata;
|
|
325
|
+
/**
|
|
326
|
+
* @license
|
|
327
|
+
* Copyright 2025 Autohand AI LLC
|
|
328
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
329
|
+
*
|
|
330
|
+
* LearnClient - Search, version-check, and filtering logic for /learn command.
|
|
331
|
+
* Wraps GitHubRegistryFetcher with learn-specific behavior.
|
|
332
|
+
*/
|
|
333
|
+
/**
|
|
334
|
+
* @license
|
|
335
|
+
* Copyright 2025 Autohand AI LLC
|
|
336
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
337
|
+
*
|
|
338
|
+
* SkillSecurityScanner - Client-side threat pattern scanning for community skills.
|
|
339
|
+
* Provides the second layer of security (after server-side scoring in the registry).
|
|
340
|
+
*/
|
|
341
|
+
/**
|
|
342
|
+
* @license
|
|
343
|
+
* Copyright 2025 Autohand AI LLC
|
|
344
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
345
|
+
*
|
|
346
|
+
* Shared community skill install utilities.
|
|
347
|
+
* Used by both /skills (registry install) and /learn (LLM-generated install).
|
|
348
|
+
*/
|