autohand-cli 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +118 -76
- package/dist/AgentRegistry-BBQRODQC.cjs +18 -0
- package/dist/AgentRegistry-JBXZUPML.js +18 -0
- package/dist/{CommunitySkillsCache-ZEQWP6YM.js → CommunitySkillsCache-CI7UN2DX.js} +2 -2
- package/dist/CommunitySkillsCache-XTQ6RMTA.cjs +8 -0
- package/dist/{HookManager-CWLTFKWO.js → HookManager-BELBPQQI.js} +1 -1
- package/dist/{HookManager-TMAJQU4S.cjs → HookManager-ZL2CLAJW.cjs} +2 -2
- package/dist/{ImportWizard-MQXEED2U.cjs → ImportWizard-U6CIJREW.cjs} +13 -13
- package/dist/{ImportWizard-QBKQEXDW.js → ImportWizard-VJFSWSUQ.js} +4 -4
- package/dist/LearnAdvisor-LAURA3IB.cjs +9 -0
- package/dist/LearnAdvisor-RFOBXFG7.js +9 -0
- package/dist/MemoryManager-3A2VRPF2.js +9 -0
- package/dist/MemoryManager-UOEQZIDC.cjs +9 -0
- package/dist/{NVIDIAProvider-2HR737UE.js → NVIDIAProvider-AFNJNWJM.js} +1 -1
- package/dist/NVIDIAProvider-L5GTYRCQ.cjs +14 -0
- package/dist/{PermissionManager-KMYILJ4Z.js → PermissionManager-N2LDSOYF.js} +3 -3
- package/dist/PermissionManager-ZNURIEYR.cjs +11 -0
- package/dist/ProviderFactory-3BFS65V7.cjs +13 -0
- package/dist/{ProviderFactory-HFPRVQ25.js → ProviderFactory-XUT6BSGB.js} +4 -2
- package/dist/SessionManager-LGPQIA57.cjs +10 -0
- package/dist/{SessionManager-PNBTJJTQ.js → SessionManager-OR4KDDDS.js} +2 -2
- package/dist/{SkillsRegistry-4RRD5GMX.js → SkillsRegistry-IL3GWROU.js} +2 -2
- package/dist/SkillsRegistry-PM34DQNA.cjs +9 -0
- package/dist/SubAgent-2WG4QQB5.cjs +13 -0
- package/dist/SubAgent-ICGN23TQ.js +13 -0
- package/dist/{SyncApiClient-LRPFNCKJ.js → SyncApiClient-G3FM65IV.js} +1 -1
- package/dist/SyncApiClient-ODBDECOG.cjs +11 -0
- package/dist/{about-BW3PDZUU.js → about-OYVGQMJJ.js} +5 -4
- package/dist/about-U2BH7HDR.cjs +15 -0
- package/dist/{acp-VHEL7BOW.js → acp-JWHGXZL5.js} +207 -102
- package/dist/{acp-EOETGAHC.cjs → acp-S37JOBCS.cjs} +226 -121
- package/dist/actionExecutor-2QEPMELQ.cjs +28 -0
- package/dist/actionExecutor-6NCCORRB.js +28 -0
- package/dist/add-dir-KFUHSIR2.cjs +11 -0
- package/dist/{add-dir-VFX7QT4E.js → add-dir-MM2BM2Z2.js} +2 -2
- package/dist/agent-DUIYLIVN.js +132 -0
- package/dist/agent-YYEHGDAK.cjs +132 -0
- package/dist/agents-GBGG4CW7.cjs +19 -0
- package/dist/agents-ZH34C72F.js +19 -0
- package/dist/agents-new-ERXLS7SB.cjs +17 -0
- package/dist/agents-new-EVTGPTA4.js +17 -0
- package/dist/{autoSkill-EFMK6WU6.js → autoSkill-HEWKJ5JV.js} +2 -2
- package/dist/autoSkill-YL6PN6AV.cjs +20 -0
- package/dist/automode-4BJ7FNPL.cjs +10 -0
- package/dist/{automode-BMYSRM34.js → automode-S4U7A7Q2.js} +2 -2
- package/dist/chrome-45ZXHL5N.cjs +22 -0
- package/dist/{chrome-NHJ44WUN.js → chrome-BBSRVG6S.js} +2 -2
- package/dist/chrome-IFVZRHAT.cjs +50 -0
- package/dist/chrome-MYE6DNA2.js +22 -0
- package/dist/chunk-24CEJYEG.cjs +579 -0
- package/dist/{chunk-47PHDKNW.cjs → chunk-255GIVM2.cjs} +6 -6
- package/dist/{chunk-DIZTWFVR.cjs → chunk-2BDSR2OW.cjs} +238 -61
- package/dist/{chunk-BL2UC7HC.js → chunk-2BPIR7LA.js} +121 -4
- package/dist/{chunk-BQ22N3TX.cjs → chunk-2NY7OHBF.cjs} +47 -27
- package/dist/chunk-2WUNHTXL.js +303 -0
- package/dist/{chunk-HQWQZML5.cjs → chunk-34B6ZO6W.cjs} +124 -7
- package/dist/{chunk-5JTTM5SC.js → chunk-3BJN7GAH.js} +1 -1
- package/dist/{chunk-4256YRCO.cjs → chunk-3CAXECWJ.cjs} +30 -17
- package/dist/{chunk-KNTUI4TZ.cjs → chunk-3CBYUBZC.cjs} +5 -5
- package/dist/chunk-3DF3GZQ7.js +277 -0
- package/dist/{chunk-E26KKI46.cjs → chunk-3JURXAL6.cjs} +61 -8
- package/dist/{chunk-MOJ7ADW4.cjs → chunk-3KWAP2Y3.cjs} +88 -9
- package/dist/{chunk-OHWMWKJQ.js → chunk-3MCK6UBL.js} +1 -1
- package/dist/{chunk-5VHP6HDQ.js → chunk-3TH7IK4M.js} +62 -9
- package/dist/{chunk-ACDQGA4Z.js → chunk-3V77OB3W.js} +7 -72
- package/dist/{chunk-HS4USDND.cjs → chunk-3Y5UEK7K.cjs} +4 -4
- package/dist/{chunk-XV2HXRHX.js → chunk-4GPPSBEZ.js} +3 -3
- package/dist/chunk-5CMBAJ6K.js +377 -0
- package/dist/{chunk-MO4KP6XS.cjs → chunk-5YRXFBYZ.cjs} +35 -6
- package/dist/chunk-5ZNYX4VH.cjs +71 -0
- package/dist/chunk-6AC2TT26.js +156 -0
- package/dist/{chunk-UGFVM77J.cjs → chunk-6EIQ6A6U.cjs} +2 -2
- package/dist/{chunk-SWCQM52V.js → chunk-6HSEDXVF.js} +4 -4
- package/dist/{chunk-QQ7PANOP.js → chunk-6NUXK62F.js} +1 -1
- package/dist/{chunk-5CMYEM3R.cjs → chunk-6TGCAPYH.cjs} +62 -9
- package/dist/{chunk-NMQ47RCG.js → chunk-6W3SZCSP.js} +1 -1
- package/dist/{chunk-VRMZO6TB.js → chunk-73LV3DDZ.js} +7 -6
- package/dist/{chunk-3GUEUCZK.js → chunk-7BGGLIQF.js} +85 -1
- package/dist/{chunk-RBHANOYY.js → chunk-7DJJGKM6.js} +47 -3
- package/dist/{chunk-LQBONA55.cjs → chunk-7EEK7CRR.cjs} +85 -1
- package/dist/chunk-7TO3PDMV.cjs +324 -0
- package/dist/chunk-7UU22RSH.cjs +277 -0
- package/dist/{chunk-E6GFD7VR.cjs → chunk-A3GAM6FM.cjs} +11 -11
- package/dist/{chunk-DEQVRSV5.cjs → chunk-A7DJU75T.cjs} +8 -8
- package/dist/{chunk-DPSIGY6L.cjs → chunk-AAAO4ERQ.cjs} +9 -9
- package/dist/{chunk-FQAVGSPW.js → chunk-AAJLMP57.js} +2 -2
- package/dist/chunk-ABR756QN.js +529 -0
- package/dist/{chunk-JYKPWK5O.js → chunk-APFGDIPD.js} +3 -1
- package/dist/{chunk-Y3M2DABP.js → chunk-APQYRMYL.js} +4 -4
- package/dist/{chunk-Q2IL4DDI.cjs → chunk-AZKOIF2G.cjs} +62 -19
- package/dist/{chunk-MXVIDIC6.cjs → chunk-AZLHUPNC.cjs} +2 -2
- package/dist/chunk-B55VCYSQ.cjs +30 -0
- package/dist/{chunk-WZV6UVPY.js → chunk-BLQUMSM3.js} +1 -1
- package/dist/{chunk-PHJO5YAL.cjs → chunk-BXKPX6K4.cjs} +9 -9
- package/dist/{chunk-3KLSNNRW.cjs → chunk-C66FN2LP.cjs} +4 -4
- package/dist/{chunk-OV3PVUYN.js → chunk-CH7KUFAS.js} +9 -9
- package/dist/{chunk-CWINVFRI.cjs → chunk-CILSXOPI.cjs} +17 -17
- package/dist/{chunk-3UT7R3XV.js → chunk-CM24K6ZT.js} +145 -12
- package/dist/chunk-CMEZ42F2.cjs +303 -0
- package/dist/{chunk-46C73ZKK.cjs → chunk-CNQKIWIS.cjs} +152 -19
- package/dist/{chunk-5JFTY3VU.js → chunk-CSTUTDTH.js} +2 -1
- package/dist/{chunk-REMGR23V.cjs → chunk-CSUGNNJY.cjs} +10 -4
- package/dist/{chunk-TBOLJDUG.js → chunk-D6HB3H3L.js} +31 -11
- package/dist/{chunk-OM24WXEE.js → chunk-D7AYKVKW.js} +2 -2
- package/dist/{chunk-6GUODJKM.cjs → chunk-DLCXWOWT.cjs} +23 -23
- package/dist/{chunk-CH2J4PVE.cjs → chunk-DMM2BKSV.cjs} +121 -28
- package/dist/{chunk-M4KNC5BQ.js → chunk-DW3DPV77.js} +1 -1
- package/dist/chunk-ECQD2QC3.cjs +33 -0
- package/dist/{chunk-UEIXJG45.js → chunk-EEYOS3UC.js} +116 -80
- package/dist/{chunk-7HPWMALN.js → chunk-EF2EN5CR.js} +2 -2
- package/dist/{chunk-7LWQCE4Y.cjs → chunk-EFXFURDY.cjs} +192 -58
- package/dist/chunk-EK34UZPB.cjs +40 -0
- package/dist/{chunk-7JLT2VNW.cjs → chunk-FJR6EZLO.cjs} +9666 -7201
- package/dist/{chunk-GZ6DV2UG.js → chunk-FPO7YNPQ.js} +1 -1
- package/dist/{chunk-O64I2GYI.js → chunk-FS4I6BNR.js} +1 -1
- package/dist/{chunk-MX75JYIY.js → chunk-FSJ2MNOC.js} +3 -3
- package/dist/{chunk-7RFJB75Y.js → chunk-GEHZMC4G.js} +11 -8
- package/dist/{chunk-UWFG2R2I.cjs → chunk-GO6C2RAR.cjs} +36 -9
- package/dist/{chunk-WGLBC5AY.cjs → chunk-GSMR6V36.cjs} +4 -4
- package/dist/{chunk-Z3XSSF7B.js → chunk-GSZWATME.js} +1 -1
- package/dist/{chunk-7MU7LWF3.cjs → chunk-GYLGCR6F.cjs} +5 -5
- package/dist/{chunk-O6TQP7U7.cjs → chunk-H3OOWNYQ.cjs} +3 -3
- package/dist/{chunk-2QL6MNXG.js → chunk-H65446XW.js} +115 -20
- package/dist/chunk-H7HXRRHK.js +324 -0
- package/dist/{chunk-ZZ63NW7A.cjs → chunk-HN2JTDN5.cjs} +17 -17
- package/dist/{chunk-AOKCI722.cjs → chunk-HNXUZ5OY.cjs} +2 -2
- package/dist/{chunk-AUYSIEVV.cjs → chunk-HOYT3E65.cjs} +3 -3
- package/dist/{chunk-DMRXF5DU.js → chunk-HTPY5ESD.js} +3 -3
- package/dist/chunk-HTU4W3GB.js +183 -0
- package/dist/{chunk-3DDL2E55.cjs → chunk-HVLWH2AF.cjs} +10 -10
- package/dist/{chunk-HSCUPEA4.cjs → chunk-HZTEU4W5.cjs} +74 -105
- package/dist/{chunk-XGMI6IYB.cjs → chunk-I5T7LPFP.cjs} +7 -7
- package/dist/{chunk-XIVFAD2L.js → chunk-IB5CJXE7.js} +173 -12
- package/dist/chunk-INNXFLDR.cjs +388 -0
- package/dist/{chunk-75EDROHL.cjs → chunk-JFLEP3T7.cjs} +10 -10
- package/dist/chunk-JJGDOBFL.js +40 -0
- package/dist/{chunk-VBOFPU5M.cjs → chunk-JM3ZTQUK.cjs} +13 -9
- package/dist/{chunk-HJIXWGQZ.js → chunk-JSU46T6K.js} +1 -1
- package/dist/{chunk-AT7OWLY5.js → chunk-K6WN6BT4.js} +1 -1
- package/dist/{chunk-LN7D3EJZ.js → chunk-KA2U6MY2.js} +4 -3
- package/dist/{chunk-3S563FNF.cjs → chunk-KIQH3SMT.cjs} +34 -31
- package/dist/{chunk-BWF4VDYE.js → chunk-KPRXHIE2.js} +54 -85
- package/dist/{chunk-Z4LIPMPM.js → chunk-L6OH44HL.js} +13 -9
- package/dist/{chunk-A7HHCIDQ.js → chunk-LIO3RX2Z.js} +2 -2
- package/dist/{chunk-DLP436GI.js → chunk-LOSXLH7P.js} +110 -17
- package/dist/{chunk-IEXKKKOF.cjs → chunk-LSOR72PB.cjs} +23 -23
- package/dist/{chunk-IAGCRVJ3.js → chunk-MA3AVDCC.js} +55 -12
- package/dist/{chunk-B5CGDNMR.js → chunk-ME3S2WIR.js} +3 -3
- package/dist/{chunk-HKYZSUQ5.js → chunk-NC2I2M4P.js} +4 -4
- package/dist/{chunk-GBMDFWJX.cjs → chunk-NC4A4LVC.cjs} +13 -13
- package/dist/{chunk-E46DJH5S.js → chunk-NGEK5FCJ.js} +176 -3
- package/dist/{chunk-TQ33WBY5.cjs → chunk-NHWHEW7M.cjs} +2 -1
- package/dist/{chunk-62RTC3XX.js → chunk-NKW6CHXQ.js} +1 -1
- package/dist/{chunk-3PXKRVCW.js → chunk-NOWCRKP2.js} +10 -4
- package/dist/{chunk-HXJEGMGB.js → chunk-NUB2LMB6.js} +2 -2
- package/dist/chunk-NVATU4V6.cjs +44 -0
- package/dist/chunk-O246MKIW.cjs +267 -0
- package/dist/{chunk-QCHIDZBA.js → chunk-OGFWL2PS.js} +1 -1
- package/dist/{chunk-JJ4KA7HK.cjs → chunk-ONNGAR6W.cjs} +415 -551
- package/dist/{chunk-TKKN34TV.js → chunk-OOFR6A62.js} +33 -4
- package/dist/{chunk-6NVAK6CK.js → chunk-OZ7FHO7J.js} +2 -2
- package/dist/{chunk-2CGE7ZV3.cjs → chunk-P5EWGUI2.cjs} +201 -28
- package/dist/{chunk-GGLKUENP.js → chunk-P6BQJPAI.js} +191 -14
- package/dist/{chunk-TWQDAUZU.js → chunk-PG2JIU5M.js} +60 -7
- package/dist/chunk-PI27G2ED.cjs +377 -0
- package/dist/{chunk-YV63VW4K.js → chunk-PI7LRPL6.js} +1 -1
- package/dist/{chunk-TXPSTCG7.cjs → chunk-PMPEC5HN.cjs} +18 -15
- package/dist/{chunk-ROLA6EFO.cjs → chunk-PYUP7AKY.cjs} +14 -14
- package/dist/{chunk-BFQDQRDE.js → chunk-QC5Z3ZT5.js} +2 -2
- package/dist/chunk-QDO4L2A7.cjs +156 -0
- package/dist/{chunk-LFDPTJYF.cjs → chunk-QDXRI5AM.cjs} +1 -1
- package/dist/{chunk-3LJJG5YY.cjs → chunk-QLZOMZO5.cjs} +4 -3
- package/dist/chunk-QVXMSQOG.js +430 -0
- package/dist/{chunk-ZHJ7JGME.cjs → chunk-R4UKBKDY.cjs} +11 -11
- package/dist/{chunk-IGMPWJ2I.cjs → chunk-R75AWII3.cjs} +118 -23
- package/dist/{chunk-VGEV44V2.cjs → chunk-RD5PLUIX.cjs} +191 -30
- package/dist/{chunk-I24CWKKK.js → chunk-RGB34CV5.js} +3 -3
- package/dist/{chunk-CHI52KFR.cjs → chunk-RJCZLFHE.cjs} +246 -39
- package/dist/{chunk-D2OSPLYC.cjs → chunk-RKWNM2BJ.cjs} +2 -2
- package/dist/{chunk-FGT6KK6T.js → chunk-RMVONICR.js} +3 -3
- package/dist/{chunk-Q6AC3PHY.cjs → chunk-RPSYRJL7.cjs} +10 -4
- package/dist/chunk-RS2E32YB.js +71 -0
- package/dist/chunk-RWKU2X7O.js +388 -0
- package/dist/chunk-RZLEGVMH.cjs +565 -0
- package/dist/{chunk-5F6ZKSHO.js → chunk-S2L3Y677.js} +1 -1
- package/dist/{chunk-ARBEHFCG.js → chunk-S7KVUIOS.js} +1 -1
- package/dist/{chunk-AC7DZ6SK.cjs → chunk-SACJJ6NO.cjs} +5 -3
- package/dist/{chunk-IKUMVBCW.cjs → chunk-SD3NTC7D.cjs} +48 -4
- package/dist/{chunk-CBFH2J3O.js → chunk-SJQU2ZFR.js} +246 -39
- package/dist/{chunk-GWO66KBI.js → chunk-SKAQKQFF.js} +12 -2
- package/dist/chunk-T4DXP5OP.js +30 -0
- package/dist/{chunk-CFFE4VA3.js → chunk-T6FTB6K2.js} +1 -1
- package/dist/{chunk-U4C3HW6P.js → chunk-T6N6GRFT.js} +13 -10
- package/dist/{chunk-D6GZBSOX.js → chunk-TJFKA6A7.js} +82 -3
- package/dist/{chunk-2HOLOHVK.js → chunk-TJZUPS4Z.js} +163 -299
- package/dist/{chunk-RBZ7AFX7.cjs → chunk-TLKHZ425.cjs} +2 -2
- package/dist/{chunk-J2K57QM7.cjs → chunk-TQ24NLXO.cjs} +6 -6
- package/dist/{chunk-LUMV3DB2.js → chunk-TWBAU46X.js} +1 -1
- package/dist/{chunk-OPNI6O7F.cjs → chunk-TZB5XADL.cjs} +4 -4
- package/dist/{chunk-6HH236FV.cjs → chunk-UAYXZXWU.cjs} +4 -4
- package/dist/{chunk-MPULXVC4.cjs → chunk-UKBFNBDO.cjs} +11 -11
- package/dist/chunk-UMJYX5KD.js +565 -0
- package/dist/chunk-USKYTHDL.cjs +235 -0
- package/dist/chunk-V4HGZSKQ.cjs +183 -0
- package/dist/{chunk-MQESBFBZ.cjs → chunk-VAJUSZMC.cjs} +21 -20
- package/dist/{chunk-PQLKJCIE.js → chunk-VGQG4NBJ.js} +2 -2
- package/dist/chunk-VLUIVJ3J.js +235 -0
- package/dist/chunk-VOBINVMV.cjs +430 -0
- package/dist/{chunk-L4F7SUYL.js → chunk-VSHKKCSH.js} +16 -5
- package/dist/{chunk-LDJQ5QHG.cjs → chunk-VSZU3MGA.cjs} +28 -17
- package/dist/{chunk-YFXTE422.cjs → chunk-VWHAUB77.cjs} +8 -3
- package/dist/{chunk-EZJHLOWP.js → chunk-VXGYFX45.js} +20 -7
- package/dist/{chunk-JIMSII7R.js → chunk-WH6YUQDB.js} +193 -59
- package/dist/{chunk-VKBIE6I6.js → chunk-WQ6TD55V.js} +2 -2
- package/dist/{chunk-ZR46OJNZ.js → chunk-WQWECXTY.js} +3 -3
- package/dist/{chunk-SOLBYSLY.cjs → chunk-WVDJUJH6.cjs} +2 -2
- package/dist/{chunk-QKP772OZ.js → chunk-X24VIVDZ.js} +963 -103
- package/dist/{chunk-37M5UM6I.js → chunk-X4NRTLXD.js} +7 -1
- package/dist/chunk-X53SHYCG.js +27 -0
- package/dist/{chunk-PUD76XQT.cjs → chunk-XB2Z4ZAK.cjs} +5 -5
- package/dist/chunk-Y47OJGLB.cjs +27 -0
- package/dist/{chunk-WRTXCQ3V.cjs → chunk-Y4MN27V3.cjs} +1080 -220
- package/dist/{chunk-ZK6HOR62.js → chunk-YEHFYZFU.js} +7 -2
- package/dist/{chunk-FFBDRUO5.cjs → chunk-YICIUY23.cjs} +1 -1
- package/dist/{chunk-PDHT7LQS.cjs → chunk-YMXYC777.cjs} +3 -3
- package/dist/{chunk-TJNBASFD.cjs → chunk-Z3GRWK6O.cjs} +8 -8
- package/dist/{chunk-JP3YHTQ2.cjs → chunk-Z5GG2KSL.cjs} +4 -4
- package/dist/{chunk-ZPD2AO3U.js → chunk-ZER7DYQK.js} +2 -2
- package/dist/{chunk-UXLW45ZE.cjs → chunk-ZFDXZEZJ.cjs} +25 -90
- package/dist/chunk-ZFV4HJA6.js +579 -0
- package/dist/chunk-ZHMYTI5D.cjs +529 -0
- package/dist/{chunk-CCVMREXI.js → chunk-ZLR2TFBC.js} +35 -8
- package/dist/{chunk-J5ADZN6V.cjs → chunk-ZTWNU5QZ.cjs} +20 -20
- package/dist/chunk-ZUYYHKQA.js +44 -0
- package/dist/{chunk-AUFNACED.js → chunk-ZVLVLDYN.js} +9086 -6621
- package/dist/clear-AJGXD2BB.cjs +12 -0
- package/dist/{clear-OFLFQ3MR.js → clear-HAHDSWKW.js} +3 -3
- package/dist/communityInstaller-IRR6M3N6.cjs +22 -0
- package/dist/{communityInstaller-COB2KTOW.js → communityInstaller-OLKEUGMX.js} +6 -6
- package/dist/completion-G7Z436TF.cjs +17 -0
- package/dist/{completion-PT4VM2H2.js → completion-ZS3AXJ6A.js} +5 -5
- package/dist/{config-R4O7GBTY.js → config-OWYAQPCX.js} +5 -3
- package/dist/config-W2BHT2QE.cjs +22 -0
- package/dist/{constants-HVCHVQAF.js → constants-AS6K67AA.js} +5 -3
- package/dist/constants-B4W5BT7F.cjs +23 -0
- package/dist/{export-3PK3VFCE.js → export-5HIU3KMD.js} +5 -5
- package/dist/export-GFD32UY2.cjs +15 -0
- package/dist/{extractSessionMemories-A2JX5WJ2.js → extractSessionMemories-K6ZVAW2F.js} +1 -1
- package/dist/{extractSessionMemories-XL3MS37F.cjs → extractSessionMemories-LLOIJR5U.cjs} +2 -2
- package/dist/feature-KP74CZ3F.cjs +14 -0
- package/dist/feature-OPNVMB2E.js +14 -0
- package/dist/features-LT55MURX.cjs +24 -0
- package/dist/features-ZDIU26WX.js +24 -0
- package/dist/feedback-7WTJFQ6S.js +18 -0
- package/dist/feedback-CEOJ3453.cjs +18 -0
- package/dist/go-2CY5SZNR.js +16 -0
- package/dist/go-O2CSQON4.cjs +16 -0
- package/dist/goal-DL2N2AWT.cjs +16 -0
- package/dist/goal-IJS7VZSG.js +16 -0
- package/dist/help-RNOGDEBA.cjs +12 -0
- package/dist/{help-X3OAZ3CY.js → help-TCWD2IRH.js} +2 -2
- package/dist/{history-YKFPHBJN.js → history-ATOR5OQV.js} +2 -2
- package/dist/history-UUSGX2AL.cjs +14 -0
- package/dist/{hooks-7TA4PIIB.js → hooks-R3Z5QKUP.js} +6 -6
- package/dist/hooks-RWM5UY67.cjs +18 -0
- package/dist/{i18n-2KBUU7XL.js → i18n-4QI4TD4I.js} +1 -1
- package/dist/i18n-MFAEU5RV.cjs +33 -0
- package/dist/ide-6PBTCCUQ.js +15 -0
- package/dist/ide-UE3G7NMQ.cjs +15 -0
- package/dist/{import-I7T4ZHYL.cjs → import-2IG76KAN.cjs} +6 -4
- package/dist/{import-JWPYKXCZ.js → import-E47QL4DW.js} +2 -2
- package/dist/import-NQDNBFUL.cjs +10 -0
- package/dist/{import-4CHYLS4K.js → import-VQIHGJWS.js} +6 -4
- package/dist/index.cjs +512 -305
- package/dist/index.d.cts +40 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +402 -195
- package/dist/init-DX3RDGDT.cjs +10 -0
- package/dist/{init-262MWZV4.js → init-Q54OAAFZ.js} +2 -2
- package/dist/{inputPrompt-YGBHDUEP.js → inputPrompt-V2VBDRM7.js} +3 -3
- package/dist/inputPrompt-WVGVWAHS.cjs +90 -0
- package/dist/language-I6KXAOXD.js +23 -0
- package/dist/language-XMIVOH5E.cjs +23 -0
- package/dist/learn-JPVVGTKU.js +23 -0
- package/dist/learn-NLSHI2MZ.cjs +23 -0
- package/dist/login-NABQYLYC.cjs +28 -0
- package/dist/login-XPOVFSWN.js +28 -0
- package/dist/logout-HNHCGB4Q.js +25 -0
- package/dist/logout-SKGDXJSW.cjs +25 -0
- package/dist/{mcp-5O6PUL4G.js → mcp-EN73YFGZ.js} +8 -6
- package/dist/mcp-TADZCPJQ.cjs +22 -0
- package/dist/{mcp-install-P6DHES7V.cjs → mcp-install-2GKWWBAS.cjs} +15 -13
- package/dist/{mcp-install-6XWXLFVY.js → mcp-install-3TBTVSHW.js} +10 -8
- package/dist/memory-GRXFTDIN.cjs +10 -0
- package/dist/{memory-Q54CESNM.js → memory-K2P3CDCH.js} +2 -2
- package/dist/{model-6AJ77PJG.js → model-DEG22OWA.js} +2 -2
- package/dist/model-OSD74T7Z.cjs +10 -0
- package/dist/new-4NWBOATU.cjs +12 -0
- package/dist/{new-ZXHEWC2S.js → new-KJAP2MB6.js} +3 -3
- package/dist/onboarding-2U5WE2OA.js +39 -0
- package/dist/onboarding-5DZFCO5Q.cjs +39 -0
- package/dist/permissions-KY5I6YQ3.cjs +10 -0
- package/dist/{permissions-YHJMVA6L.js → permissions-TKYON7PP.js} +2 -2
- package/dist/{plan-YYUAXPTL.js → plan-DYHHLZSS.js} +1 -1
- package/dist/plan-PYKP652W.cjs +13 -0
- package/dist/quit-GSKJL42O.js +14 -0
- package/dist/quit-TQSRTBUT.cjs +14 -0
- package/dist/{registry-34GL6BNJ.js → registry-EZ4V4TUQ.js} +1339 -1
- package/dist/{registry-V24W7YK6.cjs → registry-LCWYI4IB.cjs} +1378 -40
- package/dist/resume-4VWJXARX.cjs +17 -0
- package/dist/resume-TLHWWWFN.js +17 -0
- package/dist/{review-QHP2KP4Q.js → review-CSK4IYTO.js} +1 -1
- package/dist/review-XLJEUH5K.cjs +9 -0
- package/dist/{rpc-S3DGW6KV.js → rpc-3DLQBDWU.js} +301 -130
- package/dist/{rpc-NPS3PU4O.cjs → rpc-O36WUU3L.cjs} +399 -228
- package/dist/search-DSX2CY4A.cjs +22 -0
- package/dist/search-I3QUDUQL.js +22 -0
- package/dist/sessionBranching-DVNOUWJT.cjs +19 -0
- package/dist/sessionBranching-FKV4CR36.js +19 -0
- package/dist/sessions-3JUOT3ED.cjs +10 -0
- package/dist/{sessions-IYAXMK23.js → sessions-VWMDIPOS.js} +2 -2
- package/dist/settings-FT2LZZUV.js +45 -0
- package/dist/settings-RL4KNWHB.cjs +45 -0
- package/dist/setup-HQEJVOYT.js +32 -0
- package/dist/setup-MN54LKOL.cjs +32 -0
- package/dist/share-BUAFZNBX.cjs +17 -0
- package/dist/share-CGB6MAVJ.js +17 -0
- package/dist/skills/builtin/code-reviewer/SKILL.md +64 -0
- package/dist/skills/builtin/goal-writer/SKILL.md +124 -0
- package/dist/{skills-VWOMV3CR.js → skills-7DKR3HRZ.js} +8 -8
- package/dist/{skills-MVIZNHT4.js → skills-BBBENOEY.js} +9 -9
- package/dist/skills-OQM7IHAF.cjs +29 -0
- package/dist/{skills-GGMZOVIE.cjs → skills-RA2PKL63.cjs} +10 -10
- package/dist/{skills-install-VTAMCNNY.cjs → skills-install-D7K476SL.cjs} +16 -16
- package/dist/{skills-install-QBA5RCV6.js → skills-install-T4SOKJSL.js} +9 -9
- package/dist/skills-new-S33NGEU3.js +18 -0
- package/dist/skills-new-UVYH53MD.cjs +18 -0
- package/dist/slashCommands-MWOUDSQP.js +111 -0
- package/dist/slashCommands-XASURUTV.cjs +111 -0
- package/dist/squad-PIIYDFVH.cjs +15 -0
- package/dist/squad-VHYOVEJP.js +15 -0
- package/dist/status-GHFTXQBL.js +25 -0
- package/dist/status-WXMIJIU3.cjs +25 -0
- package/dist/statusline-2K7AC6ZQ.js +21 -0
- package/dist/statusline-GROI4HOC.cjs +21 -0
- package/dist/sync-254WF6JI.cjs +42 -0
- package/dist/sync-2DIZN4EH.cjs +24 -0
- package/dist/{sync-7BILIQHP.js → sync-J6I2ZUKQ.js} +6 -4
- package/dist/{sync-7OKF6636.js → sync-Z3LVSEEV.js} +8 -5
- package/dist/{teammate-J6PHGL23.cjs → teammate-EXR76PEQ.cjs} +9 -8
- package/dist/{teammate-GZQSCIMS.js → teammate-K4DAOFEQ.js} +8 -7
- package/dist/templates-ARG2VRWW.cjs +11 -0
- package/dist/templates-UGVZV3KJ.js +11 -0
- package/dist/theme-MVQDSU47.js +23 -0
- package/dist/theme-QAKEYWJG.cjs +23 -0
- package/dist/ui/questionModal.cjs +6 -6
- package/dist/ui/questionModal.js +5 -5
- package/dist/{undo-SZEHLX7X.js → undo-5AU47JHF.js} +2 -2
- package/dist/undo-ME6WKUXZ.cjs +10 -0
- package/dist/usage-QTKO2YMD.js +25 -0
- package/dist/usage-TYNJKVER.cjs +25 -0
- package/package.json +10 -4
- package/dist/AgentRegistry-EGBDIUAK.cjs +0 -10
- package/dist/AgentRegistry-XPWSVO3Q.js +0 -10
- package/dist/CommunitySkillsCache-2OIUV227.cjs +0 -8
- package/dist/LearnAdvisor-46FG2XIP.js +0 -9
- package/dist/LearnAdvisor-XBRDNAGH.cjs +0 -9
- package/dist/MemoryManager-34L4YOKA.cjs +0 -8
- package/dist/MemoryManager-WJMLPWGU.js +0 -8
- package/dist/NVIDIAProvider-MVTL62PR.cjs +0 -14
- package/dist/PermissionManager-5OOJ7FAT.cjs +0 -11
- package/dist/ProviderFactory-C3YPXTDD.cjs +0 -11
- package/dist/SessionManager-WAPTFMDO.cjs +0 -10
- package/dist/SkillsRegistry-7AJP74GJ.cjs +0 -9
- package/dist/SubAgent-FDIH3DXB.js +0 -11
- package/dist/SubAgent-HVL2ICVZ.cjs +0 -11
- package/dist/SyncApiClient-VMBOLQ6H.cjs +0 -11
- package/dist/about-FCAX37YC.cjs +0 -14
- package/dist/actionExecutor-33I47NZS.js +0 -24
- package/dist/actionExecutor-4YBMR3YH.cjs +0 -24
- package/dist/add-dir-7SS6KSH5.cjs +0 -11
- package/dist/agent-DMRUFU4M.cjs +0 -116
- package/dist/agent-WCJEYQJT.js +0 -116
- package/dist/agents-CHROO3VU.cjs +0 -17
- package/dist/agents-UVDUL65K.js +0 -17
- package/dist/agents-new-AUBWSOXP.js +0 -17
- package/dist/agents-new-Y562WC47.cjs +0 -17
- package/dist/autoSkill-YOLLFTP2.cjs +0 -20
- package/dist/automode-DBLKTTKD.cjs +0 -10
- package/dist/chrome-ATC4OO5I.cjs +0 -20
- package/dist/chrome-O62WXV7F.js +0 -20
- package/dist/chrome-XHJLCO4M.cjs +0 -50
- package/dist/chunk-6XVVIY54.cjs +0 -256
- package/dist/chunk-AU6JAGZJ.cjs +0 -231
- package/dist/chunk-N6O3XUZ2.cjs +0 -23
- package/dist/chunk-VDWJMWDF.js +0 -256
- package/dist/clear-33TWQ2ES.cjs +0 -12
- package/dist/communityInstaller-TWMGPSYM.cjs +0 -22
- package/dist/completion-IIZMHXYP.cjs +0 -17
- package/dist/config-KL6WU7R2.cjs +0 -20
- package/dist/constants-RLMJ5D5P.cjs +0 -21
- package/dist/export-WLGNWEMJ.cjs +0 -15
- package/dist/feedback-G635NCLJ.js +0 -18
- package/dist/feedback-LLMK3TZH.cjs +0 -18
- package/dist/help-BAXLP2M2.cjs +0 -12
- package/dist/history-6HOJSEMT.cjs +0 -14
- package/dist/hooks-XVFU67T2.cjs +0 -18
- package/dist/i18n-MUJMKTFM.cjs +0 -33
- package/dist/ide-CCQ33PGC.cjs +0 -15
- package/dist/ide-VLVFBZ5F.js +0 -15
- package/dist/import-J46F54JY.cjs +0 -10
- package/dist/init-EE5Y7RBL.cjs +0 -10
- package/dist/inputPrompt-IIFKCX5Q.cjs +0 -90
- package/dist/language-CVLPB7OV.js +0 -21
- package/dist/language-ZTWFHUSV.cjs +0 -21
- package/dist/learn-PON7I5QS.js +0 -23
- package/dist/learn-XLRSVNA3.cjs +0 -23
- package/dist/login-223QTGBG.cjs +0 -26
- package/dist/login-6IKTBUBY.js +0 -26
- package/dist/logout-RN2AG6SI.js +0 -23
- package/dist/logout-U3M4FFX7.cjs +0 -23
- package/dist/mcp-NUQ76QQB.cjs +0 -20
- package/dist/memory-CYMDQ2YC.cjs +0 -10
- package/dist/model-IDRCKDML.cjs +0 -10
- package/dist/new-7LEWOUF2.cjs +0 -12
- package/dist/onboarding-FXX7YHSJ.cjs +0 -35
- package/dist/onboarding-JYNMK6NI.js +0 -35
- package/dist/permissions-YBNSANIA.cjs +0 -10
- package/dist/plan-XEJMOT55.cjs +0 -13
- package/dist/quit-B43SJ6E4.cjs +0 -10
- package/dist/quit-GWTNHQSP.js +0 -10
- package/dist/resume-DYVOQN5L.cjs +0 -16
- package/dist/resume-M25UQKOX.js +0 -16
- package/dist/review-UWHWQHCB.cjs +0 -9
- package/dist/search-CPX4PWHP.js +0 -20
- package/dist/search-VUF3M4N3.cjs +0 -20
- package/dist/sessions-JODKER5D.cjs +0 -10
- package/dist/settings-55BNW6BF.js +0 -33
- package/dist/settings-BKTS7OMC.cjs +0 -33
- package/dist/setup-IRC5HQG2.js +0 -29
- package/dist/setup-MMQ7TWOP.cjs +0 -29
- package/dist/share-6JRQECAH.cjs +0 -17
- package/dist/share-YM5MJKMO.js +0 -17
- package/dist/skills-LWSOKOSH.cjs +0 -29
- package/dist/skills-new-GPL46YV2.js +0 -18
- package/dist/skills-new-L5BEZN5V.cjs +0 -18
- package/dist/slashCommands-FBPCIWM5.cjs +0 -95
- package/dist/slashCommands-FCWY5DXW.js +0 -95
- package/dist/status-3B5SDZPL.js +0 -17
- package/dist/status-TTGRF6NC.cjs +0 -17
- package/dist/sync-77CXVVTK.cjs +0 -21
- package/dist/sync-EH4K5U3N.cjs +0 -40
- package/dist/theme-64BYGJ57.cjs +0 -21
- package/dist/theme-YJE6HEON.js +0 -21
- package/dist/undo-PRTEGL2J.cjs +0 -10
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkV4HGZSKQcjs = require('./chunk-V4HGZSKQ.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var _chunk3JURXAL6cjs = require('./chunk-3JURXAL6.cjs');
|
|
9
|
+
|
|
10
|
+
// src/goals/GoalManager.ts
|
|
11
|
+
var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto);
|
|
12
|
+
var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
|
|
13
|
+
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
14
|
+
|
|
15
|
+
// src/goals/queueBlockParser.ts
|
|
16
|
+
function parseQueueBlockItems(input) {
|
|
17
|
+
const lines = input.split(/\r?\n/);
|
|
18
|
+
const items = [];
|
|
19
|
+
for (let i = 0; i < lines.length; i++) {
|
|
20
|
+
const trimmed = lines[i].trim();
|
|
21
|
+
const bracket = trimmed.match(/^\[(\d+)\]\s+(.+)$/);
|
|
22
|
+
const numbered = trimmed.match(/^(\d+)[.)]\s+(.+)$/);
|
|
23
|
+
const match = _nullishCoalesce(bracket, () => ( numbered));
|
|
24
|
+
if (!match) continue;
|
|
25
|
+
items.push({
|
|
26
|
+
marker: match[1],
|
|
27
|
+
objectiveInput: match[2].trim(),
|
|
28
|
+
lineIndex: i
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return items.length > 1 ? items : null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// src/goals/GoalManager.ts
|
|
35
|
+
var GOAL_STATE_FILE = "goals.local.json";
|
|
36
|
+
var MAX_OBJECTIVE_LENGTH = 8e4;
|
|
37
|
+
var GoalManager = class {
|
|
38
|
+
constructor(workspaceRoot) {
|
|
39
|
+
this.workspaceRoot = workspaceRoot;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async getSnapshot() {
|
|
43
|
+
const snapshot = await this.readSnapshot();
|
|
44
|
+
const goal = snapshot.goal ? this.withLiveElapsed(snapshot.goal) : null;
|
|
45
|
+
return { ...snapshot, goal };
|
|
46
|
+
}
|
|
47
|
+
async listTemplates() {
|
|
48
|
+
return _chunkV4HGZSKQcjs.listGoalTemplateMetadata.call(void 0, this.workspaceRoot);
|
|
49
|
+
}
|
|
50
|
+
async resolveObjective(input) {
|
|
51
|
+
const resolution = await _chunkV4HGZSKQcjs.resolveGoalTemplateInvocation.call(void 0, input, this.workspaceRoot);
|
|
52
|
+
if (resolution.ok) {
|
|
53
|
+
return {
|
|
54
|
+
ok: true,
|
|
55
|
+
input: { objective: resolution.template.objective },
|
|
56
|
+
template: resolution.template.name,
|
|
57
|
+
templateFlags: resolution.template.flags,
|
|
58
|
+
templateArgs: resolution.template.args
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
if ("notTemplate" in resolution) return { ok: true, input: { objective: input } };
|
|
62
|
+
return { ok: false, message: resolution.error };
|
|
63
|
+
}
|
|
64
|
+
async createGoal(input, opts = {}) {
|
|
65
|
+
const snapshot = await this.readSnapshot();
|
|
66
|
+
const validation = validateGoalInput(input);
|
|
67
|
+
if (validation) return result(snapshot, false, validation);
|
|
68
|
+
if (snapshot.goal && snapshot.goal.status !== "complete" && !opts.replace) {
|
|
69
|
+
return result(snapshot, false, "A goal already exists. Clear it, complete it, or queue the new objective before replacing it.");
|
|
70
|
+
}
|
|
71
|
+
const now = Date.now();
|
|
72
|
+
const goal = {
|
|
73
|
+
goalId: _crypto2.default.randomUUID(),
|
|
74
|
+
objective: input.objective.trim(),
|
|
75
|
+
status: "active",
|
|
76
|
+
tokenBudget: input.tokenBudget,
|
|
77
|
+
timeBudgetSeconds: input.timeBudgetSeconds,
|
|
78
|
+
minTokensBeforeWrapUp: input.minTokensBeforeWrapUp,
|
|
79
|
+
minTimeSecondsBeforeWrapUp: input.minTimeSecondsBeforeWrapUp,
|
|
80
|
+
tokensUsed: 0,
|
|
81
|
+
timeUsedSeconds: 0,
|
|
82
|
+
createdAt: now,
|
|
83
|
+
updatedAt: now
|
|
84
|
+
};
|
|
85
|
+
const next = { ...snapshot, goal, updatedAt: now };
|
|
86
|
+
await this.writeSnapshot(next);
|
|
87
|
+
return result(next, true, _optionalChain([snapshot, 'access', _ => _.goal, 'optionalAccess', _2 => _2.status]) === "complete" ? "Goal created; replaced completed goal." : "Goal created.");
|
|
88
|
+
}
|
|
89
|
+
async createOrQueueGoal(input) {
|
|
90
|
+
const snapshot = await this.readSnapshot();
|
|
91
|
+
const current = snapshot.goal ? this.withLiveElapsed(snapshot.goal) : null;
|
|
92
|
+
if (current && current.status !== "complete" && current.status !== "budgetLimited") {
|
|
93
|
+
return this.enqueueGoal(input);
|
|
94
|
+
}
|
|
95
|
+
return this.createGoal(input);
|
|
96
|
+
}
|
|
97
|
+
async updateGoal(input) {
|
|
98
|
+
const snapshot = await this.readSnapshot();
|
|
99
|
+
const current = snapshot.goal ? this.withLiveElapsed(snapshot.goal) : null;
|
|
100
|
+
if (!current) return result(snapshot, false, "No goal exists to update.");
|
|
101
|
+
let next = { ...current };
|
|
102
|
+
const changes = [];
|
|
103
|
+
if (input.objective !== void 0) {
|
|
104
|
+
const objective = input.objective.trim();
|
|
105
|
+
if (!objective) return result(snapshot, false, "objective must be non-empty.");
|
|
106
|
+
if (objective.length > MAX_OBJECTIVE_LENGTH) return result(snapshot, false, `objective is too long (max ${MAX_OBJECTIVE_LENGTH} characters).`);
|
|
107
|
+
next = { ...next, objective };
|
|
108
|
+
changes.push("objective");
|
|
109
|
+
}
|
|
110
|
+
const budgetError = applyOptionalPositiveInteger(input.tokenBudget, (value) => {
|
|
111
|
+
next = { ...next, tokenBudget: value };
|
|
112
|
+
changes.push("token budget");
|
|
113
|
+
});
|
|
114
|
+
if (budgetError) return result(snapshot, false, budgetError);
|
|
115
|
+
const timeBudgetError = applyOptionalPositiveInteger(input.timeBudgetSeconds, (value) => {
|
|
116
|
+
next = { ...next, timeBudgetSeconds: value };
|
|
117
|
+
changes.push("time budget");
|
|
118
|
+
});
|
|
119
|
+
if (timeBudgetError) return result(snapshot, false, timeBudgetError);
|
|
120
|
+
const minTokensError = applyOptionalPositiveInteger(input.minTokensBeforeWrapUp, (value) => {
|
|
121
|
+
next = { ...next, minTokensBeforeWrapUp: value };
|
|
122
|
+
changes.push("token floor");
|
|
123
|
+
});
|
|
124
|
+
if (minTokensError) return result(snapshot, false, minTokensError);
|
|
125
|
+
const minTimeError = applyOptionalPositiveInteger(input.minTimeSecondsBeforeWrapUp, (value) => {
|
|
126
|
+
next = { ...next, minTimeSecondsBeforeWrapUp: value };
|
|
127
|
+
changes.push("time floor");
|
|
128
|
+
});
|
|
129
|
+
if (minTimeError) return result(snapshot, false, minTimeError);
|
|
130
|
+
const floorError = validateFloors(next);
|
|
131
|
+
if (floorError) return result(snapshot, false, floorError);
|
|
132
|
+
if (input.status !== void 0) {
|
|
133
|
+
if (!["active", "paused", "complete", "budgetLimited"].includes(input.status)) {
|
|
134
|
+
return result(snapshot, false, "status must be active, paused, complete, or budgetLimited.");
|
|
135
|
+
}
|
|
136
|
+
if (input.status === "complete" && !floorMet(next)) {
|
|
137
|
+
return result(snapshot, false, "Completion floor is not met yet. Keep working, raise the floor, or clear the goal if the user explicitly wants to stop.");
|
|
138
|
+
}
|
|
139
|
+
next = transitionStatus(next, input.status);
|
|
140
|
+
changes.push(`status ${input.status}`);
|
|
141
|
+
}
|
|
142
|
+
if (next.status === "active" && budgetLimitReason(next)) {
|
|
143
|
+
return result(snapshot, false, "Cannot resume: budget is exhausted. Raise the budget or clear the goal before resuming.");
|
|
144
|
+
}
|
|
145
|
+
if (changes.length === 0) return result(snapshot, false, "No goal updates were provided.");
|
|
146
|
+
if (next.status === "complete") {
|
|
147
|
+
if (current.status === "complete") return result({ ...snapshot, goal: current }, false, "Goal is already complete.");
|
|
148
|
+
const completedGoal = buildCompletedGoal(next, Date.now());
|
|
149
|
+
const completedRun = appendCompletedGoal(snapshot.completed, completedGoal);
|
|
150
|
+
const nextQueued = snapshot.queue[0];
|
|
151
|
+
if (nextQueued) {
|
|
152
|
+
const started = await this.startQueuedGoalFromSnapshot({
|
|
153
|
+
...snapshot,
|
|
154
|
+
goal: next,
|
|
155
|
+
completed: completedRun
|
|
156
|
+
}, nextQueued);
|
|
157
|
+
if (!started.ok) return started;
|
|
158
|
+
return {
|
|
159
|
+
...started,
|
|
160
|
+
message: "Goal completed. Started next queued goal.",
|
|
161
|
+
completed: completedGoal,
|
|
162
|
+
completedRun
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
next = { ...next, updatedAt: Date.now() };
|
|
166
|
+
const updated2 = {
|
|
167
|
+
...snapshot,
|
|
168
|
+
goal: next,
|
|
169
|
+
completed: completedRun,
|
|
170
|
+
updatedAt: next.updatedAt
|
|
171
|
+
};
|
|
172
|
+
await this.writeSnapshot(updated2);
|
|
173
|
+
return result(updated2, true, formatAllCompleteMessage(completedRun), {
|
|
174
|
+
completed: completedGoal,
|
|
175
|
+
completedRun
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
next = { ...next, updatedAt: Date.now() };
|
|
179
|
+
const updated = { ...snapshot, goal: next, updatedAt: next.updatedAt };
|
|
180
|
+
await this.writeSnapshot(updated);
|
|
181
|
+
return result(updated, true, `Goal updated: ${changes.join(", ")}.`);
|
|
182
|
+
}
|
|
183
|
+
async clearGoal() {
|
|
184
|
+
const snapshot = await this.readSnapshot();
|
|
185
|
+
const next = { ...snapshot, goal: null, updatedAt: Date.now() };
|
|
186
|
+
await this.writeSnapshot(next);
|
|
187
|
+
return result(next, true, snapshot.goal ? "Goal cleared." : "No goal was set.");
|
|
188
|
+
}
|
|
189
|
+
async enqueueGoal(input) {
|
|
190
|
+
const snapshot = await this.readSnapshot();
|
|
191
|
+
const validation = validateGoalInput(input);
|
|
192
|
+
if (validation) return result(snapshot, false, validation);
|
|
193
|
+
const queued = buildQueuedGoal(input);
|
|
194
|
+
const next = { ...snapshot, queue: [...snapshot.queue, queued], updatedAt: Date.now() };
|
|
195
|
+
await this.writeSnapshot(next);
|
|
196
|
+
return { ...result(next, true, "Queued goal."), queued: [queued] };
|
|
197
|
+
}
|
|
198
|
+
async enqueueGoalBlock(input, source) {
|
|
199
|
+
const snapshot = await this.readSnapshot();
|
|
200
|
+
const items = parseQueueBlockItems(input);
|
|
201
|
+
if (!items) return this.enqueueResolvedGoalInput(input, source);
|
|
202
|
+
const queued = [];
|
|
203
|
+
for (const item of items) {
|
|
204
|
+
const resolved = await this.resolveObjective(item.objectiveInput);
|
|
205
|
+
if (!resolved.ok) return result(snapshot, false, `Queue item ${item.marker} could not be resolved: ${resolved.message}`);
|
|
206
|
+
const validation = validateGoalInput(resolved.input);
|
|
207
|
+
if (validation) return result(snapshot, false, `Queue item ${item.marker}: ${validation}`);
|
|
208
|
+
queued.push(buildQueuedGoal({
|
|
209
|
+
...resolved.input,
|
|
210
|
+
source,
|
|
211
|
+
template: resolved.template,
|
|
212
|
+
templateFlags: resolved.templateFlags,
|
|
213
|
+
templateArgs: resolved.templateArgs
|
|
214
|
+
}));
|
|
215
|
+
}
|
|
216
|
+
const next = { ...snapshot, queue: [...snapshot.queue, ...queued], updatedAt: Date.now() };
|
|
217
|
+
await this.writeSnapshot(next);
|
|
218
|
+
return { ...result(next, true, `Queued ${queued.length} goals.`), queued };
|
|
219
|
+
}
|
|
220
|
+
async enqueueResolvedGoalInput(input, source) {
|
|
221
|
+
const resolved = await this.resolveObjective(input);
|
|
222
|
+
if (!resolved.ok) {
|
|
223
|
+
const snapshot = await this.readSnapshot();
|
|
224
|
+
return result(snapshot, false, resolved.message);
|
|
225
|
+
}
|
|
226
|
+
return this.enqueueGoal({
|
|
227
|
+
...resolved.input,
|
|
228
|
+
source,
|
|
229
|
+
template: resolved.template,
|
|
230
|
+
templateFlags: resolved.templateFlags,
|
|
231
|
+
templateArgs: resolved.templateArgs
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
async startQueuedGoal() {
|
|
235
|
+
const snapshot = await this.readSnapshot();
|
|
236
|
+
const current = snapshot.goal ? this.withLiveElapsed(snapshot.goal) : null;
|
|
237
|
+
if (current && current.status !== "complete" && current.status !== "budgetLimited") {
|
|
238
|
+
return result({ ...snapshot, goal: current }, false, "A non-terminal goal is already active. The queued goal was left in the queue.");
|
|
239
|
+
}
|
|
240
|
+
const nextQueued = snapshot.queue[0];
|
|
241
|
+
if (!nextQueued) return result({ ...snapshot, goal: current }, false, "No queued goals.");
|
|
242
|
+
const snapshotWithTerminalHistory = current && (current.status === "complete" || current.status === "budgetLimited") ? {
|
|
243
|
+
...snapshot,
|
|
244
|
+
goal: current,
|
|
245
|
+
completed: appendCompletedGoal(snapshot.completed, buildCompletedGoal(current, Date.now()))
|
|
246
|
+
} : { ...snapshot, goal: current };
|
|
247
|
+
return this.startQueuedGoalFromSnapshot(snapshotWithTerminalHistory, nextQueued);
|
|
248
|
+
}
|
|
249
|
+
async startQueuedGoalFromSnapshot(snapshot, nextQueued) {
|
|
250
|
+
let objective = nextQueued.objective;
|
|
251
|
+
if (nextQueued.template) {
|
|
252
|
+
const resolved = await _chunkV4HGZSKQcjs.resolveGoalTemplateByName.call(void 0, this.workspaceRoot, nextQueued.template, _nullishCoalesce(nextQueued.templateFlags, () => ( {})), _nullishCoalesce(nextQueued.templateArgs, () => ( "")));
|
|
253
|
+
if (!resolved.ok) return result(snapshot, false, "notTemplate" in resolved ? `Unknown goal template '${nextQueued.template}'.` : resolved.error);
|
|
254
|
+
objective = resolved.template.objective;
|
|
255
|
+
}
|
|
256
|
+
const now = Date.now();
|
|
257
|
+
const goal = {
|
|
258
|
+
goalId: _crypto2.default.randomUUID(),
|
|
259
|
+
objective,
|
|
260
|
+
status: "active",
|
|
261
|
+
tokenBudget: nextQueued.tokenBudget,
|
|
262
|
+
timeBudgetSeconds: nextQueued.timeBudgetSeconds,
|
|
263
|
+
minTokensBeforeWrapUp: nextQueued.minTokensBeforeWrapUp,
|
|
264
|
+
minTimeSecondsBeforeWrapUp: nextQueued.minTimeSecondsBeforeWrapUp,
|
|
265
|
+
tokensUsed: 0,
|
|
266
|
+
timeUsedSeconds: 0,
|
|
267
|
+
createdAt: now,
|
|
268
|
+
updatedAt: now
|
|
269
|
+
};
|
|
270
|
+
const updated = { ...snapshot, goal, queue: snapshot.queue.slice(1), updatedAt: now };
|
|
271
|
+
await this.writeSnapshot(updated);
|
|
272
|
+
return { ...result(updated, true, "Started queued goal."), started: nextQueued, dequeued: nextQueued };
|
|
273
|
+
}
|
|
274
|
+
async dequeueGoal(audit) {
|
|
275
|
+
const snapshot = await this.readSnapshot();
|
|
276
|
+
if (!_optionalChain([audit, 'optionalAccess', _3 => _3.rationale, 'optionalAccess', _4 => _4.trim, 'call', _5 => _5()]) || !_optionalChain([audit, 'access', _6 => _6.authority, 'optionalAccess', _7 => _7.trim, 'call', _8 => _8()])) {
|
|
277
|
+
return result(snapshot, false, "rationale and authority are required to dequeue a queued goal.");
|
|
278
|
+
}
|
|
279
|
+
const dequeued = snapshot.queue[0];
|
|
280
|
+
if (!dequeued) return result(snapshot, false, "No queued goals.");
|
|
281
|
+
const next = { ...snapshot, queue: snapshot.queue.slice(1), updatedAt: Date.now() };
|
|
282
|
+
await this.writeSnapshot(next);
|
|
283
|
+
return { ...result(next, true, "Dequeued goal."), dequeued };
|
|
284
|
+
}
|
|
285
|
+
async removeQueuedGoal(queueId) {
|
|
286
|
+
const snapshot = await this.readSnapshot();
|
|
287
|
+
const removed = snapshot.queue.find((item) => item.queueId === queueId);
|
|
288
|
+
if (!removed) return result(snapshot, false, `No queued goal found with id ${queueId}.`);
|
|
289
|
+
const next = { ...snapshot, queue: snapshot.queue.filter((item) => item.queueId !== queueId), updatedAt: Date.now() };
|
|
290
|
+
await this.writeSnapshot(next);
|
|
291
|
+
return { ...result(next, true, "Removed queued goal."), removed };
|
|
292
|
+
}
|
|
293
|
+
async recordTurnUsage(input) {
|
|
294
|
+
const snapshot = await this.readSnapshot();
|
|
295
|
+
if (!snapshot.goal) return result(snapshot, true, "No active goal.");
|
|
296
|
+
let goal = this.withLiveElapsed(snapshot.goal);
|
|
297
|
+
goal = {
|
|
298
|
+
...goal,
|
|
299
|
+
tokensUsed: goal.tokensUsed + Math.max(0, Math.floor(_nullishCoalesce(input.tokensUsed, () => ( 0)))),
|
|
300
|
+
updatedAt: Date.now()
|
|
301
|
+
};
|
|
302
|
+
const limitReason = budgetLimitReason(goal);
|
|
303
|
+
if (limitReason) {
|
|
304
|
+
goal = transitionStatus(goal, "budgetLimited");
|
|
305
|
+
}
|
|
306
|
+
const next = { ...snapshot, goal, updatedAt: goal.updatedAt };
|
|
307
|
+
await this.writeSnapshot(next);
|
|
308
|
+
return result(next, true, limitReason ? `Goal budget limited: ${limitReason}.` : "Goal usage recorded.");
|
|
309
|
+
}
|
|
310
|
+
formatSnapshot(snapshot) {
|
|
311
|
+
const lines = [];
|
|
312
|
+
if (!snapshot.goal) {
|
|
313
|
+
lines.push("No goal is currently set.");
|
|
314
|
+
} else {
|
|
315
|
+
const goal = snapshot.goal;
|
|
316
|
+
lines.push(`Goal ${goal.goalId}`);
|
|
317
|
+
lines.push(`Status: ${goal.status}`);
|
|
318
|
+
lines.push(`Objective: ${goal.objective}`);
|
|
319
|
+
lines.push(`Elapsed: ${formatDuration(goal.timeUsedSeconds)}`);
|
|
320
|
+
lines.push(`Tokens: ${goal.tokensUsed}${goal.tokenBudget ? ` / ${goal.tokenBudget}` : ""}`);
|
|
321
|
+
if (goal.timeBudgetSeconds) lines.push(`Time budget: ${formatDuration(goal.timeBudgetSeconds)}`);
|
|
322
|
+
if (goal.minTokensBeforeWrapUp) lines.push(`Token floor: ${goal.minTokensBeforeWrapUp}`);
|
|
323
|
+
if (goal.minTimeSecondsBeforeWrapUp) lines.push(`Time floor: ${formatDuration(goal.minTimeSecondsBeforeWrapUp)}`);
|
|
324
|
+
}
|
|
325
|
+
if (snapshot.queue.length > 0) {
|
|
326
|
+
lines.push("");
|
|
327
|
+
lines.push(`Queued goals (${snapshot.queue.length}):`);
|
|
328
|
+
snapshot.queue.forEach((item, index) => {
|
|
329
|
+
lines.push(`${index + 1}. [${item.queueId}] ${truncate(item.objective, 120)}`);
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
if (snapshot.completed.length > 0) {
|
|
333
|
+
lines.push("");
|
|
334
|
+
lines.push(formatCompletedSummary(snapshot.completed));
|
|
335
|
+
}
|
|
336
|
+
return lines.join("\n");
|
|
337
|
+
}
|
|
338
|
+
async readSnapshot() {
|
|
339
|
+
const filePath = this.statePath();
|
|
340
|
+
if (!await _fsextra2.default.pathExists(filePath)) {
|
|
341
|
+
return emptySnapshot();
|
|
342
|
+
}
|
|
343
|
+
try {
|
|
344
|
+
const raw = await _fsextra2.default.readJson(filePath);
|
|
345
|
+
return normalizeSnapshot(raw);
|
|
346
|
+
} catch (e) {
|
|
347
|
+
return emptySnapshot();
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
async writeSnapshot(snapshot) {
|
|
351
|
+
await _fsextra2.default.ensureDir(_path2.default.dirname(this.statePath()));
|
|
352
|
+
await _fsextra2.default.writeJson(this.statePath(), snapshot, { spaces: 2 });
|
|
353
|
+
}
|
|
354
|
+
statePath() {
|
|
355
|
+
return _path2.default.join(this.workspaceRoot, _chunk3JURXAL6cjs.PROJECT_DIR_NAME, GOAL_STATE_FILE);
|
|
356
|
+
}
|
|
357
|
+
withLiveElapsed(goal) {
|
|
358
|
+
if (goal.status !== "active") return goal;
|
|
359
|
+
const elapsedDelta = Math.max(0, Math.floor((Date.now() - goal.updatedAt) / 1e3));
|
|
360
|
+
return { ...goal, timeUsedSeconds: goal.timeUsedSeconds + elapsedDelta };
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
function emptySnapshot() {
|
|
364
|
+
return { version: 1, goal: null, queue: [], completed: [], updatedAt: Date.now() };
|
|
365
|
+
}
|
|
366
|
+
function normalizeSnapshot(raw) {
|
|
367
|
+
return {
|
|
368
|
+
version: 1,
|
|
369
|
+
goal: normalizeGoal(raw.goal),
|
|
370
|
+
queue: Array.isArray(raw.queue) ? raw.queue.map(normalizeQueuedGoal).filter((item) => Boolean(item)) : [],
|
|
371
|
+
completed: Array.isArray(raw.completed) ? raw.completed.map(normalizeCompletedGoal).filter((item) => Boolean(item)) : [],
|
|
372
|
+
updatedAt: typeof raw.updatedAt === "number" ? raw.updatedAt : Date.now()
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
function normalizeGoal(value) {
|
|
376
|
+
if (!value || typeof value !== "object") return null;
|
|
377
|
+
const raw = value;
|
|
378
|
+
if (typeof raw.goalId !== "string" || typeof raw.objective !== "string" || !isGoalStatus(raw.status)) return null;
|
|
379
|
+
return {
|
|
380
|
+
goalId: raw.goalId,
|
|
381
|
+
objective: raw.objective,
|
|
382
|
+
status: raw.status,
|
|
383
|
+
tokenBudget: positiveInteger(raw.tokenBudget),
|
|
384
|
+
timeBudgetSeconds: positiveInteger(raw.timeBudgetSeconds),
|
|
385
|
+
minTokensBeforeWrapUp: positiveInteger(raw.minTokensBeforeWrapUp),
|
|
386
|
+
minTimeSecondsBeforeWrapUp: positiveInteger(raw.minTimeSecondsBeforeWrapUp),
|
|
387
|
+
tokensUsed: _nullishCoalesce(positiveInteger(raw.tokensUsed), () => ( 0)),
|
|
388
|
+
timeUsedSeconds: _nullishCoalesce(positiveInteger(raw.timeUsedSeconds), () => ( 0)),
|
|
389
|
+
createdAt: typeof raw.createdAt === "number" ? raw.createdAt : Date.now(),
|
|
390
|
+
updatedAt: typeof raw.updatedAt === "number" ? raw.updatedAt : Date.now()
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
function normalizeQueuedGoal(value) {
|
|
394
|
+
if (!value || typeof value !== "object") return null;
|
|
395
|
+
const raw = value;
|
|
396
|
+
if (typeof raw.queueId !== "string" || typeof raw.objective !== "string") return null;
|
|
397
|
+
return {
|
|
398
|
+
queueId: raw.queueId,
|
|
399
|
+
objective: raw.objective,
|
|
400
|
+
tokenBudget: positiveInteger(raw.tokenBudget),
|
|
401
|
+
timeBudgetSeconds: positiveInteger(raw.timeBudgetSeconds),
|
|
402
|
+
minTokensBeforeWrapUp: positiveInteger(raw.minTokensBeforeWrapUp),
|
|
403
|
+
minTimeSecondsBeforeWrapUp: positiveInteger(raw.minTimeSecondsBeforeWrapUp),
|
|
404
|
+
source: raw.source === "command" || raw.source === "tool" || raw.source === "rpc" || raw.source === "cli" ? raw.source : "tool",
|
|
405
|
+
template: typeof raw.template === "string" ? raw.template : void 0,
|
|
406
|
+
templateFlags: isStringRecord(raw.templateFlags) ? raw.templateFlags : void 0,
|
|
407
|
+
templateArgs: typeof raw.templateArgs === "string" ? raw.templateArgs : void 0,
|
|
408
|
+
createdAt: typeof raw.createdAt === "number" ? raw.createdAt : Date.now()
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
function normalizeCompletedGoal(value) {
|
|
412
|
+
if (!value || typeof value !== "object") return null;
|
|
413
|
+
const raw = value;
|
|
414
|
+
if (typeof raw.goalId !== "string" || typeof raw.objective !== "string") return null;
|
|
415
|
+
if (raw.status !== "complete" && raw.status !== "budgetLimited") return null;
|
|
416
|
+
return {
|
|
417
|
+
goalId: raw.goalId,
|
|
418
|
+
objective: raw.objective,
|
|
419
|
+
status: raw.status,
|
|
420
|
+
tokensUsed: _nullishCoalesce(positiveInteger(raw.tokensUsed), () => ( 0)),
|
|
421
|
+
timeUsedSeconds: _nullishCoalesce(positiveInteger(raw.timeUsedSeconds), () => ( 0)),
|
|
422
|
+
createdAt: typeof raw.createdAt === "number" ? raw.createdAt : Date.now(),
|
|
423
|
+
completedAt: typeof raw.completedAt === "number" ? raw.completedAt : Date.now()
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
function buildQueuedGoal(input) {
|
|
427
|
+
return {
|
|
428
|
+
queueId: `q-${Date.now()}-${_crypto2.default.randomUUID().slice(0, 8)}`,
|
|
429
|
+
objective: input.objective.trim(),
|
|
430
|
+
tokenBudget: input.tokenBudget,
|
|
431
|
+
timeBudgetSeconds: input.timeBudgetSeconds,
|
|
432
|
+
minTokensBeforeWrapUp: input.minTokensBeforeWrapUp,
|
|
433
|
+
minTimeSecondsBeforeWrapUp: input.minTimeSecondsBeforeWrapUp,
|
|
434
|
+
source: input.source,
|
|
435
|
+
template: input.template,
|
|
436
|
+
templateFlags: input.templateFlags,
|
|
437
|
+
templateArgs: input.templateArgs,
|
|
438
|
+
createdAt: Date.now()
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
function buildCompletedGoal(goal, completedAt) {
|
|
442
|
+
return {
|
|
443
|
+
goalId: goal.goalId,
|
|
444
|
+
objective: goal.objective,
|
|
445
|
+
status: goal.status === "budgetLimited" ? "budgetLimited" : "complete",
|
|
446
|
+
tokensUsed: goal.tokensUsed,
|
|
447
|
+
timeUsedSeconds: goal.timeUsedSeconds,
|
|
448
|
+
createdAt: goal.createdAt,
|
|
449
|
+
completedAt
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
function appendCompletedGoal(completed, goal) {
|
|
453
|
+
if (completed.some((item) => item.goalId === goal.goalId)) return completed;
|
|
454
|
+
return [...completed, goal];
|
|
455
|
+
}
|
|
456
|
+
function validateGoalInput(input) {
|
|
457
|
+
const objective = input.objective.trim();
|
|
458
|
+
if (!objective) return "objective must be non-empty.";
|
|
459
|
+
if (objective.length > MAX_OBJECTIVE_LENGTH) return `objective is too long (max ${MAX_OBJECTIVE_LENGTH} characters).`;
|
|
460
|
+
for (const [name, value] of [
|
|
461
|
+
["tokenBudget", input.tokenBudget],
|
|
462
|
+
["timeBudgetSeconds", input.timeBudgetSeconds],
|
|
463
|
+
["minTokensBeforeWrapUp", input.minTokensBeforeWrapUp],
|
|
464
|
+
["minTimeSecondsBeforeWrapUp", input.minTimeSecondsBeforeWrapUp]
|
|
465
|
+
]) {
|
|
466
|
+
if (value !== void 0 && (!Number.isInteger(value) || value <= 0)) return `${name} must be a positive integer.`;
|
|
467
|
+
}
|
|
468
|
+
return validateFloors(input);
|
|
469
|
+
}
|
|
470
|
+
function validateFloors(input) {
|
|
471
|
+
if (input.tokenBudget !== void 0 && input.minTokensBeforeWrapUp !== void 0 && input.minTokensBeforeWrapUp > input.tokenBudget) {
|
|
472
|
+
return "minTokensBeforeWrapUp cannot be greater than tokenBudget.";
|
|
473
|
+
}
|
|
474
|
+
if (input.timeBudgetSeconds !== void 0 && input.minTimeSecondsBeforeWrapUp !== void 0 && input.minTimeSecondsBeforeWrapUp > input.timeBudgetSeconds) {
|
|
475
|
+
return "minTimeSecondsBeforeWrapUp cannot be greater than timeBudgetSeconds.";
|
|
476
|
+
}
|
|
477
|
+
return null;
|
|
478
|
+
}
|
|
479
|
+
function transitionStatus(goal, status) {
|
|
480
|
+
const now = Date.now();
|
|
481
|
+
if (goal.status === "active" && status !== "active") {
|
|
482
|
+
const elapsedDelta = Math.max(0, Math.floor((now - goal.updatedAt) / 1e3));
|
|
483
|
+
return { ...goal, status, timeUsedSeconds: goal.timeUsedSeconds + elapsedDelta, updatedAt: now };
|
|
484
|
+
}
|
|
485
|
+
if (goal.status !== "active" && status === "active") {
|
|
486
|
+
return { ...goal, status, updatedAt: now };
|
|
487
|
+
}
|
|
488
|
+
return { ...goal, status, updatedAt: now };
|
|
489
|
+
}
|
|
490
|
+
function budgetLimitReason(goal) {
|
|
491
|
+
if (goal.tokenBudget !== void 0 && goal.tokensUsed >= goal.tokenBudget) return "tokenBudget";
|
|
492
|
+
if (goal.timeBudgetSeconds !== void 0 && goal.timeUsedSeconds >= goal.timeBudgetSeconds) return "timeBudget";
|
|
493
|
+
return null;
|
|
494
|
+
}
|
|
495
|
+
function applyOptionalPositiveInteger(value, apply) {
|
|
496
|
+
if (value === void 0) return null;
|
|
497
|
+
if (value === null) {
|
|
498
|
+
apply(void 0);
|
|
499
|
+
return null;
|
|
500
|
+
}
|
|
501
|
+
if (!Number.isInteger(value) || value <= 0) return "budget and floor values must be positive integers or null.";
|
|
502
|
+
apply(value);
|
|
503
|
+
return null;
|
|
504
|
+
}
|
|
505
|
+
function result(snapshot, ok, message, extras = {}) {
|
|
506
|
+
const goal = snapshot.goal;
|
|
507
|
+
return {
|
|
508
|
+
ok,
|
|
509
|
+
goal,
|
|
510
|
+
queue: snapshot.queue,
|
|
511
|
+
message,
|
|
512
|
+
telemetry: goal ? {
|
|
513
|
+
timeRemainingSeconds: goal.timeBudgetSeconds !== void 0 ? Math.max(0, goal.timeBudgetSeconds - goal.timeUsedSeconds) : void 0,
|
|
514
|
+
tokensRemaining: goal.tokenBudget !== void 0 ? Math.max(0, goal.tokenBudget - goal.tokensUsed) : void 0,
|
|
515
|
+
completionFloorMet: floorMet(goal)
|
|
516
|
+
} : void 0,
|
|
517
|
+
...extras
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
function floorMet(goal) {
|
|
521
|
+
const tokenMet = goal.minTokensBeforeWrapUp === void 0 || goal.tokensUsed >= goal.minTokensBeforeWrapUp;
|
|
522
|
+
const timeMet = goal.minTimeSecondsBeforeWrapUp === void 0 || goal.timeUsedSeconds >= goal.minTimeSecondsBeforeWrapUp;
|
|
523
|
+
return tokenMet && timeMet;
|
|
524
|
+
}
|
|
525
|
+
function positiveInteger(value) {
|
|
526
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 0 ? value : void 0;
|
|
527
|
+
}
|
|
528
|
+
function isGoalStatus(value) {
|
|
529
|
+
return value === "active" || value === "paused" || value === "budgetLimited" || value === "complete";
|
|
530
|
+
}
|
|
531
|
+
function isStringRecord(value) {
|
|
532
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
533
|
+
return Object.values(value).every((entry) => typeof entry === "string");
|
|
534
|
+
}
|
|
535
|
+
function truncate(value, max) {
|
|
536
|
+
return value.length > max ? `${value.slice(0, max - 3)}...` : value;
|
|
537
|
+
}
|
|
538
|
+
function formatAllCompleteMessage(completedRun) {
|
|
539
|
+
return [
|
|
540
|
+
"All queued goals are complete.",
|
|
541
|
+
"",
|
|
542
|
+
formatCompletedSummary(completedRun)
|
|
543
|
+
].join("\n");
|
|
544
|
+
}
|
|
545
|
+
function formatCompletedSummary(completedRun) {
|
|
546
|
+
return [
|
|
547
|
+
`Completed goals this session (${completedRun.length}):`,
|
|
548
|
+
...completedRun.map((item, index) => `${index + 1}. ${truncate(item.objective, 120)}`)
|
|
549
|
+
].join("\n");
|
|
550
|
+
}
|
|
551
|
+
function formatDuration(seconds) {
|
|
552
|
+
const whole = Math.max(0, Math.floor(seconds));
|
|
553
|
+
const minutes = Math.floor(whole / 60);
|
|
554
|
+
const secs = whole % 60;
|
|
555
|
+
return minutes > 0 ? `${minutes}m ${secs}s` : `${secs}s`;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
exports.GoalManager = GoalManager;
|
|
561
|
+
/**
|
|
562
|
+
* @license
|
|
563
|
+
* Copyright 2025 Autohand AI LLC
|
|
564
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
565
|
+
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkDMM2BKSVcjs = require('./chunk-DMM2BKSV.cjs');
|
|
4
4
|
|
|
5
5
|
// src/commands/completion.ts
|
|
6
6
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
@@ -14,6 +14,7 @@ var DEFAULT_CONFIG = {
|
|
|
14
14
|
commands: ["autohand"],
|
|
15
15
|
slashCommands: [
|
|
16
16
|
"/quit",
|
|
17
|
+
"/exit",
|
|
17
18
|
"/model",
|
|
18
19
|
"/session",
|
|
19
20
|
"/sessions",
|
|
@@ -50,6 +51,7 @@ var DEFAULT_CONFIG = {
|
|
|
50
51
|
{ flag: "--temperature", description: "Sampling temperature" },
|
|
51
52
|
{ flag: "--unrestricted", description: "Skip all approval prompts" },
|
|
52
53
|
{ flag: "--restricted", description: "Block all dangerous operations" },
|
|
54
|
+
{ flag: "--no-idle-logout", description: "Keep authenticated idle sessions alive" },
|
|
53
55
|
{ flag: "--help", description: "Show help" },
|
|
54
56
|
{ flag: "--version", description: "Show version" }
|
|
55
57
|
]
|
|
@@ -311,7 +313,7 @@ async function execute(args) {
|
|
|
311
313
|
{ label: "Zsh", value: "zsh" },
|
|
312
314
|
{ label: "Fish", value: "fish" }
|
|
313
315
|
];
|
|
314
|
-
const shellResult = await
|
|
316
|
+
const shellResult = await _chunkDMM2BKSVcjs.showModal.call(void 0, {
|
|
315
317
|
title: "Select your shell:",
|
|
316
318
|
options: shellOptions,
|
|
317
319
|
initialIndex: shellOptions.findIndex((o) => o.value === (detected || "bash"))
|
|
@@ -327,7 +329,7 @@ async function execute(args) {
|
|
|
327
329
|
{ label: "Install completion to default location", value: "install" },
|
|
328
330
|
{ label: "Show installation instructions", value: "instructions" }
|
|
329
331
|
];
|
|
330
|
-
const actionResult = await
|
|
332
|
+
const actionResult = await _chunkDMM2BKSVcjs.showModal.call(void 0, {
|
|
331
333
|
title: "What would you like to do?",
|
|
332
334
|
options: actionOptions
|
|
333
335
|
});
|