autohand-cli 0.8.3 → 0.9.1
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 +191 -74
- package/dist/{AgentRegistry-ODDXPAFR.js → AgentRegistry-GOV7FN2O.js} +2 -2
- package/dist/AgentRegistry-J2C6JBZ3.cjs +10 -0
- package/dist/{AutomodeManager-EOVHGRPP.js → AutomodeManager-APLLPEYJ.js} +31 -17
- package/dist/{AutomodeManager-6ATBE7Q5.cjs → AutomodeManager-MPSXT2RH.cjs} +38 -24
- package/dist/CommunitySkillsCache-22BB3J6H.cjs +8 -0
- package/dist/{CommunitySkillsCache-QLE57BN5.js → CommunitySkillsCache-ZACDPD4J.js} +2 -2
- package/dist/GitHubRegistryFetcher-CYJLF2XL.cjs +7 -0
- package/dist/{GitHubRegistryFetcher-NT5GFZXS.js → GitHubRegistryFetcher-J2BWPXJF.js} +1 -1
- package/dist/{HookManager-B2F35M27.js → HookManager-2S6AHOC3.js} +1 -1
- package/dist/{HookManager-PFAFE3FK.cjs → HookManager-TVEQI5ZU.cjs} +2 -2
- package/dist/{ImportWizard-OHRKBANZ.js → ImportWizard-AEBMAKXE.js} +33 -9
- package/dist/{ImportWizard-CJRZPPHL.cjs → ImportWizard-AF2XL6DS.cjs} +37 -13
- package/dist/LearnAdvisor-KKEQ5QCV.js +9 -0
- package/dist/LearnAdvisor-Q7RAYLPF.cjs +9 -0
- package/dist/{McpClientManager-NQ3EW2IF.cjs → McpClientManager-BNSKLHIN.cjs} +2 -2
- package/dist/{McpClientManager-VBIMGKXU.js → McpClientManager-SL35BR24.js} +1 -1
- package/dist/MemoryManager-PMNAEZMB.cjs +8 -0
- package/dist/{MemoryManager-2LAT7IHS.js → MemoryManager-QZRLTUB5.js} +2 -2
- package/dist/NVIDIAProvider-C3FWQOBZ.cjs +14 -0
- package/dist/NVIDIAProvider-SJPY3ONR.js +14 -0
- package/dist/{PermissionManager-7NQHRCHY.js → PermissionManager-MT7KBNNR.js} +3 -3
- package/dist/PermissionManager-URCNP5EC.cjs +11 -0
- package/dist/{ProjectProfiler-UG42W6WD.cjs → ProjectProfiler-CDAE7ECW.cjs} +1 -0
- package/dist/{ProjectProfiler-P4QJQWWA.js → ProjectProfiler-NZTJDRHD.js} +1 -0
- package/dist/ProviderFactory-56N3ECE4.cjs +12 -0
- package/dist/{ProviderFactory-2IYJ5OPW.js → ProviderFactory-RB4RVAF6.js} +4 -1
- package/dist/SessionManager-2IZGWASQ.cjs +10 -0
- package/dist/{SessionManager-4U4JFQ3C.js → SessionManager-554PHVPC.js} +2 -2
- package/dist/SkillsRegistry-GMRVONOQ.cjs +9 -0
- package/dist/{SkillsRegistry-RFEINXRT.js → SkillsRegistry-NHHMIUYJ.js} +2 -2
- package/dist/SubAgent-4GOR2FIJ.js +13 -0
- package/dist/SubAgent-ZJMDH4FI.cjs +13 -0
- package/dist/{SyncApiClient-B5RT2ECG.js → SyncApiClient-G3FM65IV.js} +1 -1
- package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
- package/dist/about-3USFSGOH.js +15 -0
- package/dist/about-QR52U5DD.cjs +15 -0
- package/dist/acp-5Y2W6OZP.js +1556 -0
- package/dist/acp-GSYE75OB.cjs +1556 -0
- package/dist/actionExecutor-KHUU3Z3Q.cjs +28 -0
- package/dist/actionExecutor-PLQJZLZV.js +28 -0
- package/dist/add-dir-BTAD5OZS.cjs +11 -0
- package/dist/{add-dir-TUJM3PG5.js → add-dir-HCERJDBR.js} +3 -2
- package/dist/agent-B3EVT7NN.cjs +126 -0
- package/dist/agent-SATQ3WZ3.js +126 -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-44CRJGM7.cjs +18 -0
- package/dist/agents-NN4ZAJ7R.js +18 -0
- package/dist/agents-new-6D6G4QS6.cjs +17 -0
- package/dist/agents-new-7GAQ25EK.js +17 -0
- package/dist/{autoSkill-LQEVQFIH.js → autoSkill-66PKCYTW.js} +2 -2
- package/dist/autoSkill-VQLGBELN.cjs +20 -0
- package/dist/automode-45DWV4TN.cjs +10 -0
- package/dist/{automode-R6P3VHLS.js → automode-BUF3VGXU.js} +2 -2
- package/dist/browserToolBridge-BXRQB4B4.cjs +58 -0
- package/dist/browserToolBridge-F5N66PE7.js +58 -0
- package/dist/chrome-Q2U73HZB.cjs +50 -0
- package/dist/chrome-Q54OALOK.cjs +21 -0
- package/dist/chrome-Y3T7EIHG.js +50 -0
- package/dist/chrome-ZNJ46OYW.js +21 -0
- package/dist/chromeSkill-53TH55PM.js +105 -0
- package/dist/chromeSkill-THW7N4IY.cjs +105 -0
- package/dist/{chunk-HXGBSJL5.cjs → chunk-22SCR3EV.cjs} +2 -2
- package/dist/chunk-26G7YGOW.js +367 -0
- package/dist/{chunk-3L53OA4E.cjs → chunk-2ESQR35E.cjs} +10 -10
- package/dist/chunk-2H5O745H.js +63 -0
- package/dist/{chunk-ULDM2SNB.js → chunk-2IW5YFJ4.js} +48 -47
- package/dist/{chunk-U55TWFJI.cjs → chunk-2VHB43IX.cjs} +24 -6
- package/dist/chunk-3EDDDZS2.cjs +5 -0
- package/dist/{chunk-X5VSP65C.cjs → chunk-3ICORF7M.cjs} +4 -4
- package/dist/chunk-3OF56EMA.cjs +197 -0
- package/dist/chunk-3UC6DMFI.cjs +93 -0
- package/dist/{chunk-64H4FRM3.cjs → chunk-3UHRCHKB.cjs} +32 -34
- package/dist/{chunk-JCLYQ2JC.js → chunk-3ZOOH44N.js} +12 -6
- package/dist/{chunk-TUD3Z3BD.js → chunk-44ZWOBTI.js} +136 -55
- package/dist/chunk-4567QNRB.js +444 -0
- package/dist/chunk-45CHNQM6.cjs +517 -0
- package/dist/chunk-46MTALKD.js +44 -0
- package/dist/{chunk-WHE2SWHU.js → chunk-4E7SHPNQ.js} +2 -2
- package/dist/chunk-4LMUDS2K.js +124 -0
- package/dist/{chunk-W7RYQJLO.cjs → chunk-4XFHP2SN.cjs} +46 -15
- package/dist/chunk-4XVLNOFA.js +360 -0
- package/dist/{chunk-GBHDROGL.js → chunk-575PXZX7.js} +16 -4
- package/dist/chunk-5A7ZL64N.js +139 -0
- package/dist/chunk-5GCQ5UMV.cjs +85 -0
- package/dist/chunk-5JTTM5SC.js +59 -0
- package/dist/{chunk-IETRBBMP.cjs → chunk-5K3CDSWZ.cjs} +108 -31
- package/dist/{chunk-KLWJIPU2.cjs → chunk-5SFV2NCY.cjs} +20 -16
- package/dist/chunk-5ZNYX4VH.cjs +71 -0
- package/dist/{chunk-A4IJHHV7.cjs → chunk-63ANVAOJ.cjs} +52 -11
- package/dist/{chunk-MYISNQH4.js → chunk-65LRPW5W.js} +1 -1
- package/dist/chunk-6AYJCDTA.js +360 -0
- package/dist/{chunk-X2MSVKDV.js → chunk-6HF6XSCC.js} +2 -2
- package/dist/{chunk-AEJH23FO.cjs → chunk-6JWCGQJU.cjs} +6 -6
- package/dist/chunk-6OECOAK5.cjs +360 -0
- package/dist/chunk-6R25D2H5.js +121 -0
- package/dist/chunk-7DJJGKM6.js +77 -0
- package/dist/{chunk-VG34MG2U.js → chunk-7IRQ7JEH.js} +9 -6
- package/dist/chunk-7MY4JHER.js +27 -0
- package/dist/chunk-7PJKTSRN.js +152 -0
- package/dist/{chunk-SKYG33B2.cjs → chunk-7PT646AL.cjs} +3 -3
- package/dist/chunk-7WAUCLLQ.js +229 -0
- package/dist/{chunk-U46VYPLR.cjs → chunk-7XTUL7ZD.cjs} +9 -9
- package/dist/chunk-AE2ILW25.cjs +152 -0
- package/dist/{chunk-T2M64VHA.cjs → chunk-AOKXYGBQ.cjs} +61 -41
- package/dist/chunk-AQ5PVHOC.cjs +113 -0
- package/dist/{chunk-N2BLVUPM.cjs → chunk-AZ47LKD5.cjs} +3 -3
- package/dist/chunk-B4HSNOIH.cjs +354 -0
- package/dist/chunk-B76FJKEJ.cjs +184 -0
- package/dist/chunk-BP37FVBM.js +85 -0
- package/dist/chunk-BQU3HAE7.js +21 -0
- package/dist/chunk-BYE7RQFZ.cjs +121 -0
- package/dist/chunk-C46B72VK.js +1034 -0
- package/dist/{chunk-HIVRCQS2.js → chunk-C5QIQQ37.js} +56 -25
- package/dist/chunk-CCIDL4SA.js +19931 -0
- package/dist/{chunk-XVUHNWMX.js → chunk-CECH6QQP.js} +17 -19
- package/dist/chunk-CFAWTLSC.js +13 -0
- package/dist/{chunk-ZYQMLKOK.cjs → chunk-CK4HAHVY.cjs} +212 -70
- package/dist/chunk-CO2AADYU.cjs +360 -0
- package/dist/chunk-CRTCZ4WL.cjs +19931 -0
- package/dist/chunk-CSTUTDTH.js +75 -0
- package/dist/{chunk-K2C56QGS.cjs → chunk-D546G7DA.cjs} +1650 -479
- package/dist/{chunk-CNBKZEX5.cjs → chunk-DA7NBAJK.cjs} +49 -17
- package/dist/{chunk-G4CAKI3V.js → chunk-DGBPWODD.js} +7 -2
- package/dist/chunk-DHUQZ53B.cjs +29 -0
- package/dist/{chunk-RGR6ME5J.cjs → chunk-DI57A4BX.cjs} +25 -28
- package/dist/{chunk-5K6NGAVM.js → chunk-DNSD7DVJ.js} +67 -52
- package/dist/{chunk-RDF37HKB.cjs → chunk-DSSCERHI.cjs} +3 -2
- package/dist/{chunk-NAJ4IZKD.cjs → chunk-EA2MS25U.cjs} +8 -6
- package/dist/{chunk-SJAVBCOA.js → chunk-EEHWALXA.js} +94 -3
- package/dist/chunk-ES2HJQ4N.js +37 -0
- package/dist/{chunk-G27PQQFD.js → chunk-EYHKL4QC.js} +1 -1
- package/dist/{chunk-SV2WA57F.js → chunk-FBQJZKFX.js} +38 -15
- package/dist/chunk-FFBDRUO5.cjs +59 -0
- package/dist/{chunk-N7LI55V4.js → chunk-FFHSCM5M.js} +15 -8
- package/dist/{chunk-SAHBLB3E.js → chunk-FP46B4X3.js} +208 -3
- package/dist/chunk-FQVG6ZHF.js +197 -0
- package/dist/{chunk-J2GSFVUV.cjs → chunk-GAOPJ5S3.cjs} +74 -59
- package/dist/{chunk-S52YW5ZQ.js → chunk-GNBBIAMD.js} +16 -19
- package/dist/chunk-GSDV75A5.js +715 -0
- package/dist/chunk-GWY26SUD.cjs +63 -0
- package/dist/{chunk-TUAITHWL.js → chunk-H426KOGY.js} +2 -1
- package/dist/{chunk-EZMINVLU.js → chunk-H4D2Q2AL.js} +5 -2
- package/dist/chunk-HC2Q6A3E.cjs +4967 -0
- package/dist/{chunk-3WVJEL7K.cjs → chunk-HDK2EHVH.cjs} +3 -1
- package/dist/{chunk-5IXII4HX.cjs → chunk-HG3ZASBH.cjs} +23 -16
- package/dist/chunk-HK5A54AV.cjs +280 -0
- package/dist/{chunk-LQGVEP3E.js → chunk-HQUSEWT4.js} +45 -13
- package/dist/chunk-HSWWM6AM.js +2340 -0
- package/dist/chunk-HTU4W3GB.js +183 -0
- package/dist/{chunk-HLHTG5ZU.cjs → chunk-HVCIB4SW.cjs} +14 -12
- package/dist/chunk-HXHE2KAO.js +385 -0
- package/dist/{chunk-LJFUXC56.cjs → chunk-HXQREVTA.cjs} +9 -6
- package/dist/{chunk-SLQAYV3W.js → chunk-HZWU6IO3.js} +11 -2
- package/dist/chunk-I2ZK3AOD.js +866 -0
- package/dist/chunk-IEPLQ47J.js +719 -0
- package/dist/chunk-J5HE6CUM.cjs +124 -0
- package/dist/{chunk-LIEXWM2M.js → chunk-JAQO6XDB.js} +19 -1
- package/dist/chunk-JB3JCYBJ.js +113 -0
- package/dist/chunk-JCUHCH37.cjs +247 -0
- package/dist/{chunk-FPHU2ES6.cjs → chunk-JM3ZTQUK.cjs} +19 -9
- package/dist/{chunk-NDMIPTV4.js → chunk-JMJRFSNJ.js} +8 -3
- package/dist/{chunk-ZLSGXMGQ.js → chunk-JMN3GZU6.js} +2 -0
- package/dist/chunk-JPFRI4L4.js +4967 -0
- package/dist/{chunk-BVKXEQVG.cjs → chunk-JV5HVCHU.cjs} +22 -10
- package/dist/chunk-KA2U6MY2.js +388 -0
- package/dist/{chunk-SEKD5FH3.cjs → chunk-KASXKDF2.cjs} +8 -3
- package/dist/chunk-KJ26T7GM.cjs +367 -0
- package/dist/chunk-KM7R5YPS.cjs +385 -0
- package/dist/{chunk-MBBY4ZIK.js → chunk-KMP6Y3LJ.js} +4 -1
- package/dist/chunk-KWXGDSYT.js +184 -0
- package/dist/{chunk-C5IJIM2V.cjs → chunk-L46OUKW5.cjs} +68 -37
- package/dist/{chunk-6UJMCWRY.js → chunk-L6OH44HL.js} +19 -9
- package/dist/chunk-LANGD5CO.js +280 -0
- package/dist/{chunk-APIXPPMT.js → chunk-LEZEWKPA.js} +1004 -39
- package/dist/{chunk-ULQ6MDSJ.cjs → chunk-LFDPTJYF.cjs} +43 -35
- package/dist/chunk-LJD7KR3L.cjs +44 -0
- package/dist/{chunk-NCC6ETZS.js → chunk-LUMV3DB2.js} +41 -33
- package/dist/{chunk-QXH5RCFI.js → chunk-M5DK524Z.js} +2 -2
- package/dist/chunk-M7B7RRBK.cjs +1034 -0
- package/dist/chunk-MANJ67D3.js +3897 -0
- package/dist/{chunk-HPHJ73GU.cjs → chunk-MGNXABSU.cjs} +9 -9
- package/dist/{chunk-6ZCULLCA.js → chunk-MMKZSJUN.js} +1 -1
- package/dist/{chunk-DVUHHH3B.cjs → chunk-MQQH4XQH.cjs} +4 -4
- package/dist/chunk-MUNUUFU7.cjs +21 -0
- package/dist/{chunk-DVZOENQ7.cjs → chunk-MZN6JBRZ.cjs} +9 -4
- package/dist/{chunk-OOKY3HPZ.js → chunk-NB6M6ESM.js} +50 -9
- package/dist/{chunk-BYONM7UM.js → chunk-NBGOIFKP.js} +265 -18
- package/dist/chunk-NHWHEW7M.cjs +75 -0
- package/dist/chunk-NQZH5CR2.cjs +468 -0
- package/dist/{chunk-EGPXJERY.cjs → chunk-NV6LCD2I.cjs} +119 -28
- package/dist/chunk-NVATU4V6.cjs +44 -0
- package/dist/{chunk-YZXUDM5X.js → chunk-NZ3ZWLUW.js} +204 -62
- package/dist/chunk-NZ7GCK7Y.cjs +92 -0
- package/dist/{chunk-VEKDGU2Q.cjs → chunk-NZQFKXM3.cjs} +49 -25
- package/dist/chunk-O5GI6SR3.js +59 -0
- package/dist/{chunk-56SWIDEL.cjs → chunk-OCATAKXV.cjs} +57 -56
- package/dist/{chunk-SKV2F3NM.js → chunk-OIGYWOL6.js} +1 -1
- package/dist/{chunk-IFFXSTOM.cjs → chunk-ONVYXTUT.cjs} +3 -3
- package/dist/chunk-OR67YXQK.cjs +13 -0
- package/dist/chunk-OV3T5MUH.cjs +715 -0
- package/dist/{chunk-OHUZKDGX.js → chunk-P4FUTSVK.js} +3 -3
- package/dist/chunk-P6SLT2F4.cjs +139 -0
- package/dist/{chunk-TNZRZQ7Q.js → chunk-PB7W7R72.js} +3 -78
- package/dist/chunk-PCM3N3CL.cjs +37 -0
- package/dist/{chunk-2AA5MFES.js → chunk-PGFLPURU.js} +8 -5
- package/dist/{chunk-DJDE4DTT.cjs → chunk-PIXQ2AVM.cjs} +25 -19
- package/dist/chunk-PNIAIOMZ.cjs +229 -0
- package/dist/{chunk-HTLINWX6.cjs → chunk-PQBYFEBL.cjs} +16 -13
- package/dist/{chunk-22D2CNTP.cjs → chunk-PSAH4ZQB.cjs} +5 -2
- package/dist/{chunk-3VTAFAL2.js → chunk-PTTZI4QZ.js} +16 -12
- package/dist/{chunk-WPVWQSL7.cjs → chunk-PY73W5MQ.cjs} +16 -13
- package/dist/{chunk-EGMZDTSL.js → chunk-PZZMIYII.js} +10 -2
- package/dist/{chunk-HBZU3RBZ.js → chunk-Q3BS6FPM.js} +34 -10
- package/dist/chunk-QBYGMMDD.js +517 -0
- package/dist/chunk-QLZOMZO5.cjs +388 -0
- package/dist/{chunk-ADUFCS4Q.cjs → chunk-QQ64HEHP.cjs} +160 -79
- package/dist/{chunk-L3TWPROA.js → chunk-QRQF3556.js} +44 -24
- package/dist/{chunk-YHD6TUIR.cjs → chunk-QW2RW2GY.cjs} +2 -0
- package/dist/chunk-RAKO7UN7.js +114 -0
- package/dist/{chunk-7TQH3CL4.cjs → chunk-RBXBH6EB.cjs} +78 -35
- package/dist/chunk-RFUKZIJF.cjs +78 -0
- package/dist/chunk-RS2E32YB.js +71 -0
- package/dist/{chunk-OLSBBZW6.cjs → chunk-S5JNQIGL.cjs} +5 -5
- package/dist/{chunk-FTYY5JJD.js → chunk-S5QKRA2V.js} +2 -2
- package/dist/chunk-SD3NTC7D.cjs +77 -0
- package/dist/{chunk-KPELYZ6L.js → chunk-SDLY4X3G.js} +2 -2
- package/dist/{chunk-IDFF5J2E.js → chunk-SFFEKZGC.js} +38 -7
- package/dist/{chunk-EGFT4PGW.js → chunk-SHRLFX6F.js} +8 -3
- package/dist/{chunk-3WICOC33.js → chunk-SNDDZG5H.js} +124 -84
- package/dist/{chunk-CZXGCVTR.cjs → chunk-SOVR7S3T.cjs} +2 -2
- package/dist/chunk-SPQ7QIQ6.js +78 -0
- package/dist/{chunk-XRZEUWKF.js → chunk-SRMGWMQO.js} +1 -1
- package/dist/{chunk-R33VKSH5.cjs → chunk-SVVP4UUZ.cjs} +11 -11
- package/dist/{chunk-7BTSG4ME.cjs → chunk-SY2P3Z5W.cjs} +1004 -39
- package/dist/chunk-SZD45IDG.js +468 -0
- package/dist/{chunk-3O3MOK5C.cjs → chunk-TE4SYTWR.cjs} +1114 -142
- package/dist/chunk-TH26BQJG.js +101 -0
- package/dist/{chunk-QNGEW5TC.js → chunk-TR6NECEZ.js} +1 -1
- package/dist/{chunk-YGN4CQIP.js → chunk-TYBPTKFT.js} +1 -1
- package/dist/{chunk-GJH7XMSK.js → chunk-U2QUMKCB.js} +8 -6
- package/dist/{chunk-47CKWKEX.cjs → chunk-U6PLSPMD.cjs} +9 -4
- package/dist/chunk-UOQECODR.js +34 -0
- package/dist/chunk-UR27UDTB.js +354 -0
- package/dist/chunk-UWZ4G3SQ.js +93 -0
- package/dist/{chunk-Y72HH2TF.cjs → chunk-V3SZLWEQ.cjs} +33 -24
- package/dist/chunk-V4HGZSKQ.cjs +183 -0
- package/dist/{chunk-3PDTTAKJ.js → chunk-V5ELP2XE.js} +19 -12
- package/dist/{chunk-3K2ESU53.cjs → chunk-VKOXFT4L.cjs} +2 -2
- package/dist/{chunk-XTB6VJVQ.cjs → chunk-VLGGMQUN.cjs} +6 -6
- package/dist/chunk-VQHSYAPZ.cjs +3897 -0
- package/dist/chunk-VUGOOGHB.js +400 -0
- package/dist/chunk-W5QLA6WP.cjs +866 -0
- package/dist/chunk-WBU4Q4GS.cjs +400 -0
- package/dist/{chunk-KWXVKLQ5.cjs → chunk-WGNMOVMT.cjs} +7 -82
- package/dist/chunk-WJYFLQ7G.cjs +27 -0
- package/dist/{chunk-RKJTGGMU.cjs → chunk-WKRDBCP2.cjs} +221 -16
- package/dist/{chunk-ZSPXQYG2.js → chunk-WNJXIACY.js} +7 -5
- package/dist/{chunk-AYS2ASM7.js → chunk-WPE2XHVX.js} +1 -1
- package/dist/chunk-WTB7AFL6.cjs +101 -0
- package/dist/{chunk-JYTDYJVW.js → chunk-X3TI5TJJ.js} +1 -1
- package/dist/chunk-X5P6QQOB.cjs +719 -0
- package/dist/{chunk-245KJE5Y.cjs → chunk-X7XMITIL.cjs} +14 -6
- package/dist/chunk-XF2WIKHR.cjs +34 -0
- package/dist/{chunk-DV2ZHK7B.cjs → chunk-XNIMSVS6.cjs} +49 -26
- package/dist/chunk-XW3XCK4E.cjs +59 -0
- package/dist/{chunk-N23UAW4I.js → chunk-XZVDYC5U.js} +7 -2
- package/dist/chunk-Y5BDE24P.cjs +444 -0
- package/dist/{chunk-NAGQ2PDC.js → chunk-YC5OBZQU.js} +1604 -433
- package/dist/chunk-YISPVAXO.cjs +2340 -0
- package/dist/{chunk-KQGPTCQJ.js → chunk-YQDI753V.js} +68 -25
- package/dist/{chunk-UJ2JSM6H.js → chunk-YVQI26H4.js} +2 -0
- package/dist/{chunk-NNPAM4HC.cjs → chunk-YWH55BWK.cjs} +15 -6
- package/dist/{chunk-X2YOZQIP.cjs → chunk-YWTIXHU6.cjs} +266 -19
- package/dist/{chunk-XX2ZO7DS.js → chunk-YXM6SA7P.js} +25 -16
- package/dist/chunk-YZWE7XSM.js +5 -0
- package/dist/chunk-ZASDSY7P.cjs +114 -0
- package/dist/{chunk-2UC22DJU.js → chunk-ZNGRLCFQ.js} +30 -4
- package/dist/{chunk-KANW6OYC.cjs → chunk-ZNYZB7XY.cjs} +34 -8
- package/dist/{chunk-NA6WQDYW.js → chunk-ZPLCAXJW.js} +1088 -116
- package/dist/{chunk-7UOUW76C.js → chunk-ZQAT5VT5.js} +101 -24
- package/dist/chunk-ZUYYHKQA.js +44 -0
- package/dist/clear-QJXU25IF.cjs +12 -0
- package/dist/{clear-A3N4GK2S.js → clear-Y5TO3RZA.js} +3 -3
- package/dist/communityInstaller-LXMVKVAV.cjs +22 -0
- package/dist/{communityInstaller-LOP2EDH5.js → communityInstaller-RVL4STPS.js} +8 -5
- package/dist/completion-JX4T2ONW.cjs +17 -0
- package/dist/completion-SE3XYG74.js +17 -0
- package/dist/config-3224PRW4.cjs +21 -0
- package/dist/{config-HPJPKTO6.js → config-7KPHKFTP.js} +7 -4
- package/dist/{constants-LISJW3DD.js → constants-EJFAWJQI.js} +1 -1
- package/dist/constants-MCCGUU5F.cjs +21 -0
- package/dist/{defaultHooks-IHSJR2AX.cjs → defaultHooks-2V2CQL63.cjs} +25 -10
- package/dist/{defaultHooks-KUKHK3AG.js → defaultHooks-TMHDU3FS.js} +25 -10
- package/dist/export-BJVIDZC4.js +15 -0
- package/dist/export-KU4557HK.cjs +15 -0
- package/dist/feature-K3LG5IJP.cjs +14 -0
- package/dist/feature-V4JF5TNJ.js +14 -0
- package/dist/features-5OJTLKS7.js +23 -0
- package/dist/features-VCBJQXCX.cjs +23 -0
- package/dist/feedback-D4437VE4.js +18 -0
- package/dist/feedback-VZPEHGFY.cjs +18 -0
- package/dist/fffSearchProvider-2YCNKOYD.js +412 -0
- package/dist/fffSearchProvider-W6627E2V.cjs +412 -0
- package/dist/{filesystem-Z7BWAWMZ.js → filesystem-L6DQKGWK.js} +3 -2
- package/dist/filesystem-PGUPCMVK.cjs +11 -0
- package/dist/go-X4E6BCD6.js +12 -0
- package/dist/go-XREVFS5I.cjs +12 -0
- package/dist/goal-4M3J6JS2.cjs +16 -0
- package/dist/goal-EI66BV7W.js +16 -0
- package/dist/help-GGFS7WHY.cjs +12 -0
- package/dist/{help-GFQXNZOK.js → help-MLIROWKM.js} +2 -2
- package/dist/{history-E3N6BJP7.js → history-GQJ6RZD6.js} +2 -2
- package/dist/history-J4LUIOSI.cjs +14 -0
- package/dist/hooks-FSRIUS6A.cjs +18 -0
- package/dist/hooks-PPFHCF7T.js +18 -0
- package/dist/i18n-CI6VFXL5.cjs +33 -0
- package/dist/{i18n-SY7QRM22.js → i18n-Q7UZJRPL.js} +1 -1
- package/dist/ide-BUSVE54P.js +15 -0
- package/dist/ide-YR27BPGM.cjs +15 -0
- package/dist/immediateCommandRouter-MTEHZXQX.js +15 -0
- package/dist/immediateCommandRouter-ROXU3MWT.cjs +15 -0
- package/dist/{import-W7SVLSTC.js → import-3VBKI6BN.js} +3 -3
- package/dist/{import-ADI37ZUR.cjs → import-C7S6UJMW.cjs} +3 -3
- package/dist/import-DBK4OCDF.cjs +10 -0
- package/dist/{import-KGKKZ3B7.js → import-U47DXCA7.js} +2 -2
- package/dist/index.cjs +837 -23011
- package/dist/index.d.cts +95 -0
- package/dist/index.d.ts +95 -0
- package/dist/index.js +864 -23038
- package/dist/init-OXTYS72D.cjs +10 -0
- package/dist/{init-7MFK626E.js → init-Q2O4R42R.js} +2 -2
- package/dist/inkMode-VUE6ZDLD.cjs +7 -0
- package/dist/inkMode-WBNFOSAT.js +7 -0
- package/dist/inputPrompt-3CFZDUBH.js +90 -0
- package/dist/inputPrompt-JMACL4EB.cjs +90 -0
- package/dist/language-EK3M6UBV.cjs +22 -0
- package/dist/language-Q3RUGGOW.js +22 -0
- package/dist/learn-3DSX7DYG.cjs +23 -0
- package/dist/learn-OPOH5L43.js +23 -0
- package/dist/login-GST7MWXJ.cjs +27 -0
- package/dist/login-Q7DZKAX4.js +27 -0
- package/dist/logout-2G7OUK7I.cjs +24 -0
- package/dist/logout-FNBBL2UI.js +24 -0
- package/dist/mcp-AH3MMUBU.js +21 -0
- package/dist/mcp-DW7R63IB.cjs +21 -0
- package/dist/{mcp-install-2FEROZTL.js → mcp-install-222PCKSW.js} +18 -10
- package/dist/{mcp-install-WM6BQRI5.cjs → mcp-install-IA4ZS2SV.cjs} +22 -14
- package/dist/memory-6NX3DAIY.cjs +10 -0
- package/dist/{memory-J73WZH2I.js → memory-VB46T5H3.js} +2 -2
- package/dist/model-64NAELFS.cjs +10 -0
- package/dist/{model-AES267IN.js → model-SJJG64AM.js} +2 -2
- package/dist/new-DU5SOOOY.cjs +12 -0
- package/dist/{new-5CLF3MKH.js → new-ERZ5C6CN.js} +3 -3
- package/dist/onboarding-2U2BV2KE.cjs +36 -0
- package/dist/onboarding-ZQXMPSMJ.js +36 -0
- package/dist/permissions-7ACNFK7A.js +10 -0
- package/dist/permissions-GSNNV7RJ.cjs +10 -0
- package/dist/plan-XEJMOT55.cjs +13 -0
- package/dist/{plan-65HMS5HQ.js → plan-YYUAXPTL.js} +3 -1
- package/dist/pr-review-CW6J7P62.cjs +9 -0
- package/dist/pr-review-YZSBQVT2.js +9 -0
- package/dist/{quit-XDZYRSPU.js → quit-WY6T267G.js} +2 -2
- package/dist/quit-XIRE2KRE.cjs +10 -0
- package/dist/rawMode-6W5AXAKI.cjs +7 -0
- package/dist/rawMode-GFNLXQPU.js +7 -0
- package/dist/{registry-PTHWERKC.js → registry-4DXUDKJN.js} +29 -44
- package/dist/{registry-IVT4G2RT.cjs → registry-UEO3ETZ7.cjs} +65 -80
- package/dist/repeat-P4FAPE3Y.cjs +17 -0
- package/dist/{repeat-EVCWUL6Z.js → repeat-RALE6AUO.js} +7 -3
- package/dist/resume-RQZ3WXBP.cjs +17 -0
- package/dist/resume-XSXZMDMD.js +17 -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-XH7QLN4H.js +3874 -0
- package/dist/rpc-YF54T7JU.cjs +3874 -0
- package/dist/search-VXXFGZWU.cjs +21 -0
- package/dist/search-YAWGX7P7.js +21 -0
- package/dist/{sessions-6GWEBMKS.js → sessions-NJYHJOEL.js} +2 -2
- package/dist/sessions-OSG3UJEZ.cjs +10 -0
- package/dist/settings-SO2UIGWV.cjs +42 -0
- package/dist/settings-ZXUQH3DO.js +42 -0
- package/dist/setup-KG7EGKF5.js +30 -0
- package/dist/setup-RSOPCQ57.cjs +30 -0
- package/dist/share-WFAGZ5PY.js +17 -0
- package/dist/share-ZU3SGACF.cjs +17 -0
- package/dist/skills-KBVAQAD2.cjs +29 -0
- package/dist/skills-NBTNDVAY.js +29 -0
- package/dist/{skills-ZZCIAS7C.js → skills-OB6RDW7D.js} +10 -7
- package/dist/{skills-PG542VEB.cjs → skills-ZROBG3RZ.cjs} +13 -10
- package/dist/{skills-install-SRC3Z2MS.js → skills-install-BHTIEMKH.js} +21 -70
- package/dist/{skills-install-67DOBPJC.cjs → skills-install-ILX6QVEF.cjs} +34 -83
- package/dist/skills-new-B45VQ2PP.cjs +18 -0
- package/dist/skills-new-YMRP2HNO.js +18 -0
- package/dist/slashCommands-53VYIBJU.js +105 -0
- package/dist/slashCommands-BG2RGGZ6.cjs +105 -0
- package/dist/status-CQ2IUOVK.cjs +24 -0
- package/dist/status-E7IGNVPC.js +24 -0
- package/dist/summarizer-DGPHE5IQ.js +17 -0
- package/dist/summarizer-JNXLUAQG.cjs +17 -0
- package/dist/sync-7C25MOT2.js +22 -0
- package/dist/{sync-VU2NSJ4O.js → sync-OCJN4ZSO.js} +3 -3
- package/dist/sync-XRP46IVG.cjs +40 -0
- package/dist/sync-ZMFVE7T4.cjs +22 -0
- package/dist/{teammate-SXRVXNQV.cjs → teammate-D77B6QRT.cjs} +31 -9
- package/dist/{teammate-SD26GR37.js → teammate-EZCMHOIL.js} +30 -8
- package/dist/templates-ARG2VRWW.cjs +11 -0
- package/dist/templates-UGVZV3KJ.js +11 -0
- package/dist/theme-KKRDE6P7.cjs +22 -0
- package/dist/theme-XF7XIWBQ.js +22 -0
- package/dist/tools-3PPTTKFV.js +9 -0
- package/dist/tools-THIQA7WC.cjs +9 -0
- package/dist/ui/questionModal.cjs +8 -5
- package/dist/ui/questionModal.js +7 -4
- package/dist/{undo-OL2EDBRY.js → undo-GNUTFXCW.js} +2 -2
- package/dist/undo-U4KN7QQM.cjs +10 -0
- package/dist/usage-QSTNSDAO.js +24 -0
- package/dist/usage-YDEMQBNQ.cjs +24 -0
- 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 +51 -49
- package/dist/AgentRegistry-HRPN6ZOF.cjs +0 -10
- package/dist/CommunitySkillsCache-KE435RAR.cjs +0 -8
- package/dist/GitHubRegistryFetcher-I45SESIL.cjs +0 -7
- package/dist/LearnAdvisor-FLBA6FDD.js +0 -9
- package/dist/LearnAdvisor-GG3CXQF3.cjs +0 -9
- package/dist/MemoryManager-2LQPIYVE.cjs +0 -8
- package/dist/PermissionManager-X57BXHJ6.cjs +0 -11
- package/dist/ProviderFactory-KPJOGQWF.cjs +0 -9
- package/dist/SessionManager-YBJAZXNO.cjs +0 -10
- package/dist/SkillsRegistry-7O72A6TZ.cjs +0 -9
- package/dist/SubAgent-JT4HZHN7.js +0 -11
- package/dist/SubAgent-VPNYDWAU.cjs +0 -11
- package/dist/SyncApiClient-HQXJL5BT.cjs +0 -11
- package/dist/about-4DB5KTHW.js +0 -12
- package/dist/about-LXAOXZFT.cjs +0 -12
- package/dist/actionExecutor-23JB2WUC.js +0 -19
- package/dist/actionExecutor-X5UEZSKH.cjs +0 -19
- package/dist/add-dir-YC37DMSF.cjs +0 -10
- package/dist/agents-YF3BSUU5.js +0 -12
- package/dist/agents-ZOUHPMYR.cjs +0 -12
- package/dist/agents-new-HSH4GQPG.js +0 -14
- package/dist/agents-new-VYUDOCE7.cjs +0 -14
- package/dist/autoSkill-X5W52WOE.cjs +0 -20
- package/dist/automode-SJGM7VEI.cjs +0 -10
- package/dist/chunk-ALYU6VTM.js +0 -105
- package/dist/chunk-B53A2NM2.js +0 -2030
- package/dist/chunk-BJXSNT46.js +0 -100
- package/dist/chunk-CB4E2T5N.cjs +0 -312
- package/dist/chunk-DNUOXBHL.js +0 -539
- package/dist/chunk-EFX2QSZX.cjs +0 -33
- package/dist/chunk-GCXYXLRA.cjs +0 -111
- package/dist/chunk-H2ZRHQQV.js +0 -33
- package/dist/chunk-HNRPK5MY.cjs +0 -85
- package/dist/chunk-HVKOZ2VP.cjs +0 -115
- package/dist/chunk-JJLYWH5Y.cjs +0 -100
- package/dist/chunk-LWUJFGOZ.js +0 -115
- package/dist/chunk-MERYP6AM.cjs +0 -539
- package/dist/chunk-MZAPWNAC.cjs +0 -207
- package/dist/chunk-NTSDP2WB.js +0 -226
- package/dist/chunk-OUZQXMHL.cjs +0 -226
- package/dist/chunk-PGESAU2W.cjs +0 -2030
- package/dist/chunk-SYVYLZZF.cjs +0 -24
- package/dist/chunk-SZOLA6FR.js +0 -111
- package/dist/chunk-VWDHR4HV.js +0 -168
- package/dist/chunk-Y45G6ZO5.cjs +0 -168
- package/dist/chunk-YRLYSQEQ.cjs +0 -105
- package/dist/chunk-ZYVS43MU.js +0 -312
- package/dist/clear-GK4IEUUS.cjs +0 -12
- package/dist/communityInstaller-XXC7RLE4.cjs +0 -19
- package/dist/completion-HWABSAEL.js +0 -14
- package/dist/completion-IUUVQG4D.cjs +0 -14
- package/dist/config-HF7WOLZF.cjs +0 -18
- package/dist/constants-PEO3P2SJ.cjs +0 -21
- package/dist/export-QJAV2FCZ.js +0 -12
- package/dist/export-XSRFXGWU.cjs +0 -12
- package/dist/feedback-4TCIL3ML.cjs +0 -15
- package/dist/feedback-SJ6VVEY3.js +0 -15
- package/dist/filesystem-W56QZUJF.cjs +0 -10
- package/dist/help-ISBVQL3S.cjs +0 -12
- package/dist/history-XQ4GTSFU.cjs +0 -14
- package/dist/hooks-CJNKJ5PF.js +0 -13
- package/dist/hooks-UTMBTAXT.cjs +0 -13
- package/dist/i18n-N7QQ7A5M.cjs +0 -33
- package/dist/ide-RTA4UJV4.js +0 -12
- package/dist/ide-VWVOLIFF.cjs +0 -12
- package/dist/immediateCommandRouter-BW34JNXL.js +0 -9
- package/dist/immediateCommandRouter-SHOVNB5X.cjs +0 -9
- package/dist/import-ZLJVONXH.cjs +0 -10
- package/dist/init-TBKAB4LZ.cjs +0 -10
- package/dist/language-MDSHEXHB.cjs +0 -18
- package/dist/language-PXTQSHIG.js +0 -18
- package/dist/learn-623TW5EK.cjs +0 -20
- package/dist/learn-BCPV7GM2.js +0 -20
- package/dist/localProjectPermissions-BHQXEWZJ.cjs +0 -18
- package/dist/localProjectPermissions-GMOUYQM6.js +0 -18
- package/dist/login-QMVEETWJ.js +0 -20
- package/dist/login-QYMXAL3K.cjs +0 -20
- package/dist/logout-2CMTDAOJ.js +0 -18
- package/dist/logout-ZOHVZAUK.cjs +0 -18
- package/dist/mcp-IUVKK65S.js +0 -18
- package/dist/mcp-TXC7PYG3.cjs +0 -18
- package/dist/memory-WRIHDEPK.cjs +0 -10
- package/dist/model-RLP75SF5.cjs +0 -10
- package/dist/new-HLSFL6A4.cjs +0 -12
- package/dist/permissions-GP6FTGZ2.js +0 -13
- package/dist/permissions-O6EKKPOG.cjs +0 -13
- package/dist/plan-MCAXDIM2.cjs +0 -11
- package/dist/quit-TQX6GXA5.cjs +0 -10
- package/dist/repeat-BSPS5TWD.cjs +0 -13
- package/dist/resume-2GOPDLL4.cjs +0 -13
- package/dist/resume-37IUVDA6.js +0 -13
- package/dist/search-7KUSHIBL.cjs +0 -17
- package/dist/search-OJGDRIMA.js +0 -17
- package/dist/sessions-CYYCHSQG.cjs +0 -10
- package/dist/settings-2D7CAO66.cjs +0 -30
- package/dist/settings-BXR6SBJP.js +0 -30
- package/dist/share-BXQY5IQU.js +0 -14
- package/dist/share-OSFXZBGS.cjs +0 -14
- package/dist/skills-FL6O6AOM.cjs +0 -26
- package/dist/skills-PNKQZRNK.js +0 -26
- package/dist/skills-new-XFMEHHIF.cjs +0 -15
- package/dist/skills-new-ZNZPHUKS.js +0 -15
- package/dist/slashCommands-LLCNPK3X.js +0 -76
- package/dist/slashCommands-RXZZS6RE.cjs +0 -76
- package/dist/status-BCECUJXT.cjs +0 -11
- package/dist/status-EFO7MQU3.js +0 -11
- package/dist/sync-IJYJ6KKM.js +0 -18
- package/dist/sync-LFT6SBPF.cjs +0 -18
- package/dist/sync-U7SDPBNZ.cjs +0 -40
- package/dist/theme-AWBHSG7J.cjs +0 -18
- package/dist/theme-TQLBPJ2E.js +0 -18
- package/dist/undo-IBBGP7A2.cjs +0 -10
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkS5JNQIGLcjs = require('./chunk-S5JNQIGL.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkCK4HAHVYcjs = require('./chunk-CK4HAHVY.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkSY2P3Z5Wcjs = require('./chunk-SY2P3Z5W.cjs');
|
|
7
10
|
|
|
8
11
|
// src/commands/hooks.ts
|
|
9
12
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
@@ -38,7 +41,15 @@ var HOOK_EVENTS = [
|
|
|
38
41
|
"teammate-idle",
|
|
39
42
|
"task-assigned",
|
|
40
43
|
"task-completed",
|
|
41
|
-
"team-shutdown"
|
|
44
|
+
"team-shutdown",
|
|
45
|
+
// Review events
|
|
46
|
+
"review:start",
|
|
47
|
+
"review:end",
|
|
48
|
+
"review:paused",
|
|
49
|
+
"review:failed",
|
|
50
|
+
"review:completed",
|
|
51
|
+
// Mode events
|
|
52
|
+
"mode-change"
|
|
42
53
|
];
|
|
43
54
|
var EVENT_DESCRIPTIONS = {
|
|
44
55
|
"session-start": "When a session begins",
|
|
@@ -72,7 +83,20 @@ var EVENT_DESCRIPTIONS = {
|
|
|
72
83
|
"teammate-idle": "When a teammate becomes idle",
|
|
73
84
|
"task-assigned": "When a task is assigned to a teammate",
|
|
74
85
|
"task-completed": "When a task is marked as done",
|
|
75
|
-
"team-shutdown": "When team cleanup completes"
|
|
86
|
+
"team-shutdown": "When team cleanup completes",
|
|
87
|
+
// Review events
|
|
88
|
+
"review:start": "When a code review begins",
|
|
89
|
+
"review:end": "When a code review session ends",
|
|
90
|
+
"review:paused": "When a code review is paused",
|
|
91
|
+
"review:failed": "When a code review encounters an error",
|
|
92
|
+
"review:completed": "When a code review finishes successfully",
|
|
93
|
+
// Mode events
|
|
94
|
+
"mode-change": "When permission mode changes (unrestricted, yolo, etc.)",
|
|
95
|
+
// Context lifecycle events
|
|
96
|
+
"context:compact": "When context is compacted (messages removed/summarized)",
|
|
97
|
+
"context:overflow": "When context overflow is detected (API 400 error)",
|
|
98
|
+
"context:warning": "When context usage crosses warning threshold (80%)",
|
|
99
|
+
"context:critical": "When context usage crosses critical threshold (90%+)"
|
|
76
100
|
};
|
|
77
101
|
var HOOK_ICONS = {
|
|
78
102
|
// Script-based hooks
|
|
@@ -141,11 +165,11 @@ function getShortCommand(command) {
|
|
|
141
165
|
}
|
|
142
166
|
function displayHooksList(allHooks) {
|
|
143
167
|
console.log();
|
|
144
|
-
console.log(_chalk2.default.bold.cyan(
|
|
168
|
+
console.log(_chalk2.default.bold.cyan(_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.hooks.title")));
|
|
145
169
|
console.log(_chalk2.default.gray(" Lifecycle hooks run shell commands on events"));
|
|
146
170
|
console.log();
|
|
147
171
|
if (allHooks.length === 0) {
|
|
148
|
-
console.log(_chalk2.default.gray(` ${
|
|
172
|
+
console.log(_chalk2.default.gray(` ${_chunkSY2P3Z5Wcjs.t.call(void 0, "commands.hooks.noHooks")}`));
|
|
149
173
|
console.log();
|
|
150
174
|
return;
|
|
151
175
|
}
|
|
@@ -168,7 +192,13 @@ function displayHooksList(allHooks) {
|
|
|
168
192
|
"subagent-stop": "\u{1F916}",
|
|
169
193
|
"permission-request": "\u{1F510}",
|
|
170
194
|
"notification": "\u{1F514}",
|
|
171
|
-
"session-error": "\u274C"
|
|
195
|
+
"session-error": "\u274C",
|
|
196
|
+
// Review events
|
|
197
|
+
"review:start": "\u{1F50D}",
|
|
198
|
+
"review:end": "\u{1F4CB}",
|
|
199
|
+
"review:paused": "\u23F8\uFE0F",
|
|
200
|
+
"review:failed": "\u274C",
|
|
201
|
+
"review:completed": "\u2705"
|
|
172
202
|
};
|
|
173
203
|
for (const event of HOOK_EVENTS) {
|
|
174
204
|
const eventHooks = hooksByEvent.get(event);
|
|
@@ -219,7 +249,7 @@ async function hooks(ctx) {
|
|
|
219
249
|
const toggleLabel = settings.enabled !== false ? "\u25EF Disable all hooks" : "\u25CF Enable all hooks";
|
|
220
250
|
choices.push({ name: "toggle_global", message: toggleLabel });
|
|
221
251
|
}
|
|
222
|
-
const actionResult = await
|
|
252
|
+
const actionResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
223
253
|
type: "select",
|
|
224
254
|
name: "action",
|
|
225
255
|
message: "Action",
|
|
@@ -245,32 +275,32 @@ async function hooks(ctx) {
|
|
|
245
275
|
return null;
|
|
246
276
|
}
|
|
247
277
|
async function toggleHooksMulti(manager, allHooks) {
|
|
248
|
-
const
|
|
249
|
-
const eventTag =
|
|
278
|
+
const options = allHooks.map((h, i) => {
|
|
279
|
+
const eventTag = `[${h.event}]`;
|
|
250
280
|
const desc = h.description || getShortCommand(h.command);
|
|
251
281
|
return {
|
|
252
|
-
|
|
253
|
-
message: `${eventTag} ${desc}`,
|
|
282
|
+
label: `${eventTag} ${desc}`,
|
|
254
283
|
value: String(i),
|
|
255
|
-
|
|
284
|
+
checked: h.enabled !== false
|
|
256
285
|
};
|
|
257
286
|
});
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
287
|
+
let toggleCount = 0;
|
|
288
|
+
await _chunkCK4HAHVYcjs.showModal.call(void 0, {
|
|
289
|
+
title: "Toggle hooks \u2014 spacebar to enable/disable",
|
|
290
|
+
options,
|
|
291
|
+
multiSelect: true,
|
|
292
|
+
onToggle: async (option, _checked) => {
|
|
293
|
+
const idx = parseInt(option.value, 10);
|
|
294
|
+
const hook = allHooks[idx];
|
|
295
|
+
if (!hook) return;
|
|
296
|
+
const eventHooks = allHooks.filter((h) => h.event === hook.event);
|
|
297
|
+
const eventIndex = eventHooks.indexOf(hook);
|
|
298
|
+
await manager.toggleHook(hook.event, eventIndex);
|
|
299
|
+
toggleCount++;
|
|
300
|
+
}
|
|
264
301
|
});
|
|
265
|
-
if (
|
|
266
|
-
|
|
267
|
-
const hook = allHooks[selectedIndex];
|
|
268
|
-
if (hook) {
|
|
269
|
-
const eventHooks = allHooks.filter((h) => h.event === hook.event);
|
|
270
|
-
const eventIndex = eventHooks.indexOf(hook);
|
|
271
|
-
await manager.toggleHook(hook.event, eventIndex);
|
|
272
|
-
const newState = hook.enabled === false ? "enabled" : "disabled";
|
|
273
|
-
console.log(_chalk2.default.green(` \u2713 Hook ${newState}: ${hook.event}`));
|
|
302
|
+
if (toggleCount > 0) {
|
|
303
|
+
console.log(_chalk2.default.green(` \u2713 Toggled ${toggleCount} hook${toggleCount > 1 ? "s" : ""}`));
|
|
274
304
|
} else {
|
|
275
305
|
console.log(_chalk2.default.gray(" No changes made"));
|
|
276
306
|
}
|
|
@@ -281,26 +311,26 @@ async function addHook(manager) {
|
|
|
281
311
|
name: e,
|
|
282
312
|
message: `${e} ${_chalk2.default.dim(`- ${EVENT_DESCRIPTIONS[e]}`)}`
|
|
283
313
|
}));
|
|
284
|
-
const eventResult = await
|
|
314
|
+
const eventResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
285
315
|
type: "select",
|
|
286
316
|
name: "event",
|
|
287
317
|
message: "Event to hook into",
|
|
288
318
|
choices: eventChoices
|
|
289
319
|
});
|
|
290
320
|
if (!eventResult) return;
|
|
291
|
-
const commandResult = await
|
|
321
|
+
const commandResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
292
322
|
type: "input",
|
|
293
323
|
name: "command",
|
|
294
324
|
message: "Shell command to execute",
|
|
295
325
|
validate: (val) => typeof val === "string" && val.trim().length > 0 || "Command is required"
|
|
296
326
|
});
|
|
297
327
|
if (!commandResult || !commandResult.command) return;
|
|
298
|
-
const descResult = await
|
|
328
|
+
const descResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
299
329
|
type: "input",
|
|
300
330
|
name: "description",
|
|
301
331
|
message: "Description (optional)"
|
|
302
332
|
});
|
|
303
|
-
const asyncResult = await
|
|
333
|
+
const asyncResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
304
334
|
type: "confirm",
|
|
305
335
|
name: "async",
|
|
306
336
|
message: "Run asynchronously (non-blocking)?",
|
|
@@ -325,7 +355,7 @@ async function removeHook(manager, allHooks) {
|
|
|
325
355
|
message: `${eventTag} ${desc2}`
|
|
326
356
|
};
|
|
327
357
|
});
|
|
328
|
-
const selectResult = await
|
|
358
|
+
const selectResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
329
359
|
type: "select",
|
|
330
360
|
name: "hookIndex",
|
|
331
361
|
message: "Select hook to remove",
|
|
@@ -337,7 +367,7 @@ async function removeHook(manager, allHooks) {
|
|
|
337
367
|
const eventHooks = allHooks.filter((h) => h.event === hook.event);
|
|
338
368
|
const eventIndex = eventHooks.indexOf(hook);
|
|
339
369
|
const desc = hook.description || getShortCommand(hook.command);
|
|
340
|
-
const confirmResult = await
|
|
370
|
+
const confirmResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
341
371
|
type: "confirm",
|
|
342
372
|
name: "confirm",
|
|
343
373
|
message: `Remove "${desc}"?`,
|
|
@@ -360,7 +390,7 @@ async function testHook(manager, allHooks) {
|
|
|
360
390
|
message: `${eventTag} ${desc}`
|
|
361
391
|
};
|
|
362
392
|
});
|
|
363
|
-
const selectResult = await
|
|
393
|
+
const selectResult = await _chunkS5JNQIGLcjs.safePrompt.call(void 0, {
|
|
364
394
|
type: "select",
|
|
365
395
|
name: "hookIndex",
|
|
366
396
|
message: "Select hook to test",
|
|
@@ -391,14 +421,15 @@ async function testHook(manager, allHooks) {
|
|
|
391
421
|
}
|
|
392
422
|
var metadata = {
|
|
393
423
|
command: "/hooks",
|
|
394
|
-
description:
|
|
424
|
+
description: _chunkSY2P3Z5Wcjs.t.call(void 0, "commands.hooks.description"),
|
|
395
425
|
implemented: true
|
|
396
426
|
};
|
|
397
427
|
|
|
398
428
|
|
|
399
429
|
|
|
400
430
|
|
|
401
|
-
|
|
431
|
+
|
|
432
|
+
exports.HOOK_EVENTS = HOOK_EVENTS; exports.hooks = hooks; exports.metadata = metadata;
|
|
402
433
|
/**
|
|
403
434
|
* @license
|
|
404
435
|
* Copyright 2025 Autohand AI LLC
|
|
@@ -7,6 +7,12 @@ var DEFAULT_MAX_RETRIES = 3;
|
|
|
7
7
|
var DEFAULT_RETRY_DELAY = 1e3;
|
|
8
8
|
var MAX_FILES_PER_REQUEST = 100;
|
|
9
9
|
var SyncApiClient = class {
|
|
10
|
+
baseUrl;
|
|
11
|
+
timeout;
|
|
12
|
+
maxFileSize;
|
|
13
|
+
maxTotalSize;
|
|
14
|
+
maxRetries;
|
|
15
|
+
retryDelay;
|
|
10
16
|
constructor(config) {
|
|
11
17
|
this.baseUrl = config?.baseUrl || DEFAULT_BASE_URL;
|
|
12
18
|
this.timeout = config?.timeout || DEFAULT_TIMEOUT;
|
|
@@ -109,8 +115,7 @@ var SyncApiClient = class {
|
|
|
109
115
|
"Content-Type": "application/json"
|
|
110
116
|
},
|
|
111
117
|
body: JSON.stringify({
|
|
112
|
-
|
|
113
|
-
...batchIndex === 0 ? { manifest } : {},
|
|
118
|
+
manifest,
|
|
114
119
|
files: batch
|
|
115
120
|
})
|
|
116
121
|
}
|
|
@@ -130,18 +135,22 @@ var SyncApiClient = class {
|
|
|
130
135
|
/**
|
|
131
136
|
* Upload a file to a pre-signed URL
|
|
132
137
|
*/
|
|
133
|
-
async uploadFile(uploadUrl, content) {
|
|
138
|
+
async uploadFile(uploadUrl, content, token) {
|
|
134
139
|
if (content.length > this.maxFileSize) {
|
|
135
140
|
throw new Error(`File exceeds max size of ${this.maxFileSize} bytes`);
|
|
136
141
|
}
|
|
142
|
+
const headers = {
|
|
143
|
+
"Content-Type": "application/octet-stream",
|
|
144
|
+
"Content-Length": content.length.toString()
|
|
145
|
+
};
|
|
146
|
+
if (token) {
|
|
147
|
+
headers.Authorization = `Bearer ${token}`;
|
|
148
|
+
}
|
|
137
149
|
const response = await this.fetchWithRetry(
|
|
138
150
|
uploadUrl,
|
|
139
151
|
{
|
|
140
152
|
method: "PUT",
|
|
141
|
-
headers
|
|
142
|
-
"Content-Type": "application/octet-stream",
|
|
143
|
-
"Content-Length": content.length.toString()
|
|
144
|
-
},
|
|
153
|
+
headers,
|
|
145
154
|
body: new Uint8Array(content)
|
|
146
155
|
}
|
|
147
156
|
);
|
|
@@ -228,10 +237,11 @@ var SyncApiClient = class {
|
|
|
228
237
|
/**
|
|
229
238
|
* Download a file from a pre-signed URL
|
|
230
239
|
*/
|
|
231
|
-
async downloadFile(downloadUrl) {
|
|
240
|
+
async downloadFile(downloadUrl, token) {
|
|
241
|
+
const headers = token ? { Authorization: `Bearer ${token}` } : void 0;
|
|
232
242
|
const response = await this.fetchWithRetry(
|
|
233
243
|
downloadUrl,
|
|
234
|
-
{ method: "GET" }
|
|
244
|
+
{ method: "GET", ...headers ? { headers } : {} }
|
|
235
245
|
);
|
|
236
246
|
if (!response.ok) {
|
|
237
247
|
throw new Error(`Download failed: ${response.status}`);
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
// src/features/featureRegistry.ts
|
|
2
|
+
var AWS_BEDROCK_PROVIDER_FLAG = "aws_bedrock_provider";
|
|
3
|
+
var FEATURE_REGISTRY = [
|
|
4
|
+
{
|
|
5
|
+
id: "mcp",
|
|
6
|
+
label: "MCP tools",
|
|
7
|
+
description: "Connect configured Model Context Protocol servers and expose their tools.",
|
|
8
|
+
stage: "stable",
|
|
9
|
+
configPath: "mcp.enabled",
|
|
10
|
+
defaultEnabled: true,
|
|
11
|
+
requiresRestart: true
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: "hooks",
|
|
15
|
+
label: "Lifecycle hooks",
|
|
16
|
+
description: "Run configured shell hooks around prompts, tools, sessions, and notifications.",
|
|
17
|
+
stage: "stable",
|
|
18
|
+
configPath: "hooks.enabled",
|
|
19
|
+
defaultEnabled: true
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "teams",
|
|
23
|
+
label: "Agent teams",
|
|
24
|
+
description: "Enable multi-agent team coordination commands and teammate execution.",
|
|
25
|
+
stage: "experimental",
|
|
26
|
+
configPath: "teams.enabled",
|
|
27
|
+
defaultEnabled: true
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: "community_skills",
|
|
31
|
+
label: "Community skills",
|
|
32
|
+
description: "Enable discovery and use of community skill packs.",
|
|
33
|
+
stage: "stable",
|
|
34
|
+
configPath: "communitySkills.enabled",
|
|
35
|
+
defaultEnabled: true
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "prompt_suggestions",
|
|
39
|
+
label: "Prompt suggestions",
|
|
40
|
+
description: "Show generated next-step suggestions in the interactive prompt placeholder.",
|
|
41
|
+
stage: "stable",
|
|
42
|
+
configPath: "ui.promptSuggestions",
|
|
43
|
+
defaultEnabled: true
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "request_queue",
|
|
47
|
+
label: "Request queue",
|
|
48
|
+
description: "Allow typing follow-up requests while the agent is still working.",
|
|
49
|
+
stage: "stable",
|
|
50
|
+
configPath: "agent.enableRequestQueue",
|
|
51
|
+
defaultEnabled: true
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: "thinking_display",
|
|
55
|
+
label: "Thinking display",
|
|
56
|
+
description: "Show model thinking or reasoning blocks when the provider returns them.",
|
|
57
|
+
stage: "stable",
|
|
58
|
+
configPath: "ui.showThinking",
|
|
59
|
+
defaultEnabled: true
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: "completion_notifications",
|
|
63
|
+
label: "Completion notifications",
|
|
64
|
+
description: "Show desktop notifications when an agent turn completes.",
|
|
65
|
+
stage: "stable",
|
|
66
|
+
configPath: "ui.showCompletionNotification",
|
|
67
|
+
defaultEnabled: true
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: "terminal_bell",
|
|
71
|
+
label: "Terminal bell",
|
|
72
|
+
description: "Ring the terminal bell when work completes.",
|
|
73
|
+
stage: "stable",
|
|
74
|
+
configPath: "ui.terminalBell",
|
|
75
|
+
defaultEnabled: true
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: "tool_selection_cache",
|
|
79
|
+
label: "Tool selection cache",
|
|
80
|
+
description: "Cache local tool-schema selection for equivalent turns.",
|
|
81
|
+
stage: "stable",
|
|
82
|
+
configPath: "agent.toolSelectionCache",
|
|
83
|
+
defaultEnabled: true
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: "usage_v2",
|
|
87
|
+
label: "Usage v2",
|
|
88
|
+
description: "Show the v2 usage dashboard with model, provider, context, and limit details.",
|
|
89
|
+
stage: "experimental",
|
|
90
|
+
configPath: "features.usageV2",
|
|
91
|
+
defaultEnabled: false
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: AWS_BEDROCK_PROVIDER_FLAG,
|
|
95
|
+
label: "AWS Bedrock provider",
|
|
96
|
+
description: "Enable AWS Bedrock as a first-class model provider.",
|
|
97
|
+
stage: "experimental",
|
|
98
|
+
configPath: "features.awsBedrockProvider",
|
|
99
|
+
defaultEnabled: true,
|
|
100
|
+
requiresRestart: true
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: "slash_goal",
|
|
104
|
+
label: "Slash goal",
|
|
105
|
+
description: "Enable experimental persistent goals across /goal, --goal, tools, RPC, and ACP.",
|
|
106
|
+
stage: "experimental",
|
|
107
|
+
configPath: "features.slashGoal",
|
|
108
|
+
defaultEnabled: false
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: "chrome_integration",
|
|
112
|
+
label: "Chrome integration",
|
|
113
|
+
description: "Start the browser bridge by default for Chrome extension handoff.",
|
|
114
|
+
stage: "experimental",
|
|
115
|
+
configPath: "chrome.enabledByDefault",
|
|
116
|
+
defaultEnabled: false,
|
|
117
|
+
requiresRestart: true
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: "telemetry",
|
|
121
|
+
label: "Telemetry",
|
|
122
|
+
description: "Share anonymized product telemetry when explicitly enabled.",
|
|
123
|
+
stage: "stable",
|
|
124
|
+
configPath: "telemetry.enabled",
|
|
125
|
+
defaultEnabled: false
|
|
126
|
+
}
|
|
127
|
+
];
|
|
128
|
+
function isAwsBedrockProviderEnabled(config) {
|
|
129
|
+
const definition = FEATURE_REGISTRY.find((feature) => feature.id === AWS_BEDROCK_PROVIDER_FLAG);
|
|
130
|
+
return config?.features?.awsBedrockProvider ?? definition?.defaultEnabled ?? true;
|
|
131
|
+
}
|
|
132
|
+
var LOCAL_FEATURE_IDS = new Set(FEATURE_REGISTRY.map((feature) => feature.id));
|
|
133
|
+
function isLocalFeatureId(id) {
|
|
134
|
+
return LOCAL_FEATURE_IDS.has(id);
|
|
135
|
+
}
|
|
136
|
+
function isRecord(value) {
|
|
137
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
138
|
+
}
|
|
139
|
+
function getNestedValue(root, configPath) {
|
|
140
|
+
let current = root;
|
|
141
|
+
for (const part of configPath.split(".")) {
|
|
142
|
+
if (!isRecord(current)) {
|
|
143
|
+
return void 0;
|
|
144
|
+
}
|
|
145
|
+
current = current[part];
|
|
146
|
+
}
|
|
147
|
+
return current;
|
|
148
|
+
}
|
|
149
|
+
function setNestedValue(root, configPath, value) {
|
|
150
|
+
const parts = configPath.split(".");
|
|
151
|
+
let current = root;
|
|
152
|
+
for (const part of parts.slice(0, -1)) {
|
|
153
|
+
const existing = current[part];
|
|
154
|
+
if (!isRecord(existing)) {
|
|
155
|
+
current[part] = {};
|
|
156
|
+
}
|
|
157
|
+
current = current[part];
|
|
158
|
+
}
|
|
159
|
+
current[parts[parts.length - 1]] = value;
|
|
160
|
+
}
|
|
161
|
+
function getRemoteFeatureStates(config, options = {}) {
|
|
162
|
+
const remoteOverrides = config.features?.remoteOverrides || {};
|
|
163
|
+
const snapshot = options.remoteSnapshot;
|
|
164
|
+
if (!snapshot) return [];
|
|
165
|
+
return snapshot.flags.filter((flag) => !isLocalFeatureId(flag.key)).map((flag) => {
|
|
166
|
+
const localOverride = remoteOverrides[flag.key] === "off" ? "off" : void 0;
|
|
167
|
+
return {
|
|
168
|
+
id: flag.key,
|
|
169
|
+
label: flag.key,
|
|
170
|
+
description: `Remote feature flag (${flag.reason})`,
|
|
171
|
+
stage: "experimental",
|
|
172
|
+
defaultEnabled: false,
|
|
173
|
+
enabled: flag.enabled && localOverride !== "off",
|
|
174
|
+
source: "remote",
|
|
175
|
+
remoteEnabled: flag.enabled,
|
|
176
|
+
reason: flag.reason,
|
|
177
|
+
userOverridable: flag.userOverridable,
|
|
178
|
+
localOverride,
|
|
179
|
+
lastEvaluatedAt: snapshot.evaluatedAt
|
|
180
|
+
};
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
function getFeatureState(config, id, options = {}) {
|
|
184
|
+
const definition = FEATURE_REGISTRY.find((feature) => feature.id === id);
|
|
185
|
+
if (definition) {
|
|
186
|
+
const rawValue = definition.configPath ? getNestedValue(config, definition.configPath) : void 0;
|
|
187
|
+
return {
|
|
188
|
+
...definition,
|
|
189
|
+
source: "local",
|
|
190
|
+
enabled: typeof rawValue === "boolean" ? rawValue : definition.defaultEnabled
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
return getRemoteFeatureStates(config, options).find((feature) => feature.id === id);
|
|
194
|
+
}
|
|
195
|
+
function listFeatureStates(config, options = {}) {
|
|
196
|
+
const local = FEATURE_REGISTRY.map((feature) => ({
|
|
197
|
+
...feature,
|
|
198
|
+
source: "local",
|
|
199
|
+
enabled: getFeatureState(config, feature.id, options)?.enabled ?? feature.defaultEnabled
|
|
200
|
+
}));
|
|
201
|
+
return [...local, ...getRemoteFeatureStates(config, options)];
|
|
202
|
+
}
|
|
203
|
+
function setFeatureState(config, id, enabled, options = {}) {
|
|
204
|
+
const definition = FEATURE_REGISTRY.find((feature) => feature.id === id);
|
|
205
|
+
if (definition) {
|
|
206
|
+
if (!definition.configPath) {
|
|
207
|
+
return { ok: false, error: `Feature "${id}" cannot be changed locally.` };
|
|
208
|
+
}
|
|
209
|
+
setNestedValue(config, definition.configPath, enabled);
|
|
210
|
+
return {
|
|
211
|
+
ok: true,
|
|
212
|
+
feature: getFeatureState(config, id, options)
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
const remoteFeature = getRemoteFeatureStates(config, options).find((feature) => feature.id === id);
|
|
216
|
+
if (!remoteFeature) {
|
|
217
|
+
return { ok: false, error: `Unknown feature "${id}".` };
|
|
218
|
+
}
|
|
219
|
+
config.features ||= {};
|
|
220
|
+
config.features.remoteOverrides ||= {};
|
|
221
|
+
if (enabled) {
|
|
222
|
+
delete config.features.remoteOverrides[id];
|
|
223
|
+
return { ok: true, feature: getFeatureState(config, id, options) };
|
|
224
|
+
}
|
|
225
|
+
if (!remoteFeature.userOverridable) {
|
|
226
|
+
return { ok: false, error: `Feature "${id}" is controlled remotely and cannot be changed locally.` };
|
|
227
|
+
}
|
|
228
|
+
config.features.remoteOverrides[id] = "off";
|
|
229
|
+
return { ok: true, feature: getFeatureState(config, id, options) };
|
|
230
|
+
}
|
|
231
|
+
function formatFeatureList(config, options = {}) {
|
|
232
|
+
const states = listFeatureStates(config, options);
|
|
233
|
+
const idWidth = Math.max(...states.map((feature) => feature.id.length), "feature".length);
|
|
234
|
+
const sourceWidth = Math.max(...states.map((feature) => feature.source.length), "source".length);
|
|
235
|
+
const stageWidth = Math.max(...states.map((feature) => feature.stage.length), "stage".length);
|
|
236
|
+
return states.map((feature) => `${feature.id.padEnd(idWidth + 2)}${feature.source.padEnd(sourceWidth + 2)}${feature.stage.padEnd(stageWidth + 2)}${String(feature.enabled)}`).join("\n");
|
|
237
|
+
}
|
|
238
|
+
function formatFeatureStatus(config, id, options = {}) {
|
|
239
|
+
const feature = getFeatureState(config, id, options);
|
|
240
|
+
if (!feature) {
|
|
241
|
+
return `Unknown feature "${id}".`;
|
|
242
|
+
}
|
|
243
|
+
const restart = feature.requiresRestart ? "yes" : "no";
|
|
244
|
+
const lines = [
|
|
245
|
+
`${feature.id}`,
|
|
246
|
+
`Label: ${feature.label}`,
|
|
247
|
+
`Source: ${feature.source}`,
|
|
248
|
+
`Stage: ${feature.stage}`,
|
|
249
|
+
`Enabled: ${String(feature.enabled)}`,
|
|
250
|
+
`Config: ${feature.configPath || "remote"}`,
|
|
251
|
+
`Default: ${String(feature.defaultEnabled)}`,
|
|
252
|
+
`Restart required: ${restart}`,
|
|
253
|
+
`Description: ${feature.description}`
|
|
254
|
+
];
|
|
255
|
+
if (feature.source === "remote") {
|
|
256
|
+
lines.push(
|
|
257
|
+
`Remote enabled: ${String(feature.remoteEnabled)}`,
|
|
258
|
+
`Local override: ${feature.localOverride || "none"}`,
|
|
259
|
+
`Reason: ${feature.reason || "unknown"}`,
|
|
260
|
+
`User overridable: ${String(feature.userOverridable !== false)}`,
|
|
261
|
+
`Last evaluated: ${feature.lastEvaluatedAt || "never"}`
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
return lines.join("\n");
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export {
|
|
268
|
+
isAwsBedrockProviderEnabled,
|
|
269
|
+
isLocalFeatureId,
|
|
270
|
+
getFeatureState,
|
|
271
|
+
listFeatureStates,
|
|
272
|
+
setFeatureState,
|
|
273
|
+
formatFeatureList,
|
|
274
|
+
formatFeatureStatus
|
|
275
|
+
};
|
|
276
|
+
/**
|
|
277
|
+
* @license
|
|
278
|
+
* Copyright 2026 Autohand AI LLC
|
|
279
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
280
|
+
*/
|