autohand-cli 0.8.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +173 -74
- package/dist/AgentRegistry-EGBDIUAK.cjs +10 -0
- package/dist/{AgentRegistry-7LDL5HJH.js → AgentRegistry-XPWSVO3Q.js} +3 -3
- package/dist/{AutomodeManager-MWLKGPZK.js → AutomodeManager-APLLPEYJ.js} +32 -18
- package/dist/{AutomodeManager-NYIZNODK.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
- package/dist/CommunitySkillsCache-2OIUV227.cjs +8 -0
- package/dist/CommunitySkillsCache-ZEQWP6YM.js +8 -0
- package/dist/GitHubRegistryFetcher-CYJLF2XL.cjs +7 -0
- package/dist/{GitHubRegistryFetcher-6JQ5JEDZ.js → GitHubRegistryFetcher-J2BWPXJF.js} +2 -2
- package/dist/HookManager-CWLTFKWO.js +7 -0
- package/dist/HookManager-TMAJQU4S.cjs +7 -0
- package/dist/{ImportWizard-35YBJ4AM.cjs → ImportWizard-MQXEED2U.cjs} +41 -17
- package/dist/{ImportWizard-XH7CINCH.js → ImportWizard-QBKQEXDW.js} +35 -11
- package/dist/LearnAdvisor-46FG2XIP.js +9 -0
- package/dist/LearnAdvisor-XBRDNAGH.cjs +9 -0
- package/dist/McpClientManager-BNSKLHIN.cjs +8 -0
- package/dist/{McpClientManager-7RM6YT35.js → McpClientManager-SL35BR24.js} +2 -2
- package/dist/MemoryManager-34L4YOKA.cjs +8 -0
- package/dist/MemoryManager-WJMLPWGU.js +8 -0
- package/dist/NVIDIAProvider-2HR737UE.js +14 -0
- package/dist/NVIDIAProvider-MVTL62PR.cjs +14 -0
- package/dist/PermissionManager-5OOJ7FAT.cjs +11 -0
- package/dist/{PermissionManager-ATUV34LQ.js → PermissionManager-KMYILJ4Z.js} +4 -4
- package/dist/{ProjectProfiler-ZDWR2ODG.cjs → ProjectProfiler-CDAE7ECW.cjs} +2 -1
- package/dist/{ProjectProfiler-UMJJSOCE.js → ProjectProfiler-NZTJDRHD.js} +2 -1
- package/dist/ProviderFactory-C3YPXTDD.cjs +11 -0
- package/dist/ProviderFactory-HFPRVQ25.js +11 -0
- package/dist/SessionManager-PNBTJJTQ.js +10 -0
- package/dist/SessionManager-WAPTFMDO.cjs +10 -0
- package/dist/SkillsRegistry-4RRD5GMX.js +9 -0
- package/dist/SkillsRegistry-7AJP74GJ.cjs +9 -0
- package/dist/SubAgent-FDIH3DXB.js +11 -0
- package/dist/SubAgent-HVL2ICVZ.cjs +11 -0
- package/dist/{SyncApiClient-LVIO4C2S.js → SyncApiClient-LRPFNCKJ.js} +2 -2
- package/dist/SyncApiClient-VMBOLQ6H.cjs +11 -0
- package/dist/about-BW3PDZUU.js +14 -0
- package/dist/about-FCAX37YC.cjs +14 -0
- package/dist/acp-EOETGAHC.cjs +1517 -0
- package/dist/acp-VHEL7BOW.js +1517 -0
- package/dist/actionExecutor-33I47NZS.js +24 -0
- package/dist/actionExecutor-4YBMR3YH.cjs +24 -0
- package/dist/add-dir-7SS6KSH5.cjs +11 -0
- package/dist/add-dir-VFX7QT4E.js +11 -0
- package/dist/agent-DMRUFU4M.cjs +116 -0
- package/dist/agent-WCJEYQJT.js +116 -0
- package/dist/agents/builtin/code-cleaner.md +1 -1
- package/dist/agents/builtin/docs-writer.md +1 -1
- package/dist/agents/builtin/researcher.md +2 -2
- package/dist/agents/builtin/reviewer.md +1 -1
- package/dist/agents/builtin/tester.md +1 -1
- package/dist/agents/builtin/todo-resolver.md +1 -1
- package/dist/agents-CHROO3VU.cjs +17 -0
- package/dist/agents-UVDUL65K.js +17 -0
- package/dist/agents-new-AUBWSOXP.js +17 -0
- package/dist/agents-new-Y562WC47.cjs +17 -0
- package/dist/{autoSkill-6TGBTEQD.js → autoSkill-EFMK6WU6.js} +3 -3
- package/dist/autoSkill-YOLLFTP2.cjs +20 -0
- package/dist/automode-BMYSRM34.js +10 -0
- package/dist/automode-DBLKTTKD.cjs +10 -0
- package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
- package/dist/browserToolBridge-F5N66PE7.js +58 -0
- package/dist/{cc-7LEIJ3KF.js → cc-AYEP2CA3.js} +1 -1
- package/dist/{cc-Q5MM4AWC.cjs → cc-S2QLQFBR.cjs} +1 -1
- package/dist/chrome-ATC4OO5I.cjs +20 -0
- package/dist/chrome-NHJ44WUN.js +50 -0
- package/dist/chrome-O62WXV7F.js +20 -0
- package/dist/chrome-XHJLCO4M.cjs +50 -0
- package/dist/chromeSkill-53TH55PM.js +105 -0
- package/dist/chromeSkill-THW7N4IY.cjs +105 -0
- package/dist/{chunk-HOAHWIQ5.cjs → chunk-2CGE7ZV3.cjs} +26 -26
- package/dist/chunk-2H5O745H.js +63 -0
- package/dist/chunk-2HOLOHVK.js +2219 -0
- package/dist/{chunk-3PDTTAKJ.js → chunk-2QL6MNXG.js} +15 -8
- package/dist/{chunk-PGRH5Q77.cjs → chunk-2VHB43IX.cjs} +35 -6
- package/dist/{chunk-VG34MG2U.js → chunk-37M5UM6I.js} +9 -6
- package/dist/{chunk-6HYLHBQG.cjs → chunk-3DDL2E55.cjs} +20 -16
- package/dist/chunk-3EDDDZS2.cjs +5 -0
- package/dist/{chunk-6OYHF6MF.js → chunk-3GUEUCZK.js} +28 -4
- package/dist/{chunk-N254NRHT.cjs → chunk-3HT76LNN.cjs} +9 -2
- package/dist/{chunk-DVUHHH3B.cjs → chunk-3KLSNNRW.cjs} +4 -4
- package/dist/chunk-3LJJG5YY.cjs +387 -0
- package/dist/chunk-3OF56EMA.cjs +197 -0
- package/dist/chunk-3PXKRVCW.js +108 -0
- package/dist/{chunk-IKGWDOGU.cjs → chunk-3S563FNF.cjs} +160 -79
- package/dist/chunk-3UT7R3XV.js +663 -0
- package/dist/chunk-4256YRCO.cjs +80 -0
- package/dist/chunk-46C73ZKK.cjs +663 -0
- package/dist/chunk-46MTALKD.js +44 -0
- package/dist/{chunk-AEJH23FO.cjs → chunk-47PHDKNW.cjs} +6 -6
- package/dist/chunk-4LMUDS2K.js +124 -0
- package/dist/{chunk-HLHTG5ZU.cjs → chunk-5CMYEM3R.cjs} +14 -12
- package/dist/{chunk-MBBY4ZIK.js → chunk-5F6ZKSHO.js} +4 -1
- package/dist/chunk-5JFTY3VU.js +74 -0
- package/dist/chunk-5JTTM5SC.js +59 -0
- package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
- package/dist/{chunk-GJH7XMSK.js → chunk-5VHP6HDQ.js} +8 -6
- package/dist/{chunk-6ZCULLCA.js → chunk-62RTC3XX.js} +1 -1
- package/dist/{chunk-MSED7RH2.cjs → chunk-6GUODJKM.cjs} +112 -41
- package/dist/{chunk-47CKWKEX.cjs → chunk-6HH236FV.cjs} +9 -4
- package/dist/{chunk-WHE2SWHU.js → chunk-6NVAK6CK.js} +2 -2
- package/dist/chunk-6R25D2H5.js +121 -0
- package/dist/{chunk-3PCTTUNW.cjs → chunk-6XVVIY54.cjs} +55 -25
- package/dist/{chunk-3L53OA4E.cjs → chunk-75EDROHL.cjs} +10 -10
- package/dist/{chunk-G4CAKI3V.js → chunk-7HPWMALN.js} +7 -2
- package/dist/chunk-7JLT2VNW.cjs +18963 -0
- package/dist/chunk-7LWQCE4Y.cjs +987 -0
- package/dist/{chunk-OLSBBZW6.cjs → chunk-7MU7LWF3.cjs} +5 -5
- package/dist/{chunk-HLQV64Y5.js → chunk-7RFJB75Y.js} +140 -59
- package/dist/{chunk-X2MSVKDV.js → chunk-A7HHCIDQ.js} +2 -2
- package/dist/{chunk-SKYG33B2.cjs → chunk-AC7DZ6SK.cjs} +3 -3
- package/dist/{chunk-XX2ZO7DS.js → chunk-ACDQGA4Z.js} +90 -16
- package/dist/{chunk-CZXGCVTR.cjs → chunk-AOKCI722.cjs} +2 -2
- package/dist/chunk-ARBEHFCG.js +715 -0
- package/dist/{chunk-OOKY3HPZ.js → chunk-AT7OWLY5.js} +50 -9
- package/dist/chunk-AU6JAGZJ.cjs +231 -0
- package/dist/chunk-AUFNACED.js +18963 -0
- package/dist/{chunk-CDBPBM2K.cjs → chunk-AUYSIEVV.cjs} +3 -3
- package/dist/chunk-B4HSNOIH.cjs +354 -0
- package/dist/{chunk-EGMZDTSL.js → chunk-B5CGDNMR.js} +10 -2
- package/dist/{chunk-34M3HWLR.js → chunk-BFQDQRDE.js} +2 -2
- package/dist/{chunk-2AA5MFES.js → chunk-BL2UC7HC.js} +8 -5
- package/dist/{chunk-LNMYK2F5.cjs → chunk-BQ22N3TX.cjs} +56 -41
- package/dist/chunk-BQU3HAE7.js +21 -0
- package/dist/chunk-BWF4VDYE.js +3897 -0
- package/dist/chunk-BYE7RQFZ.cjs +121 -0
- package/dist/{chunk-APIXPPMT.js → chunk-CBFH2J3O.js} +855 -33
- package/dist/chunk-CCVMREXI.js +420 -0
- package/dist/chunk-CFAWTLSC.js +13 -0
- package/dist/{chunk-G27PQQFD.js → chunk-CFFE4VA3.js} +1 -1
- package/dist/{chunk-ZYQMLKOK.cjs → chunk-CH2J4PVE.cjs} +212 -70
- package/dist/{chunk-7BTSG4ME.cjs → chunk-CHI52KFR.cjs} +855 -33
- package/dist/{chunk-DJDE4DTT.cjs → chunk-CWINVFRI.cjs} +25 -19
- package/dist/{chunk-HXGBSJL5.cjs → chunk-D2OSPLYC.cjs} +2 -2
- package/dist/{chunk-GBHDROGL.js → chunk-D6GZBSOX.js} +16 -4
- package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
- package/dist/chunk-DEQVRSV5.cjs +866 -0
- package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
- package/dist/{chunk-WM5PAOTQ.cjs → chunk-DIZTWFVR.cjs} +1649 -484
- package/dist/{chunk-YZXUDM5X.js → chunk-DLP436GI.js} +204 -62
- package/dist/{chunk-OHUZKDGX.js → chunk-DMRXF5DU.js} +3 -3
- package/dist/{chunk-U46VYPLR.cjs → chunk-DPSIGY6L.cjs} +9 -9
- package/dist/{chunk-DN573ME7.cjs → chunk-DRWDEHE5.cjs} +4 -4
- package/dist/{chunk-SEKD5FH3.cjs → chunk-E26KKI46.cjs} +5 -2
- package/dist/{chunk-J4Q7XR3G.js → chunk-E46DJH5S.js} +3 -3
- package/dist/{chunk-Q7XSCYND.cjs → chunk-E6GFD7VR.cjs} +49 -26
- package/dist/chunk-ES2HJQ4N.js +37 -0
- package/dist/chunk-EZJHLOWP.js +80 -0
- package/dist/chunk-FFBDRUO5.cjs +59 -0
- package/dist/{chunk-AYSFIUFW.js → chunk-FGT6KK6T.js} +38 -15
- package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
- package/dist/{chunk-DSPQEHDT.js → chunk-FQAVGSPW.js} +2 -2
- package/dist/chunk-FQVG6ZHF.js +197 -0
- package/dist/chunk-GBMDFWJX.cjs +152 -0
- package/dist/{chunk-DRE2RXBZ.js → chunk-GGLKUENP.js} +1605 -440
- package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
- package/dist/{chunk-MYISNQH4.js → chunk-GWO66KBI.js} +1 -1
- package/dist/chunk-GWY26SUD.cjs +63 -0
- package/dist/{chunk-YGN4CQIP.js → chunk-GZ6DV2UG.js} +1 -1
- package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
- package/dist/chunk-HDK2EHVH.cjs +570 -0
- package/dist/chunk-HJIXWGQZ.js +139 -0
- package/dist/{chunk-6RF7UKUS.js → chunk-HKYZSUQ5.js} +48 -47
- package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
- package/dist/{chunk-HTLINWX6.cjs → chunk-HQWQZML5.cjs} +16 -13
- package/dist/{chunk-DVZOENQ7.cjs → chunk-HS4USDND.cjs} +9 -4
- package/dist/chunk-HSCUPEA4.cjs +3897 -0
- package/dist/{chunk-JCLYQ2JC.js → chunk-HXJEGMGB.js} +12 -6
- package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
- package/dist/{chunk-SCXX4LW5.js → chunk-I24CWKKK.js} +15 -8
- package/dist/chunk-IAGCRVJ3.js +355 -0
- package/dist/chunk-IEXKKKOF.cjs +92 -0
- package/dist/{chunk-5IXII4HX.cjs → chunk-IGMPWJ2I.cjs} +19 -12
- package/dist/chunk-IKUMVBCW.cjs +33 -0
- package/dist/{chunk-XTB6VJVQ.cjs → chunk-J2K57QM7.cjs} +6 -6
- package/dist/{chunk-O4IF4NJT.cjs → chunk-J5ADZN6V.cjs} +57 -56
- package/dist/chunk-J5HE6CUM.cjs +124 -0
- package/dist/{chunk-JS7IPR7P.js → chunk-JAQO6XDB.js} +31 -2
- package/dist/chunk-JIMSII7R.js +987 -0
- package/dist/chunk-JJ4KA7HK.cjs +2219 -0
- package/dist/chunk-JMN3GZU6.js +570 -0
- package/dist/{chunk-X5VSP65C.cjs → chunk-JP3YHTQ2.cjs} +4 -4
- package/dist/{chunk-SKV2F3NM.js → chunk-JYKPWK5O.js} +1 -1
- package/dist/{chunk-NNPAM4HC.cjs → chunk-KNTUI4TZ.cjs} +12 -6
- package/dist/{chunk-HIVRCQS2.js → chunk-L4F7SUYL.js} +56 -25
- package/dist/{chunk-C5IJIM2V.cjs → chunk-LDJQ5QHG.cjs} +68 -37
- package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
- package/dist/chunk-LJD7KR3L.cjs +44 -0
- package/dist/chunk-LN7D3EJZ.js +387 -0
- package/dist/{chunk-643VRA5S.cjs → chunk-LQBONA55.cjs} +32 -8
- package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
- package/dist/chunk-M4KNC5BQ.js +78 -0
- package/dist/chunk-MO4KP6XS.cjs +229 -0
- package/dist/{chunk-BVKXEQVG.cjs → chunk-MOJ7ADW4.cjs} +22 -10
- package/dist/chunk-MPULXVC4.cjs +715 -0
- package/dist/{chunk-X5YJ34FZ.cjs → chunk-MQESBFBZ.cjs} +46 -23
- package/dist/chunk-MUNUUFU7.cjs +21 -0
- package/dist/{chunk-X3WS5LDG.js → chunk-MX75JYIY.js} +7 -5
- package/dist/chunk-MXVIDIC6.cjs +139 -0
- package/dist/{chunk-3K2ESU53.cjs → chunk-N6O3XUZ2.cjs} +2 -2
- package/dist/{chunk-IVM5F2AE.js → chunk-NBGOIFKP.js} +265 -18
- package/dist/{chunk-SLQAYV3W.js → chunk-NMQ47RCG.js} +8 -2
- package/dist/{chunk-JYTDYJVW.js → chunk-O64I2GYI.js} +1 -1
- package/dist/{chunk-IFFXSTOM.cjs → chunk-O6TQP7U7.cjs} +3 -3
- package/dist/{chunk-AYS2ASM7.js → chunk-OHWMWKJQ.js} +1 -1
- package/dist/{chunk-N23UAW4I.js → chunk-OM24WXEE.js} +7 -2
- package/dist/{chunk-MAKMSQMQ.cjs → chunk-OPNI6O7F.cjs} +8 -6
- package/dist/chunk-OR67YXQK.cjs +13 -0
- package/dist/{chunk-QOXPOR5D.js → chunk-OV3PVUYN.js} +115 -44
- package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
- package/dist/chunk-PCM3N3CL.cjs +37 -0
- package/dist/{chunk-A4IJHHV7.cjs → chunk-PDHT7LQS.cjs} +52 -11
- package/dist/{chunk-LA7H35XM.cjs → chunk-PHJO5YAL.cjs} +9 -9
- package/dist/{chunk-KPELYZ6L.js → chunk-PQLKJCIE.js} +2 -2
- package/dist/chunk-PUD76XQT.cjs +78 -0
- package/dist/chunk-Q2IL4DDI.cjs +355 -0
- package/dist/{chunk-WPVWQSL7.cjs → chunk-Q6AC3PHY.cjs} +16 -13
- package/dist/{chunk-XRZEUWKF.js → chunk-QCHIDZBA.js} +1 -1
- package/dist/{chunk-IQ5RXU6O.js → chunk-QEGOB6QV.js} +1 -1
- package/dist/{chunk-JSBRDJBE.js → chunk-QGM4M3NI.js} +8 -1
- package/dist/chunk-QKP772OZ.js +4291 -0
- package/dist/chunk-QQ7PANOP.js +59 -0
- package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
- package/dist/chunk-RAKO7UN7.js +114 -0
- package/dist/chunk-RBHANOYY.js +33 -0
- package/dist/chunk-RBZ7AFX7.cjs +29 -0
- package/dist/{chunk-TXSDBGKX.cjs → chunk-REMGR23V.cjs} +46 -49
- package/dist/chunk-ROLA6EFO.cjs +85 -0
- package/dist/{chunk-TBEGGJNC.cjs → chunk-SOLBYSLY.cjs} +33 -16
- package/dist/{chunk-FKSDEWDH.js → chunk-SWCQM52V.js} +68 -25
- package/dist/{chunk-H5SWOLG6.js → chunk-TBOLJDUG.js} +39 -24
- package/dist/chunk-TH26BQJG.js +101 -0
- package/dist/{chunk-245KJE5Y.cjs → chunk-TJNBASFD.cjs} +14 -6
- package/dist/chunk-TKKN34TV.js +229 -0
- package/dist/chunk-TQ33WBY5.cjs +74 -0
- package/dist/{chunk-EGFT4PGW.js → chunk-TWQDAUZU.js} +5 -2
- package/dist/{chunk-OGV4WJ5L.cjs → chunk-TXPSTCG7.cjs} +74 -59
- package/dist/{chunk-CAMZTXV6.js → chunk-U4C3HW6P.js} +67 -52
- package/dist/{chunk-5P2NXKP3.js → chunk-UEIXJG45.js} +104 -76
- package/dist/{chunk-22D2CNTP.cjs → chunk-UGFVM77J.cjs} +5 -2
- package/dist/chunk-UOQECODR.js +34 -0
- package/dist/chunk-UR27UDTB.js +354 -0
- package/dist/chunk-UWFG2R2I.cjs +420 -0
- package/dist/{chunk-Y72HH2TF.cjs → chunk-UXLW45ZE.cjs} +102 -28
- package/dist/{chunk-FPHU2ES6.cjs → chunk-VBOFPU5M.cjs} +6 -0
- package/dist/{chunk-JX3DFKBI.js → chunk-VDWJMWDF.js} +54 -24
- package/dist/{chunk-LENHP55G.cjs → chunk-VGEV44V2.cjs} +1076 -158
- package/dist/{chunk-33RSHBDH.js → chunk-VKBIE6I6.js} +38 -7
- package/dist/{chunk-CWMZKFTT.js → chunk-VRMZO6TB.js} +31 -8
- package/dist/chunk-VUGOOGHB.js +400 -0
- package/dist/chunk-WBU4Q4GS.cjs +400 -0
- package/dist/chunk-WGLBC5AY.cjs +59 -0
- package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
- package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
- package/dist/chunk-WRTXCQ3V.cjs +4291 -0
- package/dist/chunk-WTB7AFL6.cjs +101 -0
- package/dist/{chunk-NDMIPTV4.js → chunk-WZV6UVPY.js} +8 -3
- package/dist/chunk-XF2WIKHR.cjs +34 -0
- package/dist/{chunk-L3WAH3EM.cjs → chunk-XGMI6IYB.cjs} +46 -15
- package/dist/{chunk-FW774QXH.js → chunk-XIVFAD2L.js} +1048 -130
- package/dist/chunk-XV2HXRHX.js +85 -0
- package/dist/{chunk-72FKPBT5.js → chunk-Y3M2DABP.js} +16 -12
- package/dist/{chunk-QNGEW5TC.js → chunk-YV63VW4K.js} +1 -1
- package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
- package/dist/{chunk-RD5XAJR2.cjs → chunk-YWTIXHU6.cjs} +266 -19
- package/dist/chunk-YZWE7XSM.js +5 -0
- package/dist/{chunk-I5IW3T2Y.js → chunk-Z3XSSF7B.js} +32 -15
- package/dist/{chunk-6UJMCWRY.js → chunk-Z4LIPMPM.js} +6 -0
- package/dist/chunk-ZASDSY7P.cjs +114 -0
- package/dist/{chunk-R33VKSH5.cjs → chunk-ZHJ7JGME.cjs} +11 -11
- package/dist/chunk-ZPD2AO3U.js +866 -0
- package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
- package/dist/chunk-ZR46OJNZ.js +152 -0
- package/dist/{chunk-G3V4SFET.cjs → chunk-ZZ63NW7A.cjs} +78 -35
- package/dist/clear-33TWQ2ES.cjs +12 -0
- package/dist/clear-OFLFQ3MR.js +12 -0
- package/dist/{communityInstaller-6KCFN7YZ.js → communityInstaller-COB2KTOW.js} +9 -6
- package/dist/communityInstaller-TWMGPSYM.cjs +22 -0
- package/dist/completion-IIZMHXYP.cjs +17 -0
- package/dist/completion-PT4VM2H2.js +17 -0
- package/dist/config-KL6WU7R2.cjs +20 -0
- package/dist/{config-ZN66VXPS.js → config-R4O7GBTY.js} +7 -5
- package/dist/{constants-UFM5B232.js → constants-HVCHVQAF.js} +2 -2
- package/dist/constants-RLMJ5D5P.cjs +21 -0
- package/dist/{defaultHooks-RCXPHF4M.cjs → defaultHooks-2V2CQL63.cjs} +26 -11
- package/dist/{defaultHooks-RDRMER3Z.js → defaultHooks-TMHDU3FS.js} +26 -11
- package/dist/export-3PK3VFCE.js +15 -0
- package/dist/export-WLGNWEMJ.cjs +15 -0
- package/dist/{extractSessionMemories-V7K42ZHW.js → extractSessionMemories-A2JX5WJ2.js} +1 -1
- package/dist/{extractSessionMemories-SDW2MVBQ.cjs → extractSessionMemories-XL3MS37F.cjs} +1 -1
- package/dist/feedback-G635NCLJ.js +18 -0
- package/dist/feedback-LLMK3TZH.cjs +18 -0
- package/dist/fffSearchProvider-2YCNKOYD.js +412 -0
- package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
- package/dist/filesystem-L6DQKGWK.js +11 -0
- package/dist/filesystem-PGUPCMVK.cjs +11 -0
- package/dist/{formatters-6K7QVWQL.cjs → formatters-53XTCNGQ.cjs} +1 -1
- package/dist/{formatters-DQHO5I36.js → formatters-T6KV4BPP.js} +1 -1
- package/dist/help-BAXLP2M2.cjs +12 -0
- package/dist/{help-2BLR7L43.js → help-X3OAZ3CY.js} +3 -3
- package/dist/history-6HOJSEMT.cjs +14 -0
- package/dist/{history-5FZ3M2AK.js → history-YKFPHBJN.js} +3 -3
- package/dist/hooks-7TA4PIIB.js +18 -0
- package/dist/hooks-XVFU67T2.cjs +18 -0
- package/dist/{i18n-K7QOWIBH.js → i18n-2KBUU7XL.js} +2 -2
- package/dist/i18n-MUJMKTFM.cjs +33 -0
- package/dist/ide-CCQ33PGC.cjs +15 -0
- package/dist/ide-VLVFBZ5F.js +15 -0
- package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
- package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
- package/dist/{import-UXM3VK7B.js → import-4CHYLS4K.js} +4 -4
- package/dist/{import-QEME3E4T.cjs → import-I7T4ZHYL.cjs} +4 -4
- package/dist/import-J46F54JY.cjs +10 -0
- package/dist/import-JWPYKXCZ.js +10 -0
- package/dist/index.cjs +747 -22356
- package/dist/index.d.cts +93 -0
- package/dist/index.d.ts +93 -0
- package/dist/index.js +786 -22395
- package/dist/init-262MWZV4.js +10 -0
- package/dist/init-EE5Y7RBL.cjs +10 -0
- package/dist/inkMode-VUE6ZDLD.cjs +7 -0
- package/dist/inkMode-WBNFOSAT.js +7 -0
- package/dist/inputPrompt-IIFKCX5Q.cjs +90 -0
- package/dist/inputPrompt-YGBHDUEP.js +90 -0
- package/dist/language-CVLPB7OV.js +21 -0
- package/dist/language-ZTWFHUSV.cjs +21 -0
- package/dist/learn-PON7I5QS.js +23 -0
- package/dist/learn-XLRSVNA3.cjs +23 -0
- package/dist/{lint-D5UOJWIK.cjs → lint-4NDGCSCL.cjs} +1 -1
- package/dist/{lint-NJPZWVN2.js → lint-FZ7ZJUB3.js} +1 -1
- package/dist/login-223QTGBG.cjs +26 -0
- package/dist/login-6IKTBUBY.js +26 -0
- package/dist/logout-RN2AG6SI.js +23 -0
- package/dist/logout-U3M4FFX7.cjs +23 -0
- package/dist/mcp-5O6PUL4G.js +20 -0
- package/dist/mcp-NUQ76QQB.cjs +20 -0
- package/dist/{mcp-install-VESN42PI.js → mcp-install-6XWXLFVY.js} +18 -11
- package/dist/{mcp-install-G27HSS3Z.cjs → mcp-install-P6DHES7V.cjs} +22 -15
- package/dist/memory-CYMDQ2YC.cjs +10 -0
- package/dist/memory-Q54CESNM.js +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-6AJ77PJG.js +10 -0
- package/dist/model-IDRCKDML.cjs +10 -0
- package/dist/new-7LEWOUF2.cjs +12 -0
- package/dist/new-ZXHEWC2S.js +12 -0
- package/dist/onboarding-FXX7YHSJ.cjs +35 -0
- package/dist/onboarding-JYNMK6NI.js +35 -0
- package/dist/{patch-MOD7QC3D.cjs → patch-DJ2GPFST.cjs} +1 -1
- package/dist/{patch-5F6VBIT3.js → patch-NIJWIRHS.js} +1 -1
- package/dist/permissions-YBNSANIA.cjs +10 -0
- package/dist/permissions-YHJMVA6L.js +10 -0
- package/dist/plan-XEJMOT55.cjs +13 -0
- package/dist/plan-YYUAXPTL.js +13 -0
- package/dist/pr-review-CW6J7P62.cjs +9 -0
- package/dist/pr-review-YZSBQVT2.js +9 -0
- package/dist/quit-B43SJ6E4.cjs +10 -0
- package/dist/quit-GWTNHQSP.js +10 -0
- package/dist/rawMode-6W5AXAKI.cjs +7 -0
- package/dist/rawMode-GFNLXQPU.js +7 -0
- package/dist/{registry-KWZGYJC2.js → registry-34GL6BNJ.js} +30 -45
- package/dist/{registry-YN4FQPOO.cjs → registry-V24W7YK6.cjs} +66 -81
- package/dist/repeat-P4FAPE3Y.cjs +17 -0
- package/dist/repeat-RALE6AUO.js +17 -0
- package/dist/resume-DYVOQN5L.cjs +16 -0
- package/dist/resume-M25UQKOX.js +16 -0
- package/dist/review-QHP2KP4Q.js +9 -0
- package/dist/review-UWHWQHCB.cjs +9 -0
- package/dist/ripgrep-67SCU2BA.cjs +9 -0
- package/dist/ripgrep-VHJQQ55W.js +9 -0
- package/dist/rpc-NPS3PU4O.cjs +3730 -0
- package/dist/rpc-S3DGW6KV.js +3730 -0
- package/dist/search-CPX4PWHP.js +20 -0
- package/dist/search-VUF3M4N3.cjs +20 -0
- package/dist/{session-BSU2L5UI.cjs → session-LXKC4X5Q.cjs} +1 -1
- package/dist/{session-SZMRN5KG.js → session-NMMO4QOL.js} +1 -1
- package/dist/sessions-IYAXMK23.js +10 -0
- package/dist/sessions-JODKER5D.cjs +10 -0
- package/dist/settings-55BNW6BF.js +33 -0
- package/dist/settings-BKTS7OMC.cjs +33 -0
- package/dist/setup-IRC5HQG2.js +29 -0
- package/dist/setup-MMQ7TWOP.cjs +29 -0
- package/dist/share-6JRQECAH.cjs +17 -0
- package/dist/share-YM5MJKMO.js +17 -0
- package/dist/{skills-FYY6F2WV.cjs → skills-GGMZOVIE.cjs} +14 -11
- package/dist/skills-LWSOKOSH.cjs +29 -0
- package/dist/{skills-6OL4OSGA.js → skills-MVIZNHT4.js} +13 -10
- package/dist/skills-VWOMV3CR.js +29 -0
- package/dist/{skills-install-6CSWC24P.js → skills-install-QBA5RCV6.js} +22 -71
- package/dist/{skills-install-O3LZ2ETC.cjs → skills-install-VTAMCNNY.cjs} +35 -84
- package/dist/skills-new-GPL46YV2.js +18 -0
- package/dist/skills-new-L5BEZN5V.cjs +18 -0
- package/dist/slashCommands-FBPCIWM5.cjs +95 -0
- package/dist/slashCommands-FCWY5DXW.js +95 -0
- package/dist/status-3B5SDZPL.js +17 -0
- package/dist/status-TTGRF6NC.cjs +17 -0
- package/dist/summarizer-DGPHE5IQ.js +17 -0
- package/dist/summarizer-JNXLUAQG.cjs +17 -0
- package/dist/sync-77CXVVTK.cjs +21 -0
- package/dist/{sync-KWX67OUN.js → sync-7BILIQHP.js} +4 -4
- package/dist/sync-7OKF6636.js +21 -0
- package/dist/sync-EH4K5U3N.cjs +40 -0
- package/dist/{tasks-5FPBIFLC.js → tasks-R5MBGAQ6.js} +1 -1
- package/dist/{tasks-TXGKGNH6.cjs → tasks-V4WB3MFR.cjs} +1 -1
- package/dist/{team-5YXP3JGR.js → team-JESCHGWB.js} +1 -1
- package/dist/{team-IIWEZKNR.cjs → team-VQQKWGZB.cjs} +1 -1
- package/dist/{teammate-L6EZQ3I2.js → teammate-GZQSCIMS.js} +29 -8
- package/dist/{teammate-2KMKJXAM.cjs → teammate-J6PHGL23.cjs} +30 -9
- package/dist/theme-64BYGJ57.cjs +21 -0
- package/dist/theme-YJE6HEON.js +21 -0
- package/dist/tools-3PPTTKFV.js +9 -0
- package/dist/tools-THIQA7WC.cjs +9 -0
- package/dist/ui/questionModal.cjs +9 -6
- package/dist/ui/questionModal.js +8 -5
- package/dist/undo-PRTEGL2J.cjs +10 -0
- package/dist/undo-SZEHLX7X.js +10 -0
- package/dist/{update-TVAJMMBC.js → update-53WMKYVS.js} +1 -1
- package/dist/{update-Z6BIIQDC.cjs → update-NV6QRYY7.cjs} +1 -1
- package/dist/web-3BA2WV37.cjs +37 -0
- package/dist/web-6FYGBX5K.js +37 -0
- package/dist/workspaceSafety-MDJGHK6D.cjs +9 -0
- package/dist/workspaceSafety-XOUMUBVB.js +9 -0
- package/dist/yolo-GF2YD7ZI.js +9 -0
- package/dist/yolo-OGDA7HNC.cjs +9 -0
- package/dist/yoloMode-3DJDA75U.cjs +17 -0
- package/dist/yoloMode-4JOOSU26.js +17 -0
- package/package.json +46 -49
- package/dist/AgentRegistry-NQCLWABO.cjs +0 -10
- package/dist/CommunitySkillsCache-6QPRMTJO.js +0 -8
- package/dist/CommunitySkillsCache-GTQMOCCO.cjs +0 -8
- package/dist/GitHubRegistryFetcher-S7QFUEKV.cjs +0 -7
- package/dist/HookManager-Q2KYMCP4.cjs +0 -7
- package/dist/HookManager-TTP4Y6DC.js +0 -7
- package/dist/LearnAdvisor-A4Q5PPBI.js +0 -9
- package/dist/LearnAdvisor-GASQD7HT.cjs +0 -9
- package/dist/McpClientManager-RKD7C6OY.cjs +0 -8
- package/dist/MemoryManager-GUNLRP5S.js +0 -8
- package/dist/MemoryManager-TNSGKDKX.cjs +0 -8
- package/dist/PermissionManager-KMN53FJP.cjs +0 -11
- package/dist/ProviderFactory-MR5B23QJ.js +0 -9
- package/dist/ProviderFactory-VFGCJJX6.cjs +0 -9
- package/dist/SessionManager-FEUAU3ZJ.cjs +0 -10
- package/dist/SessionManager-IKWAK2PI.js +0 -10
- package/dist/SkillsRegistry-KPQFTRIT.cjs +0 -9
- package/dist/SkillsRegistry-XJSKPDF2.js +0 -9
- package/dist/SubAgent-NYH6GWQ3.js +0 -11
- package/dist/SubAgent-PZKBDUBA.cjs +0 -11
- package/dist/SyncApiClient-ZNYMT36M.cjs +0 -11
- package/dist/about-HHTF2YFL.js +0 -12
- package/dist/about-JGRVNNQC.cjs +0 -12
- package/dist/actionExecutor-U6IBN2TU.cjs +0 -19
- package/dist/actionExecutor-XT5FW3W6.js +0 -19
- package/dist/add-dir-247K3XRY.js +0 -10
- package/dist/add-dir-GS4DXKKH.cjs +0 -10
- package/dist/agents-R6ZEFTVR.cjs +0 -12
- package/dist/agents-WJPQWQF2.js +0 -12
- package/dist/agents-new-HKVEIBDJ.js +0 -14
- package/dist/agents-new-X6GTHIO6.cjs +0 -14
- package/dist/autoSkill-H4T6VVDA.cjs +0 -20
- package/dist/automode-BC6NVECO.js +0 -10
- package/dist/automode-WN2RSOGW.cjs +0 -10
- package/dist/chunk-33A755XB.cjs +0 -168
- package/dist/chunk-3OTU3RS3.cjs +0 -1607
- package/dist/chunk-4PKF7WPD.js +0 -100
- package/dist/chunk-ALYU6VTM.js +0 -105
- package/dist/chunk-AS6RTLN7.cjs +0 -203
- package/dist/chunk-BWN2CLLM.cjs +0 -298
- package/dist/chunk-HQ7YZKXE.js +0 -168
- package/dist/chunk-HVKOZ2VP.cjs +0 -115
- package/dist/chunk-J6QET7EF.cjs +0 -454
- package/dist/chunk-LWUJFGOZ.js +0 -115
- package/dist/chunk-P47WPOXN.js +0 -298
- package/dist/chunk-PRRCJFU3.cjs +0 -85
- package/dist/chunk-RO6WYEWH.js +0 -454
- package/dist/chunk-SYVYLZZF.cjs +0 -24
- package/dist/chunk-T73IDKDF.js +0 -111
- package/dist/chunk-YRLYSQEQ.cjs +0 -105
- package/dist/chunk-ZQE72E6W.cjs +0 -100
- package/dist/chunk-ZVY2XD6T.js +0 -1607
- package/dist/clear-UO4MNWZW.cjs +0 -12
- package/dist/clear-ZJ5NYP6E.js +0 -12
- package/dist/communityInstaller-PVSOFDZD.cjs +0 -19
- package/dist/completion-MMF2PN2H.js +0 -14
- package/dist/completion-UI5WKHXI.cjs +0 -14
- package/dist/config-E7RINK4R.cjs +0 -18
- package/dist/constants-6CPCJ3DY.cjs +0 -21
- package/dist/export-N4XIVDSL.cjs +0 -12
- package/dist/export-W22L4D5C.js +0 -12
- package/dist/feedback-DR6ADSNE.cjs +0 -15
- package/dist/feedback-FEEAP4QW.js +0 -15
- package/dist/filesystem-3SGCW2BF.js +0 -10
- package/dist/filesystem-MCFXJQ6R.cjs +0 -10
- package/dist/help-AQHGTS7P.cjs +0 -12
- package/dist/history-NIUDRMKA.cjs +0 -14
- package/dist/hooks-2EY4IPKV.js +0 -13
- package/dist/hooks-LJVORRIG.cjs +0 -13
- package/dist/i18n-ARDG2SMC.cjs +0 -33
- package/dist/ide-GFW6IJHD.js +0 -12
- package/dist/ide-N2ZNSSB3.cjs +0 -12
- package/dist/import-DFVN3KNZ.js +0 -10
- package/dist/import-ZS6DPGU5.cjs +0 -10
- package/dist/init-PY75HA3S.cjs +0 -10
- package/dist/init-QNMWLAVY.js +0 -10
- package/dist/language-5UE4G2BT.cjs +0 -18
- package/dist/language-UXMHEZUJ.js +0 -18
- package/dist/learn-HJ3FLNZC.cjs +0 -20
- package/dist/learn-MVYS3RU5.js +0 -20
- package/dist/localProjectPermissions-N77HA3XK.js +0 -18
- package/dist/localProjectPermissions-UFSMNTBJ.cjs +0 -18
- package/dist/login-DSE7H63A.js +0 -20
- package/dist/login-V3MEWPKN.cjs +0 -20
- package/dist/logout-BMVCLKKW.js +0 -18
- package/dist/logout-XEG7FHOZ.cjs +0 -18
- package/dist/mcp-PYUR4PHO.js +0 -18
- package/dist/mcp-SG6JFLGC.cjs +0 -18
- package/dist/memory-4ZMMEZ2Z.js +0 -10
- package/dist/memory-QSGMVVGH.cjs +0 -10
- package/dist/model-NANLBZ4Z.cjs +0 -10
- package/dist/model-ZXNV4AF7.js +0 -10
- package/dist/new-5QJY5JP2.js +0 -12
- package/dist/new-PMMG55UX.cjs +0 -12
- package/dist/permissions-LECTCJ4H.cjs +0 -13
- package/dist/permissions-VP5VGIBL.js +0 -13
- package/dist/plan-G5CEKJI4.js +0 -11
- package/dist/plan-QKOHE3LH.cjs +0 -11
- package/dist/quit-BKOOPHU5.cjs +0 -10
- package/dist/quit-FVFNYACP.js +0 -10
- package/dist/resume-EXFQSQPH.js +0 -13
- package/dist/resume-PP2IQM5S.cjs +0 -13
- package/dist/search-C56FBN67.cjs +0 -17
- package/dist/search-XGZDYBF4.js +0 -17
- package/dist/sessions-54KI3F2Q.js +0 -10
- package/dist/sessions-DDTSPNVW.cjs +0 -10
- package/dist/settings-BDO37TTO.cjs +0 -30
- package/dist/settings-FHRDFPLK.js +0 -30
- package/dist/share-IERCTBGN.cjs +0 -14
- package/dist/share-TGROUE6R.js +0 -14
- package/dist/skills-OM4IGBAA.cjs +0 -26
- package/dist/skills-S3GRN323.js +0 -26
- package/dist/skills-new-ALD2PTHN.js +0 -15
- package/dist/skills-new-PWLKK7GW.cjs +0 -15
- package/dist/slashCommands-L4ZD33LJ.js +0 -75
- package/dist/slashCommands-YY2VUUDF.cjs +0 -75
- package/dist/status-3PC5XWSS.cjs +0 -11
- package/dist/status-KCLVOYPD.js +0 -11
- package/dist/sync-6SDWG5RK.js +0 -18
- package/dist/sync-7JMZVEQD.cjs +0 -40
- package/dist/sync-WHURZL3U.cjs +0 -18
- package/dist/theme-BE5A4FPN.cjs +0 -18
- package/dist/theme-YMFCQP7J.js +0 -18
- package/dist/undo-KZHUUZTD.cjs +0 -10
- package/dist/undo-NEIEHQVX.js +0 -10
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkCH2J4PVEcjs = require('./chunk-CH2J4PVE.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunk46C73ZKKcjs = require('./chunk-46C73ZKK.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkYWTIXHU6cjs = require('./chunk-YWTIXHU6.cjs');
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunk2VHB43IXcjs = require('./chunk-2VHB43IX.cjs');
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _chunkCHI52KFRcjs = require('./chunk-CHI52KFR.cjs');
|
|
20
20
|
|
|
21
21
|
// src/commands/theme.ts
|
|
22
22
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
23
23
|
async function theme(ctx) {
|
|
24
|
-
const themes =
|
|
25
|
-
const currentTheme =
|
|
24
|
+
const themes = _chunkYWTIXHU6cjs.listAvailableThemes.call(void 0, );
|
|
25
|
+
const currentTheme = _chunk2VHB43IXcjs.isThemeInitialized.call(void 0, ) ? _chunk2VHB43IXcjs.getTheme.call(void 0, ).name : _optionalChain([ctx, 'access', _ => _.config, 'access', _2 => _2.ui, 'optionalAccess', _3 => _3.theme]) || "dark";
|
|
26
26
|
console.log(_chalk2.default.cyan(`
|
|
27
|
-
\u{1F3A8} ${
|
|
27
|
+
\u{1F3A8} ${_chunkCHI52KFRcjs.t.call(void 0, "commands.theme.title")}
|
|
28
28
|
`));
|
|
29
|
-
console.log(_chalk2.default.gray(
|
|
30
|
-
console.log(_chalk2.default.gray(`Custom themes location: ${
|
|
29
|
+
console.log(_chalk2.default.gray(_chunkCHI52KFRcjs.t.call(void 0, "commands.theme.currentTheme", { theme: _chalk2.default.white(currentTheme) })));
|
|
30
|
+
console.log(_chalk2.default.gray(`Custom themes location: ${_chunkYWTIXHU6cjs.CUSTOM_THEMES_DIR}
|
|
31
31
|
`));
|
|
32
32
|
const descriptions = {
|
|
33
33
|
// Built-in
|
|
@@ -37,6 +37,9 @@ async function theme(ctx) {
|
|
|
37
37
|
sandy: "Warm, earthy desert tones",
|
|
38
38
|
tui: "New Zealand-inspired colors",
|
|
39
39
|
"github-dark": "GitHub Dark terminal palette",
|
|
40
|
+
cappadocia: "Cappadocia-inspired rose valleys, dawn sky, and balloon colors",
|
|
41
|
+
rio: "Rio-inspired blue macaw, rainforest, and beach-light palette",
|
|
42
|
+
australia: "Australian coast, wattle, and eucalyptus palette",
|
|
40
43
|
// Curated Ghostty themes
|
|
41
44
|
"Atom One Dark": "Atom editor dark theme",
|
|
42
45
|
"Ayu Mirage": "Soft dark with warm accents",
|
|
@@ -60,14 +63,31 @@ async function theme(ctx) {
|
|
|
60
63
|
};
|
|
61
64
|
const options = themes.map((name) => {
|
|
62
65
|
const label = name === currentTheme ? `${name} (current)` : name;
|
|
63
|
-
const description = _nullishCoalesce(descriptions[name], () => ( (name in
|
|
66
|
+
const description = _nullishCoalesce(descriptions[name], () => ( (name in _chunkYWTIXHU6cjs.builtInThemes ? "Built-in theme" : "Ghostty theme")));
|
|
64
67
|
return { label, value: name, description };
|
|
65
68
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
let result = null;
|
|
70
|
+
let selectedTheme = null;
|
|
71
|
+
let selectedThemePreview = null;
|
|
72
|
+
await _optionalChain([ctx, 'access', _4 => _4.onBeforeModal, 'optionalCall', _5 => _5()]);
|
|
73
|
+
try {
|
|
74
|
+
result = await _chunkCH2J4PVEcjs.showModal.call(void 0, {
|
|
75
|
+
title: _chunkCHI52KFRcjs.t.call(void 0, "commands.theme.selectPrompt"),
|
|
76
|
+
options,
|
|
77
|
+
initialIndex: themes.indexOf(currentTheme)
|
|
78
|
+
});
|
|
79
|
+
if (result) {
|
|
80
|
+
const selected2 = result.value;
|
|
81
|
+
if (selected2 !== currentTheme) {
|
|
82
|
+
selectedThemePreview = _chunkYWTIXHU6cjs.initTheme.call(void 0, selected2);
|
|
83
|
+
ctx.config.ui = { ...ctx.config.ui, theme: selected2 };
|
|
84
|
+
await _chunk46C73ZKKcjs.saveConfig.call(void 0, ctx.config);
|
|
85
|
+
selectedTheme = selected2;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} finally {
|
|
89
|
+
await _optionalChain([ctx, 'access', _6 => _6.onAfterModal, 'optionalCall', _7 => _7()]);
|
|
90
|
+
}
|
|
71
91
|
if (!result) {
|
|
72
92
|
console.log(_chalk2.default.gray("\nTheme selection cancelled."));
|
|
73
93
|
return null;
|
|
@@ -75,31 +95,34 @@ async function theme(ctx) {
|
|
|
75
95
|
const selected = result.value;
|
|
76
96
|
if (selected === currentTheme) {
|
|
77
97
|
console.log(_chalk2.default.gray(`
|
|
78
|
-
${
|
|
98
|
+
${_chunkCHI52KFRcjs.t.call(void 0, "commands.theme.noChange")}`));
|
|
79
99
|
return null;
|
|
80
100
|
}
|
|
81
|
-
_chunkRD5XAJR2cjs.initTheme.call(void 0, selected);
|
|
82
|
-
ctx.config.ui = { ...ctx.config.ui, theme: selected };
|
|
83
|
-
await _chunkBWN2CLLMcjs.saveConfig.call(void 0, ctx.config);
|
|
84
101
|
console.log(_chalk2.default.green(`
|
|
85
|
-
\u2713 ${
|
|
86
|
-
const newTheme =
|
|
102
|
+
\u2713 ${_chunkCHI52KFRcjs.t.call(void 0, "commands.theme.changed", { theme: _nullishCoalesce(selectedTheme, () => ( selected)) })}`));
|
|
103
|
+
const newTheme = _nullishCoalesce(selectedThemePreview, () => ( _chunk2VHB43IXcjs.getTheme.call(void 0, )));
|
|
87
104
|
console.log("\nTheme preview:");
|
|
88
105
|
console.log(` ${newTheme.fg("accent", "\u25CF accent")} ${newTheme.fg("success", "\u25CF success")} ${newTheme.fg("error", "\u25CF error")} ${newTheme.fg("warning", "\u25CF warning")}`);
|
|
89
106
|
console.log(` ${newTheme.fg("muted", "\u25CF muted")} ${newTheme.fg("dim", "\u25CF dim")} ${newTheme.fg("text", "\u25CF text")}`);
|
|
107
|
+
if (newTheme.getColorMode() === "none") {
|
|
108
|
+
console.log(_chalk2.default.yellow(" Color output is disabled by NO_COLOR or FORCE_COLOR=0 in your terminal environment."));
|
|
109
|
+
}
|
|
90
110
|
console.log();
|
|
91
111
|
return null;
|
|
92
112
|
}
|
|
93
113
|
async function themeInfo() {
|
|
94
|
-
if (!
|
|
114
|
+
if (!_chunk2VHB43IXcjs.isThemeInitialized.call(void 0, )) {
|
|
95
115
|
console.log(_chalk2.default.yellow("Theme not initialized."));
|
|
96
116
|
return null;
|
|
97
117
|
}
|
|
98
|
-
const currentTheme =
|
|
118
|
+
const currentTheme = _chunk2VHB43IXcjs.getTheme.call(void 0, );
|
|
99
119
|
console.log(_chalk2.default.cyan("\n\u{1F3A8} Current Theme Info\n"));
|
|
100
120
|
console.log(_chalk2.default.gray(`Name: ${_chalk2.default.white(currentTheme.name)}`));
|
|
101
121
|
console.log(_chalk2.default.gray(`Color mode: ${_chalk2.default.white(currentTheme.getColorMode())}`));
|
|
102
|
-
|
|
122
|
+
if (currentTheme.getColorMode() === "none") {
|
|
123
|
+
console.log(_chalk2.default.yellow("Color output is disabled by NO_COLOR or FORCE_COLOR=0 in your terminal environment."));
|
|
124
|
+
}
|
|
125
|
+
console.log(_chalk2.default.gray(`Custom themes dir: ${_chunkYWTIXHU6cjs.CUSTOM_THEMES_DIR}`));
|
|
103
126
|
console.log();
|
|
104
127
|
console.log("Color preview:");
|
|
105
128
|
console.log(` ${currentTheme.fg("accent", "\u25CF accent")} ${currentTheme.fg("success", "\u25CF success")} ${currentTheme.fg("error", "\u25CF error")} ${currentTheme.fg("warning", "\u25CF warning")}`);
|
|
@@ -116,7 +139,7 @@ async function themeInfo() {
|
|
|
116
139
|
}
|
|
117
140
|
var metadata = {
|
|
118
141
|
command: "/theme",
|
|
119
|
-
description:
|
|
142
|
+
description: _chunkCHI52KFRcjs.t.call(void 0, "commands.theme.description"),
|
|
120
143
|
implemented: true
|
|
121
144
|
};
|
|
122
145
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// src/commands/yolo.ts
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
async function toggleYolo(ctx) {
|
|
4
|
+
if (!ctx.setYoloMode) {
|
|
5
|
+
return "YOLO mode toggle not available in this context.";
|
|
6
|
+
}
|
|
7
|
+
const isActive = ctx.permissionManager.getMode() === "unrestricted";
|
|
8
|
+
if (isActive) {
|
|
9
|
+
ctx.setYoloMode(void 0);
|
|
10
|
+
console.log();
|
|
11
|
+
console.log(chalk.cyan("YOLO mode deactivated. Returning to interactive approval."));
|
|
12
|
+
console.log();
|
|
13
|
+
} else {
|
|
14
|
+
ctx.setYoloMode("allow:*");
|
|
15
|
+
console.log();
|
|
16
|
+
console.log(chalk.yellow.bold("\u{1F680} YOLO MODE ACTIVATED"));
|
|
17
|
+
console.log(chalk.gray("You only live once! All actions will be auto-approved."));
|
|
18
|
+
console.log(chalk.gray("Security blacklist still applies for sensitive files."));
|
|
19
|
+
console.log();
|
|
20
|
+
}
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
var metadata = {
|
|
24
|
+
command: "/yolo",
|
|
25
|
+
description: "Toggle YOLO mode \u2014 auto-approve all actions",
|
|
26
|
+
implemented: true
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export {
|
|
30
|
+
toggleYolo,
|
|
31
|
+
metadata
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* @license
|
|
35
|
+
* Copyright 2025 Autohand AI LLC
|
|
36
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
37
|
+
*/
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createCommandTheme
|
|
3
|
+
} from "./chunk-46MTALKD.js";
|
|
4
|
+
import {
|
|
5
|
+
ASCII_FRIEND
|
|
6
|
+
} from "./chunk-RBHANOYY.js";
|
|
7
|
+
import {
|
|
8
|
+
package_default
|
|
9
|
+
} from "./chunk-3PXKRVCW.js";
|
|
10
|
+
import {
|
|
11
|
+
t
|
|
12
|
+
} from "./chunk-CBFH2J3O.js";
|
|
13
|
+
|
|
14
|
+
// src/commands/about.ts
|
|
15
|
+
import { execSync } from "child_process";
|
|
16
|
+
import terminalLink from "terminal-link";
|
|
17
|
+
function getCommitFromAlphaVersion(version) {
|
|
18
|
+
const match = version.match(/-alpha\.([0-9a-f]{7,40})$/i);
|
|
19
|
+
return match?.[1] ?? null;
|
|
20
|
+
}
|
|
21
|
+
function getGitCommit() {
|
|
22
|
+
if (true) {
|
|
23
|
+
return "8cc71ec";
|
|
24
|
+
}
|
|
25
|
+
const alphaCommit = getCommitFromAlphaVersion(package_default.version);
|
|
26
|
+
if (alphaCommit) {
|
|
27
|
+
return alphaCommit;
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
return execSync("git rev-parse --short HEAD", { encoding: "utf8", stdio: ["pipe", "pipe", "ignore"] }).trim();
|
|
31
|
+
} catch {
|
|
32
|
+
return "unknown";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function getVersionString() {
|
|
36
|
+
const commit = getGitCommit();
|
|
37
|
+
return commit !== "unknown" ? `${package_default.version} (${commit})` : package_default.version;
|
|
38
|
+
}
|
|
39
|
+
async function about() {
|
|
40
|
+
const theme = createCommandTheme();
|
|
41
|
+
const lines = [
|
|
42
|
+
theme.muted(ASCII_FRIEND),
|
|
43
|
+
"",
|
|
44
|
+
theme.accent(`${t("commands.about.title")} v${getVersionString()}`),
|
|
45
|
+
theme.muted(t("commands.about.subtitle")),
|
|
46
|
+
""
|
|
47
|
+
];
|
|
48
|
+
const websiteUrl = "https://autohand.ai";
|
|
49
|
+
const githubUrl = "https://github.com/autohandai/";
|
|
50
|
+
const docsUrl = "https://docs.autohand.ai";
|
|
51
|
+
const websiteLink = terminalLink(theme.link("autohand.ai"), websiteUrl);
|
|
52
|
+
const githubLink = terminalLink(theme.link("github.com/autohandai/"), githubUrl);
|
|
53
|
+
const docsLink = terminalLink(theme.link("docs.autohand.ai"), docsUrl);
|
|
54
|
+
lines.push(`${theme.text("\u{1F310}")} ${theme.text(t("commands.about.website") + ":")} ${websiteLink}`);
|
|
55
|
+
lines.push(`${theme.text("\u{1F4E6}")} ${theme.text(t("commands.about.github") + ":")} ${githubLink}`);
|
|
56
|
+
lines.push(`${theme.text("\u{1F4DA}")} ${theme.text(t("commands.about.docs") + ":")} ${docsLink}`);
|
|
57
|
+
lines.push("");
|
|
58
|
+
lines.push(theme.text(`\u{1F4A1} ${t("commands.about.contribute")}`));
|
|
59
|
+
lines.push(theme.text(` \u2022 ${t("commands.about.feedback")}: ${theme.accent("/feedback")}`));
|
|
60
|
+
lines.push(theme.text(` \u2022 ${t("commands.about.submitPR")}: ${theme.accent("gh pr create")}`));
|
|
61
|
+
const issuesUrl = "https://github.com/autohandai/code-cli/issues";
|
|
62
|
+
const issuesLink = terminalLink(theme.link("github.com/autohandai/code-cli/issues"), issuesUrl);
|
|
63
|
+
lines.push(theme.text(` \u2022 ${t("commands.about.reportIssues")}: ${issuesLink}`));
|
|
64
|
+
return lines.join("\n");
|
|
65
|
+
}
|
|
66
|
+
var metadata = {
|
|
67
|
+
command: "/about",
|
|
68
|
+
description: "show information about Autohand",
|
|
69
|
+
implemented: true
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export {
|
|
73
|
+
about,
|
|
74
|
+
metadata
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* @license
|
|
78
|
+
* Copyright 2025 Autohand AI LLC
|
|
79
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
80
|
+
*/
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/commands/review.ts
|
|
2
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
3
|
+
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
4
|
+
var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
|
|
5
|
+
var metadata = {
|
|
6
|
+
command: "/review",
|
|
7
|
+
description: "staff-level code review with 10 actionable findings",
|
|
8
|
+
implemented: true
|
|
9
|
+
};
|
|
10
|
+
async function review(ctx, args = []) {
|
|
11
|
+
const userInstructions = args.join(" ").trim();
|
|
12
|
+
const skillPath = _path2.default.resolve(
|
|
13
|
+
_path2.default.dirname(new URL(import.meta.url).pathname),
|
|
14
|
+
"../skills/builtin/code-reviewer/SKILL.md"
|
|
15
|
+
);
|
|
16
|
+
let skillBody = "";
|
|
17
|
+
try {
|
|
18
|
+
const content = await _fsextra2.default.readFile(skillPath, "utf-8");
|
|
19
|
+
const bodyMatch = content.match(/^---[\s\S]*?---\s*([\s\S]*)$/);
|
|
20
|
+
skillBody = bodyMatch ? bodyMatch[1].trim() : content;
|
|
21
|
+
} catch (e) {
|
|
22
|
+
skillBody = "Perform a thorough code review analyzing architecture, security, performance, error handling, and maintainability.";
|
|
23
|
+
}
|
|
24
|
+
const parts = [
|
|
25
|
+
skillBody,
|
|
26
|
+
"",
|
|
27
|
+
"## Review Target",
|
|
28
|
+
`Workspace: ${ctx.workspaceRoot}`
|
|
29
|
+
];
|
|
30
|
+
if (userInstructions) {
|
|
31
|
+
parts.push("", "## Additional Focus", userInstructions);
|
|
32
|
+
}
|
|
33
|
+
parts.push(
|
|
34
|
+
"",
|
|
35
|
+
"## Instructions",
|
|
36
|
+
"Start the review now. Use the available tools (read_file, fff_grep, fff_find, list_tree, git_status, git_diff) to gather context, then deliver your 10-dimension review."
|
|
37
|
+
);
|
|
38
|
+
const prompt = parts.join("\n");
|
|
39
|
+
if (ctx.isNonInteractive || !ctx.queueInstruction) {
|
|
40
|
+
return prompt;
|
|
41
|
+
}
|
|
42
|
+
ctx.queueInstruction(prompt);
|
|
43
|
+
console.log(_chalk2.default.cyan("\n Starting code review..."));
|
|
44
|
+
if (userInstructions) {
|
|
45
|
+
console.log(_chalk2.default.gray(` Focus: ${userInstructions}`));
|
|
46
|
+
}
|
|
47
|
+
console.log(_chalk2.default.gray(" Analyzing 10 dimensions: architecture, security, performance, and more.\n"));
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
exports.metadata = metadata; exports.review = review;
|
|
55
|
+
/**
|
|
56
|
+
* @license
|
|
57
|
+
* Copyright 2026 Autohand AI LLC
|
|
58
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
59
|
+
*/
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
showModal
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DLP436GI.js";
|
|
4
4
|
import {
|
|
5
5
|
saveConfig
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-3UT7R3XV.js";
|
|
7
7
|
import {
|
|
8
8
|
CUSTOM_THEMES_DIR,
|
|
9
9
|
builtInThemes,
|
|
10
10
|
initTheme,
|
|
11
11
|
listAvailableThemes
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-NBGOIFKP.js";
|
|
13
13
|
import {
|
|
14
14
|
getTheme,
|
|
15
15
|
isThemeInitialized
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-JAQO6XDB.js";
|
|
17
17
|
import {
|
|
18
18
|
t
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-CBFH2J3O.js";
|
|
20
20
|
|
|
21
21
|
// src/commands/theme.ts
|
|
22
22
|
import chalk from "chalk";
|
|
@@ -37,6 +37,9 @@ async function theme(ctx) {
|
|
|
37
37
|
sandy: "Warm, earthy desert tones",
|
|
38
38
|
tui: "New Zealand-inspired colors",
|
|
39
39
|
"github-dark": "GitHub Dark terminal palette",
|
|
40
|
+
cappadocia: "Cappadocia-inspired rose valleys, dawn sky, and balloon colors",
|
|
41
|
+
rio: "Rio-inspired blue macaw, rainforest, and beach-light palette",
|
|
42
|
+
australia: "Australian coast, wattle, and eucalyptus palette",
|
|
40
43
|
// Curated Ghostty themes
|
|
41
44
|
"Atom One Dark": "Atom editor dark theme",
|
|
42
45
|
"Ayu Mirage": "Soft dark with warm accents",
|
|
@@ -63,11 +66,28 @@ async function theme(ctx) {
|
|
|
63
66
|
const description = descriptions[name] ?? (name in builtInThemes ? "Built-in theme" : "Ghostty theme");
|
|
64
67
|
return { label, value: name, description };
|
|
65
68
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
let result = null;
|
|
70
|
+
let selectedTheme = null;
|
|
71
|
+
let selectedThemePreview = null;
|
|
72
|
+
await ctx.onBeforeModal?.();
|
|
73
|
+
try {
|
|
74
|
+
result = await showModal({
|
|
75
|
+
title: t("commands.theme.selectPrompt"),
|
|
76
|
+
options,
|
|
77
|
+
initialIndex: themes.indexOf(currentTheme)
|
|
78
|
+
});
|
|
79
|
+
if (result) {
|
|
80
|
+
const selected2 = result.value;
|
|
81
|
+
if (selected2 !== currentTheme) {
|
|
82
|
+
selectedThemePreview = initTheme(selected2);
|
|
83
|
+
ctx.config.ui = { ...ctx.config.ui, theme: selected2 };
|
|
84
|
+
await saveConfig(ctx.config);
|
|
85
|
+
selectedTheme = selected2;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} finally {
|
|
89
|
+
await ctx.onAfterModal?.();
|
|
90
|
+
}
|
|
71
91
|
if (!result) {
|
|
72
92
|
console.log(chalk.gray("\nTheme selection cancelled."));
|
|
73
93
|
return null;
|
|
@@ -78,15 +98,15 @@ async function theme(ctx) {
|
|
|
78
98
|
${t("commands.theme.noChange")}`));
|
|
79
99
|
return null;
|
|
80
100
|
}
|
|
81
|
-
initTheme(selected);
|
|
82
|
-
ctx.config.ui = { ...ctx.config.ui, theme: selected };
|
|
83
|
-
await saveConfig(ctx.config);
|
|
84
101
|
console.log(chalk.green(`
|
|
85
|
-
\u2713 ${t("commands.theme.changed", { theme: selected })}`));
|
|
86
|
-
const newTheme = getTheme();
|
|
102
|
+
\u2713 ${t("commands.theme.changed", { theme: selectedTheme ?? selected })}`));
|
|
103
|
+
const newTheme = selectedThemePreview ?? getTheme();
|
|
87
104
|
console.log("\nTheme preview:");
|
|
88
105
|
console.log(` ${newTheme.fg("accent", "\u25CF accent")} ${newTheme.fg("success", "\u25CF success")} ${newTheme.fg("error", "\u25CF error")} ${newTheme.fg("warning", "\u25CF warning")}`);
|
|
89
106
|
console.log(` ${newTheme.fg("muted", "\u25CF muted")} ${newTheme.fg("dim", "\u25CF dim")} ${newTheme.fg("text", "\u25CF text")}`);
|
|
107
|
+
if (newTheme.getColorMode() === "none") {
|
|
108
|
+
console.log(chalk.yellow(" Color output is disabled by NO_COLOR or FORCE_COLOR=0 in your terminal environment."));
|
|
109
|
+
}
|
|
90
110
|
console.log();
|
|
91
111
|
return null;
|
|
92
112
|
}
|
|
@@ -99,6 +119,9 @@ async function themeInfo() {
|
|
|
99
119
|
console.log(chalk.cyan("\n\u{1F3A8} Current Theme Info\n"));
|
|
100
120
|
console.log(chalk.gray(`Name: ${chalk.white(currentTheme.name)}`));
|
|
101
121
|
console.log(chalk.gray(`Color mode: ${chalk.white(currentTheme.getColorMode())}`));
|
|
122
|
+
if (currentTheme.getColorMode() === "none") {
|
|
123
|
+
console.log(chalk.yellow("Color output is disabled by NO_COLOR or FORCE_COLOR=0 in your terminal environment."));
|
|
124
|
+
}
|
|
102
125
|
console.log(chalk.gray(`Custom themes dir: ${CUSTOM_THEMES_DIR}`));
|
|
103
126
|
console.log();
|
|
104
127
|
console.log("Color preview:");
|
|
@@ -4,7 +4,7 @@ import * as http from "http";
|
|
|
4
4
|
import { existsSync } from "fs";
|
|
5
5
|
import { spawn } from "child_process";
|
|
6
6
|
var globalSearchConfig = {
|
|
7
|
-
provider: "
|
|
7
|
+
provider: "browser-profile"
|
|
8
8
|
};
|
|
9
9
|
function configureSearch(config) {
|
|
10
10
|
globalSearchConfig = { ...globalSearchConfig, ...config };
|
|
@@ -16,7 +16,13 @@ function isSearchConfigured() {
|
|
|
16
16
|
const config = getSearchConfig();
|
|
17
17
|
const braveKey = config.braveApiKey ?? process.env.BRAVE_SEARCH_API_KEY;
|
|
18
18
|
const parallelKey = config.parallelApiKey ?? process.env.PARALLEL_API_KEY;
|
|
19
|
+
const exaKey = config.exaApiKey ?? process.env.EXA_API_KEY;
|
|
19
20
|
switch (config.provider) {
|
|
21
|
+
case "browser-profile":
|
|
22
|
+
return !!findChromePath();
|
|
23
|
+
// Available if Chrome/Chromium is installed
|
|
24
|
+
case "exa":
|
|
25
|
+
return !!exaKey;
|
|
20
26
|
case "brave":
|
|
21
27
|
return !!braveKey;
|
|
22
28
|
case "parallel":
|
|
@@ -227,10 +233,23 @@ async function webSearch(query, options = {}) {
|
|
|
227
233
|
enhancedQuery = `${query} changelog OR release notes OR what's new`;
|
|
228
234
|
break;
|
|
229
235
|
}
|
|
230
|
-
|
|
236
|
+
let provider = options.provider ?? globalSearchConfig.provider;
|
|
231
237
|
const braveApiKey = globalSearchConfig.braveApiKey ?? process.env.BRAVE_SEARCH_API_KEY;
|
|
232
238
|
const parallelApiKey = globalSearchConfig.parallelApiKey ?? process.env.PARALLEL_API_KEY;
|
|
239
|
+
const exaApiKey = globalSearchConfig.exaApiKey ?? process.env.EXA_API_KEY;
|
|
240
|
+
if (provider === "browser-profile" && !findChromePath()) {
|
|
241
|
+
provider = "google";
|
|
242
|
+
}
|
|
233
243
|
switch (provider) {
|
|
244
|
+
case "browser-profile":
|
|
245
|
+
return browserProfileSearch(enhancedQuery, maxResults);
|
|
246
|
+
case "exa":
|
|
247
|
+
if (!exaApiKey) {
|
|
248
|
+
throw new Error(
|
|
249
|
+
"Exa.ai Search requires an API key. Configure it with /search or set EXA_API_KEY environment variable. Get an API key at: https://exa.ai"
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
return exaSearch(enhancedQuery, exaApiKey, maxResults);
|
|
234
253
|
case "brave":
|
|
235
254
|
if (!braveApiKey) {
|
|
236
255
|
throw new Error(
|
|
@@ -456,6 +475,183 @@ async function braveSearch(query, apiKey, maxResults) {
|
|
|
456
475
|
});
|
|
457
476
|
});
|
|
458
477
|
}
|
|
478
|
+
async function exaSearch(query, apiKey, maxResults) {
|
|
479
|
+
const postData = JSON.stringify({
|
|
480
|
+
query,
|
|
481
|
+
numResults: maxResults,
|
|
482
|
+
contents: {
|
|
483
|
+
text: true
|
|
484
|
+
}
|
|
485
|
+
});
|
|
486
|
+
return new Promise((resolve, reject) => {
|
|
487
|
+
const options = {
|
|
488
|
+
hostname: "api.exa.ai",
|
|
489
|
+
port: 443,
|
|
490
|
+
path: "/search",
|
|
491
|
+
method: "POST",
|
|
492
|
+
headers: {
|
|
493
|
+
"Content-Type": "application/json",
|
|
494
|
+
"Authorization": `Bearer ${apiKey}`,
|
|
495
|
+
"Content-Length": Buffer.byteLength(postData)
|
|
496
|
+
}
|
|
497
|
+
};
|
|
498
|
+
const req = https.request(options, (res) => {
|
|
499
|
+
let data = "";
|
|
500
|
+
res.on("data", (chunk) => {
|
|
501
|
+
data += chunk;
|
|
502
|
+
});
|
|
503
|
+
res.on("end", () => {
|
|
504
|
+
if (res.statusCode && res.statusCode >= 400) {
|
|
505
|
+
reject(new Error(`Exa.ai API error: HTTP ${res.statusCode} - ${data}`));
|
|
506
|
+
return;
|
|
507
|
+
}
|
|
508
|
+
try {
|
|
509
|
+
const json = JSON.parse(data);
|
|
510
|
+
if (json.results && Array.isArray(json.results)) {
|
|
511
|
+
const results = json.results.slice(0, maxResults).map((r) => ({
|
|
512
|
+
title: r.title || r.url || "Untitled",
|
|
513
|
+
url: r.url || "",
|
|
514
|
+
snippet: r.text?.slice(0, 300) || r.highlight?.slice(0, 300) || ""
|
|
515
|
+
}));
|
|
516
|
+
resolve(results);
|
|
517
|
+
} else {
|
|
518
|
+
resolve([]);
|
|
519
|
+
}
|
|
520
|
+
} catch (parseError) {
|
|
521
|
+
reject(new Error(`Failed to parse Exa.ai response: ${parseError instanceof Error ? parseError.message : String(parseError)}`));
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
res.on("error", reject);
|
|
525
|
+
});
|
|
526
|
+
req.on("error", reject);
|
|
527
|
+
req.on("timeout", () => {
|
|
528
|
+
req.destroy();
|
|
529
|
+
reject(new Error("Exa.ai request timed out"));
|
|
530
|
+
});
|
|
531
|
+
req.write(postData);
|
|
532
|
+
req.end();
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
async function browserProfileSearch(query, maxResults) {
|
|
536
|
+
const chromePath = findChromePath();
|
|
537
|
+
if (!chromePath) {
|
|
538
|
+
throw new Error(
|
|
539
|
+
"No Chrome/Chromium browser found. Install Chrome or configure a different search provider with /search."
|
|
540
|
+
);
|
|
541
|
+
}
|
|
542
|
+
const profile = await findBrowserProfile();
|
|
543
|
+
if (!profile) {
|
|
544
|
+
return googleSearch(query, maxResults);
|
|
545
|
+
}
|
|
546
|
+
const searchUrl = `https://www.google.com/search?q=${encodeURIComponent(query)}&num=${maxResults}&hl=en`;
|
|
547
|
+
return new Promise((resolve, reject) => {
|
|
548
|
+
const port = 9222 + Math.floor(Math.random() * 1e3);
|
|
549
|
+
const args = [
|
|
550
|
+
`--remote-debugging-port=${port}`,
|
|
551
|
+
"--no-first-run",
|
|
552
|
+
"--no-default-browser-check",
|
|
553
|
+
"--disable-default-apps",
|
|
554
|
+
"--disable-background-networking",
|
|
555
|
+
"--disable-sync",
|
|
556
|
+
`--user-data-dir=${profile.userDataDir}`,
|
|
557
|
+
`--profile-directory=${profile.profileDirectory}`,
|
|
558
|
+
"--headless=new",
|
|
559
|
+
"--dump-dom",
|
|
560
|
+
searchUrl
|
|
561
|
+
];
|
|
562
|
+
let stdout = "";
|
|
563
|
+
let killed = false;
|
|
564
|
+
const proc = spawn(chromePath, args, {
|
|
565
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
566
|
+
timeout: 3e4
|
|
567
|
+
});
|
|
568
|
+
proc.stdout.on("data", (data) => {
|
|
569
|
+
stdout += data.toString();
|
|
570
|
+
if (stdout.length > 5e5) {
|
|
571
|
+
killed = true;
|
|
572
|
+
proc.kill("SIGTERM");
|
|
573
|
+
}
|
|
574
|
+
});
|
|
575
|
+
proc.stderr.resume();
|
|
576
|
+
proc.on("close", (code) => {
|
|
577
|
+
if (killed) {
|
|
578
|
+
const results2 = parseGoogleResultsFromDOM(stdout.slice(0, 5e5), maxResults);
|
|
579
|
+
resolve(results2.length > 0 ? results2 : []);
|
|
580
|
+
return;
|
|
581
|
+
}
|
|
582
|
+
if (code !== 0 && code !== null) {
|
|
583
|
+
googleSearch(query, maxResults).then(resolve).catch(reject);
|
|
584
|
+
return;
|
|
585
|
+
}
|
|
586
|
+
const results = parseGoogleResultsFromDOM(stdout, maxResults);
|
|
587
|
+
if (stdout.includes("unusual traffic") || stdout.includes("captcha") || stdout.includes("g-recaptcha")) {
|
|
588
|
+
googleSearch(query, maxResults).then(resolve).catch(reject);
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
if (results.length > 0) {
|
|
592
|
+
resolve(results);
|
|
593
|
+
} else {
|
|
594
|
+
googleSearch(query, maxResults).then(resolve).catch(reject);
|
|
595
|
+
}
|
|
596
|
+
});
|
|
597
|
+
proc.on("error", () => {
|
|
598
|
+
googleSearch(query, maxResults).then(resolve).catch(reject);
|
|
599
|
+
});
|
|
600
|
+
});
|
|
601
|
+
}
|
|
602
|
+
async function findBrowserProfile() {
|
|
603
|
+
const os = await import("os");
|
|
604
|
+
const path = await import("path");
|
|
605
|
+
const fs = await import("fs-extra");
|
|
606
|
+
const { pathExists } = fs;
|
|
607
|
+
const homeDir = os.homedir();
|
|
608
|
+
const platform = process.platform;
|
|
609
|
+
const browserRoots = [];
|
|
610
|
+
if (platform === "darwin") {
|
|
611
|
+
browserRoots.push(
|
|
612
|
+
{ name: "Chrome", userDataDir: path.join(homeDir, "Library", "Application Support", "Google", "Chrome") },
|
|
613
|
+
{ name: "Chromium", userDataDir: path.join(homeDir, "Library", "Application Support", "Chromium") },
|
|
614
|
+
{ name: "Brave", userDataDir: path.join(homeDir, "Library", "Application Support", "BraveSoftware", "Brave-Browser") },
|
|
615
|
+
{ name: "Edge", userDataDir: path.join(homeDir, "Library", "Application Support", "Microsoft Edge") }
|
|
616
|
+
);
|
|
617
|
+
} else if (platform === "linux") {
|
|
618
|
+
browserRoots.push(
|
|
619
|
+
{ name: "Chrome", userDataDir: path.join(homeDir, ".config", "google-chrome") },
|
|
620
|
+
{ name: "Chromium", userDataDir: path.join(homeDir, ".config", "chromium") },
|
|
621
|
+
{ name: "Brave", userDataDir: path.join(homeDir, ".config", "BraveSoftware", "Brave-Browser") },
|
|
622
|
+
{ name: "Edge", userDataDir: path.join(homeDir, ".config", "microsoft-edge") }
|
|
623
|
+
);
|
|
624
|
+
} else if (platform === "win32") {
|
|
625
|
+
const localAppData = process.env.LOCALAPPDATA ?? "";
|
|
626
|
+
browserRoots.push(
|
|
627
|
+
{ name: "Chrome", userDataDir: path.join(localAppData, "Google", "Chrome", "User Data") },
|
|
628
|
+
{ name: "Chromium", userDataDir: path.join(localAppData, "Chromium", "User Data") },
|
|
629
|
+
{ name: "Brave", userDataDir: path.join(localAppData, "BraveSoftware", "Brave-Browser", "User Data") },
|
|
630
|
+
{ name: "Edge", userDataDir: path.join(localAppData, "Microsoft", "Edge", "User Data") }
|
|
631
|
+
);
|
|
632
|
+
}
|
|
633
|
+
for (const browser of browserRoots) {
|
|
634
|
+
if (!await pathExists(browser.userDataDir)) {
|
|
635
|
+
continue;
|
|
636
|
+
}
|
|
637
|
+
try {
|
|
638
|
+
const entries = await fs.readdir(browser.userDataDir);
|
|
639
|
+
const profiles = entries.filter(
|
|
640
|
+
(entry) => entry === "Default" || entry.startsWith("Profile ")
|
|
641
|
+
);
|
|
642
|
+
const profileDirectory = profiles.includes("Default") ? "Default" : profiles[0];
|
|
643
|
+
if (profileDirectory) {
|
|
644
|
+
return {
|
|
645
|
+
userDataDir: browser.userDataDir,
|
|
646
|
+
profileDirectory,
|
|
647
|
+
browser: browser.name
|
|
648
|
+
};
|
|
649
|
+
}
|
|
650
|
+
} catch {
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
return null;
|
|
654
|
+
}
|
|
459
655
|
async function fetchUrl(url, options = {}) {
|
|
460
656
|
const maxLength = options.maxLength ?? 3e4;
|
|
461
657
|
try {
|
|
@@ -663,16 +859,25 @@ function formatPackageInfo(info) {
|
|
|
663
859
|
}
|
|
664
860
|
return lines.join("\n");
|
|
665
861
|
}
|
|
862
|
+
var formatNpmInfo = formatPackageInfo;
|
|
666
863
|
|
|
667
864
|
export {
|
|
668
865
|
configureSearch,
|
|
669
866
|
getSearchConfig,
|
|
670
867
|
isSearchConfigured,
|
|
868
|
+
findChromePath,
|
|
869
|
+
parseGoogleResultsFromDOM,
|
|
671
870
|
webSearch,
|
|
672
871
|
fetchUrl,
|
|
872
|
+
getNpmInfo,
|
|
873
|
+
getPyPIInfo,
|
|
874
|
+
getCargoInfo,
|
|
875
|
+
getRubyGemsInfo,
|
|
876
|
+
getGoModuleInfo,
|
|
673
877
|
getPackageInfo,
|
|
674
878
|
formatSearchResults,
|
|
675
|
-
formatPackageInfo
|
|
879
|
+
formatPackageInfo,
|
|
880
|
+
formatNpmInfo
|
|
676
881
|
};
|
|
677
882
|
/**
|
|
678
883
|
* @license
|