nolo-cli 0.213.0 → 0.222.0-alpha.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 +3 -2
- package/{_executeModel-CUJLCFWR.js → _executeModel-4GGQQHOB.js} +111 -82
- package/{accountResolver-4LKIHEKL.js → accountResolver-EK2S4PWF.js} +6 -6
- package/{action-DF5UYSJF.js → action-CK64LS6S.js} +12 -11
- package/{addContentAction-WERAONNY.js → addContentAction-GDHDOF4U.js} +18 -17
- package/{addDialogAgentAction-7VI7YRML.js → addDialogAgentAction-CAKRU3ZT.js} +21 -20
- package/{agentDeleteCommand-XJORXPGU.js → agentDeleteCommand-BPV2XZL7.js} +128 -119
- package/{agentEmailCommands-XTYYFR6Z.js → agentEmailCommands-EJOS75YL.js} +132 -124
- package/{agentFavoriteCommands-EDK743YA.js → agentFavoriteCommands-2LKGKSUD.js} +7 -8
- package/{agentGrantCommands-RQWK2TEV.js → agentGrantCommands-QQV4N4JW.js} +5 -5
- package/{agentListCommands-OBLRBLHS.js → agentListCommands-HIZODBF3.js} +155 -92
- package/{agentMachineCommands-5FMT3OT5.js → agentMachineCommands-ZMQ2CY7Y.js} +62 -54
- package/{agentProviderCommands-Q5O33MED.js → agentProviderCommands-WKJOAWBP.js} +5 -5
- package/{agentPullCommand-6EM3URVK.js → agentPullCommand-XN6ZPBUW.js} +7 -7
- package/agentRecordCommands-OMXVDLDX.js +176 -0
- package/agentRunCommand-CB34YWMV.js +206 -0
- package/{agentRunControl-TAMHJQSR.js → agentRunControl-JNONH3RP.js} +30 -15
- package/{agentRuntimeLocal-SOO2OPJG.js → agentRuntimeLocal-QZPFWMLG.js} +52 -45
- package/{agentSlice-CHR6KOZN.js → agentSlice-RD2CDU7T.js} +20 -19
- package/{appDeleteCommands-GUP6P5YE.js → appDeleteCommands-QCCFDIEQ.js} +61 -53
- package/{appDeployCommands-MH2FX4O5.js → appDeployCommands-V2T7TNMQ.js} +61 -53
- package/{appDeployStatusCommands-SUHN3HPJ.js → appDeployStatusCommands-6PGH7ZCG.js} +61 -53
- package/{appGetCommands-YWDEX6Z4.js → appGetCommands-3L7WWJA6.js} +61 -53
- package/{appListCommands-ZQVMLPAY.js → appListCommands-ENJCK4PO.js} +61 -53
- package/{authCommand-PWX2ZNUP.js → authCommand-6V47SYGK.js} +29 -28
- package/{authCommands-HV3EAU3V.js → authCommands-GAJ3NIXO.js} +14 -13
- package/{builtinSkillRegistry-2QETTQPM.js → builtinSkillRegistry-2ECA42FC.js} +11 -13
- package/{chromeCommands-REEAH4SX.js → chromeCommands-G5UDKVSV.js} +3 -3
- package/{chromeOpsCommands-DIVM2K3T.js → chromeOpsCommands-YKX2QX3A.js} +20 -10
- package/{chunk-CRHOO2ZR.js → chunk-27PCUMJI.js} +2 -2
- package/chunk-2CI3ZFWD.js +97 -0
- package/{chunk-NSAPDIN2.js → chunk-2GJKRKI6.js} +541 -31
- package/{chunk-SM3NSZJV.js → chunk-2UCBGYO4.js} +20 -1
- package/{chunk-PYRUW7XN.js → chunk-2VUZSVAS.js} +136 -54
- package/{chunk-YB3YZK56.js → chunk-2WZXXAQD.js} +1 -67
- package/chunk-2YGBI2XB.js +30 -0
- package/chunk-2ZKFCIJJ.js +13 -0
- package/{chunk-QG4AOSON.js → chunk-34J5K2YA.js} +13 -32
- package/{chunk-LOEO7LRC.js → chunk-3IK6ILVW.js} +4 -1
- package/{chunk-CTPXME7U.js → chunk-3LMUPOHG.js} +29 -6
- package/chunk-44X52WOJ.js +1621 -0
- package/{chunk-6VLJ6YA7.js → chunk-4DESLZTK.js} +9 -9
- package/{chunk-MYOH447Z.js → chunk-4JVNURX4.js} +1 -1
- package/chunk-5CHGAKRT.js +364 -0
- package/{chunk-YDH3FDFQ.js → chunk-5FUN7EG4.js} +1 -1
- package/{chunk-INUFILG6.js → chunk-5RKUPJYL.js} +1 -1
- package/{chunk-ZC3CMUKU.js → chunk-6OVNSQHN.js} +84 -2
- package/{chunk-MOIJOHA5.js → chunk-6WU5572L.js} +36 -25
- package/{chunk-IXNGOHV5.js → chunk-7EEZJ6BS.js} +11 -152
- package/{chunk-Y6ORVLSS.js → chunk-7ET2U67U.js} +1 -1
- package/{chunk-G7MLNNEX.js → chunk-7JLY4WYF.js} +5 -5
- package/{chunk-P5L7CXOC.js → chunk-7Z6EW7AH.js} +3 -2
- package/{chunk-NJLL224W.js → chunk-AD5EWDFD.js} +2 -2
- package/{chunk-J2NHJ7WX.js → chunk-AIHYNKGV.js} +4 -4
- package/{chunk-HPFCI4SK.js → chunk-AK5O76CC.js} +3 -3
- package/{chunk-Y63ZSOR6.js → chunk-AL3TYDIF.js} +1 -1
- package/{chunk-ALQ3657A.js → chunk-AMEOV5VZ.js} +32 -12
- package/chunk-AN74ON4G.js +675 -0
- package/{chunk-HRMJUN5J.js → chunk-AQZ6BMRK.js} +1 -1
- package/{chunk-XHQC4PXX.js → chunk-B4GOW4MT.js} +424 -194
- package/{chunk-4KB6WQUL.js → chunk-BGP2EDFG.js} +1 -1
- package/{chunk-NBTY7YJF.js → chunk-BR3GT6MR.js} +1 -0
- package/{chunk-7RFNTILS.js → chunk-BUDVRYES.js} +2 -2
- package/{chunk-SVYO6AO7.js → chunk-BV3FLP2L.js} +41 -1
- package/{chunk-RZOV7OMV.js → chunk-C4VAR65S.js} +83 -141
- package/{chunk-COFEN36Z.js → chunk-C4WTX5TU.js} +2 -2
- package/{chunk-ZL5RAEEB.js → chunk-CIRB724Q.js} +1 -1
- package/{chunk-F6UUQOG6.js → chunk-CKT6QUE2.js} +4 -4
- package/{chunk-X7SDOJUM.js → chunk-CMZ3Z5PT.js} +14 -14
- package/{secretCommands-LXDWOLZ6.js → chunk-D726I5AZ.js} +191 -16
- package/{chunk-TAKB25RM.js → chunk-DNKTQ3IN.js} +4 -4
- package/chunk-DVQH4BTR.js +1137 -0
- package/{chunk-WYDI6TGM.js → chunk-DWX2HEVC.js} +91 -132
- package/{chunk-5MQRBSMW.js → chunk-EIAI3PPH.js} +111 -113
- package/chunk-EUCFKKDM.js +247 -0
- package/chunk-EWQ3HGNZ.js +90 -0
- package/{chunk-RPQXPZZF.js → chunk-F3GRJO4Z.js} +908 -13
- package/{chunk-YTF4WH7J.js → chunk-FIYSMXHY.js} +1 -1
- package/{chunk-75XIDFBW.js → chunk-FJ23FZXF.js} +72 -28
- package/{chunk-INN4LTAJ.js → chunk-FJK526XH.js} +2 -2
- package/chunk-FS2XP5D7.js +142 -0
- package/{chunk-FUGMREBO.js → chunk-FYF2TONJ.js} +5 -5
- package/{chunk-PCLE46CE.js → chunk-GBWGPTA7.js} +2 -1
- package/{chunk-TX5EYMGT.js → chunk-GYVCJABP.js} +30 -254
- package/{chunk-3UKL3HPD.js → chunk-HOCHUZQ7.js} +8 -78
- package/{chunk-EHSZD5OI.js → chunk-HXER7YJF.js} +4 -4
- package/chunk-HYIETXA6.js +99 -0
- package/{chunk-H2TJUNCH.js → chunk-I4EADJ4P.js} +6 -6
- package/{chunk-TCZHTTUU.js → chunk-I7WBYGBP.js} +8 -8
- package/{chunk-6DWMYIUY.js → chunk-IILMY4W4.js} +14 -9
- package/chunk-JA3ICVJY.js +271 -0
- package/{chunk-ZRSNONOB.js → chunk-JWXITTQB.js} +8 -3
- package/{chunk-H4UOTUOX.js → chunk-KEN3N2TN.js} +148 -18
- package/{chunk-LEC5ALIN.js → chunk-KEPOVMF4.js} +1 -1
- package/{chunk-UHJGXRJ4.js → chunk-KQSYAIZR.js} +3 -3
- package/{chunk-4VJAC32I.js → chunk-L5I543VB.js} +3 -2
- package/chunk-LKA64WH4.js +227 -0
- package/{chunk-QHPRUL4O.js → chunk-LVL6GFCM.js} +4 -4
- package/{chunk-H5HF7TJA.js → chunk-MAIITKBT.js} +2 -2
- package/chunk-MBG66ZBH.js +226 -0
- package/{chunk-YUA6OAH5.js → chunk-MDLS23JK.js} +2 -2
- package/{chunk-VL5KOY2C.js → chunk-MK2Q7ZJD.js} +67 -5
- package/{chunk-MDB67IWP.js → chunk-MS4NZNKI.js} +10 -10
- package/{chunk-VO4WSAVP.js → chunk-MYHNBEXD.js} +3 -3
- package/{chunk-ZXOUUDCG.js → chunk-MZLE5HQ3.js} +3654 -231
- package/{chunk-AZMYUSVF.js → chunk-N5Z2V73W.js} +1 -1
- package/{chunk-V5Y3R6BT.js → chunk-NIZ2BXFD.js} +213 -210
- package/{chunk-KFLT5KAD.js → chunk-NWP2OYOX.js} +20 -20
- package/{chunk-G2BQWAVT.js → chunk-O6J3OTOP.js} +4 -4
- package/{chunk-VNYYOX3V.js → chunk-OB6DVWPF.js} +141 -48
- package/{chunk-YWSEPJ7C.js → chunk-OBWT45ZU.js} +3 -3
- package/{chunk-ZNWI6OVT.js → chunk-ODJ7BVSI.js} +80 -11
- package/{chunk-XJWWBO34.js → chunk-OJKUU3LP.js} +5 -7
- package/{chunk-HUBHAQK2.js → chunk-ON37YXGX.js} +29 -29
- package/{chunk-UYD5HQ6T.js → chunk-P5ZJRTCH.js} +5429 -1752
- package/{chunk-6XIE5ZGI.js → chunk-PDCV7P5W.js} +1 -1
- package/{chunk-WRYQ35LQ.js → chunk-PJCIP64Z.js} +859 -57
- package/{chunk-7QTZCMKL.js → chunk-PJVKMGPZ.js} +1089 -1639
- package/{chunk-A7TFUNZO.js → chunk-PPJYZRSQ.js} +6 -2
- package/chunk-QHEN7NZ7.js +46 -0
- package/{chunk-OQPKUBPB.js → chunk-QNWG52I4.js} +19 -7
- package/{chunk-YGILMZ7N.js → chunk-QVBXJNZ2.js} +1 -1
- package/{chunk-7BT37FK3.js → chunk-RDH5CQ4T.js} +648 -131
- package/{chunk-C6KNNXWU.js → chunk-RGQ4UUWZ.js} +25 -2
- package/{chunk-OWYYDMGJ.js → chunk-S2NTVGA2.js} +4 -2
- package/{chunk-KC4XDTT3.js → chunk-SOF4OWDM.js} +6 -4
- package/{chunk-RLBNLZVC.js → chunk-SQYIK6HO.js} +1 -1
- package/{chunk-YJAFKXMU.js → chunk-SVT62ULE.js} +50 -48
- package/{chunk-KIM6CLW5.js → chunk-SY3C4SQ7.js} +42 -15
- package/{chunk-JY5NGFFH.js → chunk-SYTHYBMI.js} +5 -5
- package/{chunk-WMTBPBMP.js → chunk-T6DXNI6Z.js} +52 -50
- package/chunk-TLE77UJ5.js +230 -0
- package/{chunk-4VNS5WPM.js → chunk-U67V476Y.js} +1 -8
- package/{chunk-F7CI2ZC5.js → chunk-UAIHKQIA.js} +2 -1
- package/{chunk-R5O4QAWG.js → chunk-UB3D4TRQ.js} +11 -77
- package/{chunk-WPORQFYN.js → chunk-UVLYNWIE.js} +2 -2
- package/{chunk-NOKUNJON.js → chunk-UYOICCYG.js} +29 -19
- package/{chunk-4I7ERB7F.js → chunk-VREDDN25.js} +1 -1
- package/{chunk-O2TZF4AI.js → chunk-WAE3GFCJ.js} +3 -3
- package/{chunk-H7PPIYWP.js → chunk-WI67URFP.js} +20 -20
- package/{chunk-7OCO4TDT.js → chunk-WJVYAO6P.js} +1 -1
- package/{chunk-T43B7LB2.js → chunk-WKGQSYTB.js} +1 -1
- package/{chunk-BBJ22CLB.js → chunk-WUUH4LWZ.js} +60 -30
- package/{chunk-4T2WNOY7.js → chunk-X7UF53VA.js} +33 -22
- package/{chunk-TY3TIUJK.js → chunk-XI2BWJM5.js} +65 -0
- package/{chunk-LLRPJECG.js → chunk-XWVCYUUU.js} +16 -159
- package/{chunk-J5JTMQIA.js → chunk-YFLVRVYK.js} +1 -1
- package/{chunk-EYLGAEB4.js → chunk-YGMBIXCF.js} +132 -0
- package/chunk-YL3EFYL3.js +199 -0
- package/{chunk-MMA3LZ3W.js → chunk-YNIYE47Z.js} +1 -1
- package/{chunk-W4S457LU.js → chunk-YU4ZPWVF.js} +41 -5
- package/{chunk-7Y4YTDQF.js → chunk-YWWDC3O7.js} +281 -159
- package/chunk-YZMNK53S.js +68 -0
- package/{chunk-RSHTSUEG.js → chunk-Z2PITYZN.js} +2060 -602
- package/{chunk-FY7F4Q6X.js → chunk-Z4PCXPUE.js} +2 -2
- package/{cliAgentConfigHelpers-WJBZQTLW.js → cliAgentConfigHelpers-TKYL43MT.js} +15 -16
- package/{cliAuthorityBrokerClient-PM3U6Q6J.js → cliAuthorityBrokerClient-XHH7MH2P.js} +1 -1
- package/{cliAuthorityStoreDriver-TKLXNNTG.js → cliAuthorityStoreDriver-6FE3BJNB.js} +1 -1
- package/{cliEnvHelpers-BVYTMUPJ.js → cliEnvHelpers-VPSJ4XWC.js} +3 -3
- package/{cliExecutor-BWBF2MTI.js → cliExecutor-4MAX3PZL.js} +2 -2
- package/cliLocalAgentRecordReader-MHHD4T7R.js +90 -0
- package/{commandRegistry-W63CYRZJ.js → commandRegistry-5DA5UP7S.js} +105 -97
- package/{contentThunks-U7PL5MQD.js → contentThunks-5GUQ7FWJ.js} +47 -43
- package/{cooldownCommands-TIGUHXTD.js → cooldownCommands-X7P5M2V5.js} +5 -4
- package/{createAgentAutomationAction-OLBQDD6R.js → createAgentAutomationAction-UCLTHQRI.js} +51 -49
- package/{createDialogAction-SVH6B3SB.js → createDialogAction-UPN774AF.js} +46 -48
- package/{createPageAction-F4DIWZ2Z.js → createPageAction-JRQ2TA4O.js} +50 -48
- package/{cursorProvider-YGGNMVWX.js → cursorProvider-2RACMEMF.js} +1 -1
- package/{db-HUCI5R4G.js → db-CS4ZJQKV.js} +1 -1
- package/{dbSlice-BVH2YZPQ.js → dbSlice-WNON7TOL.js} +17 -16
- package/{deleteFile-5YOEKV4U.js → deleteFile-Q3YDB4ML.js} +9 -9
- package/{desktopFolderProjects-SFY5EZS3.js → desktopFolderProjects-4POAMVJN.js} +2 -2
- package/{dialogCommands-KHIEPY3M.js → dialogCommands-VRI7VCXH.js} +64 -57
- package/dialogNotifyCommand-6TMCX4D2.js +36 -0
- package/{dialogSlice-ZCTDV2PZ.js → dialogSlice-LFNVUSAN.js} +42 -40
- package/{dialogUsageCommand-7KCPYGHG.js → dialogUsageCommand-HTVPR2CX.js} +11 -10
- package/{docCreateCommands-DPMZI7G5.js → docCreateCommands-AMPXMOX3.js} +61 -55
- package/{docDeleteCommands-IRQQLUBT.js → docDeleteCommands-I5WFAEHP.js} +63 -57
- package/{docReadCommands-LK37XH6L.js → docReadCommands-X53ELNIE.js} +61 -55
- package/{docStore-V2KECILA.js → docStore-2VAWVLWH.js} +21 -20
- package/{docUpdateCommands-O6T3HJHH.js → docUpdateCommands-6QPNDC7M.js} +64 -58
- package/{fetchMessages-NR4KNQLO.js → fetchMessages-TQEUZD7H.js} +8 -7
- package/{getPricing-2MNMXEVG.js → getPricing-MB2GBXOK.js} +6 -6
- package/{handleSendMessageAction-2PE25WM3.js → handleSendMessageAction-AAJOHXOB.js} +194 -302
- package/{hostCredentialCreate-S233UMAP.js → hostCredentialCreate-GLMJ22M6.js} +123 -114
- package/index.js +29 -29
- package/{keys-BEGDOTRL.js → keys-RWF7UCB4.js} +5 -4
- package/legacyMigration-TF4SYJCZ.js +19 -0
- package/{lib-5KKIBFIT.js → lib-OT5OTXRU.js} +7087 -6664
- package/{localDialogRead-7NNDVVF7.js → localDialogRead-SVTPA5GY.js} +3 -3
- package/{localFirstLog-DHNOY2NA.js → localFirstLog-OIETGK66.js} +1 -1
- package/localRecall-2J6QPOK2.js +15 -0
- package/{localRuntimeAdapter-KY6WXNBR.js → localRuntimeAdapter-BMP57P42.js} +119 -110
- package/{localRuntimeAuthority-OYH4AE4G.js → localRuntimeAuthority-IBJAT62G.js} +1 -1
- package/{localRuntimeDb-VBIMCWUC.js → localRuntimeDb-N7KHDXS2.js} +2 -2
- package/{machineCommands-Q6HA3IXF.js → machineCommands-3MLIAK5Q.js} +128 -119
- package/{machineInfo-UKPTZO5Y.js → machineInfo-LWHTEBHJ.js} +1 -1
- package/machineWsRunDispatch-FKIGROQF.js +191 -0
- package/{memberThunks-7EDJADWU.js → memberThunks-ZGLZ36PK.js} +29 -28
- package/{memoryCommands-ASCE5STX.js → memoryCommands-5WC3T66U.js} +4 -4
- package/models-ULVWLSQ6.js +9 -0
- package/{oauthTokenStore-OEERZFUC.js → oauthTokenStore-RUYNYALS.js} +1 -1
- package/{offlineMarxistsAgentCommand-2QTHJCHV.js → offlineMarxistsAgentCommand-4IC3Y4C6.js} +4 -4
- package/overlay-THLKYIWY.js +11 -0
- package/package.json +2 -2
- package/{pdf-U6KSUEZZ.js → pdf-KE3QI2V7.js} +1 -1
- package/{processSpawn-ZU5QFM43.js → processSpawn-6GEO77KV.js} +1 -1
- package/{profileConfig-KN3N2BLF.js → profileConfig-KOWK4HOG.js} +1 -1
- package/{projectArchive-DRTDIMEV.js → projectArchive-HK63GMF4.js} +52 -50
- package/{providerPresetApply-YXGV6NXB.js → providerPresetApply-OIFQ73LH.js} +19 -12
- package/{providerRegistry-S6UL6UNA.js → providerRegistry-KZ3SDZ3D.js} +10 -10
- package/{read-4V2RMG7N.js → read-MRQHJMJ2.js} +10 -10
- package/{readDocTool-BH6ATGQO.js → readDocTool-4BGTXTXA.js} +2 -2
- package/{readlineWorkspace-2W4WRCOU.js → readlineWorkspace-AKAHSCNY.js} +7982 -6274
- package/{removeDialogAgentAction-LYAZGNKW.js → removeDialogAgentAction-B6H7DXFM.js} +23 -22
- package/{runAgentClientLoop-J2VQBS2Z.js → runAgentClientLoop-UVAWGEON.js} +81 -79
- package/{runtimeDoctorCommands-QAI3MBKQ.js → runtimeDoctorCommands-FW6XKDUG.js} +12 -12
- package/{runtimeModeArgs-2Y7BALTO.js → runtimeModeArgs-X7DL7PUN.js} +1 -1
- package/secretCommands-LJXOOYA7.js +24 -0
- package/{setDialogExtraReferencesAction-OCRPGPYH.js → setDialogExtraReferencesAction-EVCY3TRW.js} +22 -21
- package/{setPrimaryDialogAgentAction-HFJDQIBU.js → setPrimaryDialogAgentAction-KPFVPHCJ.js} +23 -22
- package/{settingThunks-RAMHMTGM.js → settingThunks-ENOAK2WV.js} +97 -88
- package/{skillDiscovery-XKHROSH2.js → skillDiscovery-B5V23AXP.js} +4 -4
- package/{skillSummaryMarker-42HKSXYY.js → skillSummaryMarker-62UW7HI7.js} +1 -1
- package/{slateToRenderMarkdown-Y5IYN73U.js → slateToRenderMarkdown-R3X74MCX.js} +1 -1
- package/{slateUtils-NGV2NMKM.js → slateUtils-ESQAJ6RN.js} +1 -1
- package/{spaceCommands-KVJZVKVO.js → spaceCommands-DTTNAS2L.js} +61 -53
- package/store-JRVN62NM.js +46 -0
- package/{streamAgentChatTurn-GHBMJJ6S.js → streamAgentChatTurn-R5UY25VB.js} +875 -618
- package/{switchDialogAgentAction-EBRMW3RA.js → switchDialogAgentAction-SZ44XDRY.js} +21 -20
- package/{tableCommands-MP6VFSVT.js → tableCommands-HITDSLHS.js} +10 -10
- package/tombstones-FQQMEDOW.js +32 -0
- package/{toolApiClient-HGNO53TC.js → toolApiClient-OGQEBQVX.js} +4 -4
- package/{tools-EWKCPKMS.js → tools-HWFG6GMJ.js} +75 -74
- package/tuiSummaryLlmCaller-HQQZAMYF.js +44 -0
- package/{updateCommands-ZQYU6SCI.js → updateCommands-RJVCRSBP.js} +10 -8
- package/{updateDialogTitleAction-5GGMBTDF.js → updateDialogTitleAction-KNPOAMVS.js} +48 -46
- package/{usageCommand-F4IPVMIZ.js → usageCommand-FWZCB7AM.js} +11 -10
- package/{usageRebuildCommand-HAW2AD5N.js → usageRebuildCommand-SP2BLNJU.js} +12 -11
- package/userDataMerge-HT2ZVHBJ.js +13 -0
- package/{windowsSelfUpdate-257DV2T6.js → windowsSelfUpdate-KERHIAB4.js} +3 -3
- package/{workloadLifecycle-4C42SVBD.js → workloadLifecycle-DYNEYHV5.js} +6 -6
- package/agentRecordCommands-ZQ7SVYGG.js +0 -167
- package/agentRunCommand-WS7IGO2W.js +0 -196
- package/chunk-3CGG2PAL.js +0 -594
- package/chunk-5XBUWM6I.js +0 -89
- package/chunk-CJEIOP3E.js +0 -0
- package/chunk-EHGEOAHI.js +0 -636
- package/chunk-FW6YHHLI.js +0 -842
- package/chunk-GPVRUGGY.js +0 -115
- package/chunk-HSVBJRF4.js +0 -339
- package/chunk-WJZOQR2J.js +0 -151
- package/chunk-ZCWRMUWT.js +0 -89
- package/dist-M676ULYG.js +0 -7314
- package/machineWsRunDispatch-WWJQ6WR3.js +0 -182
- package/models-PJBE6JDV.js +0 -9
- package/tuiSummaryLlmCaller-ALQYUUWB.js +0 -189
- package/{chunk-WACI5I6V.js → chunk-2THCNKE4.js} +3 -3
- package/{chunk-2QHFH3DR.js → chunk-47ITIXO7.js} +6 -6
- package/{chunk-GOO6G4PY.js → chunk-CKG3PRZ7.js} +0 -0
- package/{chunk-OQHIVPG4.js → chunk-SNBZZPYH.js} +3 -3
- package/{chunk-AETZ7AD6.js → chunk-W6RFEDN4.js} +3 -3
|
@@ -1,3 +1,131 @@
|
|
|
1
|
+
// packages/cli/client/cliExitSync.ts
|
|
2
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
|
+
var scopes = new AsyncLocalStorage();
|
|
4
|
+
var KNOWN_SYNC_FAILURE_CODES = /* @__PURE__ */ new Set([
|
|
5
|
+
"owner_mismatch",
|
|
6
|
+
"owner_origin_mismatch",
|
|
7
|
+
"owner_grant_revoked",
|
|
8
|
+
"owner_oauth_unavailable",
|
|
9
|
+
"invalid_grant",
|
|
10
|
+
"auth_no_token",
|
|
11
|
+
"token_expired"
|
|
12
|
+
]);
|
|
13
|
+
var SYNC_FAILURE_CODE_RE = /"(?:code|error|reason)"\s*:\s*"([A-Za-z0-9_.:-]{1,48})"/;
|
|
14
|
+
function classifyDialogSyncFailure(error) {
|
|
15
|
+
if (error instanceof Error && error.name === "AbortError") return "aborted";
|
|
16
|
+
if (error instanceof Error && error.name === "TimeoutError") return "timeout";
|
|
17
|
+
const match = error instanceof Error ? /^remote dialog evidence write failed: HTTP (\d{3})\b([\s\S]*)$/.exec(error.message) : null;
|
|
18
|
+
if (!match) return "transport_or_sync";
|
|
19
|
+
const candidate = SYNC_FAILURE_CODE_RE.exec(match[2] ?? "")?.[1]?.toLowerCase();
|
|
20
|
+
const code = candidate && KNOWN_SYNC_FAILURE_CODES.has(candidate) ? candidate : void 0;
|
|
21
|
+
return code ? `http_${match[1]}(${code})` : `http_${match[1]}`;
|
|
22
|
+
}
|
|
23
|
+
function startOwnedDialogSync(fetchImpl, start) {
|
|
24
|
+
const scope = scopes.getStore();
|
|
25
|
+
if (!scope) return start(fetchImpl);
|
|
26
|
+
if (scope.closed) return Promise.reject(new Error("dialog_sync_scope_closed"));
|
|
27
|
+
const entry = { watermark: scope.entries.length + 1, httpOkRecords: 0, controller: new AbortController(), state: "pending", done: Promise.resolve() };
|
|
28
|
+
scope.entries.push(entry);
|
|
29
|
+
const trackedFetch = async (url, init) => {
|
|
30
|
+
entry.controller.signal.throwIfAborted();
|
|
31
|
+
const signal = init?.signal ? AbortSignal.any([init.signal, entry.controller.signal]) : entry.controller.signal;
|
|
32
|
+
const response = await fetchImpl(url, { ...init, signal });
|
|
33
|
+
signal.throwIfAborted();
|
|
34
|
+
if (response.ok && String(url).includes("/api/v1/db/write/")) entry.httpOkRecords++;
|
|
35
|
+
return response;
|
|
36
|
+
};
|
|
37
|
+
entry.done = Promise.resolve().then(() => start(trackedFetch)).then((result) => {
|
|
38
|
+
if (entry.state === "pending") entry.state = "completed";
|
|
39
|
+
return result;
|
|
40
|
+
}, (error) => {
|
|
41
|
+
if (entry.state === "pending") {
|
|
42
|
+
entry.state = "failed";
|
|
43
|
+
entry.failureClass = classifyDialogSyncFailure(error);
|
|
44
|
+
}
|
|
45
|
+
throw error;
|
|
46
|
+
});
|
|
47
|
+
void entry.done.catch(() => {
|
|
48
|
+
});
|
|
49
|
+
return entry.done;
|
|
50
|
+
}
|
|
51
|
+
function drain(scope, unsafeRunner = false) {
|
|
52
|
+
if (scope.drain) return scope.drain;
|
|
53
|
+
scope.closed = true;
|
|
54
|
+
scope.drain = (async () => {
|
|
55
|
+
const entries = scope.entries.slice();
|
|
56
|
+
let timer;
|
|
57
|
+
const abortPending = (classification) => {
|
|
58
|
+
for (const entry of entries) if (entry.state === "pending") {
|
|
59
|
+
entry.state = "timeout";
|
|
60
|
+
entry.failureClass = classification;
|
|
61
|
+
entry.controller.abort(new Error("dialog_sync_drain_stopped"));
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
try {
|
|
65
|
+
if (unsafeRunner) abortPending("runner_not_stopped");
|
|
66
|
+
else if (entries.length) await Promise.race([
|
|
67
|
+
Promise.allSettled(entries.map((entry) => entry.done)),
|
|
68
|
+
new Promise((resolve) => {
|
|
69
|
+
timer = setTimeout(() => {
|
|
70
|
+
abortPending("timeout");
|
|
71
|
+
resolve();
|
|
72
|
+
}, scope.timeoutMs);
|
|
73
|
+
})
|
|
74
|
+
]);
|
|
75
|
+
} finally {
|
|
76
|
+
if (timer) clearTimeout(timer);
|
|
77
|
+
}
|
|
78
|
+
const failed = entries.filter((entry) => entry.state !== "completed");
|
|
79
|
+
for (const entry of failed) scope.output.write(`[nolo] dialog_sync ${entry.state}: watermark=${entry.watermark} httpOkRecords=${entry.httpOkRecords} class=${entry.failureClass ?? entry.state}; local history retained; remote sync incomplete.
|
|
80
|
+
`);
|
|
81
|
+
return failed.length === 0;
|
|
82
|
+
})();
|
|
83
|
+
return scope.drain;
|
|
84
|
+
}
|
|
85
|
+
function exitCliFromWatchdog(code, exit, stopRunner) {
|
|
86
|
+
const scope = scopes.getStore();
|
|
87
|
+
if (!scope) {
|
|
88
|
+
exit(code);
|
|
89
|
+
return Promise.resolve();
|
|
90
|
+
}
|
|
91
|
+
if (scope.watchdogExit) return scope.watchdogExit;
|
|
92
|
+
scope.closed = true;
|
|
93
|
+
scope.watchdogExit = (async () => {
|
|
94
|
+
let stopped = false;
|
|
95
|
+
try {
|
|
96
|
+
stopped = await stopRunner();
|
|
97
|
+
} catch {
|
|
98
|
+
}
|
|
99
|
+
if (!stopped) scope.output.write("[nolo] dialog_sync failed: class=runner_not_stopped; cancelling pending sync before hard exit.\n");
|
|
100
|
+
const complete = await drain(scope, !stopped);
|
|
101
|
+
exit(code === 0 || !complete ? 1 : code);
|
|
102
|
+
})();
|
|
103
|
+
return scope.watchdogExit;
|
|
104
|
+
}
|
|
105
|
+
async function runCliCommandWithSyncDrain(command, options) {
|
|
106
|
+
const timeoutMs = Number.isFinite(options.timeoutMs) && (options.timeoutMs ?? 0) > 0 ? options.timeoutMs : 15e3;
|
|
107
|
+
await scopes.run({ entries: [], closed: false, output: options.output, timeoutMs }, async () => {
|
|
108
|
+
const scope = scopes.getStore();
|
|
109
|
+
let code = 70;
|
|
110
|
+
let commandError;
|
|
111
|
+
let commandThrew = false;
|
|
112
|
+
try {
|
|
113
|
+
code = await command();
|
|
114
|
+
} catch (error) {
|
|
115
|
+
commandThrew = true;
|
|
116
|
+
commandError = error;
|
|
117
|
+
}
|
|
118
|
+
if (scope.watchdogExit) {
|
|
119
|
+
await scope.watchdogExit;
|
|
120
|
+
if (commandThrew) throw commandError;
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const complete = await drain(scope);
|
|
124
|
+
if (commandThrew) throw commandError;
|
|
125
|
+
options.exit(code === 0 && !complete ? 1 : code);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
|
|
1
129
|
// packages/cli/diagnostics/normalizeError.ts
|
|
2
130
|
var MAX_CAUSE_DEPTH = 4;
|
|
3
131
|
var MAX_AGGREGATE_ERRORS = 8;
|
|
@@ -774,6 +902,10 @@ function getLogger(component) {
|
|
|
774
902
|
}
|
|
775
903
|
|
|
776
904
|
export {
|
|
905
|
+
classifyDialogSyncFailure,
|
|
906
|
+
startOwnedDialogSync,
|
|
907
|
+
exitCliFromWatchdog,
|
|
908
|
+
runCliCommandWithSyncDrain,
|
|
777
909
|
normalizeError,
|
|
778
910
|
getProcessRingBuffer,
|
|
779
911
|
resolveDefaultLogPath,
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
// packages/ai/memory/rank.ts
|
|
2
|
+
var CJK_SEQUENCE_REGEX = /[\u3400-\u4dbf\u4e00-\u9fff]+/g;
|
|
3
|
+
var MEMORY_IDENTIFIER_REGEX = /\b(?:memory|noise)-[a-z0-9][a-z0-9-]*/gi;
|
|
4
|
+
var buildCjkTokens = (text) => {
|
|
5
|
+
const sequences = text.match(CJK_SEQUENCE_REGEX) ?? [];
|
|
6
|
+
const tokens = [];
|
|
7
|
+
for (const sequence of sequences) {
|
|
8
|
+
if (sequence.length >= 2) {
|
|
9
|
+
tokens.push(sequence);
|
|
10
|
+
}
|
|
11
|
+
for (let index = 0; index < sequence.length - 1; index += 1) {
|
|
12
|
+
tokens.push(sequence.slice(index, index + 2));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return tokens;
|
|
16
|
+
};
|
|
17
|
+
var tokenize = (text) => {
|
|
18
|
+
const normalized = text.toLowerCase();
|
|
19
|
+
const wordTokens = normalized.split(/[\s,.;:!?()[\]{}"'`,。!?:;、]+/).map((token) => token.trim()).filter((token) => token.length >= 2);
|
|
20
|
+
return [...wordTokens, ...buildCjkTokens(normalized)];
|
|
21
|
+
};
|
|
22
|
+
var keywordScore = (query, item) => {
|
|
23
|
+
const queryTokens = new Set(tokenize(query));
|
|
24
|
+
if (queryTokens.size === 0) return 0;
|
|
25
|
+
const haystack = /* @__PURE__ */ new Set([
|
|
26
|
+
...tokenize(item.content),
|
|
27
|
+
...(item.tags ?? []).map((tag) => tag.toLowerCase()),
|
|
28
|
+
item.patternKey?.toLowerCase() ?? ""
|
|
29
|
+
]);
|
|
30
|
+
let matches = 0;
|
|
31
|
+
for (const token of queryTokens) {
|
|
32
|
+
if (haystack.has(token)) matches += 1;
|
|
33
|
+
}
|
|
34
|
+
return Math.min(1, matches / Math.max(2, queryTokens.size));
|
|
35
|
+
};
|
|
36
|
+
var identifierScore = (query, item) => {
|
|
37
|
+
const identifiers = query.match(MEMORY_IDENTIFIER_REGEX) ?? [];
|
|
38
|
+
if (identifiers.length === 0) return 0;
|
|
39
|
+
const content = item.content.toLowerCase();
|
|
40
|
+
const matches = identifiers.filter(
|
|
41
|
+
(identifier) => content.includes(identifier.toLowerCase())
|
|
42
|
+
).length;
|
|
43
|
+
return matches / identifiers.length;
|
|
44
|
+
};
|
|
45
|
+
var DAY_MS = 864e5;
|
|
46
|
+
var UNRETRIEVED_MEMORY_GRACE_DAYS = 3;
|
|
47
|
+
var MIN_UNRETRIEVED_SCORE_FACTOR = 0.3;
|
|
48
|
+
var UNRETRIEVED_DECAY_HALF_LIFE_DAYS = 7;
|
|
49
|
+
var retrievalFrequencyScore = (item, nowMs) => {
|
|
50
|
+
const lastRetrievedMs = Date.parse(item.lastActivatedAt || item.createdAt);
|
|
51
|
+
const ageDays = Math.max(0, (nowMs - lastRetrievedMs) / DAY_MS);
|
|
52
|
+
const recency = 1 / (1 + ageDays / 7);
|
|
53
|
+
const frequency = Math.min(1, Math.log1p(item.activationCount ?? 0) / 3);
|
|
54
|
+
return 0.7 * recency + 0.3 * frequency;
|
|
55
|
+
};
|
|
56
|
+
var unretrievedDecayFactor = (item, nowMs) => {
|
|
57
|
+
if ((item.activationCount ?? 0) !== 0) return 1;
|
|
58
|
+
const createdAgeDays = Math.max(0, (nowMs - Date.parse(item.createdAt)) / DAY_MS);
|
|
59
|
+
if (createdAgeDays <= UNRETRIEVED_MEMORY_GRACE_DAYS) return 1;
|
|
60
|
+
const overdue = createdAgeDays - UNRETRIEVED_MEMORY_GRACE_DAYS;
|
|
61
|
+
return Math.max(
|
|
62
|
+
MIN_UNRETRIEVED_SCORE_FACTOR,
|
|
63
|
+
1 / (1 + overdue / UNRETRIEVED_DECAY_HALF_LIFE_DAYS)
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
var retrievalScore = (item, nowMs) => retrievalFrequencyScore(item, nowMs) * unretrievedDecayFactor(item, nowMs);
|
|
67
|
+
var creationRecencyScore = (item, nowMs) => {
|
|
68
|
+
const createdMs = Date.parse(item.createdAt);
|
|
69
|
+
const ageDays = Math.max(0, (nowMs - createdMs) / 864e5);
|
|
70
|
+
return 1 / (1 + ageDays / 7);
|
|
71
|
+
};
|
|
72
|
+
var typeFitScore = (item) => {
|
|
73
|
+
if (item.kind === "episodic") return 0.75;
|
|
74
|
+
if (item.kind === "semantic") return 0.9;
|
|
75
|
+
return 0.85;
|
|
76
|
+
};
|
|
77
|
+
var understandingScore = (item) => {
|
|
78
|
+
if (!item.tags?.includes("understanding-memory")) return 0;
|
|
79
|
+
if (item.facet === "unfinished") return 1;
|
|
80
|
+
if (item.facet === "tension") return 0.95;
|
|
81
|
+
if (item.facet === "preference") return 0.85;
|
|
82
|
+
if (item.facet === "style") return 0.75;
|
|
83
|
+
return 0.8;
|
|
84
|
+
};
|
|
85
|
+
var pathScore = (item, context) => {
|
|
86
|
+
let score = 0;
|
|
87
|
+
if (context?.currentOwner && item.ownerType === context.currentOwner.ownerType && item.ownerId === context.currentOwner.ownerId) {
|
|
88
|
+
score += 0.65;
|
|
89
|
+
}
|
|
90
|
+
if (context?.currentSubject && item.subjectType === context.currentSubject.subjectType && item.subjectId === context.currentSubject.subjectId) {
|
|
91
|
+
score += 0.85;
|
|
92
|
+
}
|
|
93
|
+
return Math.min(1, score);
|
|
94
|
+
};
|
|
95
|
+
var scoreMemoryItem = (item, query, nowMs = Date.now(), context) => {
|
|
96
|
+
const queryMatch = keywordScore(query, item);
|
|
97
|
+
const identifierMatch = identifierScore(query, item);
|
|
98
|
+
const retrieval = retrievalScore(item, nowMs);
|
|
99
|
+
const createdRecency = creationRecencyScore(item, nowMs);
|
|
100
|
+
const importance = item.importance ?? 0;
|
|
101
|
+
const confidence = item.confidence ?? 0;
|
|
102
|
+
const typeFit = typeFitScore(item);
|
|
103
|
+
const understanding = understandingScore(item);
|
|
104
|
+
const path = pathScore(item, context);
|
|
105
|
+
return 0.25 * queryMatch + 0.2 * identifierMatch + 0.2 * path + 0.09 * retrieval + // weak retrieval signal, NOT successful-use reinforcement
|
|
106
|
+
0.16 * createdRecency + 0.06 * importance + 0.03 * confidence + 0.02 * typeFit + 0.01 * understanding;
|
|
107
|
+
};
|
|
108
|
+
var rankMemoryCandidates = (items, query, context) => {
|
|
109
|
+
const nowMs = Date.now();
|
|
110
|
+
return [...items].sort((a, b) => {
|
|
111
|
+
const aExplicit = a.sourceKind === "explicit-user-directive";
|
|
112
|
+
const bExplicit = b.sourceKind === "explicit-user-directive";
|
|
113
|
+
if (aExplicit !== bExplicit) return bExplicit ? 1 : -1;
|
|
114
|
+
if (aExplicit) {
|
|
115
|
+
return Date.parse(b.createdAt) - Date.parse(a.createdAt);
|
|
116
|
+
}
|
|
117
|
+
return scoreMemoryItem(b, query, nowMs, context) - scoreMemoryItem(a, query, nowMs, context);
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// packages/ai/memory/vnext/localRecall.ts
|
|
122
|
+
var MIN_SHARED_TOKENS = 2;
|
|
123
|
+
var MAX_LOCAL_RECALL_STATES = 8;
|
|
124
|
+
var IDF_MIN_CORPUS = 20;
|
|
125
|
+
var RARE_DF_RATIO = 0.05;
|
|
126
|
+
var SAFE_TECHNICAL_SYNONYMS = {
|
|
127
|
+
pr: ["\u5BA1\u67E5", "\u4EE3\u7801\u5BA1\u67E5", "diff"],
|
|
128
|
+
diff: ["\u5BA1\u67E5", "\u4EE3\u7801\u5BA1\u67E5"],
|
|
129
|
+
review: ["\u5BA1\u67E5", "\u4EE3\u7801\u5BA1\u67E5"],
|
|
130
|
+
deploy: ["\u90E8\u7F72", "\u53D1\u7248"],
|
|
131
|
+
release: ["\u53D1\u7248", "\u53D1\u5E03"],
|
|
132
|
+
desktop: ["\u684C\u9762", "\u684C\u9762\u7AEF"]
|
|
133
|
+
};
|
|
134
|
+
var distinctTokens = (text) => new Set(tokenize(text).filter((token) => token.length >= 2));
|
|
135
|
+
var haystackTokens = (state, entity) => distinctTokens(
|
|
136
|
+
[state.facet, state.text, entity?.name ?? "", ...entity?.aliases ?? []].join(" ")
|
|
137
|
+
);
|
|
138
|
+
var recallMemoryVNextLocal = (input) => {
|
|
139
|
+
const rawTokens = distinctTokens(input.query);
|
|
140
|
+
if (rawTokens.size === 0) return [];
|
|
141
|
+
const queryTokens = new Set(rawTokens);
|
|
142
|
+
for (const token of rawTokens) {
|
|
143
|
+
const syns = SAFE_TECHNICAL_SYNONYMS[token.toLowerCase()];
|
|
144
|
+
if (syns) {
|
|
145
|
+
for (const syn of syns) {
|
|
146
|
+
for (const t of distinctTokens(syn)) queryTokens.add(t);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const entityById = new Map(input.entities.map((entity) => [entity.id, entity]));
|
|
151
|
+
const prepared = [];
|
|
152
|
+
for (const state of input.states) {
|
|
153
|
+
if (state.retiredAt || !state.text.trim()) continue;
|
|
154
|
+
prepared.push({
|
|
155
|
+
state,
|
|
156
|
+
tokens: haystackTokens(state, entityById.get(state.entityId))
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (prepared.length === 0) return [];
|
|
160
|
+
const useIdf = prepared.length >= IDF_MIN_CORPUS;
|
|
161
|
+
const rareCutoff = prepared.length * RARE_DF_RATIO;
|
|
162
|
+
const rareTokens = /* @__PURE__ */ new Set();
|
|
163
|
+
if (useIdf) {
|
|
164
|
+
for (const token of queryTokens) {
|
|
165
|
+
let df = 0;
|
|
166
|
+
for (const item of prepared) if (item.tokens.has(token)) df++;
|
|
167
|
+
if (df > 0 && df <= rareCutoff) rareTokens.add(token);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
const scored = [];
|
|
171
|
+
for (const item of prepared) {
|
|
172
|
+
let sharedTokens = 0;
|
|
173
|
+
let rareShared = 0;
|
|
174
|
+
for (const token of queryTokens) {
|
|
175
|
+
if (!item.tokens.has(token)) continue;
|
|
176
|
+
sharedTokens++;
|
|
177
|
+
if (rareTokens.has(token)) rareShared++;
|
|
178
|
+
}
|
|
179
|
+
if (sharedTokens < MIN_SHARED_TOKENS) {
|
|
180
|
+
if (!(useIdf && rareShared >= 1)) continue;
|
|
181
|
+
}
|
|
182
|
+
if (useIdf && rareTokens.size > 0 && rareShared === 0) continue;
|
|
183
|
+
scored.push({
|
|
184
|
+
state: item.state,
|
|
185
|
+
sharedTokens,
|
|
186
|
+
score: useIdf ? rareShared * 10 + sharedTokens : sharedTokens
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return scored.sort((a, b) => b.score - a.score || a.state.id.localeCompare(b.state.id)).slice(0, input.limit ?? MAX_LOCAL_RECALL_STATES).map(({ state, sharedTokens }) => ({ state, sharedTokens }));
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
export {
|
|
193
|
+
rankMemoryCandidates,
|
|
194
|
+
MIN_SHARED_TOKENS,
|
|
195
|
+
MAX_LOCAL_RECALL_STATES,
|
|
196
|
+
IDF_MIN_CORPUS,
|
|
197
|
+
RARE_DF_RATIO,
|
|
198
|
+
recallMemoryVNextLocal
|
|
199
|
+
};
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveAgentImageInputSupport
|
|
3
|
+
} from "./chunk-OBWT45ZU.js";
|
|
1
4
|
import {
|
|
2
5
|
TOOL_HAD_IMAGES,
|
|
3
6
|
hadToolImages
|
|
4
7
|
} from "./chunk-E2BESSAW.js";
|
|
5
8
|
import {
|
|
6
|
-
|
|
7
|
-
} from "./chunk-
|
|
9
|
+
asTrimmedString
|
|
10
|
+
} from "./chunk-3EUW3WEO.js";
|
|
8
11
|
import {
|
|
9
12
|
isRecord
|
|
10
13
|
} from "./chunk-KUG52IAP.js";
|
|
11
14
|
import {
|
|
12
15
|
asOptionalFiniteNumber
|
|
13
16
|
} from "./chunk-WWC7I6TA.js";
|
|
14
|
-
import {
|
|
15
|
-
asTrimmedString
|
|
16
|
-
} from "./chunk-3EUW3WEO.js";
|
|
17
17
|
import {
|
|
18
18
|
asOptionalTrimmedString
|
|
19
19
|
} from "./chunk-G3SUCT4W.js";
|
|
@@ -151,6 +151,41 @@ function resolveAgentRuntimeConfigFromRecord(key, record) {
|
|
|
151
151
|
};
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
+
// packages/ai/context/requestBudget.ts
|
|
155
|
+
function evaluateRequestBudget(input) {
|
|
156
|
+
const outputReserveTokens = input.output.semantics === "shared-window" ? input.output.finalWireCapTokens : input.output.semantics === "unknown" ? input.output.fallbackReserveTokens : 0;
|
|
157
|
+
const basis = input.output.semantics === "unknown" ? "heuristic" : input.output.semantics;
|
|
158
|
+
const costs = [
|
|
159
|
+
input.messageTokens,
|
|
160
|
+
input.toolSchemaTokens,
|
|
161
|
+
input.otherInputTokens ?? 0,
|
|
162
|
+
input.protocolReserveTokens,
|
|
163
|
+
outputReserveTokens
|
|
164
|
+
];
|
|
165
|
+
if (!Number.isFinite(input.contextWindow) || input.contextWindow <= 0 || costs.some((value) => !Number.isFinite(value) || value < 0)) {
|
|
166
|
+
return {
|
|
167
|
+
estimatedInputTokens: 0,
|
|
168
|
+
outputReserveTokens: 0,
|
|
169
|
+
availableInputTokens: 0,
|
|
170
|
+
fitsEstimate: false,
|
|
171
|
+
basis,
|
|
172
|
+
reason: "invalid-budget"
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
const estimatedInputTokens = Math.ceil(input.messageTokens) + Math.ceil(input.toolSchemaTokens) + Math.ceil(input.otherInputTokens ?? 0);
|
|
176
|
+
const reserve = Math.ceil(outputReserveTokens);
|
|
177
|
+
const availableInputTokens = Math.floor(input.contextWindow) - Math.ceil(input.protocolReserveTokens) - reserve;
|
|
178
|
+
const fitsEstimate = availableInputTokens >= 0 && estimatedInputTokens <= availableInputTokens;
|
|
179
|
+
return {
|
|
180
|
+
estimatedInputTokens,
|
|
181
|
+
outputReserveTokens: reserve,
|
|
182
|
+
availableInputTokens,
|
|
183
|
+
fitsEstimate,
|
|
184
|
+
basis,
|
|
185
|
+
reason: fitsEstimate ? "fits" : "over-budget"
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
|
|
154
189
|
// packages/agent-runtime/desktopRequestSnapshot.ts
|
|
155
190
|
var DESKTOP_AGENT_CONFIG_SNAPSHOT_STRING_FIELDS = [
|
|
156
191
|
"name",
|
|
@@ -434,6 +469,7 @@ function assertDesktopAgentRuntimeTurnBodyHasNoRawSecrets(body) {
|
|
|
434
469
|
}
|
|
435
470
|
|
|
436
471
|
export {
|
|
472
|
+
evaluateRequestBudget,
|
|
437
473
|
extractImageUrlsFromMessages,
|
|
438
474
|
hasImageInRuntimeMessages,
|
|
439
475
|
stripImagePartsFromMessages,
|